XL 2010 Filtrage automatique / macros vba

oussama4210

XLDnaute Nouveau
Bonjour,
Donc voilà je vous explique mon problème , je souhaite effectuer un filtre automatique corcernant ma 2eme colonne sur ma feuille donnée
, le but est de pouvoir filtrer ma colonne selon les checkbox cochées! Jusqu'à maintenant j'ai réussi avec 1 Seul critères à la fois , ce que je souhaite faire c'est de selection plusieurs checkbox et un code vba qui permet d'automatiser le filtrage sur la même colonne
Merci d'avance et j'espère que j'étais clair dans mes explications
 

Paf

XLDnaute Barbatruc
Re : Filtrage automatique / macros vba

Bonjour et bienvenue sur XLD,


Si sur le principe la demande est claire, sans classeur exemple contenant des données non confidentielles et la macro, difficile de proposer une solution adaptée à votre configuration.

A+
 

Paf

XLDnaute Barbatruc
Re : Filtrage automatique / macros vba

Re,

une solution possible: à chaque clic sur une checkbox on remplit un tableau avec le caption de chaque checkbox à True. Puis on utilise ce tableau comme critère de filtre

Code:
Dim TabCheck() ' à déclarer en haut de la feuille pour être vu par toutes les sub

Code:
Sub FiltreTab()  ' à rajouter dans la feuille de code
 Erase TabCheck
 For Each obj In ActiveSheet.OLEObjects
    If TypeOf obj.Object Is msforms.CheckBox Then
        If obj.Object.Value Then
            x = x + 1
            ReDim Preserve TabCheck(1 To x)
            TabCheck(x) = obj.Object.Caption
        End If
    End If
 Next obj
 Sheets("données").Range("$a$2:$db$114049").AutoFilter Field:=2, Criteria1:=TabCheck, Operator:=xlFilterValues
End Sub

et pour chaque checkbox faire appel à cette sub FiltreTab en modifiant le code existant
Code:
Private Sub JDe_Click()
 FiltreTab 
End Sub

Utiliser un tableau comme critère n'existe pas sur XL2003, je n'ai donc pas pu tester....

A+
 

oussama4210

XLDnaute Nouveau
Re : Filtrage automatique / macros vba

Re,

une solution possible: à chaque clic sur une checkbox on remplit un tableau avec le caption de chaque checkbox à True. Puis on utilise ce tableau comme critère de filtre

Code:
Dim TabCheck() ' à déclarer en haut de la feuille pour être vu par toutes les sub

Code:
Sub FiltreTab()  ' à rajouter dans la feuille de code
 Erase TabCheck
 For Each obj In ActiveSheet.OLEObjects
    If TypeOf obj.Object Is msforms.CheckBox Then
        If obj.Object.Value Then
            x = x + 1
            ReDim Preserve TabCheck(1 To x)
            TabCheck(x) = obj.Object.Caption
        End If
    End If
 Next obj
 Sheets("données").Range("$a$2:$db$114049").AutoFilter Field:=2, Criteria1:=TabCheck, Operator:=xlFilterValues
End Sub

et pour chaque checkbox faire appel à cette sub FiltreTab en modifiant le code existant
Code:
Private Sub JDe_Click()
 FiltreTab 
End Sub

Utiliser un tableau comme critère n'existe pas sur XL2003, je n'ai donc pas pu tester....

A+
Je comprend pas tout , enfin je sais pas dans quel feuille dois je mettre les code , peux tu stp me modifier le fichier excel que j'ai mis et mettre le code vba ! Ça sera plus clair pour moi
 

Paf

XLDnaute Barbatruc
Re : Filtrage automatique / macros vba

Re,

pour chaque évènement click des checkbox ne laisser que l'appel à la sub FiltreTab, comme proposé au post #4.

corriger la sub FiltreTab:
Code:
Sub FiltreTab()  ' à rajouter dans la feuille de code
 Dim x As Integer, obj As Object
 Erase TabCheck
 For Each obj In ActiveSheet.OLEObjects
    If TypeOf obj.Object Is msforms.CheckBox Then
        If obj.Object.Value Then
            x = x + 1
            ReDim Preserve TabCheck(1 To x)
            TabCheck(x) = obj.Object.Caption
        End If
    End If
 Next obj
 If x > 0 Then
    Sheets("données").Range("$a$2:$db$114049").AutoFilter Field:=2, Criteria1:=TabCheck, Operator:=xlFilterValues
 Else
    Sheets("données").Range("$a$2:$db$114049").AutoFilter Field:=2
 End If
End Sub

s'il y a au moins une checkbox sélectionnée, on filtre selon le tableau; si aucune checkbox sélectionnée il n'y a plus de filtre;

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise