Filtrer toutes les lignes dont au moins une cellule possède une telle couleur de fond

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 !

djodjodjo

XLDnaute Occasionnel
Bonjour à tous,

Aujourd'hui j'aimerais pouvoir ne garder dans un fichier que des lignes "à problème" où des cellules à fond rouge (vous choisirez la valeur RGB de votre choix hein !) apparaissent. Si la ligne ne contient pas de cellule à fond rouge (obtenu après une mise en forme conditionnelle pour info), elle ne doit pas apparaitre.

Je pense que faire un test ligne par ligne, cellule par cellule sur la couleur de fond est trop laborieux. Il faut sûrement utiliser un filtre élaboré (test sur toutes les colonnes) et/ou peut-être Criteria1:=RGB(255, 80, 80), Operator:=xlFilterCellColor (?) mais je n'arrive pas à construire la macro...

Merci d'avance pour votre aide !
 

Pièces jointes

Dernière édition:
Re : Filtrer toutes les lignes dont au moins une cellule possède une telle couleur de

Re, salut STephane,

Voyez le fichier joint, les 3 boutons et les 3 macros dans Module1.

Il faut savoir qu'il n'est pas possible (sauf à créer une usine à gaz) de repérer la couleur des cellules colorées par MFC.

On repère les cellules en testant la formule de la MFC. Le test est ici une égalité :

Code:
If Evaluate(Cells(lig, col).FormatConditions(1).Formula1) = Cells(lig, col) Then
A+
 

Pièces jointes

Dernière édition:
Re : Filtrer toutes les lignes dont au moins une cellule possède une telle couleur de

Re,

Si la MFC est définie avec une formule, il faut évaluer (VRAI ou FAUX) cette formule pour chaque cellule.

Et donc sélectionner chaque cellule :

Code:
Cells(lig, col).Select
If Evaluate(ActiveCell.FormatConditions(1).Formula1) Then _
Fichier (2).

A+
 

Pièces jointes

Re : Filtrer toutes les lignes dont au moins une cellule possède une telle couleur de

Re,

Sélectionner les cellules ralentit beaucoup la macro.

On peut l'éviter en faisant une double conversion de la formule :

Code:
F = Cells(lig, col).FormatConditions(1).Formula1
F = Application.ConvertFormula(F, xlA1, xlR1C1, , ActiveCell)
F = Application.ConvertFormula(F, xlR1C1, xlA1, , Cells(lig, col))
If Evaluate(F) Then...
Fichier (3).

A+
 

Pièces jointes

- 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
Retour