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.
PS : j'ai tenté avec une variable booléenne, explications glanées sur divers forums, mais pas mieux....
ThierryP
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
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
'-----------------------------
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
Bonjour Denis, Une fois de plus, simple, rapide, efficace et pédagogique ! Ta combinaison Click / KeyUp fonctionne parfaitement ! Un grand merci Í toi ! ThierryP
Bonjour Denis,
Une fois de plus, simple, rapide, efficace et pédagogique !
Ta combinaison Click / KeyUp fonctionne parfaitement !
Bonjour Denis, Une fois de plus, simple, rapide, efficace et pédagogique ! Ta combinaison Click / KeyUp fonctionne parfaitement ! Un grand merci Í toi ! ThierryP
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
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
'--------------------------------
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
ThierryP
VoilÍ , c'est çÍ que j'avais essayé de mettre en place, mais je pataugeais lamentablement.... Exemple soigneusement sauvegardé !! Encore merci, ThierryP
VoilÍ , c'est çÍ que j'avais essayé de mettre en place, mais je pataugeais lamentablement....
VoilÍ , c'est çÍ que j'avais essayé de mettre en place, mais je pataugeais lamentablement.... Exemple soigneusement sauvegardé !! Encore merci, ThierryP