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,
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 Sub2) 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 SubVoilà à plus
Excellent ! Cela fonctionne, merci beaucoup