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.

VBA mettre en couleur des images

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é :

  1. On boucle sur chaque département
  2. On identifie l’image associée
  3. On applique une couleur par défaut
  4. On boucle sur les données de la table des couleurs
  5. 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 !