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

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

  • Classeur1.xlsx
    9.4 KB · Affichages: 36
  • Classeur1.xlsx
    9.4 KB · Affichages: 37
  • Classeur1.xlsx
    9.4 KB · Affichages: 36
Dernière édition:

djodjodjo

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

C'est juste, voici un exemple de ce que je souhaite :)
 

Pièces jointes

  • Classeur1.xlsx
    9.4 KB · Affichages: 45
  • Classeur1.xlsx
    9.4 KB · Affichages: 45
  • Classeur1.xlsx
    9.4 KB · Affichages: 43

STephane

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

Ce sujet a déjà été traité sur le forum. il faut faire une fonction personnalisée et donc rajouter une colonne utilisant cette fonction.
 

Pièces jointes

  • xld_djodjodjo_2321111.xls
    35 KB · Affichages: 35

job75

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

  • Filtre MFC(1).xls
    55.5 KB · Affichages: 40
Dernière édition:

job75

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

  • Filtre MFC(2).xls
    56 KB · Affichages: 30

job75

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

  • Filtre MFC(3).xls
    56.5 KB · Affichages: 37

job75

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

Bonjour le fil, le forum,

Avant de partir dans la Dombes, une version (4) plus rapide.

La formule (R1C1) est mémorisée dans FR1C1.

A+
 

Pièces jointes

  • Filtre MFC(4).xls
    56.5 KB · Affichages: 48

Discussions similaires