Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Trouver la première cellule vide

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

roisabri

XLDnaute Nouveau
Bonjour les amis,

J'essaye de faire une macro pour remplir un tableau ,
l'objectif est de remplir la première ligne vide par les informations arrivant de l'user form quand je change du couleur , dans mon cas j’utilise du rouge et jaune.
J'ai essayé avec exit for , pour qu'il ne l'exécute pas pour tous les lignes, ça marche qu'une seule fois!!

Code:
Sub Verify()
Dim i As Integer
    If ActiveCell.Interior.Color = RGB(255, 0, 0) Then
        For i = 2 To 11
          
        If Cells(i, 1).value = "" Then
           Cells(i, 1).value = ActiveCell.offset(-1, 0).value
           Cells(i, 2) = ActiveCell.value
           Cells(i, 3) = Resume.value
        End If
        Exit For
        Next
    ElseIf ActiveCell.Interior.Color = RGB(255, 255, 0) Then
        For i = 12 To 60
        If Cells(i, 1).value = "" Then
        Cells(i, 1).value = ActiveCell.offset(-1, 0).value
        Cells(i, 2) = ActiveCell.value
        Cells(i, 3) = Resumevalue
        End If
        Exit For
        Next
    End If

End Sub

Merci d'avance
 
Re : Trouver la première cellule vide

Bonjour Roisabri,

Pourquoi utilises-tu une boucle pour trouver la première cellule vide de ton tableau?

Peut-être plutôt comme ceci:

Code:
Sub Verify()
Dim i As Integer
    If ActiveCell.Interior.Color = RGB(255, 0, 0) Then

 i = Range("A1:A11").End(xlDown).Row

        'For i = 2 To 11
          
        'If Cells(i, 1).value = "" Then
           Cells(i, 1).value = ActiveCell.offset(-1, 0).value
           Cells(i, 2) = ActiveCell.value
           Cells(i, 3) = Resume.value
        'End If
        'Exit For
        'Next
    ElseIf ActiveCell.Interior.Color = RGB(255, 255, 0) Then

        i = Range("A12:A60").End(xlDown).Row

        'For i = 12 To 60
        'If Cells(i, 1).value = "" Then
        Cells(i, 1).value = ActiveCell.offset(-1, 0).value
        Cells(i, 2) = ActiveCell.value
        Cells(i, 3) = Resumevalue
        'End If
        'Exit For
        'Next
    End If

End Sub

Mais sans fichier exemple comme recommander par la charte de ce site, difficile de mieux t'aider 😉
 
Re : Trouver la première cellule vide

Merci pour la réponse 🙂 VDAVID

EN effet, je dois sélection case d'élève dans une liste en changeant sa couleur en rouge ou jaune.
Après , dans une autre feuille resume, je dois mettre l’élève et ajouter des commentaires à partir de l'userform.
Le problème que je veux chaque fois que je lance la macro, il doit trouver la case vide!! or là il trouve qu'une seule fois à cause de Exit for, si je ne fais pas exit for, il sélection tous les cases vu à l’initiale sont vides.

Code:
Sub Verify()
Dim i, j As Integer

    If ActiveCell.Interior.Color = RGB(255, 0, 0) Then
        For i = 1 To 10
        If Sheets("resume").Cells(i, 1).value = "" Then
        j = i + 1
        End If
        Next
        
        Sheets("resume").Cells(j, 1).value = ActiveCell.offset(-1, 0).value
        Sheets("resume").Cells(j, 2) = ActiveCell.value
        Sheets("resume").Cells(j, 3) = Summary.value  

End Sub
 
Re : Trouver la première cellule vide

Re,

Si tu veux trouver la case vide à partir d'une boucle, tu peux utiliser une balise pour sortir de ta procédure une fois ta condition réalisée:

Tu peux tester:

Code:
Sub Verify()
Dim i, j As Integer

    If ActiveCell.Interior.Color = RGB(255, 0, 0) Then
        For i = 1 To 10
        If Sheets("resume").Cells(i, 1).value = "" Then
        j = i + 1
        GoTo Borne
        End If
        Next
Exit Sub 'Sort de la procédure si aucune cellule vide n'a été trouvée
Borne:      'Dès que la condition est vérifiée, on sort de la boucle  
        Sheets("resume").Cells(j, 1).value = ActiveCell.offset(-1, 0).value
        Sheets("resume").Cells(j, 2) = ActiveCell.value
        Sheets("resume").Cells(j, 3) = Summary.value  

End Sub
 
Re : Trouver la première cellule vide

Merci j'ai trouvé la solution. En fait je dois mettre Exit for avant End if et Next
Code:
Sub Verify()
Dim i As Integer

    If ActiveCell.Interior.Color = RGB(255, 0, 0) Then
        For i = 1 To 10
        If Sheets("resume").Cells(i, 1).value = "" Then
  
        
        Sheets("resume").Cells(i, 1).value = ActiveCell.offset(-1, 0).value
        Sheets("resume").Cells(i, 2) = ActiveCell.value
        Sheets("resume").Cells(i, 3) = Summary.value  
For Exit
End if
Next
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
703
Réponses
2
Affichages
427
Réponses
4
Affichages
580
Réponses
2
Affichages
185
Réponses
10
Affichages
531
Réponses
8
Affichages
647
Réponses
8
Affichages
270
Réponses
5
Affichages
477
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…