Comment automatiser le changement de couleur des onglets Excel ?
Dans ce tutoriel, je vais vous montrer comment changer la couleur de l'onglet des feuilles Excel en fonction de la valeur d'une cellule.
Cette astuce est très utile pour une meilleure visualisation et une meilleure organisation des données dans Excel.
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Introduction au changement de couleur de l'onglet en fonction de la valeur de la cellule
1.1. Qu’est-ce qu’un onglet
Excel permet d'organiser des données de toutes sortes en les répartissant sur plusieurs feuilles de calcul, chacune ayant son propre contenu.
Les boutons situés en bas de la fenêtre Excel, appelés « onglets », permettent de naviguer rapidement entre ces différentes feuilles de calcul.
Chacun de ces onglets représente une feuille de calcul unique, avec son propre nom et son propre contenu.
Ils sont donc essentiels pour organiser efficacement un classeur Excel, en séparant les données en catégories pour mieux les organiser, tout en facilitant la navigation dans le classeur.
Les onglets offrent également une vue d'ensemble rapide du contenu du classeur et permettent de passer rapidement d'une feuille de calcul à une autre.
1.2. Pourquoi est-il utile de changer la couleur de l'onglet ?
Changer la couleur de l'onglet d'une feuille Excel peut grandement améliorer l'organisation et la lisibilité de notre classeur.
En effet, en attribuant des couleurs différentes à des catégories spécifiques, nous pourrons rapidement identifier les feuilles contenant les données que nous recherchons.
Cela est particulièrement utile pour les classeurs contenant une grande quantité de données.
Nous pourrons ainsi utiliser des couleurs différentes pour distinguer les feuilles de calcul contenant les données de ventes, les feuilles de données de production, les feuilles de données de coûts, etc.
Les couleurs peuvent également être utilisées pour indiquer les niveaux de priorité ou pour mettre en évidence les feuilles de calcul importantes.
1.3. Comment changer la couleur d’un onglet ?
Pour modifier la couleur d'un onglet, nous devons tout d'abord cliquer avec le bouton droit de la souris sur l'onglet que nous souhaitons modifier.
Cela fera apparaître un menu déroulant dans lequel nous devrons sélectionner l'option « Couleur d'onglet ».
Une fois cette option sélectionnée, une boîte de dialogue s'ouvrira, qui nous permettra de choisir la couleur que nous souhaitons utiliser pour l'onglet.
Nous pouvons choisir la couleur en utilisant la palette de couleurs proposée ou en utilisant la fonctionnalité de sélection de couleurs personnalisées.
Une fois que nous avons choisi la couleur que nous voulons, nous pouvons cliquer sur le bouton « OK » pour enregistrer nos modifications.
Il est important de noter que la modification de la couleur d'un onglet ne modifie pas le contenu de la feuille de calcul elle-même, elle permet simplement de personnaliser la présentation de l'onglet pour faciliter la navigation dans le classeur Excel.
2. Comment adapter la couleur des onglets au contenu des cellules ?
2.1. Présentation d’un classeur
Dans cet exemple, nous allons travailler sur un classeur contenant de nombreuses feuilles de calcul reprenant les chiffres de ventes de plusieurs magasins implantés dans des différents pays.
Chaque feuille compile les ventes réalisées dans chaque pays.
Notre objectif est de rendre la navigation dans ce classeur plus facile et plus efficace en adaptant la couleur des onglets de chaque feuille en fonction du continent correspondant à chaque pays.
Nous utiliserons donc une macro VBA pour adapter la couleur des onglets de chaque feuille en fonction du continent correspondant à chaque pays, le nom de ce continent étant saisi en cellule A2.
En effet, il serait fastidieux de modifier manuellement la couleur de chaque onglet en fonction du continent, surtout si notre classeur contient un grand nombre de feuilles.
La programmation d'une macro VBA nous permettra de gagner du temps en automatisant cette tâche et nous assurera également que les couleurs sont uniformes sur l'ensemble du classeur.
Une macro VBA est un ensemble d'instructions ou de codes écrits en langage de programmation VBA (Visual Basic for Applications) qui permettent d'automatiser des tâches répétitives dans Excel.
Pour créer une macro VBA dans Excel, nous avons besoin d'utiliser l'éditeur de macros intégré.
Pour accéder à cet éditeur, nous pouvons utiliser le raccourci clavier « Alt + F11 » pour ouvrir directement l'éditeur.
Une fois dans l'éditeur de macros, nous créons une nouvelle macro en cliquant sur « Insertion », puis sur « Module ».
Un module est une feuille de code, qui permet de l'organiser en regroupant les instructions qui ont une fonctionnalité commune.
Ensuite, nous allons pouvoir créer la macro « changerCouleur » en utilisant le mot-clé Sub, suivi du nom de la macro :
Sub changerCouleur()
End Sub
Excel ajoute alors la ligne « End Sub » qui représente la fin de la macro, et tout ce que nous allons saisir entre ces deux lignes sera exécuté à chaque fois que nous appellerons la macro changerCouleur.
Ensuite, nous déclarons une variable nommée « sh » que nous typons en tant que « Worksheet », c'est-à-dire une feuille de calcul :
Dim sh As Worksheet
Nous utilisons une boucle « For Each » pour parcourir toutes les feuilles de calcul du classeur.
Comme nous l’avons déjà vu dans un tutoriel précédent, une boucle « For Each » est une instruction VBA qui permet de parcourir tous les éléments d'une collection, comme les éléments d'un tableau, les cellules d'une plage ou les feuilles d'un classeur.
Elle permet de répéter une action pour chaque élément de la collection, sans avoir besoin de connaître le nombre d'éléments à l'avance.
La boucle « For Each » se compose d'une variable de type objet, qui est initialisée à chaque élément de la collection, et d'un bloc d'instructions qui est exécuté pour chaque élément.
La boucle se termine automatiquement une fois que tous les éléments de la collection ont été parcourus.
For Each sh In ThisWorkbook.Worksheets
Nous utilisons ensuite l'instruction « Select Case » pour traiter les différentes valeurs saisies en cellule A2 sur chaque feuille de calcul et adapter la couleur de l'onglet en conséquence.
En effet, l'instruction Select Case permet de tester une variable, ici la valeur de la cellule A2 et d’effectuer une opération différente en fonction de sa valeur.
Si la valeur correspond à l'une des valeurs possibles, le code associé à cette valeur est exécuté.
Pour chaque cas, nous modifions la couleur de l'onglet de la feuille en question en utilisant la propriété « Tab.Color » de l'objet feuille de calcul et en spécifiant les valeurs RGB de la couleur voulue :
Select Case sh.[a2]
Case "Europe"
sh.Tab.Color = RGB(255, 0, 0)
Case "Asie"
sh.Tab.Color = RGB(0, 176, 80)
Case "Afrique"
sh.Tab.Color = RGB(0, 112, 192)
Case Else
sh.Tab.ColorIndex = xlColorIndexNone
End Select
Si aucune des valeurs saisies ne correspond à l'un des cas, nous réinitialisons la couleur de l'onglet à l'aide de la propriété « Tab.ColorIndex » :
sh.Tab.ColorIndex = xlColorIndexNone
Nous fermons ensuite la boucle « For Each » :
Next
Nous pouvons tester la macro en appuyant sur la touche [F5].
La couleur des onglets a bien été adaptée automatiquement !
2.2. Utiliser un évènement pour lancer la macro lors d’un changement de feuille
Maintenant que nous avons créé la macro changerCouleur(), nous voulons qu'elle se lance automatiquement lors de chaque changement sur le classeur.
Pour cela, nous allons utiliser un évènement de la classe Workbook appelé SheetChange.
En effet, un évènement est un type de macro particulier qui va se lancer lorsque quelque chose se produit dans un classeur, comme l'ouverture d'un classeur, la modification d'une cellule ou la sélection d'une feuille.
Pour créer cet évènement, nous cliquons sur « ThisWorkbook » dans l'éditeur de macros, puis nous sélectionnons « Workbook » dans la liste déroulante.
Nous sélectionnons ensuite l'évènement « SheetChange » dans la liste déroulante de droite.
L'évènement SheetChange se produit en effet lorsqu'une cellule est modifiée sur une feuille de calcul du classeur.
L’éditeur nous ajoute alors un nouvel évènement Workbook_SheetChange depuis lequel nous allons pouvoir appeler la macro changerCouleur :
Maintenant, si nous modifions la valeur de la cellule A2 d’une cellule, Excel va automatiquement changer la couleur de celle-ci :
Nous pourrons également ajouter de nouvelle feuille sur le classeur, et dès que nous saisissons l’un des continents en cellule A2, Excel va en modifier la couleur de l’onglet :
3. Reprendre la couleur de la première cellule de chaque feuille
Maintenant, voyons un autre cas de figure : ici, nous souhaiterons utiliser directement la couleur de fond de la cellule A1 pour déterminer la couleur d’onglet à utiliser.
Pour cela, nous allons sélectionner la macro changerCouleur, et la copier-coller juste en dessous :
Nous avons deux macros identiques, et nous allons pouvoir modifier le nom de la seconde en « changerCouleurViaCouleurCellule ».
Dans cette seconde macro, nous allons remplacer le « Select Case » par une instruction conditionnelle « If » pour vérifier si la couleur de la cellule A1 de la feuille actuelle est blanche (valeur 16777215) en utilisant la ligne :
If Sh.[a1].Interior.Color = 16777215 Then
Si la cellule est blanche, nous n’allons pas appliquer de couleur à l'onglet de la feuille en utilisant la ligne :
Sh.Tab.ColorIndex = xlColorIndexNone
Sinon, si la couleur de la cellule A1 n'est pas blanche, nous allons lui attribuer la même couleur que l'onglet en utilisant la ligne :
Sh.Tab.Color = Sh.[a1].Interior.Color
Il ne reste plus qu’à modifier l’évènement SheetChange pour appeler cette macro à la place de changerCouleur :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
changerCouleurViaCouleurCellule
End Sub