VBA : userform : Màj d'une liste... où est l'erreur ?
2 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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
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.
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.
Salut et Merci,
A priori, cela semble en effet être la bonne solution ;o)
Domi
"Jacques93" <jacques.le-gocNO@PUBwouanadoo.fr> a écrit dans le message de
news:%23IPlNVCeFHA.712@TK2MSFTNGP12.phx.gbl...
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.......
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.......