OVH Cloud OVH Cloud

VBA : userform : Màj d'une liste... où est l'erreur ?

2 réponses
Avatar
Domi
Bonsoir à tous,
J'ai sur un userform "SaisieDepense" un Combobox "DepFourn" alimenté par une
liste "fournisseurs", Je voudrais qu'en cas de saisie d'une valeur
inconnue, ma macro me propose ou pas d'ajouter cette valeur à la liste.
Tout le début est bon mais si je réponds "No", la valeur saisie s'efface
bien mais je ne parviens pas à reprendre le focus sur mon combobox DepFourn,
cela passe systematiquement au champ suivant, malgré Cancel = True ou même
la commande setfocus sur le combobox....

Quelqu'un pourrait-il m'aider ?
Merci
Domi


Private Sub DepFourn_AfterUpdate()
'Contrôle si la valeur saisie existe déjà dans la liste des fournisseurs
Dim strAnswer As VbMsgBoxResult

If Application.WorksheetFunction.CountIf(Range("fournisseurs"),
DepFourn.Value) < 1 Then
strAnswer = MsgBox("Le fournisseur " & SaisieDepense.DepFourn.Text &
" " & vbCrLf & vbCrLf & "n'est pas un fournisseur connu." & vbCrLf &
"Souhaitez-vous l'ajouter à la liste des fournisseurs ?" & vbCrLf & vbCrLf,
vbQuestion + vbYesNo, "Nouveau fournisseur ?")
If strAnswer = vbYes Then
MsgBox "macro de mise à jour de la liste"
DepMontant.SetFocus 'focus sur le champ suivant
Else
MsgBox "suppression de la valeur saisie" 'ça marche
DepFourn.Value = "" 'ça marche
Cancel = True ' ça ne marche pas à partir d'ici.......
DepFourn.SetFocus
End If
End If
End Sub

2 réponses

Avatar
Jacques93
Bonjour Domi,

Je n'ai pa lu en détail, mais peut être mettre le code dans

Private Sub DepFourn_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)


Bonsoir à tous,
J'ai sur un userform "SaisieDepense" un Combobox "DepFourn" alimenté par une
liste "fournisseurs", Je voudrais qu'en cas de saisie d'une valeur
inconnue, ma macro me propose ou pas d'ajouter cette valeur à la liste.
Tout le début est bon mais si je réponds "No", la valeur saisie s'efface
bien mais je ne parviens pas à reprendre le focus sur mon combobox DepFourn,
cela passe systematiquement au champ suivant, malgré Cancel = True ou même
la commande setfocus sur le combobox....

Quelqu'un pourrait-il m'aider ?
Merci
Domi


Private Sub DepFourn_AfterUpdate()
'Contrôle si la valeur saisie existe déjà dans la liste des fournisseurs
Dim strAnswer As VbMsgBoxResult

If Application.WorksheetFunction.CountIf(Range("fournisseurs"),
DepFourn.Value) < 1 Then
strAnswer = MsgBox("Le fournisseur " & SaisieDepense.DepFourn.Text &
" " & vbCrLf & vbCrLf & "n'est pas un fournisseur connu." & vbCrLf &
"Souhaitez-vous l'ajouter à la liste des fournisseurs ?" & vbCrLf & vbCrLf,
vbQuestion + vbYesNo, "Nouveau fournisseur ?")
If strAnswer = vbYes Then
MsgBox "macro de mise à jour de la liste"
DepMontant.SetFocus 'focus sur le champ suivant
Else
MsgBox "suppression de la valeur saisie" 'ça marche
DepFourn.Value = "" 'ça marche
Cancel = True ' ça ne marche pas à partir d'ici.......
DepFourn.SetFocus
End If
End If
End Sub





--
Cordialement,

Jacques.

Avatar
Domi
Salut et Merci,
A priori, cela semble en effet être la bonne solution ;o)
Domi

"Jacques93" a écrit dans le message de
news:%
Bonjour Domi,

Je n'ai pa lu en détail, mais peut être mettre le code dans

Private Sub DepFourn_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)


Bonsoir à tous,
J'ai sur un userform "SaisieDepense" un Combobox "DepFourn" alimenté par
une


liste "fournisseurs", Je voudrais qu'en cas de saisie d'une valeur
inconnue, ma macro me propose ou pas d'ajouter cette valeur à la liste.
Tout le début est bon mais si je réponds "No", la valeur saisie s'efface
bien mais je ne parviens pas à reprendre le focus sur mon combobox
DepFourn,


cela passe systematiquement au champ suivant, malgré Cancel = True ou
même


la commande setfocus sur le combobox....

Quelqu'un pourrait-il m'aider ?
Merci
Domi


Private Sub DepFourn_AfterUpdate()
'Contrôle si la valeur saisie existe déjà dans la liste des fournisseurs
Dim strAnswer As VbMsgBoxResult

If Application.WorksheetFunction.CountIf(Range("fournisseurs"),
DepFourn.Value) < 1 Then
strAnswer = MsgBox("Le fournisseur " &
SaisieDepense.DepFourn.Text &


" " & vbCrLf & vbCrLf & "n'est pas un fournisseur connu." & vbCrLf &
"Souhaitez-vous l'ajouter à la liste des fournisseurs ?" & vbCrLf &
vbCrLf,


vbQuestion + vbYesNo, "Nouveau fournisseur ?")
If strAnswer = vbYes Then
MsgBox "macro de mise à jour de la liste"
DepMontant.SetFocus 'focus sur le champ suivant
Else
MsgBox "suppression de la valeur saisie" 'ça marche
DepFourn.Value = "" 'ça marche
Cancel = True ' ça ne marche pas à partir
d'ici.......


DepFourn.SetFocus
End If
End If
End Sub





--
Cordialement,

Jacques.