VBA – Comment mettre des images en couleurs ? Notre expert vous dévoile ses secrets…
Il y a quelques temps, un client souhaitait mettre en couleur des images en fonction de valeurs calculées dans un tableau. Voici donc un exemple simplifié pour vous montrer que cette opération est relativement simple.
Préparation
Dans un premier temps, il faut préparer les données et les images. Cette opération peut être relativement chronophage…
Voici un exemple : nous avons une table de données avec une valeur par département, une seconde table avec des couleurs et les bornes et enfin, une carte de France.
L’objectif est de mettre en couleur les départements en fonction de leurs valeurs et de la table de couleurs.
Pour que le code puisse fonctionner correctement, il faut faire créer une clef de correspondance entre le tableau et les images. Il faut donc nommer chaque image (« _00 »).
Code
Voici le code qui permet de mettre en couleur des images :
Sub Coloration()
Dim Cel As Range, Rng As Range, Plage As Range
Dim Shp As Shape
Set Plage = Feuil1.ListObjects(« TbBornes »).DataBodyRange.Columns(1)
‘ — Boucle sur les département
For Each Cel In Feuil1.ListObjects(« TbValeurs »).DataBodyRange.Columns(1).Cells
‘ — Image
Set Shp = Feuil1.Shapes(« _ » & Format(Cel.Value, « 00 »))
‘ –- Couleur par défaut
Shp.Fill.ForeColor.RGB = Plage.Cells(Plage.Cells.Count).Offset(0, 1).Interior.Color
‘ — Recherche de la valeur dans la table
For Each Rng In Plage.Cells
If Cel.Offset(0, 2).Value <= Rng.Value Then
‘ — Mise en couleur
Shp.Fill.ForeColor.RGB = Rng.Offset(0, 1).Interior.Color
Exit For
End If
Next Rng
Next Cel
End Sub
En résumé :
- On boucle sur chaque département
- On identifie l’image associée
- On applique une couleur par défaut
- On boucle sur les données de la table des couleurs
- On met en couleur l’image
Dans cet exemple, les images ont été nommées avec un underscore (« _ »). Si nous avions utilisé un numéro, cela aurait « perturbé » le code. En effet, il est possible d’instancier un objet (ici, une image) par son nom ou bien son index (numéro).
Enfin, pour mettre à jour les couleurs il est possible de mettre un bouton-commande afin de déclencher la macro ou bien d’utiliser le « Application.Volatile » au début du code pour que cela se fasse de manière automatique et transparente pour l’utilisateur.
Résumé
Cet exemple permet de vous montrer qu’il est « relativement » simple de mettre en place une coloration d’images en fonction de valeur. Ainsi les couleurs sont paramétrables sans avoir à modifier le code de programmation.
Les Experts Excel vous proposent des formations, du développement, de l’expertise et de l’assistance sur Microsoft Excel. N’hésitez plus et contactez-les dès maintenant !