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
Loop3) tu n'incrémentes pas k dans la boucle, tu vas écraser les anciennes valeurs trouvées par la nouvelle