Problème avec boucle FOR
Bonjour à tous,
Bon je débute en VBA, ça fait quelques jours que je m'y suis mis
Je vous explique ce que je veux que mon code fasse:
J'ai une FEUILLE A et une FEUILLE B, avec pour la première une colonne A (qui contient noms et prénoms comme ça DUPUIS Robert) et une colonne B avec la même liste sauf que pour certains noms il y a écrit "Inconnu". Pour la deuxième feuille, elle est vierge.
Je veux donc que mon code parcoure la colonne B de la FEUILLE A et à chaque fois qu'il tombe sur une ligne où il y a écrit "Inconnu", il copie la case correspondante de la colonne A, sur la FEUILLE B. J'aimerais aussi qu'il n'y ait pas de récurrence de nom prénom. Exemple :
FEUILLE A
A | B |
| DUPUIS Robert | DUPUIS Robert |
| DUPUIS Robert | DUPUIS Robert |
| ALAN Julie | Inconnu |
DUMAS Bertrand | DUMAS Bertrand |
| ALAN Julie | Inconnu |
| BONBON Charlotte | Inconnu |
PEREZ Marie | PEREZ Marie |
Du coup, dans le FEUILLE B, je voudrais que ça retourne :
| A |
| ALAN Julie |
| BONBON Charlotte |
Voici mon code, je ne sais pas si j'y suis presque ou si je suis loin du compte :
Sub INCONNU()
Dim plage As Range
Dim i As Integer
Dim j As Integer
Dim col As Integer
Dim cible As String
cible = "Inconnu"
i = 1
j = 1
col = 14
For i = 1 To i <= 2000
If Worksheets("FEUILLEA").Cells(i, col) <> cible Then
i = i + 1
ElseIf Worksheets("FEUILLEA").Cells(i, col).Value = cible Then
Worksheets("FEUILLEB").Cells(j, 1) = Worksheets("FEUILLEA").Cells(i, 8).Value
j = j + 1
End If
Next
End SubJe vous remercie par avance !!!
bonjour,
proposition d'adaptation de ton code (non testé)
Sub INCONNU()
Dim plage As Range
Dim i As Integer
Dim j As Integer
Dim col As Integer
Dim cible As String
cible = "Inconnu"
i = 1
j = 1
col = 14
For i = 1 To 2000
If Worksheets("FEUILLEA").Cells(i, col).Value = cible Then
Worksheets("FEUILLEB").Cells(j, 1) = Worksheets("FEUILLEA").Cells(i, 8).Value
j = j + 1
End If
Next
End Subtu pourrais encore peaufiner en remplaçant 2000 parle nombre réel de lignes présentes dans ton classeur.
Super ! Merci h2so4, ça marche ! Mais j'ai toujours le problème de la récurrence que je n'arrive pas à résoudre... Sur l'exemple précédent, j'ai comme résultat sur la FEUILLE B :
| A |
| ALAN Julie |
| ALAN Julie |
| BONBON Charlotte |
Julie se répète deux fois... je ne sais pas comment je pourrais résoudre ce problème de récurrence
Bonjour,
oups désolé, j'avais vu la demande mais j'ai oublié de la traiter.
Sub INCONNU()
Dim dl As Long
Dim i As Long
Dim j As Long
Dim col As Integer
Dim cible As String
cible = "Inconnu"
i = 1
j = 1
col = 14
dl = Worksheets("FEUILLEA").Cells(Rows.Count, 8).End(xlUp).Row
For i = 1 To dl
If Worksheets("FEUILLEA").Cells(i, col).Value = cible Then
Worksheets("FEUILLEB").Cells(j, 1).Value = Worksheets("FEUILLEA").Cells(i, 8).Value
j = j + 1
End If
Next
Worksheets("FEUILLEB").Range("$A$1:$A$" & j).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub