OVH Cloud OVH Cloud

Recherche entre deux feuilles

3 réponses
Avatar
Patrice
Bonjour,

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.

Pouvez-vous m'aider dans cette recherche?

D'avance merci.

Cordialement.

3 réponses

Avatar
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
Avatar
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




Avatar
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.