Userform avec checkboxes permettant de filtrer avec plusieurs critères

miniboulette

XLDnaute Nouveau
Bonjour,

J'aurai besoin d'un coup de main pour un travail que je dois faire sur une base de données.
Je débute en VBA, soyez indulgents avec moi...

Voilà, j'ai un tableau avec plusieurs colonnes, dont une que je cherche à trier grâce à des checkbox.

Il y a 12 choix possibles:
- banane
- fraise
- pomme...ce que vous voulez :). Et il se peut que dans ma cellule se trouvent à fois banane et fraise.

Je voudrais donc mettre en place 12 checkbox correspondants à mes fruits, et lorsque je coche une checkbox, toutes les cellules CONTENANT mon fruit apparaissent.

----> ça j'ai déjà réussi à le faire (voir mon exemple). Quand je coche juste 'banane', les résultats s'affichent correctement, mais quand je veux cocher 'pomme', et bien j'aimerais que ceux-ci s'ajoutent aux résultats obtenus avec le filtre 'banane'...et je veux la même chose si je coche 8 checkbox.

ô génies du codage, j'en appelle à votre bonté
 

Pièces jointes

  • test_filtres.xlsm
    16.9 KB · Affichages: 55
  • test_filtres.xlsm
    16.9 KB · Affichages: 65
  • test_filtres.xlsm
    16.9 KB · Affichages: 80

VDAVID

XLDnaute Impliqué
Re : Userform avec checkboxes permettant de filtrer avec plusieurs critères

Salut miniboulette,

Un test:

A placer dans le projet de ton Userform, et à condition que les numéros des labels à côtés des checkbox correspondent aux numéros des checkbox. (Exemple: Label1 va avec CheckBox1).



Code:
Dim maPlage As Range
Dim Ws As Worksheet
Dim i%
Dim FlagSelect As Boolean

Private Sub CommandButton1_Click()

    Dim ObjX As Object
    
    maPlage.Rows.Hidden = True
    FlagSelect = False
    
    With Ws
    
        For Each ObjX In Me.Controls
            
            If TypeName(ObjX) = "CheckBox" Then
                
                If ObjX.Value = True Then
                
                    For i = maPlage.Row To maPlage.Row + maPlage.Rows.Count - 1
                        
                        If .Cells(i, maPlage.Column + 1).Value Like "*" & Me.Controls("Label" & Right(ObjX.Name, 1)).Caption & "*" Then .Rows(i).Hidden = False
                        FlagSelect = True
                        
                    Next i
                    
                End If
                
            End If
        
        Next ObjX
        If FlagSelect = False Then maPlage.Rows.Hidden = False
        
    End With

End Sub

Private Sub UserForm_Initialize()
    
    Set Ws = Sheets("Sheet1")
    
    With Ws
    
        Set maPlage = .Range("A2:B" & .Range("A" & .Rows.Count).End(xlUp).Row)
        maPlage.Rows.Hidden = False
        
    End With
    
End Sub

N'hésite pas si tu as des questions !
Bonne journée
 
Dernière édition:

miniboulette

XLDnaute Nouveau
Re : Userform avec checkboxes permettant de filtrer avec plusieurs critères

Bonjour VDAVID et Merci pour ta réponse!

Mais ça ne marche pas...:(j'ai vérifié que les n° de labels correspondent aux n° de checkbox, tout est ok.
J'ai testé les checkboxes, et peu importe la quelle je coche, on m'affiche les résultats pour 'abricot'.

Je remets le fichier avec ton code, et un bouton pour faire apparaître le userform.
 

Pièces jointes

  • test_filtres.xlsm
    24.8 KB · Affichages: 74
  • test_filtres.xlsm
    24.8 KB · Affichages: 85
  • test_filtres.xlsm
    24.8 KB · Affichages: 104

VDAVID

XLDnaute Impliqué
Re : Userform avec checkboxes permettant de filtrer avec plusieurs critères

Re,

Oui désolé j'ai fait une erreur dans le code que j'ai posté en premier, mais je l'ai modifié entre-temps (11h12).

J'ai modifié la propriété de ObjX de .Caption à .Name et ça marche nickel ;)

Re copie-colle le code du premier poste dans le projet de feuille
 

miniboulette

XLDnaute Nouveau
Re : Userform avec checkboxes permettant de filtrer avec plusieurs critères

aaaahh oui ça fonctionne, tu es génial !! rapide et efficace :cool:

Je vais maintenant l'appliquer à quelque de chose de plus sérieux que les fruits... mais c'est déjà gagné grâce à toi :)

Encore merci !
 

Discussions similaires