Je progresse, ma macro devient tout doucement un outil, merci à vous.
Je reste cependant sur une question (si si, il en reste!!).
J'ai deux feuilles:
-Dans la première, dans la colonne C il y a un code correspondant à une
personne, La colonne D contient le nom de la personne.
-Dans la seconde, il y a une colonne B qui contient un de ces codes.
Pou enrichir le seconde feuille dans la colonne C du nom de la personne
qui correspond au code, j'ai utilisé cette méthode:
Un do While parcourt la feuille 2, à chaque occurrence un nouveau do
while (imbriqué) parcourt la feuille 1 à la recherche du code afin de
mettre le nom dans une variable puis la première boucle reprend la main
et utilise cette variable pour indiquer le nom de la personne.
Ceci revient à une recherche dans un feuille b d'une valeur contenu dans
une feuille A, cette valeur dans b a une autre valeur à retourner dans
la feuille A. a chaque valeur de b, la recherche est à nouveau effectuée.
Je ne suis ni certain d'utiliser la bonne méthode, ni la plus efficace.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Garette
Bonsoir,
J'utiliserais plutot un For each :
Sub test() Set Depart = Sheets("Feuil1").Range("C1:C" & Sheets("Feuil1").Range("C65536").End(xlUp).Row) Set Arrivee = Sheets("Feuil2").Range("B1:B" & Sheets("Feuil2").Range("B65536").End(xlUp).Row)
For Each Y In Arrivee For Each X In Depart If X = Y Then Y.Offset(0, 1).Value = X.Offset(0, 1).Value Next Next End Sub
Bonsoir,
J'utiliserais plutot un For each :
Sub test()
Set Depart = Sheets("Feuil1").Range("C1:C" &
Sheets("Feuil1").Range("C65536").End(xlUp).Row)
Set Arrivee = Sheets("Feuil2").Range("B1:B" &
Sheets("Feuil2").Range("B65536").End(xlUp).Row)
For Each Y In Arrivee
For Each X In Depart
If X = Y Then Y.Offset(0, 1).Value = X.Offset(0, 1).Value
Next
Next
End Sub
Sub test() Set Depart = Sheets("Feuil1").Range("C1:C" & Sheets("Feuil1").Range("C65536").End(xlUp).Row) Set Arrivee = Sheets("Feuil2").Range("B1:B" & Sheets("Feuil2").Range("B65536").End(xlUp).Row)
For Each Y In Arrivee For Each X In Depart If X = Y Then Y.Offset(0, 1).Value = X.Offset(0, 1).Value Next Next End Sub
Patrice
Merci Garette.
Est-il judicieux de tout parcourir pour toutes les occurrences? (=> 65536). Je ne connais pas bien For Each! En tout cas, je teste dès demain.
Merci beaucoup.
Bonsoir,
J'utiliserais plutot un For each :
Sub test() Set Depart = Sheets("Feuil1").Range("C1:C" & Sheets("Feuil1").Range("C65536").End(xlUp).Row) Set Arrivee = Sheets("Feuil2").Range("B1:B" & Sheets("Feuil2").Range("B65536").End(xlUp).Row)
For Each Y In Arrivee For Each X In Depart If X = Y Then Y.Offset(0, 1).Value = X.Offset(0, 1).Value Next Next End Sub
Merci Garette.
Est-il judicieux de tout parcourir pour toutes les occurrences? (=>
65536). Je ne connais pas bien For Each!
En tout cas, je teste dès demain.
Merci beaucoup.
Bonsoir,
J'utiliserais plutot un For each :
Sub test()
Set Depart = Sheets("Feuil1").Range("C1:C" &
Sheets("Feuil1").Range("C65536").End(xlUp).Row)
Set Arrivee = Sheets("Feuil2").Range("B1:B" &
Sheets("Feuil2").Range("B65536").End(xlUp).Row)
For Each Y In Arrivee
For Each X In Depart
If X = Y Then Y.Offset(0, 1).Value = X.Offset(0, 1).Value
Next
Next
End Sub
Est-il judicieux de tout parcourir pour toutes les occurrences? (=> 65536). Je ne connais pas bien For Each! En tout cas, je teste dès demain.
Merci beaucoup.
Bonsoir,
J'utiliserais plutot un For each :
Sub test() Set Depart = Sheets("Feuil1").Range("C1:C" & Sheets("Feuil1").Range("C65536").End(xlUp).Row) Set Arrivee = Sheets("Feuil2").Range("B1:B" & Sheets("Feuil2").Range("B65536").End(xlUp).Row)
For Each Y In Arrivee For Each X In Depart If X = Y Then Y.Offset(0, 1).Value = X.Offset(0, 1).Value Next Next End Sub
Garette
Re,
Range("C65536").End(xlUp) correspond à CTRL+Fleche vers le haut en partant de C65536. Ca permet de se mettre sur la derniere cellule pleine de la colonne C. Si par exemple la derniere valeur de la colonne C est en ligne 12, le For each ne va se faire que sur la plage C1:C12.
Re,
Range("C65536").End(xlUp) correspond à CTRL+Fleche vers le haut en partant
de C65536.
Ca permet de se mettre sur la derniere cellule pleine de la colonne C.
Si par exemple la derniere valeur de la colonne C est en ligne 12, le For
each ne va se faire que sur la plage C1:C12.
Range("C65536").End(xlUp) correspond à CTRL+Fleche vers le haut en partant de C65536. Ca permet de se mettre sur la derniere cellule pleine de la colonne C. Si par exemple la derniere valeur de la colonne C est en ligne 12, le For each ne va se faire que sur la plage C1:C12.