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
■ 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.
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
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
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 une 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.