XL 2013 Filtre avancé avec critère de couleur

  • Initiateur de la discussion Initiateur de la discussion degards
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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:
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 !!
 
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
 
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.
 
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)))
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
1 K
Réponses
1
Affichages
2 K
Compte Supprimé 979
C
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
872
Retour