XL 2019 ListBox qui ne s'affiche plus au 2ème clic bouton

  • Initiateur de la discussion Initiateur de la discussion jmh1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jmh1

XLDnaute Occasionnel
Bonjour à tous,

J'ai un UF avec une listbox qui est masquée à l'initialisation.
lorsque je clique sur un commandbutton dans ce UF, la listbox s'affiche.
Au clic sur cette listbox (sub listbox_click), la valeur sélectionnée est copiée dans un labelbox et cette listbox se remasque. Jusque là tout va bien.

Le problème est que quand je reclique sur le commandbutton, le listbox n'apparait plus. en passant en mode pas à pas, je constate que le code du commandbutton s'exécute correctement mais le code continue et exécute le listbox_click donc masque aussitôt la listbox.

Comment éviter que ma listbox s'affiche au second clic sur le commandbutton.

j'espère avoir été assez clair dans mes explications

Ci-dessous, mon code :

VB:
Private Sub BtChangeCpte_Click()

If Lr2 = 3 Then
    MsgBox "Il n'y a pas d'autres comptes disponibles dans l'application !", vbExclamation, "Erreur changement de compte"
    Exit Sub
End If

'Masquage de la liste changement de compte
Me.ListBoxCpte.Visible = True

ListBoxCpte.List = Range("C3:C" & Lr2).Value

End Sub

Private Sub ListBoxCpte_Click()

Me.LabelCpte.Caption = ListBoxCpte.text
ListBoxCpte.Visible = False

End Sub

Merci de votre collaboration.
 
Bonjour Staple1600

C'est ce que je veux, quand je clique sur le bouton, la listbox s'affiche et quand je clique sur la listbox, je récupère la valeur et la listbox se masque.

Ce que je ne comprend pas, c'est qu'au premier clic sur le bouton, tout fonctionne mais si je veux refaire la même opération, le code de la listbox est activé aussitôt alors que je ne clique pas sur celle-ci.
 
Re,

VB:
Private Sub CommandButton1_Click()
   'Affichage de la liste changement de compte
   Me.ListBox1.Visible = True
   ListBox1.ListIndex = -1
   ListBox1.List = Worksheets("Feuil1").Range("A1:A3").Value
End Sub

Pourquoi ?

Quand un élément est sélectionné dans la listbox, si vous redéfinissez la liste de la listbox, le contrôle essaye de resélectionner l'élément qui était sélectionné. S'il peut le faire, il active la procédure Click de la listbox (qui cache la listbox).

Quand vous lancez la première fois l'userform, la listbox n'a aucun élément sélectionné, donc ce contrôle ne cherche pas à sélectionner un élément précédemment sélectionné, donc ne lance pas la procédure Click de la Listbox donc laisse la listbox affichée.

Ceci n'est plus vrai ensuite puisque la listbox aura un élément de sa liste sélectionné (celui sélectionné au coup d'avant)

ListBox1.ListIndex = -1 permet de ne sélectionner aucun élément de la liste. Donc on peut ensuite modifie modifier la liste listbox1 sans risque de déclencher la procédure évènementielle Click de la listbox..
 
Dernière édition:
Bonsoir le fil

J'aime pas les cliques 😉
VB:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
With ListBox1
    .Visible = -1
    .ListIndex = -1
End With
End Sub

Private Sub ListBox1_Click()
Me.Label1.Caption = ListBox1.Text
ListBox1.Visible = False
End Sub

Private Sub UserForm_Initialize()
ListBox1.List = Array("Essai1", "Essai2", "Essai3")
ListBox1.Visible = Len(ListBox1.Text)
End Sub
Bref tout pareil* que mes camarades
C'était juste histoire de...
(confinement oblige)
*: sauf pour remplir la listbox
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour