Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Gestion d'évènement combobox_change

8 views
Skip to first unread message

ThierryP

unread,
May 4, 2022, 8:32:55 AM5/4/22
to
Bonjour le forum, bonjour Denis,

Je n'ai jamais été très doué avec les userforms...... entre autres choses !

J'ai une liste de noms dans un combobox et un bout de macro dans _Change :
Private Sub Cbx_Choix_Salarié_Change()
If Cbx_Choix_Salarié.value = "" Then
Txt_Nom = "": Txt_Prénom = "": Txt_Matricule = "": Txt_Service = ""
Feuil4.Range("Salarié") = ""
End If
End Sub
Les Txt_** sont des textbox.

Quand je choisis un nom, tout va bien. Mais quand je supprime le nom (donc je passe dans mon IF), la macro s'exécute deux fois et après bien des essais et recherches, je n'arrive pas à modifier ce comportement.

Qu'est-ce qui m'échappe ???

Merci d'avance,
ThierryP

ThierryP

unread,
May 4, 2022, 8:39:48 AM5/4/22
to
PS : j'ai tenté avec une variable booléenne, explications glanées sur divers forums, mais pas mieux....
> ThierryP

MichD

unread,
May 4, 2022, 9:19:41 AM5/4/22
to
Le 04/05/22 à 08:32, ThierryP a écrit :
> Private Sub Cbx_Choix_Salarié_Change()
> If Cbx_Choix_Salarié.value = "" Then
> Txt_Nom = "": Txt_Prénom = "": Txt_Matricule = "": Txt_Service = ""
> Feuil4.Range("Salarié") = ""
> End If

Bonjour,

J'ai fait le test suivant et tout va bien.

Ne pas utiliser la propriété "RowSource" pour définir le contenu d'un
combobox dans la mesure du possible.

'=====================================
Private Sub ComboBox1_Change()
If ComboBox1.Value = "" Then
Me.TextBox1.Text = ""
End If
End Sub

Private Sub UserForm_Initialize()

With Worksheets("Feuil1")
Me.ComboBox1.List = .Range("A1:A" & .Range("A" &
.Rows.Count).End(xlUp).Row).Value
End With
End Sub
'=====================================



On peut remplacer l'événement "Change" par la combinaison au besoin.

'-----------------------------
Private Sub ComboBox1_Click()
If ComboBox1.Value = "" Then
Me.TextBox1.Text = ""
End If

End Sub
'-----------------------------
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger,
ByVal Shift As Integer)
If KeyCode = 46 Then
Me.TextBox1.Text = ""
End If
End Sub
'-----------------------------

MichD

ThierryP

unread,
May 5, 2022, 4:03:40 AM5/5/22
to
Bonjour Denis,

Une fois de plus, simple, rapide, efficace et pédagogique !
Ta combinaison Click / KeyUp fonctionne parfaitement !

Un grand merci à toi !

ThierryP

MichD

unread,
May 5, 2022, 8:10:40 AM5/5/22
to
Le 05/05/22 à 04:03, ThierryP a écrit :
Avec l'événement "Private Sub Cbx_Choix_Salarié_Change()" pour utiliser
une variable de type "Boolean", dans toutes les procédures qui affectent
la valeur du combobox, il faut passer la variable "Boolean" à "True" et
faire un test sur la valeur de cette variable en début de procédure dans
le "Combo_change" et ne pas oublier de remettre la valeur de la variable
"Boolean" à False.

Un petit exemple de code :

'Dans le haut du module formulaire:
Dim MyVar As Boolean
'--------------------------------
Private Sub ComboBox1_Change()
If MyVar = True Then
MyVar = False
Exit Sub
End If
MsgBox "Exécuter 1 fois"
End Sub
'--------------------------------

Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MyVar = True
Me.ComboBox1.Value = 2
Me.TextBox1 = Me.ComboBox1.Value
End Sub
'--------------------------------

Private Sub UserForm_Initialize()
Me.ComboBox1.List = Feuil1.Range("A1:A10").Value
MyVar = False
End Sub
'--------------------------------

MichD

ThierryP

unread,
May 5, 2022, 10:18:35 AM5/5/22
to
Voilà, c'est çà que j'avais essayé de mettre en place, mais je pataugeais lamentablement....

Exemple soigneusement sauvegardé !!
Encore merci,

ThierryP
0 new messages