XL 2021 Visibilité filtre automatique

  • Initiateur de la discussion Initiateur de la discussion sellig 29
  • 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 !

sellig 29

XLDnaute Occasionnel
Bonjour,
J'aurais souhaité que la cellule dans laquelle le filtre est utilisé se remplisse d'une couleur (rouge) afin de visualiser rapidement la ou les colonnes qui sont filtrées.
Merci par avance pour votre aide!
 

Pièces jointes

Bonsoir à tous😉,

Une presque solution par VBA. Les couleurs sont actualisées si on change la sélection au sein de la feuille (masquer ou afficher des lignes ne provoque pas un évènement qui peut être intercepté au sein de VBA🙁).

Donc :
  1. modifier un ou plusieurs filtres
  2. puis changer de cellule pour déclencher la macro
Mettre le code suivant dans le module de la feuille Feuil1.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim base As Range, x
   If Me.AutoFilterMode Then
      Set base = Me.AutoFilter.Range(1, 1)
      For Each x In Me.AutoFilter.Filters
         base.Interior.Color = IIf(x.On, vbRed, vbYellow)
         Set base = base.Offset(, 1)
      Next x
   End If
End Sub
 

Pièces jointes

Bonjour,

J. Boisgontier avait pondu ceci:

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 A1:G1
  • Format/mise en forme conditionnelle/La formule est
=ChampActif(A1)
 
Bonsoir à tous😉,

Une presque solution par VBA. Les couleurs sont actualisées si on change la sélection au sein de la feuille (masquer ou afficher des lignes ne provoque pas un évènement qui peut être intercepté au sein de VBA🙁).

Donc :
  1. modifier un ou plusieurs filtres
  2. puis changer de cellule pour déclencher la macro
Mettre le code suivant dans le module de la feuille Feuil1.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim base As Range, x
   If Me.AutoFilterMode Then
      Set base = Me.AutoFilter.Range(1, 1)
      For Each x In Me.AutoFilter.Filters
         base.Interior.Color = IIf(x.On, vbRed, vbYellow)
         Set base = base.Offset(, 1)
      Next x
   End If
End Sub
Merci beaucoup, je vais l'essayer sur mon fichier source dans la soirée
 
Bonjour,

J. Boisgontier avait pondu ceci:

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 A1:G1
  • Format/mise en forme conditionnelle/La formule est
=ChampActif(A1)
Merci beaucoup
Bonjour,

J. Boisgontier avait pondu ceci:

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 A1:G1
  • Format/mise en forme conditionnelle/La formule est
=ChampActif(A1)
Merci beaucoup
 
Re,

Le code précédent fonctionne avec une plage ordinaire.

Mais si le tableau filtré est un tableau structuré, le code doit être changé pour celui-ci (code dans le module de Feuil2):
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim base As Range, x
   Set base = [b4]
   With [b4].ListObject.AutoFilter
      For Each x In .Filters
         base.Interior.Color = IIf(x.On, vbRed, vbYellow)
         Set base = base.Offset(, 1)
      Next x
   End With
End Sub

Le classeur joint montre cela dans la feuille "Tableau-structuré".
 

Pièces jointes

Re,

Le code précédent fonctionne avec une plage ordinaire.

Mais si le tableau filtré est un tableau structuré, le code doit être changé pour celui-ci (code dans le module de Feuil2):
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim base As Range, x
   Set base = [b4]
   With [b4].ListObject.AutoFilter
      For Each x In .Filters
         base.Interior.Color = IIf(x.On, vbRed, vbYellow)
         Set base = base.Offset(, 1)
      Next x
   End With
End Sub

Le classeur joint montre cela dans la feuille "Tableau-structuré".
Merci beaucoup
 
- 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
118
Réponses
1
Affichages
135
Retour