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

Listbox filtrée

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 !

CelluleVide

XLDnaute Occasionnel
Bonjour a tous,

J'ai un pb avec une liste de projets, dans la macro, Je voudrais que la listebox ne présente que les projets qui sont pas terminés, ou mieux, ajouter un filtre sur l'état des projets et ne faire apparaitre que ceux correspondant a l'état selectionné.

Exemple A voir en PJ.
Merci.
 

Pièces jointes

Re : Listbox filtrée

Bonjour CelluleVide, bonjour le forum,

En pièce jointe ton fichier modifié avec trois checkboxes et le code ci-dessous :
Code:
Private c As Range
 
Private Sub CheckBox1_Click() 'case à cocher "Étude"
Call test
End Sub
 
Private Sub CheckBox2_Click() 'case à cocher "En cours"
Call test
End Sub
 
Private Sub CheckBox3_Click() 'case à cocher "Terminé"
Call test
End Sub
 
Sub test()
Me.Lst_Projets.Clear
For x = 1 To 3
    If UserForm1.Controls("CheckBox" & x).Value = True Then
        For Each c In Range("Projets")
            If c.Offset(0, 5).Value = UserForm1.Controls("CheckBox" & x).Caption Then UserForm1.Lst_Projets.AddItem c.Value
        Next c
    End If
Next x
End Sub
 

Pièces jointes

Re : Listbox filtrée

Bonjour CelluleVide, bonjour le forum,

Remplace la procédure test par le code ci-dessous :
Code:
Sub test()
Dim x As Byte 'déclare la variable x (incrément de checkbox)
Dim i As Byte, j As Byte 'déclare les variables i et j (incrément d'élément de checkbox)
Dim temp As String 'déclare la variable temp (variable TEMPoraire)
 
Me.Lst_Projets.Clear 'vide la listbox
For x = 1 To 3 'boucle 1 : sur les 3 checkboxes
    If UserForm1.Controls("CheckBox" & x).Value = True Then 'condition : si la checkbox est cochée
        For Each c In Range("Projets") 'boucle 2 : sur toutes les cellules de la plage "Projets"
            'si la valeur de cellule de la colonne "état" est identique au texte de la checkbox, ajoute la cellule à la listbox
            If c.Offset(0, 5).Value = UserForm1.Controls("CheckBox" & x).Caption Then UserForm1.Lst_Projets.AddItem c.Value
        Next c 'prochaine cellule de la boucle 2
    End If 'fin de la condition
Next x 'prochaine checkbox de de boucle 1
 
With UserForm1.Lst_Projets 'prend en compte la listbox
    If .ListCount > 0 Then 'condition 1 : si la listbox contient au moins un élément
        For i = 0 To .ListCount - 1 'boucle 1 : sur tous les éléments de la listbox
            For j = 0 To .ListCount - 1 'boucle 2 : sur tous les éléments de la listbox
                If .List(i) < .List(j) Then 'condition 2 : si l'élément de la boucle 1 est inférieur à l'élément de la boucle 2
                    temp = .List(i) 'place l'élément de la boucle 1 dans une variable temporaire
                    .List(i) = .List(j) 'récupère l'élément de la boucle 2
                    .List(j) = temp 'récupère l'élément de la boucle 1
                End If 'fin de la condition 2
            Next j 'prochain élément de la boucle 2
        Next i 'prochain élément de la boucle 1
    End If 'fin de la condition 1
End With 'fin de la prise en compte de la listbox
End Sub
 

Pièces jointes

Re : Listbox filtrée

Bonjour CellulleVide, bonjour le forum,

En fait je viens de me rendre compte que si tu ne dois afficher qu'une seule catégorie, il faudrait remplacer les checkboxes par des OptionButtons. Ou alors afficher aussi l'état dans la listbox...

Je my penche dessus et je t'envoie le résultat.
 
Re : Listbox filtrée

Bonjour Robert, le forum,

Je m'était satisfait de la premiere solution triée car je voulais afficher deux catégories en meme temps, mais je garde tes propositions sous le coude au cas où.

Merci encore.
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…