Microsoft 365 Afficher une listbox si sélection dans une autre

cgpa

XLDnaute Occasionnel
Bonjour Le Forum,

Il y a beaucoup de post pour l'alimentation d'une listbox par rapport à une autre, mais je ne trouve pas de situation qui réponde à la mienne car elle ne porte pas sur l'alimentation, mais uniquement sur l'affichage. J'aimerais que trois listbox s'affichent uniquement si un choix est activé dans une première listbox (donc qu'elles n'apparaissent pas si le choix n'est pas fait).

Deuxième question: je parviens bien à effacer le contenu d'une listbox à partir d'un bouton, mais cela ne fonctionne pas sur une listbox à choix multiple.

Je précise que je tâtonne par essais avec le vba et cherche surtout à comprendre son fonctionnement.
J'ai posté une version allégée de mon fichier.

Si une bonne âme pouvait y trouver une solution, ce serait sympa.
Merci d'avance!
 

Pièces jointes

  • essai listbox.xlsm
    549.4 KB · Affichages: 5

vgendron

XLDnaute Barbatruc
Bonjour

poru l'affichage des Listbox, il "suffit" de le gerer à l'initialize et au clic sur ta listbox1

VB:
Private Sub ListBox1_Click()
With Me
    .ComboBox1.Text = Format(.ListBox1.List(.ListBox1.ListIndex, 1), "### ##0.00")
    .ListBox2.Visible = True
    .ListBox3.Visible = True
    .ListBox5.Visible = True
End With

End Sub

Private Sub UserForm_Initialize()
 
Me.TextBox12.Value = Feuil1.Range("B50000").End(xlUp) + 1 'indique que le numéro automatique est le dernier de la colonne B de la feuille 1 (Ventes) + 1 unité
With Me
    With .ListBox1
        .ColumnCount = 2
        .ColumnWidths = "1;0"
        .List = Range("t_Articles").ListObject.DataBodyRange.Value
    End With
    .ListBox2.Visible = False
    .ListBox3.Visible = False
    .ListBox5.Visible = False
      '.ComboBox2.List = Range("t_Paiements").ListObject.DataBodyRange.Value
End With

End Sub
 

Jacky67

XLDnaute Barbatruc
Bonjour Le Forum,

Il y a beaucoup de post pour l'alimentation d'une listbox par rapport à une autre, mais je ne trouve pas de situation qui réponde à la mienne car elle ne porte pas sur l'alimentation, mais uniquement sur l'affichage. J'aimerais que trois listbox s'affichent uniquement si un choix est activé dans une première listbox (donc qu'elles n'apparaissent pas si le choix n'est pas fait).

Deuxième question: je parviens bien à effacer le contenu d'une listbox à partir d'un bouton, mais cela ne fonctionne pas sur une listbox à choix multiple.

Je précise que je tâtonne par essais avec le vba et cherche surtout à comprendre son fonctionnement.
J'ai posté une version allégée de mon fichier.

Si une bonne âme pouvait y trouver une solution, ce serait sympa.
Merci d'avance!
Bonjour,
Une proposition en PJ
La listbox3 n'a plus lieu d'être affiché s'il n'y a pas de sélection en listbox 5 sur les 2 dernier item, non ??
 

Pièces jointes

  • essai listbox.xlsm
    549 KB · Affichages: 3

vgendron

XLDnaute Barbatruc
pour l'autre problème.
utilise plutot les évènements _Change (au lieu de _click) pour tes listbox
VB:
Private Sub ListBox5_change() 'On affiche la ListBox3 si et seulement si sélection d'un des deux derniers Item de la Listbox 5.
With Me
    With .ListBox3
         .Visible = Not Me.ListBox5.ListIndex < 2
        For i = 0 To .ListCount - 1
             .Selected(i) = False 'on désélectionne la liste
        Next
    End With
End With
End Sub
'PROBLEME B: j'ai essayé de dupliquer ce code pour que les listbox 2-3-5 ne s'affichent que s'il y a un clic sur la listbox1 mais cela ne va pas.



Private Sub ListBox1_change()
With Me
    .ComboBox1.Text = Format(.ListBox1.List(.ListBox1.ListIndex, 1), "### ##0.00")
    .ListBox2.Visible = True
    .ListBox3.Visible = True
    .ListBox5.Visible = True
End With

End Sub
 

fredl

XLDnaute Impliqué
Bonjour,
la réponse dans ton fichier (joint)
Cela répond il à tes attentes?
Cdt
nb : je te laisse reorganiser l'esthétisme de ton UF que j'ai un peu massacré.
Frédéric
 

Pièces jointes

  • essai listbox (1).xlsm
    544.2 KB · Affichages: 8

cgpa

XLDnaute Occasionnel
Bonjour

poru l'affichage des Listbox, il "suffit" de le gerer à l'initialize et au clic sur ta listbox1

VB:
Private Sub ListBox1_Click()
With Me
    .ComboBox1.Text = Format(.ListBox1.List(.ListBox1.ListIndex, 1), "### ##0.00")
    .ListBox2.Visible = True
    .ListBox3.Visible = True
    .ListBox5.Visible = True
End With

End Sub

Private Sub UserForm_Initialize()
 
Me.TextBox12.Value = Feuil1.Range("B50000").End(xlUp) + 1 'indique que le numéro automatique est le dernier de la colonne B de la feuille 1 (Ventes) + 1 unité
With Me
    With .ListBox1
        .ColumnCount = 2
        .ColumnWidths = "1;0"
        .List = Range("t_Articles").ListObject.DataBodyRange.Value
    End With
    .ListBox2.Visible = False
    .ListBox3.Visible = False
    .ListBox5.Visible = False
      '.ComboBox2.List = Range("t_Paiements").ListObject.DataBodyRange.Value
End With

End Sub
Merci Vgendron, je pourrai adapter sur mes fichiers.
 

cgpa

XLDnaute Occasionnel
Bonjour,
la réponse dans ton fichier (joint)
Cela répond il à tes attentes?
Cdt
nb : je te laisse reorganiser l'esthétisme de ton UF que j'ai un peu massacré.
Frédéric
Merci Frédéric, c'est parfaitement le résultat attendu. Il s'agissait d'un fichier d'essai: je vais pouvoir adapter mon fichier de base grâce à ton code et aux aides de vgendron et Frédéric également. C'est quand même bien de pouvoir apprendre ainsi. Merci à tous!
 

Discussions similaires

Réponses
33
Affichages
2 K