Gestion d'évènement combobox_change

5 réponses
Avatar
ThierryP
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

5 réponses

Avatar
ThierryP
PS : j'ai tenté avec une variable booléenne, explications glanées sur divers forums, mais pas mieux....
ThierryP
Avatar
MichD
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
Avatar
ThierryP
Bonjour Denis,
Une fois de plus, simple, rapide, efficace et pédagogique !
Ta combinaison Click / KeyUp fonctionne parfaitement !
Un grand merci Í  toi !
ThierryP
Avatar
MichD
Le 05/05/22 Í  04:03, ThierryP a écrit :
Bonjour Denis,
Une fois de plus, simple, rapide, efficace et pédagogique !
Ta combinaison Click / KeyUp fonctionne parfaitement !
Un grand merci Í  toi !
ThierryP

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
Avatar
ThierryP
VoilÍ , c'est çÍ  que j'avais essayé de mettre en place, mais je pataugeais lamentablement....
Exemple soigneusement sauvegardé !!
Encore merci,
ThierryP