Microsoft 365 Application vlook up

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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...
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
153
Réponses
3
Affichages
452
Réponses
16
Affichages
1 K
Retour