VBA : Faire Vlookup jusqu'à la fin de la colonne (non vide)

CNad31 -  
 CNad31 -
HELP !!

Bonjour à tous, et merci de venir me lire.
Je souhaite appliquer la Vlookup suivante :

With Sheets("Feuil1")
.Range("B1").Value = WorksheetFunction.VLookup(.Range("A1").Value, Sheets("Feuil2").Range("A1:B100"), 2, False)
End With

Mais l'appliquer jusqu'à la fin de la colonne B1 de la feuille 1.
J'ai pensé à une boucle de type :

Sub test()

Dim numero As Integer
Dim DernCol As Integer
numero = 1

Do
With Sheets("Feuil1")
.Range("B1").Value = WorksheetFunction.VLookup(.Range("A1").Value, Sheets("Feuil2").Range("A1:B100"), 2, False)
End With
numero = numero + 1

Loop Until DernCol = Range("B1").End(xlToRight).Column

End Sub
A voir également:

1 réponse

Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Bonjour,

Je ne suis pas sûr d'avoir bien compris ton attente car le code que tu proposes ne correspond pas à tes explications.
Essaie comme cela :
Sub Test()
Dim numero As Integer
Dim Cel As Range
With Sheets("Feuil1")
For Each Cel In .Range("A1", .Range("A" & Rows.Count).End(xlUp))
Cel.Offset(, 1) = WorksheetFunction.VLookup(Cel.Value, Sheets("Feuil2").Range("A1:B100"), 2, False)
Next Cel
End With
End Sub

A+
1
CNad31
 
Salut Gyrus,

J'ai envie de te croiser un jour pour t'offrir un coup à boire !
Topissime c'est exactement ça !

J'ai néanmoins une dernière question, je vois qu'il y a ça dans le code :
Sheets("Feuil2").Range("A1:B100"), 2, False)

Mais mon outil peut contenir 200 à +50000 lignes, j'ai besoin qu'il prenne toutes les lignes de ma colonne jusqu'au bout...

Merci encore ;)
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526 > CNad31
 
Re bonjour CNad31,

Heureusement que je ne bois pas à chaque réponse, sinon je change mon pseudo pour bob l'éponge.
Merci quand même pour l'intention :)

Essaie comme cela :
Sub Test()
Dim DerLigS As Long
Dim PlageSource As Range, Cel As Range
With Worksheets("Feuil2")
DerLigS = .Range("A" & Rows.Count).End(xlUp).Row
Set PlageSource = .Range(.Range("A1"), .Range("B" & DerLigS))
End With
With Worksheets("Feuil1")
For Each Cel In .Range("A1", .Range("A" & Rows.Count).End(xlUp))
Cel.Offset(, 1) = WorksheetFunction.VLookup(Cel.Value, PlageSource, 2, False)
Next Cel
End With
End Sub

A+
0
CNad31
 
PARFAIT, tu me sauves la vie l'ami !
Merci !!
0
CNad31 > Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention  
 
Juste un détail, je n'arrive pas à adapter ton code...
Je souhaite que les informations viennent d'un classeur 2 pour alimenter mon classeur 1, mais ça ne marche pas ... :

Sub Test()
Dim DerLigS As Long
Dim PlageSource As Range, Cel As Range
With Windows("Classeur2").Activate
Sheets("Feuil2").Select
DerLigS = .Range("A" & Rows.Count).End(xlUp).Row
Set PlageSource = .Range(.Range("A1"), .Range("B" & DerLigS))
End With
With Windows("Classeur1").Activate
Sheets("Feuil1").Select
For Each Cel In .Range("A1", .Range("A" & Rows.Count).End(xlUp))
Cel.Offset(, 1) = WorksheetFunction.VLookup(Cel.Value, PlageSource, 2, False)
Next Cel
End With
End Sub

Merci encore !
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526 > CNad31
 
Bonjour,

Essaie comme cela :
Sub Test()
Dim DerLigS As Long
Dim PlageSource As Range, Cel As Range
With Workbooks("Classeur2").Worksheets("Feuil2")
DerLigS = .Range("A" & Rows.Count).End(xlUp).Row
Set PlageSource = .Range(.Range("A1"), .Range("B" & DerLigS))
End With
With Workbooks("Classeur1").Worksheets("Feuil1")
For Each Cel In .Range("A1", .Range("A" & Rows.Count).End(xlUp))
Cel.Offset(, 1) = WorksheetFunction.VLookup(Cel.Value, PlageSource, 2, False)
Next Cel
End With
End Sub

A+
0