Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
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!
Disons que la couleur serait un plus, l'entonnoir est relativement discret et sur un tableau comprenant de nombreuses colonnes la couleur attirerait plus facilement le regard.
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 :
modifier un ou plusieurs filtres
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
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 :
modifier un ou plusieurs filtres
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
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é".
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é".
Bonjour,
j'ai tenté d'appliquer le code que vous m'avez transmis et malheureusement la cellule ne se colorise pas? Pouvez vous SVP, jeter un œil sur le fichier rectifié, j'ai peut être fait une erreur...
Merci
- 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