Error 1004 dans Vlookup

Bonjour,

J'ai fait une macro qui remplis les données d'un tableau , en cherchant avec Vlookup une clé dans un autre tableau. Le problème c'est qu'il ne marche pas, j'ai toujours l'erreur 1004 quand j'arrive à la ligne avec le Vlookup.

Est-ce que quelqu'un saura me dire quel est le problème? Je suis perdue. Je vous laisse le code :

Dim txt As String

Dim lignej As Long

Dim lignek As Long

Dim k, j, Match, t, n, test, p

'Dim pv1, pv2,

'Sheets("Données S").Select

lignej = Sheets("Données S").Cells(10, Columns.Count).End(xlToLeft).Column

' --------------------------Reécrire clés dans la feuille Prev S-1

Sheets("Prev S-1").Cells(5, 5) = Sheets("Prev S-1").Cells(5, 3) & Sheets("Lancement macro").Cells(23, 5) & "Besoin BRUT Total"

Sheets("Prev S-1").Cells(8, 5) = Sheets("Prev S-1").Cells(8, 3) & Sheets("Lancement macro").Cells(23, 5) & "Besoin BRUT Total"

'-----------------Copier et coller date et prev

j = 6

Do While j < lignej And Match = 0

txt = Split(Sheets("Données S").Cells(10, j).Value)(1)

If txt = jour Then

t = j

For k = 7 To 19 Step 2

' Rajouter jour de la semaine

Sheets("Prev S-1").Cells(4, k) = Sheets("Données S").Cells(10, t)

'Rechercher données avec vlookup

Do While t < j + 6

Sheets("Prev S-1").Cells(5, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(5, 5).Value, Sheets("Données S").Range(Cells(11, 5), Cells(nb1, lignej)), t, False)

Sheets("Prev S-1").Cells(8, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(8, 5).Value, Sheets("Données S").Range(Cells(11, 5), Cells(nb1, lignej)), t, False)

t = t + 1

Loop

Next k

Match = 1

End If

j = j + 1

Loop

Merci!

bonjour,

remplace ceci

Sheets("Prev S-1").Cells(5, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(5, 5).Value, Sheets("Données S").Range(Cells(11, 5), Cells(nb1, lignej)), t, False)
Sheets("Prev S-1").Cells(8, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(8, 5).Value, Sheets("Données S").Range(Cells(11, 5), Cells(nb1, lignej)), t, False)

par ceci, qui est la syntaxe attendue par vba, même si elle contre-intuitive.

Sheets("Prev S-1").Cells(5, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(5, 5).Value, Range(Sheets("Données S").Cells(11, 5), Sheets("Données S").Cells(nb1, lignej)), t, False)
Sheets("Prev S-1").Cells(8, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(8, 5).Value, Range(Sheets("Données S").Cells(11, 5), Sheets("Données S").Cells(nb1, lignej)), t, False)

bonjour,

remplace ceci

Sheets("Prev S-1").Cells(5, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(5, 5).Value, Sheets("Données S").Range(Cells(11, 5), Cells(nb1, lignej)), t, False)
Sheets("Prev S-1").Cells(8, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(8, 5).Value, Sheets("Données S").Range(Cells(11, 5), Cells(nb1, lignej)), t, False)

par ceci, qui est la syntaxe attendue par vba, même si elle contre-intuitive.

Sheets("Prev S-1").Cells(5, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(5, 5).Value, Range(Sheets("Données S").Cells(11, 5), Sheets("Données S").Cells(nb1, lignej)), t, False)
Sheets("Prev S-1").Cells(8, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(8, 5).Value, Range(Sheets("Données S").Cells(11, 5), Sheets("Données S").Cells(nb1, lignej)), t, False)

Merci pour ta réponse h2so4 ! malheureusement j'ai encore la même erreur 1004

Bonjour,

1) où et comment est défini worksheetsfunction ? ( faute de définition cela devrait être worksheetfunction)

mais cela devrait te donner une autre erreur de 1004.

2) si tu as cette erreur c'est que la valeur recherchée n'est pas trouvée dans la plage spécifiée.

vérifie la valeur recherchée

vérifie la plage spécifiée

vérifie que la valeur recherchée est bien dans la plage spécifiée

Do While t < j + 6
msgbox "valeur recherchée" & Sheets("Prev S-1").Cells(5, 5).Value
msgbox "plage de recherche " &  Range(Sheets("Données S").Cells(11, 5), Sheets("Données S").Cells(nb1, lignej)).address
Sheets("Prev S-1").Cells(5, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(5, 5).Value, Range(Sheets("Données S").Cells(11, 5), Sheets("Données S").Cells(nb1, lignej)), t, False)
msgbox "valeur recherchée" & Sheets("Prev S-1").Cells(8, 5).Value
Sheets("Prev S-1").Cells(8, k) = Worksheetsfunction.VLookup(Sheets("Prev S-1").Cells(8, 5).Value, Range(Sheets("Données S").Cells(11, 5), Sheets("Données S").Cells(nb1, lignej)), t, False)
t = t + 1
Loop

3) tu n'incrémentes pas k dans la boucle, tu vas écraser les anciennes valeurs trouvées par la nouvelle

Rechercher des sujets similaires à "error 1004 vlookup"