[VIDEO] Comment sélectionner les cellules de même couleur
Dans ce tutoriel, nous allons voir comment grâce à une macro-commande développée en VBA nous allons pouvoir sélectionner un ensemble de cellules dont la couleur de fond correspond à une couleur spécifique.
Pour suivre cet article dans les meilleures conditions, je vous invite à télécharger le fichier dans le lien disponible en fin d’article (cliquez ici pour y accéder).
1. Préparation de la feuille de calcul
Pour commencer nous allons affecter des couleurs à un certain nombre de cellules (couleur que nous allons sélectionner de manière aléatoire).
Nos cellules possèdent désormais une couleur de fond. L’objectif à présent est que lorsque nous sélectionnons n’importe laquelle de ces cellules, automatiquement et de manière instantanée, Excel sélectionne l'ensemble des autres cellules dont la couleur de fond est strictement identique à la cellule sélectionnée.
Pour cela nous allons développer une macro-commande très simple en VBA.
2. Un peu VBA
Les macro-commandes sont à saisir dans l’outil de développement d’Excel qui s’affiche en cliquant sur le bouton « Visual Basic » disponible dans l’onglet « Développeur » du ruban d’Excel.
Si l’onglet développeurs n’est pas affiché :
- Rendez-vous dans l'onglet « Fichier »,
- Sélectionnez « Option »,
- Dans la partie « Personnaliser le ruban », vérifiez que l'option « Développeur » est bien cochée, si ce n'est pas le cas cochée la, puis validez en cliquant sur le bouton [Ok].
Une fois l'onglet « Développeur » affiché, nous pouvons cliquer sur le bouton « Visual basic » afin d'ouvrir l'outil de développement de Microsoft Excel, qui va nous permettre de créer notre macro.
Après nous être assuré que nous nous trouvons bien dans le bon classeur (en regardant le nom du fichier en haut de la fenêtre : « Excelformation.fr - sélectionner une cellule par rapport à sa couleur.xlsm »), nous pouvons insérer un nouveau module. Dans ce module nous allons pouvoir saisir notre code, dans une nouvelle procédure que nous allons appeler « selectionCelluleParCouleur » :
Sub selectionCelluleParCouleur()
End Sub
La première chose qui va nous intéresser ici c'est donc de connaître la couleur de fond de la cellule sélectionnée. Nous allons donc créer une nouvelle variable que nous allons appeler « couleur » et qui va être de type « long » (c’est-à-dire un nombre entier qui va pouvoir prendre une grande valeur). Puis nous allons donner pour valeur à cette variable le numéro qui correspond à la couleur du fond de la cellule sélectionnée
Sub selectionCelluleParCouleur()
Dim couleur As Long
couleur = ActiveCell.Interior.Color
End Sub
Où :
- ActiveCell : correspond à la cellule sélectionnée,
- ActiveCell.Interior.Color : permet de récupérer la couleur du fond de la première cellule sélectionnée (il s’agit d’un numéro de série de 0 pour le noir à 16777215 pour le blanc)
Note : nous utilisons ici Activecell plutôt que « Selection » afin de ne récupérer la couleur du fond que de la première cellule sélectionnée. En effet, si plusieurs cellules étaient sélectionnées, l’appel à « Selection » nous retournerait l’ensemble des plages sélectionnées. Il faudrait alors utiliser la propriété « selection.Cells(1,1) » pour ne s’occuper que de la première cellule.
Maintenant que nous connaissons et avons stocké la couleur de fond dans une variable, nous allons passer en revue chacune des cellules qui ont été utilisées dans la feuille de calcul grâce à l'instruction « ActiveSheet.UsedRange », afin de regarder pour chacune de ces cellules quelle est la couleur de fond.
Ensuite nous allons créer une nouvelle variable qui cette fois sera de type « range » (c’est-à-dire une plage de cellules) que nous allons appeler « plage » et dans laquelle nous viendrons stocker l'ensemble des cellules dont le fond correspond au fond de la cellule sélectionné.
Sub selectionCelluleParCouleur()
Dim couleur As Long
couleur = ActiveCell.Interior.Color
Dim plage As Range
Set plage = ActiveCell ' 1
For Each c In ActiveSheet.UsedRange ' 2
If c.Interior.Color = couleur Then ' 3
Set plage = Application.Union(plage, c) ' 4
End If
Next
plage.Select ' 5
End Sub
Où :
- 1 : La première cellule que nous allons affecter à notre variable « plage » est la cellule active. De cette manière pour ajouter de nouvelles cellules, nous pourrons simplement utiliser l’instruction « Union » qui se charge de fusionner des plages de cellules les unes aux autres.
- 2 : Ensuite nous allons passer en revue l'ensemble des cellules qui sont utilisées dans notre feuille de calcul,
- 3 : Nous regardons si le fond de la cellule correspond à la couleur stockée dans la variable « couleur »,
- 4 : Si tel est le cas, alors nous ajoutons cette cellule dans la plage « plage »,
- 5 : Enfin, nous sélectionnons chacune des cellules de cette plage
3. Tester la macro
Et voilà, nous en avons terminé avec notre code, nous allons pouvoir revenir à notre feuille de calcul afin de tester notre macro-commande.
Pour tester depuis la feuille de calcul :
- Commençons par sélectionner une cellule qui possède un fond de couleur,
- Appuyons sur les touches [Alt] + [F8] du clavier pour lancer le menu de sélection de macro,
- Double-cliquons sur la macro « selectionCelluleParCouleur »,
- Il ne nous reste plus qu’à regarder effectuer comme par magie le travail que nous lui avons demandé !
Pour permettre une exécution encore plus rapide et surtout plus pratique de cette macro, nous pouvons également créer un bouton :
- Dans l’onglet « Insertion » du ruban, nous allons sélectionner le menu « Illustration » > « Forme »,
- Puis nous allons sélectionner une forme, par exemple la forme « Rectangle »,
- Nous traçons notre rectangle sur la feuille de calcul,
- Clic-droit sur le rectangle pour modifier le texte : « Sélection par couleur »,
- À nouveau un clic-droit sur le rectangle, puis « affecter une macro », dans le menu qui s’affiche nous pouvons sélectionner la macro « selectionCelluleParCouleur »,
- Et ensuite nous allons sélectionner une cellule qui contient la couleur de fond qui nous intéresse, puis enfin cliquer sur le bouton que nous venons d’insérer
Télécharger le fichier d'exemple
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :