Microsoft 365 Application vlook up

eric72

XLDnaute Accro
Bonjour à tous,
Je rencontre un petit souci avec cette formule:
Private Sub RefPot_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim ReferencePot$, P As Range
ReferencePot = Trim(RefPot)
If ReferencePot = "" Then Exit Sub
Set P = Sheets("Données").Range("RéfPot")
If Application.CountIf(P, ReferencePot) = 0 Then
If MsgBox("Voulez-vous enregistrer dans la base la référence '" & ReferencePot & "' ?", 4) = 6 Then
RefPot.RowSource = ""
P(P.Rows.Count + 1, 1) = ReferencePot
P.CurrentRegion.Sort P, xlAscending, Header:=xlYes 'tri
RefPot.RowSource = "RéfPot"
End If
Exit Sub
End If
PrixPot = Application.VLookup(ReferencePot, Sheets("Données").Range("BasePot"), 3, 0)
End Sub

J'ai un bug sur l'avant dernière ligne : PrixPot = ............
9a fait 2 heures que cherche et je ne comprends pas d'ou cela peut-il venir, alors que j'ai d'autres cas de vlookup plus haut et tout va bien.
J'en appelle à votre savoir.
Merci beaucoup pour votre dévouement.
Eric
 

Pièces jointes

  • Fiche Produit test.xlsm
    259.4 KB · Affichages: 3
Solution
Bonjour Fanch55,

Private Sub RefPot_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim ReferencePot As Variant: ReferencePot = Val(Trim(RefPot))
Dim P As Range
ReferencePot = Trim(RefPot)
If ReferencePot = "" Then Exit Sub
Set P = Sheets("Données").Range("RéfPot")
If Application.CountIf(P, ReferencePot) = 0 Then
If MsgBox("Voulez-vous enregistrer dans la base la référence '" & ReferencePot & "' ?", 4) = 6 Then
RefPot.RowSource = ""
P(P.Rows.Count + 1, 1) = ReferencePot
P.CurrentRegion.Sort P, xlAscending, Header:=xlYes 'tri
RefPot.RowSource = "RéfPot"
End If
Exit Sub
End If
PrixPot = Application.VLookup(ReferencePot, Sheets("Données").Range("BasePot"), 3, 0)

J'ai mis cela dans ma...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

La réponse est dans :

Dim ReferencePot$
ReferencePot = Trim(RefPot)

Alors que vous avez des valeurs numérques dans votre première colonne de 'BasePot'
Utilisez les fonction de conversion cint ou cdbl ou la fonction val pour faire votre recherche.

Petit conseil : préfixez les noms des contrôles pour les différencier des variables et par type. Exemple: PrixPot -> tb_PrixPot.
Pour une combobox : cb_MaCombo
Pour une listBox : Lb_MaListBox
etc ...

votre code sera plus explicite et plus facilement compréhensible. J'ai cherché une variable PrixPot alors qu'il s'agissait d'un textbox !

Cordialement
 

eric72

XLDnaute Accro
Bonjour Fanch55,

Private Sub RefPot_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim ReferencePot As Variant: ReferencePot = Val(Trim(RefPot))
Dim P As Range
ReferencePot = Trim(RefPot)
If ReferencePot = "" Then Exit Sub
Set P = Sheets("Données").Range("RéfPot")
If Application.CountIf(P, ReferencePot) = 0 Then
If MsgBox("Voulez-vous enregistrer dans la base la référence '" & ReferencePot & "' ?", 4) = 6 Then
RefPot.RowSource = ""
P(P.Rows.Count + 1, 1) = ReferencePot
P.CurrentRegion.Sort P, xlAscending, Header:=xlYes 'tri
RefPot.RowSource = "RéfPot"
End If
Exit Sub
End If
PrixPot = Application.VLookup(ReferencePot, Sheets("Données").Range("BasePot"), 3, 0)

J'ai mis cela dans ma formule mais ça ne doit pas être au bon endroit (pas très doué le garcon)
Pouvez-vous m'indiquer ou mettre votre code?
Merci beaucoup
Eric
 

fanch55

XLDnaute Barbatruc
Bonjour Fanch55,

Private Sub RefPot_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim ReferencePot As Variant: ReferencePot = Val(Trim(RefPot))
Dim P As Range
ReferencePot = Trim(RefPot)
If ReferencePot = "" Then Exit Sub
Set P = Sheets("Données").Range("RéfPot")
If Application.CountIf(P, ReferencePot) = 0 Then
If MsgBox("Voulez-vous enregistrer dans la base la référence '" & ReferencePot & "' ?", 4) = 6 Then
RefPot.RowSource = ""
P(P.Rows.Count + 1, 1) = ReferencePot
P.CurrentRegion.Sort P, xlAscending, Header:=xlYes 'tri
RefPot.RowSource = "RéfPot"
End If
Exit Sub
End If
PrixPot = Application.VLookup(ReferencePot, Sheets("Données").Range("BasePot"), 3, 0)

J'ai mis cela dans ma formule mais ça ne doit pas être au bon endroit (pas très doué le garcon)
Pouvez-vous m'indiquer ou mettre votre code?
Merci beaucoup
Eric
 

Discussions similaires

Réponses
16
Affichages
545

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 851
dernier inscrit
vaiata