Mise en forme des séries de données dans des diagrammes avec Excel VBA

Dans Excel, vous avez la possibilité de mettre en forme des séries de données dans des diagrammes. Par exemple, vous pouvez influencer l’espacement des colonnes ou des barres, utiliser différentes couleurs pour les objets du diagramme, choisir parmi une large sélection d’effets de police et de styles lors de l’étiquetage des diagrammes, et bien plus encore.
1 Présenter les profits et les pertes dans un histogramme
Dans la tâche suivante, les résultats mensuels sont affichés dans un histogramme. Pour savoir en un coup d’œil si un résultat tombe en dessous de 0 en un mois, c’est-à-dire si une perte est encourue, ces points de données doivent se voir attribuer la couleur d’arrière-plan rouge. La macro suivante presente cette tâche.

Sub ColonnesDifferentesCouleurs()
Dim SerieDonnees As Series
Dim PointDonnee As Point
Dim i As Integer
Dim DArray As Variant
Set SerieDonnees = _
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
With SerieDonnees
DArray = .Values
For Each PointDonnee In .Points
i = i + 1
If DArray(i) < 0 Then
PointDonnee.Interior.ColorIndex = 3
Else
PointDonnee.Interior.ColorIndex = 33
End If
Next
End With
End Sub
Commentaires:
 Définissez d’abord la variable SerieDonnees de type Series.

 Ensuite, vous lisez toutes les valeurs Y dans un champ de données, puis passez par une boucle For Each dans laquelle vous contrôlez les points de données individuels.

 Les valeurs se trouvent dans le champ de données DArray. Si un point de données a une valeur <0, l’intérieur de la colonne est formaté avec la couleur rouge.

Une teinte bleue est sélectionnée pour toutes les valeurs positives.

La macro précedente a une petite erreur de beauté. Vous devez toujours démarrer la macro manuellement pour reformater le diagramme. Ainsi, si vous modifiez les données du tableau, la mise en forme du diagramme ne change pas. Cependant, cela peut être résolu en programmant un événement.
L’événement est appelé Worksheet_Change et se produit lorsqu’une cellule de la feuille active change. Vous avez besoin exactement de cet événement maintenant.
Pour définir l’événement, procédez comme suit:
1. Basculez vers l’environnement de développement.
2. Dans l’explorateur de projet, cliquez sur le tableau sur lequel se trouve votre diagramme.
3. Entrez l’événement suivant dans la zone de code:

Private Sub Worksheet_Change(ByVal PlageCell As Range)
ColonnesDifferentesCouleurs
End Sub
Chaque fois que vous modifiez une cellule de votre feuille de calcul, que ce soit en l’entrant directement ou en utilisant une formule, la macro est démarrée dans différentes couleurs.
Si le diagramme se trouve sur une feuille de diagramme distincte, utilisez la macro suivante pour formater les colonnes.
Sub ColonnesDifferentesCouleurs()
Dim SerieDonnees As Series
Dim PointDonnee As Point
Dim i As Integer
Dim DArray As Variant
On Error Resume Next
Sheets("Graphique1").Activate
Set SerieDonnees = _
ActiveChart.SeriesCollection(1)
With SerieDonnees
DArray = .Values
For Each PointDonnee In .Points
i = i + 1
If DArray(i) < 0 Then
PointDonnee.Interior.ColorIndex = 3
Else
PointDonnee.Interior.ColorIndex = 33
End If
Next
End With
End Sub
2 Afficher une représentation réelle dans un diagramme à colonnes
L’exemple suivant consiste à mettre en forme les colonnes différemment en fonction de la date actuelle dans un diagramme dans lequel tous les 12 mois d’une année sont affichés. Imaginez qu’aujourd’hui était le 14 septembre 2001. Votre tâche consiste maintenant à formater les colonnes de janvier à septembre avec la couleur JAUNE. Les mois restants d’octobre à décembre doivent avoir la couleur BLEU. La macro suivante présente cette tache:
Sub DiagrammeColore()
Dim i As Integer
Dim j As Integer
Dim date1 As Date
Dim Dateindex As Integer
Sheets("Feuil1").Activate
date1 = Range("A1").Value
Dateindex = Month(date1)
For i = 1 To Dateindex
ActiveWindow.Visible = True
ActiveSheet.ChartObjects((1)).Activate
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Points(i).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
Next i
End Sub

Vous avez entré la fonction de table = AUJOURD’HUI () dans la cellule A1. Cette fonction vous donne la date actuelle. Vous enregistrez cette date dans la variable date1. Puis déterminez le mois de la date
en utilisant la fonction Mois. Cette fonction renvoie une valeur comprise entre 1 et 12. Vous savez maintenant combien de piliers vous devez colorier. Vous attribuez ensuite la couleur souhaitée dans une boucle.


3 Formater les légendes
Si vous le souhaitez, vous pouvez accéder directement à une légende et mettre en forme son étiquette. Vous avez la possibilité de spécifier la taille, la couleur et le style de la police. L’exemple suivant  utilise un
e Légende formatée avec le style de police GRAS et la couleur de police BLEU.
Sub LegendeFormat()
ActiveSheet.ChartObjects(1).Select
ActiveChart.HasLegend = True
With ActiveChart.Legend.Font
.Bold = True
.ColorIndex = 5
End With
End Sub

Si vous le souhaitez, vous pouvez accéder directement à une légende et mettre en forme son étiquette. Vous avez la possibilité de spécifier la taille de la police, la couleur de la police et le style de police. Dans l’exemple suivant, une légende est mise en forme avec le style de police BOLD et la couleur de police BLUE.
4 Ajouter des étiquettes supplémentaires
Si l’en-tête et les étiquettes d’axe ne vous suffisent pas, vous pouvez ajouter des champs de texte supplémentaires à votre diagramme incorporé. Jetez un œil à la macro suivante.

Sub ChampTexteSupplementaire()
ActiveSheet.ChartObjects(1).Select
ActiveChart.HasTitle = True
ActiveChart.ChartTitle.Text = "Coût et performances"
ActiveChart.Shapes.AddLabel _
(msoTextOrientationHorizontal, _
10, 15, 0, 0).TextFrame.Characters.Text = "information additionnelle"
End Sub

 Avec la méthode AddLabel, vous pouvez ajouter une étiquette supplémentaire à votre diagramme.

 Entrez la constante msoTextOrientation Horizontal et définissez le coin supérieur gauche sur les deux premiers arguments du crochet.

 L’objet TextFrame représente le bloc de texte et contient à la fois le texte et les propriétés et méthodes de contrôle de l’alignement et de l’ancrage du bloc de texte.

 Utilisez la propriété Text pour écrire votre texte supplémentaire dans le champ de texte.
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