Vlookup Aide VBA

Bonjour,

J'ai essayé de faire un Vlookup soit via un formulaire ou simplement via un Inputbox mais les deux ne fonctionnent pas.

J'ai une liste de numéro de produit et une correspondance des nouveaux numéros de produit. Je veux que lorsque l'usager rentre son ancien numéro de produit, il retrouve facilement le nouveau numéro.

Merci de votre aide je suis ouverte à toutes suggestions.

13bd-reference2.xlsm (53.89 Ko)

Bonjour,

Essaie ainsi :

Private Sub Rechercher_click()
'Produit
Dim lo As ListObject, rng As Range, N As Double
    Set lo = Worksheets("Produit").ListObjects(1)
    Set rng = lo.ListColumns(2).DataBodyRange
    On Error Resume Next
    N = Application.Match(CLng(txtAncien.Value), rng, 0)
    If Err <> 0 Then
        Err.Clear
        MsgBox "Le code que vous cherchez n'a pas été modifié"
        With txtOld
            .Value = ""
            .SetFocus
        End With
    Else
        txtNouveau.Value = lo.DataBodyRange.Cells(N, 3)
    End If
End Sub

Negatif ... J'essaie avec un numéro qui est sensé avoir une correspondance et le message d'erreur apparait.

Si ça marche de ton côté peux tu me renvoyer le fichier ?

Merci beaucoup

RE,

Il suffisait de remplacer txtOld par txtAncien!...

Cdlt.

10bd-reference2.xlsm (57.59 Ko)

Ah bien vu.

Merci de votre aide

Jean-Eric a écrit :

RE,

Il suffisait de remplacer txtOld par txtAncien!...

Cdlt.

Question , j'ai rajouté une complexité , soit un deuxième champs à retrouver dans la list object, la colonne 1 (le préfixe) il doit aussi concorder avec le champs Prefixe entré par l'utilisateur. Je me demande comment modifier la macro.

Car sans le préfixe jai par exemple deux fois un ancien numéro qui ont deux nouveaux numéros . Merci

Private Sub Rechercher_click()

'Produit

Dim lo As ListObject, rng As Range, N As Double, rg As Range, D As Double

Set lo = Worksheets("Produit").ListObjects(1)

Set rng = lo.ListColumns(2).DataBodyRange

Set rg = lo.ListColumns(1).DataBodyRange

On Error Resume Next

N = Application.Match(CLng(txtAncien.Value), rng, 0)

D = Application.Match(CLng(Prefixe), rg, 0)

If Err <> 0 Then

Err.Clear

MsgBox "Le code que vous cherchez n'a pas été modifié"

With txtAncien

.Value = ""

.SetFocus

End With

Else

txtNouveau.Value = lo.DataBodyRange.Cells(N, 3)

End If

J'ai essayé cela mais sans succès

Rechercher des sujets similaires à "vlookup aide vba"