XL 2013 Filtre avancé avec critère de couleur

degards

XLDnaute Occasionnel
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
 

Pièces jointes

  • Nouveau Remisage 201014 ESSAI.xlsm
    101.3 KB · Affichages: 16

Hasco

XLDnaute Barbatruc
Repose en paix
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
 

Pièces jointes

  • Nouveau Remisage 201014 ESSAI.xlsm
    103.9 KB · Affichages: 6

Nairolf

XLDnaute Accro
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 Occasionnel
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 Occasionnel
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 Accro
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 Accro
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)))
 

Discussions similaires

Réponses
2
Affichages
655

Statistiques des forums

Discussions
311 733
Messages
2 082 011
Membres
101 866
dernier inscrit
XFPRO