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

Fermé
CNad31 - 1 août 2016 à 19:04
 CNad31 - 2 août 2016 à 16:11
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
1 août 2016 à 19:48
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
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523 > CNad31
1 août 2016 à 20:31
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
PARFAIT, tu me sauves la vie l'ami !
Merci !!
0
CNad31 > Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016
2 août 2016 à 08:42
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523 > CNad31
2 août 2016 à 09:00
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