Vlook up : Valeur recherchee et plage de données variables

Bonjour à tous,

Cela fait maintenant quelques jours que je cherche sans trouver comment coder une formule "Vlookup" avec une valeur recherchée et une plage de données variable. Je m'explique :

Tout d'abord j'ai deux fichiers :

  • Fichier 1
  • Fichier 2
Je veux aller chercher des données dans mon fichier "Fichier 2", les données sont basiques, une suite de quelques chiffres, afin de vérifier les données de mon "Fichier 1".

Exemple:

Fichier 1 Fichier 2

1454995 1522643

1522643 1560139

1560139 1609959

Ici, j'aurais les deux dernières lignes de mon Fichier 1 qui seront validées.

Mes contraintes :

  • La première ligne du tableau du Fichier 2 peut varier (il peut commencer à la ligne 8,9,10)
  • Mon nombre de lignes du tableau du Fichier 2 peut varier
  • Ma plage de données du tableau du Fichier 1 peut varier

La ou je bloque :

  • Déclaration des variables du vlookup
  • formule vlookup me donne des #N/A

Je suis loin d'être un expert en VBA, mon code est réalisé avec les moyens du bord...

Voici mon code ci dessous: (je vous mets aussi en pièce jointe deux fichiers exemple, la macro est dans le module 1 du fichier 1)

Sub testvlookup()

Dim TargetRange As Range, Dernligne As Integer, Lastligne As Integer, ValeurRecherchee As String

Workbooks("Fichier2").Activate

Dernligne = Worksheets("Feuillefichier2").Range("A" & Cells.Rows.Count).End(xlUp).Row

Select Case True

Case Is = Range("A7") = "exemple"

Set TargetRange = Range("A8:A" & Dernligne)

Case Is = Range("A8") = "exemple"

Set TargetRange = Range("A9:A" & Dernligne)

Case Is = Range("A10") = "exemple"

Set TargetRange = Range("A11:A" & Dernligne)

End Select

On Error GoTo MyErrorHandler:

Workbooks("Fichier1").Activate

Lastligne = Worksheets("Feuillefichier1").Range("A" & Cells.Rows.Count).End(xlUp).Row

ValeurRecherchee = "INDIRECT(ADRESSE(LIGNE()-1;COLONNE()))+1"

Range("B2") = Application.VLookup(ValeurRecherchee, TargetRange, 1, False)

MyErrorHandler:

If Err.Number = 1004 Then

MsgBox "Value not found"

End If

Range("B2").Select

Selection.AutoFill Destination:=Range("B2:B" & Lastligne)

End Sub

Merci d'avance pour votre expertise

10fichier1.xlsm (12.64 Ko)
6fichier2.xlsx (7.49 Ko)

Bonjour,

Je ne vois pas pourquoi vous vous embarquez dans VBA.

ci-joint une solution simple sans VBA

9fichier2.xlsx (8.95 Ko)
6fichier1-v1.xlsm (14.81 Ko)

C'est vrai que je n'ai pas précisé.

Je réalise cette macro dans le cadre d'optimisation d'activité. Je cherche à faciliter la réalisation d'une tâche, et cette macro fait partie d'un programme VBA.

J'ai extrait cette petite partie car c'est sur celle la que je bloque...

Rechercher des sujets similaires à "vlook valeur recherchee plage donnees variables"