Double condition, double filtre d'une même colonne

Salut,

J'essaye de filtrer une colonne avec 2 conditions

If CheckBox1 = True And ComboBox1 = "4. Contexte de l'organisme" Then

Si la checkbox est cochée et que le texte "4. Contexte de l'organisme" a été sélectionné dans la liste déroulante, alors

Sheets("Analyse").Select

       ActiveSheet.Range("$A$1:$F$172").AutoFilter Field:=1, Criteria1:=RGB(217, 217, 217), Operator:=xlFilterCellColor    'filtre couleur
          'filtre chapitre
       ActiveSheet.Range("$A$1:$F$172").AutoFilter Field:=1, Criteria1:=Array( _
        "4 Contexte de l'organisme" & Chr(10) & "4.1 Compréhension de l'oganisme et de son contexte", _
        "4.2 Compréhension des besoins et des attendus des parties intéressées", _
        "4.3 Détermination du domaine d'application du système de management de la qualité" _
        , "4.3.1 Détermination du domaine d'application du SMQ - supplément", _
        "4.3.2 Exigences spécifiques du client", _
        "4.4 Système de management de la qualité et ses processus" & Chr(10) & "4.4.1", _
        "4.4.1.1 Conformité des produits et des processus", _
        "4.4.1.2 Sécrurité du produit", "4.4.2"), Operator:=xlFilterValues

On va filtrer par couleur car la case 1 est cochée et un filtre par chapitre car le texte "4. Contexte de l'organisme" a été sélectionné dans la liste déroulante.

Mais le problème c'est que seulement l'un de ces deux filtre est appliqué et je ne comprends pas pourquoi...

Merci à vous

Ok je viens de voir qu'il est impossible de filtrer de deux façon différente une colonne, je vais essayer de contourner le problème.

En indiquant une valeur à la couleur dans une autre colonne je peux désormais filtrer par 2 critères mon tableau

    Sheets("Analyse").Select 'filtre chapitre
    ActiveSheet.Range("$A$1:$G$172").AutoFilter Field:=1, Criteria1:=Array( _
        "4 Contexte de l'organisme" & Chr(10) & "4.1 Compréhension de l'oganisme et de son contexte", _
        "4.2 Compréhension des besoins et des attendus des parties intéressées", _
        "4.3 Détermination du domaine d'application du système de management de la qualité" _
        , "4.3.1 Détermination du domaine d'application du SMQ - supplément", _
        "4.3.2 Exigences spécifiques du client", _
        "4.4 Système de management de la qualité et ses processus" & Chr(10) & "4.4.1", _
        "4.4.1.1 Conformité des produits et des processus", _
        "4.4.1.2 Sécrurité du produit", "4.4.2"), Operator:=xlFilterValues
    ActiveSheet.Range("$A$1:$G$172").AutoFilter Field:=7, Criteria1:="<>" 'filtre couleur

Bonjour,

Si la couleur est sur toute la ligne, vous pouvez normalement avoir le filtre couleur sur la colonne 7 par exemple et le filtre textuel sur la première.

Voici d'ailleurs un essai :

With Sheets("Analyse")
    .Range("$A$1:$F$172").AutoFilter Field:=7, Criteria1:=RGB(217, 217, 217), Operator:=xlFilterCellColor    'filtre couleur
    .Range("$A$1:$F$172").AutoFilter Field:=1, Criteria1:="=4*", Operator:=xland
end with

Cdlt,

Malheureusement la cellule en couleur n'est que sur la première cellule de la colonne x)

Merci quand même c'est une bonne idée

J'ai posté ce petit bout de code car il parait utile pour le filtre sur la colonne 1. Vous avez déjà trouvé une solution pour la colonne 7.

Oui votre partie de code m'a permit de raccourcir mon filtre en colonne 1.

Pour la colonne 7 j'ai fais en sorte que quand la cellule est coloriée alors un "1" s'affiche dans la colonne 7 qui est masquée dans le tableur.

If CheckBox1 = True And ComboBox1 = "4. Contexte de l'organisme" Then 'filtre par couleur de la case a cocher 1
    Sheets("Analyse").Select
    With Sheets("Analyse")
        .Range("$A$1:$F$172").AutoFilter Field:=7, Criteria1:="<>" 'filtre couleur
        .Range("$A$1:$F$172").AutoFilter Field:=1, Criteria1:="=4*", Operator:=xlAnd 'filtre chapitre
    End With
End If

Ce qui me permet de différencier les couleurs assez facilement puisqu'il n'y en a que deux.

C'est une bonne idée !

Je vous fais une petite proposition pour éventuellement factoriser votre code au cas où votre combobox listerait des valeurs "1. ...", "2. ...", etc

Chap = left(Combobox1, instr(Combobox1, ".")-1)
If CheckBox1 = True And Chap like "#*" Then 'filtre par couleur de la case a cocher 1
    With Sheets("Analyse")
        .Range("$A$1:$F$172").AutoFilter Field:=7, Criteria1:="<>" 'filtre couleur
        .Range("$A$1:$F$172").AutoFilter Field:=1, Criteria1:="=" & Chap & "*", Operator:=xlAnd 'filtre chapitre
        .activate
    End With
End If

Cdlt,

Rechercher des sujets similaires à "double condition filtre meme colonne"