Erreur 1004 VLookUp

Bonjour,

Je rencontre une erreur 1004 VLookUp sur le code suivant :

Private Sub CommandButton1_Click()

Dim Part_name As String

Dim Part_prix As Currency

If Me.Cbx_article.ListIndex >= 0 And Me.Txt_nombre <> "" Then

Part_name = WorksheetFunction.VLookup(Me.Cbx_article, Sheets("Gestion_Stocks").Range("B6:H19"), 2, 0)

Part_prix = WorksheetFunction.VLookup(Me.Cbx_article, Sheets("Gestion_Stocks").Range("B6:H19"), 3, 0)

With Me.List_order

.AddItem

.List(memoire, 0) = Me.Cbx_article

.List(memoire, 1) = Part_name

.List(memoire, 2) = CCur(Part_prix)

.List(memoire, 3) = Me.Txt_nombre

End With

memoire = memoire + 1

End If

End Sub

Lorsque je veux exécuter mon code je rempli mon formulaire je rentre la référence de mon article avec la quantité j'appuie sur ajouter, à ce moment là le code s'exécute bien mais lorsque je veux changer de référence d'article alors une erreur 1004 sur la fonction WorksheetFunction.Vlookup apparaît.

Je joins mon fichier, le code correspond à l'userform Add_Order

Quelqu'un aurait-il une idée d'où cela peut venir ?

Cordialement,

16erp-v2.xlsm (79.15 Ko)

Bonjour EquipeCPP

Suite à ton contacte en MP,

ton problème vient du fait que tes références sont tantôt en texte, tantôt en numérique.

Et dans tes recherches tu cherches systématiquement du texte

2 solutions s'offrent à toi :

1) Inscrire les références avec un apostrophe devant ce qui fait que tu auras systématiquement du texte

Ce qui te donne ce code

Private Sub CommandButton1_Click()
  Dim Part_name As String
  Dim Part_prix As Currency
  Dim vSearch As String

  If Me.Cbx_article.ListIndex >= 0 And Me.Txt_nombre <> "" Then
    ' Référence
    vSearch = Me.Cbx_article.Value
    ' En cas d'erreur on continue
    On Error Resume Next
    Part_name = WorksheetFunction.VLookup(vSearch, Sheets("Gestion_Stocks").Range("B6:H19"), 2, False)
    Part_prix = WorksheetFunction.VLookup(vSearch, Sheets("Gestion_Stocks").Range("B6:H19"), 3, False)
    ' Si aucune erreur s'est produite
    If Err.Number = 0 Then
      With Me.List_order
        .AddItem
        .List(memoire, 0) = Me.Cbx_article
        .List(memoire, 1) = Part_name
        .List(memoire, 2) = CCur(Part_prix)
        .List(memoire, 3) = Me.Txt_nombre
      End With
      memoire = memoire + 1
    Else  ' Une erreur c'est produite
      Err.Clear
      MsgBox "Impossible de trouver la référence : " & vSearch, vbCritical, "OUPS..."
    End If
  End If
End Sub

2) Traiter l'anomalie dans le code

Private Sub CommandButton1_Click()
  Dim Part_name As String
  Dim Part_prix As Currency
  Dim vSearch As String

  If Me.Cbx_article.ListIndex >= 0 And Me.Txt_nombre <> "" Then
    ' Référence
    vSearch = Me.Cbx_article.Value
    ' En cas d'erreur on continue
    On Error Resume Next
    Part_name = WorksheetFunction.VLookup(vSearch, Sheets("Gestion_Stocks").Range("B6:H19"), 2, False)
    Part_prix = WorksheetFunction.VLookup(vSearch, Sheets("Gestion_Stocks").Range("B6:H19"), 3, False)
    ' Si une erreur c'est produite
    If Err.Number <> 0 Then
      ' Rechercher sur valeur numérique de la référence
      Part_name = WorksheetFunction.VLookup(Val(vSearch), Sheets("Gestion_Stocks").Range("B6:H19"), 2, False)
      Part_prix = WorksheetFunction.VLookup(Val(vSearch), Sheets("Gestion_Stocks").Range("B6:H19"), 3, False)
      Err.Clear
    End If
    With Me.List_order
      .AddItem
      .List(memoire, 0) = Me.Cbx_article
      .List(memoire, 1) = Part_name
      .List(memoire, 2) = CCur(Part_prix)
      .List(memoire, 3) = Me.Txt_nombre
    End With
    memoire = memoire + 1
  End If
End Sub

Voilà à plus

Excellent ! Cela fonctionne, merci beaucoup

Rechercher des sujets similaires à "erreur 1004 vlookup"