Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Vider Listbox cascade si Listbox précédent est vide - aide

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 !

thespeedy20

XLDnaute Occasionnel
Bonjour le Forum,
Bonjour à tous,

J'ai une première listebox avec des Noms, quand je sélectionne le nom, il indique dans la seconde listbox le nom des cours... ainsi de suite jusqu'à la listebox classe.

Quand je veux décocher le critère Jour, la listboxclasse ne se vide pas... par contre quand je décoche les degrés, la listboxjour se vide...
 

Pièces jointes

Solution
Bonsoir à tous

des variables manquent dans vos macros, je vous conseille de le faire

sans trop changer votre projet, J'ai remarqué que dans la procédure Private Sub ListBoxJour_Change() ,vous avez cette ligne écrite comme ceci

VB:
        If dchoisis.exists(c.Value) And dchoisis2.exists(c.Offset(, 1).Value) And dchoisis3.exists(c.Offset(, 2).Value) Then mondico(c.Offset(, 9).Value) = "" ' And dchoisis4.exists(c.Offset(, 3).Value)

J'ai fait le changement suivant

VB:
        If dchoisis.exists(c.Value) And dchoisis2.exists(c.Offset(, 1).Value) And dchoisis3.exists(c.Offset(, 2).Value) And dchoisis4.exists(c.Offset(, 3).Value) Then mondico(c.Offset(, 9).Value) = ""


la procédure complète

VB:
Private Sub...
Bonsoir à tous

des variables manquent dans vos macros, je vous conseille de le faire

sans trop changer votre projet, J'ai remarqué que dans la procédure Private Sub ListBoxJour_Change() ,vous avez cette ligne écrite comme ceci

VB:
        If dchoisis.exists(c.Value) And dchoisis2.exists(c.Offset(, 1).Value) And dchoisis3.exists(c.Offset(, 2).Value) Then mondico(c.Offset(, 9).Value) = "" ' And dchoisis4.exists(c.Offset(, 3).Value)

J'ai fait le changement suivant

VB:
        If dchoisis.exists(c.Value) And dchoisis2.exists(c.Offset(, 1).Value) And dchoisis3.exists(c.Offset(, 2).Value) And dchoisis4.exists(c.Offset(, 3).Value) Then mondico(c.Offset(, 9).Value) = ""


la procédure complète

VB:
Private Sub ListBoxJour_Change()

     Dim mondico As Variant, i As Integer, c As Range
    
   Set dchoisis4 = CreateObject("Scripting.Dictionary")
   For i = 0 To Me.ListBoxJour.ListCount - 1
   If Me.ListBoxJour.Selected(i) = True Then dchoisis4(Me.ListBoxJour.List(i, 0)) = ""
   Next i
   If dchoisis4.Count > 0 Then Me.RésultatListBoxJour.List = dchoisis4.keys Else Me.RésultatListBoxJour.Clear
    
     'ajouter la classe
    Me.ListBoxClasse.Clear
    
    Set mondico = CreateObject("Scripting.Dictionary")
    For Each c In Range(f.[A2], f.[A65000].End(xlUp))
        If dchoisis.exists(c.Value) And dchoisis2.exists(c.Offset(, 1).Value) And dchoisis3.exists(c.Offset(, 2).Value) And dchoisis4.exists(c.Offset(, 3).Value) Then mondico(c.Offset(, 9).Value) = ""
    Next c
    If mondico.Count > 0 Then Me.ListBoxClasse.List = mondico.keys Else Me.ListBoxClasse.Clear
      
End Sub
 
Bonjour à tous,

chaque fois que vous avez des questions ou avez besoin d'aide, n'hésitez pas à demander, il y aura toujours quelqu'un ici sur le forum pour vous aider

à vous de poursuivre votre projet et de le créer comme vous le souhaitez

et ainsi vous apprenez VBA...
 
- 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

Discussions similaires

Réponses
33
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…