Unification de la série de couleurs sur le graphique avec les données source avec Excel VBA

Lors de la création d’un panneau de gestion, il est parfois nécessaire de s’adapter à une palette de couleurs préétablie. Par exemple, les données d’une région du Nord doivent être formatées dans la couleur appropriée ou un produit donné doit être mis en évidence dans une couleur propre à la marque. Grâce à cela, le bureau de gestion gagnera en cohérence, et les données seront plus facilement reconnaissables, ce qui se traduira par une facilité d’utilisation pour ses destinataires.
La macro décrite ci-dessous vous permet de colorer automatiquement la série de données dans le graphique avec les couleurs des données source. L’action consiste à utiliser d’abord des couleurs pour les données source, puis à utiliser une macro pour forcer la série de données correspondante dans le graphique à recevoir les mêmes couleurs. Bien que la figure suivante soit en noir et blanc, elle devrait vous donner une idée du fonctionnement de cette macro.

Figure: L’exécution de la macro formatera automatiquement la série de données dans le graphique pour qu’elle corresponde aux données source

ATTENTION
La macro ne peut pas gérer les couleurs qui ont été appliquées en raison d’une mise en forme conditionnelle ou d’un tableau mis en forme dans un modèle alterné. Cela est dû au fait que la mise en forme conditionnelle et l’ordre alterné n’existent pas. directement appliqué aux cellules.  ils sont appliqués à des objets qui, bien que placés dans des cellules, en sont néanmoins séparés.
Comment ca marche?
Tous les graphiques contiennent un objet SeriesCollection qui stocke différentes séries de données. La macro exécute une boucle pour toutes les séries, les activant une par une. Après avoir activé une série, diverses modifications peuvent être apportées à l’aide de nombreuses propriétés.
Dans ce cas, nous définissons la couleur sur une couleur extraite des données source. Les plages de données de base sont identifiées par une formule de série. Les formules de séries contiennent les adresses des plages des données source. En transmettant ces adresses à un objet Range, nous pouvons obtenir des informations sur la couleur de remplissage des cellules, puis l’utiliser pour formater une série de données.

Sub UnificationCouleur()

'Étape 1: Déclaration des variables

Dim oChart As Chart

Dim MySeries As Series

Dim FormulaSplit As Variant

Dim SourceRangeColor As Long

'Étape 2: Afficher le graphique actif

On Error Resume Next

Set oChart = ActiveChart

'Étape 3: Terminer si aucun graphique n'est sélectionné

If oChart Is Nothing Then

MsgBox "Vous devez d'abord sélectionner un graphique."

Exit Sub

End If

'Étape 4: commencez une boucle pour une série dans le graphique

For Each MySeries In oChart.SeriesCollection

'Étape 5: Récupération de la plage de données source pour la série de données dans le graphique

FormulaSplit = Split(MySeries.Formula, ",")(2)

'Étape 6: obtenir les informations de couleur de la première cellule

SourceRangeColor = Range(FormulaSplit).Item(1).Interior.Color

'Étape 7: Remplir de couleur

On Error Resume Next

MySeries.Format.Line.ForeColor.RGB = SourceRangeColor

MySeries.Format.Line.BackColor.RGB = SourceRangeColor

MySeries.Format.Fill.ForeColor.RGB = SourceRangeColor

If Not MySeries.MarkerStyle = xlMarkerStyleNone Then

MySeries.MarkerBackgroundColor = SourceRangeColor

MySeries.MarkerForegroundColor = SourceRangeColor

End If

'Étape 8: Passez à la série suivante

Next MySeries

End Sub

 

1. Dans la première étape, quatre variables sont décantées. sont: oChart en tant que conteneur pour le graphique, MySeries en tant que conteneur pour chaque série de graphiques, FormulaSplit pour récupérer et stocker une plage de données source, et SourceRangeColor pour récupérer et stocker l’index du remplissage des données source.

2. La macro est conçue pour que les modifications soient appliquées au graphique sélectionné. En d’autres termes, le graphique doit être sélectionné pour que la macro fonctionne. Il a été supposé que la macro est censée fonctionner sur le graphique sur lequel on a cliqué précédemment.

Dans la deuxième étape, la variable oChart est définie sur le graphique actif (ActiveChart). Si le graphique n’est pas sélectionné, une erreur sera renvoyée. C’est pourquoi l’instruction On Error Resume Next a été utilisée. Il indique à Excel de continuer à s’exécuter lorsqu’une erreur se produit.

3. La troisième étape vérifie si oChart contient les données du tracé. Si la variable oChart a la valeur Nothing, cela signifie qu’aucun graphique n’a été sélectionné avant d’exécuter la macro. Dans ce cas, l’utilisateur reçoit un message approprié et la macro se termine.

4. À l’étape quatre, une instruction For Each est utilisée pour démarrer une boucle pour la série de données dans les graphiques actifs (SeriesCollection).

5. Chaque série de données du graphique a une formule de série. La formule de série contient une référence à la feuille de calcul indiquant les cellules utilisées pour créer le graphique. Une formule de série typique ressemble à ceci:

= SÉRIE (Feuille1! $ F $ 6, Feuille1! $ D $ 7: $ D 10 $ Feuille1! $ F $ 7: $ F 10,2 $)

 

Comme vous pouvez le voir, il existe trois gammes différentes. Le premier indique le nom de la série, le second indique les étiquettes de la série de données et le troisième indique les valeurs de la série de données.

À l’étape cinq, la fonction Spli t a été utilisée, avec laquelle la plage de valeurs de la série de données a été extraite.

6. Dans la sixième étape, l’indice de couleur de la première cellule de la plage de données source est obtenu. On suppose que la première cellule est formatée comme le reste des données de la plage.

7. Une fois que vous avez les informations d’index des couleurs, vous pouvez les utiliser pour la série de données sélectionnée.

8. Dans la dernière étape, la boucle passe à la série suivante. Lorsque la boucle a traversé toutes les séries de données du graphique, la macro se ferme.

Comment appliquer une macro?

Le meilleur endroit pour stocker cette macro est le classeur de macros personnelles. De cette façon, la macro sera toujours disponible. Le classeur de macros personnelles est chargé chaque fois que vous démarrez Excel. Dans la fenêtre Projet VBE, le fichier sera nommé PERSONAL.XLSB.

1. Utilisez la combinaison de touches Alt + F11 pour activer Visual Basic Editor.

2. Dans la fenêtre Projet, cliquez avec le bouton droit sur PERSONAL.XLSB.

3. Sélectionnez Insertion / Module.

4. Entrez ou collez le code dans le module nouvellement créé.

Si le fichier PERSONAL.XLSB n’est pas visible, cela signifie qu’il n’a pas encore été créé. Enregistrez la macro et sélectionnez le classeur de macros personnelles comme stockage.

Pour enregistrer une macro dans le classeur de macros personnelles, sélectionnez-le dans la boîte de dialogue Enregistrer une macro qui s’affiche lors de l’enregistrement d’une macro. Cette option est disponible dans la fenêtre Enregistrer une macro dans la liste déroulante Enregistrer la macro dans. Enregistrez simplement le clic de quelques cellules, puis remplacez la macro par celle décrite précédemment.

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x