XL 2013 Filtre avancé avec critère de couleur

degards

XLDnaute Junior
Bonjour à vous, j’ai un tableau avec des MFC, j’aimerais ajouter une bouton qui déclenche une macro pour obtenir (filtrer) mes donnés selon le mois courant où les cellules avec remplissage rouge. Je suis capable de le faire séparément mais ensemble je ne trouve pas la solution. J’ai essayé dans mon code avec « xlor » mais cela ne fonction pas :
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=5, Criteria1:= xlFilterThisMonth, Operator:=xlOr, Criteria2:=RGB(255, 0, 0), Operator:=xlFilterCellColor

Est-ce que l’on pourrait m’aider ?

merci à l’avance
 

Fichiers joints

Roblochon

XLDnaute Barbatruc
Bonjour,

Il faut inverser les critères et les lier par un xlOr final
VB:
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=5, Criteria1:=RGB(255, 0, 0), _
                Operator:=xlFilterCellColor, Criteria2:=xlFilterThisMonth, Operator:=xlOr
Vous donne les lignes du mois ou (inclusif) celles en rouge.

cordialement
 

Fichiers joints

Nairolf

XLDnaute Impliqué
Salut,

Reblochon, ça ne fonctionne pas, ça ne filtre que sur la couleur, je pense que les autofilter couleur et date sont incompatibles.

degards, tu peux le faire en mettant les mêmes critères que sur tes MFC :
VB:
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=5, Criteria1:= _
        ">=" & CLng(DateSerial(Year(Date), Month(Date), 1)), Operator:=xlAnd, Criteria2:="<=" & CLng(Date)
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=8, Criteria1:= _
        "="
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=6, Criteria1:= _
        "<>*Expertise*", Operator:=xlAnd
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7, Criteria1:= _
        "<>*attente*", Operator:=xlAnd
 
Dernière édition:

degards

XLDnaute Junior
Bonjour,

Il faut inverser les critères et les lier par un xlOr final
VB:
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=5, Criteria1:=RGB(255, 0, 0), _
                Operator:=xlFilterCellColor, Criteria2:=xlFilterThisMonth, Operator:=xlOr
Vous donne les lignes du mois ou (inclusif) celles en rouge.

cordialement
Merci de votre aide mais en effet cela ne me donne que les lignes rouge, il me manque les ligne qui ne sont pas en rouge du mois courant.
Merci encore de votre aide !!
 

degards

XLDnaute Junior
Salut,

Reblochon, ça ne fonctionne pas, ça ne filtre que sur la couleur, je pense que les autofilter couleur et date sont incompatibles.

degards, tu peux le faire en mettant les mêmes critères que sur tes MFC :
VB:
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=5, Criteria1:= _
        ">=" & CLng(DateSerial(Year(Date), Month(Date), 1)), Operator:=xlAnd, Criteria2:="<=" & CLng(Date)
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=8, Criteria1:= _
        "="
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=6, Criteria1:= _
        "<>*Expertise*", Operator:=xlAnd
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7, Criteria1:= _
        "<>*attente*", Operator:=xlAnd
Merci aussi de votre support mais cela ne fonctionne pas. Je crois en effet que c'est incompatible ce que je veux. J'ai donc créé un colonne de plus avec un oui ou un non à savoir la ligne rouge et je vais faire un filtra avancé. Cela va fonctionné c'est sûr mais j'y avais pas pensé avant.

Merci encore
 

Nairolf

XLDnaute Impliqué
Salut,

En fait j'avais mal interprété ta demande (j'avais compris "et" au lieu de "ou"), j'ai fait une petite erreur en plus, je mets le correctif pour le cas du "et" :
VB:
If Month(Date) + 1 > 12 Then
    a = Year(Date) + 1
    b = 1
Else
    a = Year(Date)
    b = Month(Date) + 1
End If

    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=5, Criteria1:= _
        ">=" & CLng(DateSerial(Year(Date), Month(Date), 1)), Operator:=xlAnd, Criteria2:="<" & CLng(DateSerial(a, b, 1))
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=8, Criteria1:= _
        "="
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=6, Criteria1:= _
        "<>*Expertise*", Operator:=xlAnd
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7, Criteria1:= _
        "<>*attente*", Operator:=xlAnd
Pour le "ou", tu peux aussi faire une formule dans la nouvelle colonne avec l'ensemble des critères.
 

Nairolf

XLDnaute Impliqué
Salut,

Essaye avec la formule suivante dans une colonne du tableau sur laquelle tu pourras filtrer :
Code:
=OU(ET(ESTERREUR(CHERCHE("Expertise";[@[Endroit remisage]]));ESTERREUR(CHERCHE("attente";[@REMARQUES]));ESTERREUR(CHERCHE("bien";[@REMARQUES]));ESTVIDE([@CLOS]);NON(ESTVIDE([@[D-Agenda]]));$E13<AUJOURDHUI());ET([@[D-Agenda]]>=DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI());1);[@[D-Agenda]]<=DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())+1;1)))
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas