Couleur sur filtre auto OK mais...

gdcobra91

XLDnaute Junior
Bonjour,

Je récupéré le code VBA afin de colorier la colonne si celle-ci a été filtrée par un filtre auto. Je souhaite modifié ce code afin de colorier uniquement la cellule titre de la colonne. Ceci a été fait (cf. code ci-dessous).

Ce que je ne parviens pas, est de supprimer la couleur uniquement sur les cellules titre de colonne et non sur toute la feuille (car je ne veux pas retirer la couleur d'origine de la feuille, différent de blanc).

Merci de votre aide.

Ci-dessous le code VBA.

Ps: le msgbox n'affiche pas la couleur d'origine, dommage j'aurai bien voulu récupérer cette couleur pour la conserver. Si vous avez une idée aussi pour cela. merci.

code:
--------------------------------------------------------------------
Sub Couleur_sur_Filtres_QuandClic()
Dim x As Integer
Dim Ws As Worksheet

Set Ws = Worksheets("Feuil1")

With Ws
'Enlève les couleurs initiales
.Rows.Interior.ColorIndex = xlNone
'Vérifie si la feuille est en mode filtre automatique
If .FilterMode = True Then
'boucle sur les filtres de la feuille

With .AutoFilter.Filters
For x = 1 To .Count
'Colorie la colonne en jaune si le filtre est actif
MsgBox "toto" & Ws.Cells(x).Interior.ColorIndex
If .Item(x).On Then Ws.Cells(x).Interior.ColorIndex = 6
Next
End With
End If
End With
End Sub
--------------------------------------------------------------------
 

skoobi

XLDnaute Barbatruc
Re : Couleur sur filtre auto OK mais...

Bonsoir,

Test ceci:

..........
...............
MsgBox "toto" & Ws.Cells(x).Interior.ColorIndex
If .Item(x).On Then
Ws.Cells(x).Interior.ColorIndex = 6
ElseIf Not .Item(x).On Then
Ws.Cells(x).Interior.ColorIndex = -4142 'sans couleur
End If

Next
End With
End If
End With
End Sub

je ne veux pas retirer la couleur d'origine de la feuille, différent de blanc).

Mais pourquoi alors tu fais ceci dans le code?:

'Enlève les couleurs initiales
.Rows.Interior.ColorIndex = xlNone
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Couleur sur filtre auto OK mais...

Bonjour,


On peut le faire par MFC:

Code:
Function ChampActif(c)
  Application.Volatile
  ChampActif = Sheets(Application.Caller.Parent.Name).AutoFilter.Filters.Item(c.Column -   Sheets(Application.Caller.Parent.Name).Range("_FilterDataBase").Column + 1).On
End Function


Pour appliquer une MFC sur les titres:
-Sélectionner les titrres
-Format/mise en forme conditionnelle/La formule est
=ChampActif(A1)

JB
Formation Excel VBA JB
 

Pièces jointes

  • MFCChampActif.xls
    25.5 KB · Affichages: 155

stephane.quinquis

XLDnaute Junior
Re : Couleur sur filtre auto OK mais...

Bonjour le fil,


Pour info, j'ai trouvé d'où vient le problème.

Je dispose de filtre auto. J'avais envie qu'il soit surligné d'une autre couleur quand ils sont activés. J'ai donc utilisé la solution de boisgontier avec le code suivant:
Code:
Function ChampActif(c)
  Application.Volatile
  ChampActif = Sheets(Application.Caller.Parent.Name).AutoFilter.Filters.Item(c.Column - Sheets(Application.Caller.Parent.Name).Range("_FilterDataBase").Column + 1).On
End Function

Elle ne fonctionnait pas quand je l'ai placé dans thisworbook et dans une feuil. J'ai lu sur le forum qu'en la plaçant dans un module cela pouvait fonctionner et donc ça a fonctionné.

Par contre l'effet pervers est que ma macro d'importation de données ne fonctionnait plus. Quand je supprime la macro sur le filtre auto, elle fonctionne de nouveau. Donc c de là que vient le problème, d'une mise en forme conditionnelle.
Quelqu'un aurait-il une explication à cela?? Puis-je faire fonctionner la macro de boisgontier d'une autre façon???

Merci
 

aubelix

XLDnaute Impliqué
Bonjour à tous les amis du Forum. :)

Est-il possible de revenir à la couleur initiale de l'en-tête
de la colonne filtrée ? :confused:
Si le fond est vert avant le filtre, revenir en fond vert après
la suppression du filtre...

Par avance Merci pour vos réponses.
Cordialement.
 

Statistiques des forums

Discussions
312 148
Messages
2 085 770
Membres
102 969
dernier inscrit
pizza