Erreur 1004 VlookUp

Bonjour,

J'ai une erreur sur le code suivant, je comprends pas ce que je dois faire ?

Sub Data()
    Dim Recup As Variant
    Dim NombreDeLigne As Integer

        NombreDeLigne = Sheets("Entrees").Range("A65536").End(xlUp).Row
        For h = 1 To NombreDeLigne
            Cells(22 + h, 1).ClearContents
            Cells(22 + h, 2).ClearContents
            Cells(22 + h, 3).ClearContents
            Cells(22 + h, 4).ClearContents
        Next h
        For i = 1 To NombreDeLigne
            Recup = Cells(2 + i, 1)
            Cells(24 + i, 1).Value = Recup
            Cells(22 + i, 2) = WorksheetFunction.VLookup(Cells(i, 1), Worksheets("Entrees").Range("$A$3:$B$" & i), 2, 0)

            Cells(22 + i, 3) = WorksheetFunction.VLookup(Cells(i, 1), Range("$A$3:$I$" & i), 4, 0)
            Cells(22 + i, 3).NumberFormat = "0.00"

            Cells(22 + i, 4) = WorksheetFunction.VLookup(Cells(i, 1), Range("$A$3:$I$" & i), 7, 0)
            Cells(22 + i, 4).NumberFormat = "0.00"
        Next i

End Sub

Une erreur 1004 sur la fonction WorksheetFunction.Vlookup, sauf que la première fois que j’exécute mon code il n'y a aucun soucis et si j’exécute le code une seconde fois c'est à ce moment là qu'il s'affiche l'erreur 1004.

Je vois pas quoi faire..

Une idée ?

Cordialement,

Bonjour mazneoo,

Sans fichier anonymisé ça va être compliqué car ton code semble correcte,

à part la déclaration de ta variable NombreDeLigne qui doit être en Long

A+

Bonjour BrunoM45,

Voici le fichier ci-joint.

Pour la variable, ça dépassera jamais 20 ou 30 lignes maximum donc, je pense que ira en Integer

Bonne journée

10menu-engeenering.xlsm (119.91 Ko)

Re,

Vu, le nombre de ligne calculée n'est pas bon, d'où une erreur à partir de l'indice 22

Voici le code corrigé

Sub Data()
  Dim Recup As Variant
  Dim NombreDeLigne As Integer
  Dim h As Integer, i As Integer
  ' Nombre de ligne depuis le début du tableau (si toutes les lignes sont templies)
  NombreDeLigne = Sheets("Entrees").Range("A2").End(xlDown).Row
  For h = 1 To NombreDeLigne
    Cells(22 + h, 1).ClearContents
    Cells(22 + h, 2).ClearContents
    Cells(22 + h, 3).ClearContents
    Cells(22 + h, 4).ClearContents
  Next h
  ' Nombre de ligne depuis la fin de la feuille (valeurs effacées)
  NombreDeLigne = Sheets("Entrees").Range("A65536").End(xlUp).Row
  For i = 1 To NombreDeLigne
    Recup = Cells(2 + i, 1)
    Cells(24 + i, 1).Value = Recup
    Cells(22 + i, 2) = WorksheetFunction.VLookup(Cells(i, 1), Worksheets("Entrees").Range("$A$3:$B$" & i), 2, 0)

    Cells(22 + i, 3) = WorksheetFunction.VLookup(Cells(i, 1), Range("$A$3:$I$" & i), 4, 0)
    Cells(22 + i, 3).NumberFormat = "0.00"

    Cells(22 + i, 4) = WorksheetFunction.VLookup(Cells(i, 1), Range("$A$3:$I$" & i), 7, 0)
    Cells(22 + i, 4).NumberFormat = "0.00"
  Next i
End Sub

A+

Bonjour,

C'est parfait merci beaucoup !

Bonne journée

Rechercher des sujets similaires à "erreur 1004 vlookup"