TUTO EXCELLONS : Manipuler les graphes (charts) par VBA

Les graphiques représentent de présente les données de façon parlante et rapidement compréhensible.

A travers la programmation VBA, EXCEL possèdent un riche ensemble d’objets permettant de créer les graphes (charts) et gérer leurs présentations, leurs couleurs, leurs compositions…

Ce TUTO EXCELLONS décrit de façon succinte les principaux objets de cet ensemble.

(Les copies-écrans du présent document sont réalisées avec EXCEL version 365)

UTILISATION DE L’ENREGISTREUR DE MACROS

Du fait de la richesse et de la diversité des méthodes et propriétés exposées par l’objet graphique (chart), beaucoup de temps sera économisé par l’utilisation de l’enregistreur de macros.

Le TUTO EXCELLONS VBA Enregistreur de macro donne des détails sur cette fonctionnalité VBA.

Dans le cas de son utilisation sur les graphiques, bien noter que l’enregistreur de macros :

  • N’a pas la capacité de générer du code VBA pour toutes les manipulations que nous pouvons réaliser sur un graphique.
  • Génère un code VBA souvent ‘bavard’ et non optimisé.

De ce fait, il est recommandé d’utiliser l’enregistreur de macros pour découvrir les objets graphiques manipulés puis, dans un second temps, de reprendre et corriger le code VBA généré pour l’adapter et/ou le simplifier.

LES 2 TYPES DE GRAPHIQUES EXCEL

La représentation ci-dessous, illustre les imbrications des objets EXCEL et montre les 2 types possibles de graphique (chart) dans EXCEL.

Un graphique peut être :

  • soit un objet de la collection ‘ChartObjects’ d’une feuille (Worksheet). On parle alors de graphique incorporé (Chart Embedded).Une feuille peut contenir plusieurs graphiques incorporés.
    soit un objet d’une feuille de type ‘Graphique’ (Chart Sheet). On parle alors de graphique isolé (Standalone chart). Une feuille graphique ne peut contenir qu’un seul graphique isolé.
VBA_InventaireFormes

Il faut noter qu’un graphique incorporé possède un « don d’ubiquité » : il est membre de la collection « ChartObjects » et en même temps, membre de la collection des formes « Shapes ». De ce fait, lors de la programmation VBA des graphiques incorporés, les méthodes et propriétés de l’objet « Chart » sont mises en oeuvre mais également, certaines méthodes et propriétés de l’objet « Shape ».

Le TUTO EXCELLONS Manipuler les formes par VBA donne des détails sur sur ces méthodes et fonctions qui ne sont pas reprises ici.

CREER UN GRAPHIQUE INCORPORE

Un graphique incorporé est créé à l’aide de l’une des 2 méthodes suivantes :

La méthode  ChartObjects.Add (Left, Top, Width, Height)

Cette méthode insère dans une feuille un graphique incorporé du type défini par défaut, dont la position est déterminée par les paramètres ‘Left (gauche)’ et ‘Top (haut)’ et la taille par les paramètres ‘Width (largeur)’ et ‘Height (hauteur)’ exprimés en points.

Le fragment de code ci-dessous créé un nouveau graphique incorporé du type défini par défaut :

Sub AddDefaultChart()
    Dim oSheet As Worksheet
    Dim oChartObject As ChartObject
    Dim oChart As Chart    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets(1)
    'On créé un nouveau graphique incorporé du type par défaut
    Set oChartObject = oSheet.ChartObjects.Add(600, 20, 300, 200)
    ‘On réfère le graphique (pour utilisation ultérieure)
    Set oChart = oChartObject.Chart    
End Sub

Pour définir ou modifier le type de graphique par défaut, se référer à la page :

https://fr.officetooltips.com/excel_2016/tips/comment_changer_le_graphique_par_defaut.html)

La méthode Shapes.AddChart2

Cette méthode, plus ‘riche’ que la précédente insère dans la feuille un graphique incorporé en définissant son style et son type, ainsi que sa position déterminée par les paramètres ‘Left (gauche)’ et ‘Top (haut)’ et la taille par les paramètres ‘Width (largeur)’ et ‘Height (hauteur)’ tous exprimés en points.

Dans le fragment de code ci-dessous :

  • Le paramètre Style est positionné à ’12’ 
  • Le paramètre Type est valorisé avec ‘xlColumnClustered’ c’est à dire un ‘Histogramme groupé’
  • Le paramètre NewLayout valorisé à ‘True’ indique que le titre et les légendes du graphique sont automatiquement activés.
Sub AddTypedChart()
    Dim oSheet As Worksheet
    Dim oShape As Shape
    Dim oChart As Chart
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets(1)
    'On créé un nouveau graphique incorporé d'un style et d’un type déterminés
    Set oShape = oSheet.Shapes.AddChart2(12, xlColumnClustered, 600, 20, 600, 460, True)
    ‘On réfère le graphique (pour utilisation ultérieure)
    Set oChart = oShape.Chart
End Sub

Le paramétrage de la méthode « Shapes.AddChart2 » comporte les particularités suivantes :

  • Pour positionner le paramètre ‘Style’ sur le style par défaut du Type indiqué, le valoriser à « -1 ».
  • Il n’est pas évident de connaitre la valeur désirée du paramètre « Style ». Le plus simple pour la déterminer consiste à utiliser l’enregistreur de macros.
  • Pour déterminer la valeur du paramètre « Type », on se reportera à l’énumération : https://docs.microsoft.com/fr-fr/office/vba/api/excel.xlcharttype

CREER UN GRAPHIQUE ISOLE

Un graphique isolé est créé à l’aide de :

La méthode  Charts.Add2

Cette méthode comporte les paramètres suivants :

  • Les paramètres « Before (avant) » et « After (après) » permettent de positionner la nouvelle feuille graphique dans le classeur.
  • Le paramètre « Count (nombre) » permet d’indiquer le nombre de feuilles graphiques identiques à créer (par défaut = 1).
  • Le paramètre NewLayout indique que le titre et les légendes du graphique sont automatiquement activés lorsqu’il est valorisé à « true ».

Le fragment de code suivant créé une feuille graphique du type défini par défaut, positionné comme première feuille du classeur, ayant pour titre ‘ComparatifDépenses’ :

Sub Add2StandaloneChart()
    Dim oChart As Chart
    
    'On créé une nouvelle feuille graphique du type par défaut positionnée comme première feuille du classeur
    Set oChart = ThisWorkbook.Charts.Add2(ThisWorkbook.Sheets(1), , , True)
    With oChart
        'On nomme la nouvelle feuille graphique
        .Name = "ComparatifDepenses"
    End With
End Sub

EXEMPLE COMPLET DE CREATION D’UN GRAPHIQUE INCORPORE

Soit un classeur dont la feuille ‘Données’ contient un tableau structuré contenant les montant de dépenses par poste budgétaire :

(Cliquer sur l’image pour télécharger le classeur exemple).

Ruban Insertion Graphiques

Le code VBA suivant créé un graphique incorporé illustrant les dépenses pour le mois de janvier 2020

Sub AddSampleChart()
    Dim oSheet As Worksheet
    Dim oChartObject As ChartObject
    Dim oChart As Chart
    Dim oSerie As Series
    
    'On référe la feuille de destination du graphique contenant les données
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On créé un nouveau graphique incorporé du type par défaut
    Set oChartObject = oSheet.ChartObjects.Add(1, 200, 300, 200)
    'On réfère le graphique créé
    Set oChart = oChartObject.Chart
    'On ajoute une série au graphique
    Set oSerie = oChart.SeriesCollection.NewSeries
    With oSerie
        'On indique la plage utilisée pour les valeurs de la série
        .Values = oSheet.Range("B3:B11")
        'On indique la plage utilisée pour les libellés de l'axe horizontal
        .XValues = oSheet.Range("A3:A11")
    End With
End Sub

Résultat obtenu :

Exemple de graphe obtenu par VBA

SPECIFIER LES DEUX ZONES DE L’OBJET CHART

Un objet graphique possède 2 zones particulières :

  • Zone de graphique (Chart area)
  • Zone de traçage (Plot area)
Exemple de graphe obtenu par VBA

La propriété Chart.ChartArea

La propriété Chart.ChartArea représente la zone du graphique.

Le code VBA suivant modifie certains attributs (Hauteur, largeur et coins arrondis) de la zone de graphique :

Sub ModifyChartAreaProperties()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oChartArea As ChartArea
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On réfère la zone de graphique
    Set oChartArea = oChart.ChartArea
    With oChartArea
        'On modifie la hauteur , la position gauche et la forme de la bordure extérieure de la zone de graphique
        .Height = 400
        .Width = 600
        .RoundedCorners = True
    End With
End Sub

Résultat obtenu :

Légende

Il est à noter que l’objet Format de l’objet ChartArea d’un graphique incorporé est en lecture seule.

Pour modifier, la couleur de fond du graphique, nous utilisons l’objet parent de l’objet Chart (i.e. ChartObject).

Pour obtenir les paramètres de la fonction RGB() correspondants à la couleur désirée, reporterons-nous à la page :

https://www.excel-pratique.com/fr/vba/liste-couleurs-rgb

Le code VBA suivant modifie la couleur de fond du graphique :

Sub modifyChartAreaBackcolor()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oChartArea As ChartArea
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'L'objet Format de ChartArea est en lecture seule -> on passe par l'objet parent (ChartObject) 
     oChart.Parent.Interior.Color = RGB(224, 238, 224)
End Sub

Résultat obtenu :

Légende

La propriété Chart.PlotArea

La propriété Chart.PlotArea représente la zone de traçage du graphique.

Le code VBA suivant modifie la taille et la couleur de la zone de traçage :

Sub ModifyPlotAreaProperties()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oPlotArea As PlotArea
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On réfère la zone de traçage
    Set oPlotArea = oChart.PlotArea
    With oPlotArea
        'On modifie certaines propriétés de la zone de traçage : hauteur et largeur à 75% de la zone de graphique
        .InsideHeight = oChart.ChartArea.Height * 0.75
        .InsideWidth = oChart.ChartArea.Width * 0.75
        'On efface les éventuels formats de la zone de traçage
        .ClearFormats
        'On affecte les caractéristiques du fond de la zone de traçage
        With .Format.Fill
            'On affecte un dégradé depuis le coin
            .OneColorGradient msoGradientFromCorner, 1, 1
            'On affecte la couleur grise estompée
            .BackColor.RGB = RGB(153, 153, 153)
        End With
    End With
End Sub

Résultat obtenu :

Légende

SPECIFIER LES OBJETS PRINCIPAUX D’UN GRAPHIQUE

Les graphiques (charts) EXCEL exposent 4 objets qu’il est nécessaire de distinguer :

L’objet ChartTitle

L’objet ChartTitle représente le titre du graphique.

Le code VBA suivant affecte un titre au graphique sur 2 lignes et spécifie la taille des caractères, leurs styles (gras ou italiques) et leurs couleurs distinctes pour chaque ligne :

Sub SetChartTitle()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oChartTitle As ChartTitle
    Dim lPos As Long
    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On indique que le graphique possède un titre
    oChart.HasTitle = True
    'On réfère le titre
    Set oChartTitle = oChart.ChartTitle
    With oChartTitle
        'On compose le texte du titre composé de 2 lignes
        .Text = "Dépenses mensuelles" & vbCr & "par postes budgétaires"
        'On récupère la position du saut de ligne
        lPos = InStr(1, .Text, vbCr)
        'On modifie les caractéristiques de la première ligne du titre
        With .Characters(1, lPos - 1)
            .Font.Size = 12
            .Font.Bold = True
            .Font.Color = vbBlue
        End With
        'On modifie les caractéristiques de la deuxième ligne du titre
        With .Characters(lPos)
            .Font.Size = 10
            .Font.Bold = False
            .Font.Italic = True
            .Font.Color = vbYellow
        End With
    End With
End Sub

Résultat obtenu :

Courbe de Bézier

Remarque :  Dans la version EXCEL 365 utilisée (juillet 2025) et les versions antérieures, la longueur du texte du titre d’un graphique est limitée à 255 caractères. Lorsque la longueur du titre dépasse 255 caractères, VBA retourne une erreur à l’exécution.

Le code VBA précédent positionne le titre à l’intérieur de la zone de traçage. Le code VBA suivant positionne ce titre à l’extérieur de la zone de traçage :

Sub IsoleChartTitle()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oPlotArea As PlotArea
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On réfère la zone de traçage
    Set oPlotArea = oChart.PlotArea

    oPlotArea.InsideTop = oChart.ChartArea.Top - 20
End Sub

Résultat obtenu :

Courbe de Bézier
L’objet Legend

L’objet Lengend représente le cartouche de légende du graphique.

Le code VBA suivant déplace le cartouche de légende en bas du graphique et lui affecte une bordure :

Sub SetChartLegend()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oChartLegend As Legend
    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On indique que le graphique possède un cartouche de légende
    oChart.HasLegend = True
    'On réfère le cartouche
    Set oChartLegend = oChart.Legend
    With oChartLegend
        'On déplace la légende en bas du graphique
        .Position = xlLegendPositionBottom
        'On formate la bordure
        With .Border
            .Color = vbBlack
            .LineStyle = xlDashDot
            .Weight = xlThin
        End With
    End With
End Sub

Résultat obtenu :

Courbe de Bézier

Le code VBA précédent positionne le cartouche de légende trop près des libellés de l’axe des abscisses. Le code VBA suivant isole le cartouche de légende  :

Sub IsoleLegend()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oPlotArea As PlotArea
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On réfère la zone de traçage
    Set oPlotArea = oChart.PlotArea
    
    oPlotArea.InsideHeight = oPlotArea.InsideHeight * 0.85
End Sub

Résultat obtenu :

Courbe de Bézier
L’objet Axis

L’objet Axis représente l’un des axes du graphique.

La collection Axes (xlAxisType) permet de référencer un objet Axis particuler.

L’énumération xlAxisType contient les constantes suivantes :

  • xlCategory désigne l’axe des abscisses.
  • xlValue désigne l’axe des ordonnées.
  • xlSeriesAxis désigne l’axe de la 3ième dimension d’un graphique en 3D.

Le code VBA suivant affecte un titre à l’axe des abscisses et modifie sa couleur :

Sub SetAbscisses()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oAxis As Axis
    Dim lgvsViolet As Long
    
    'On valorise une variable locale à la couleur violet
    lgvsViolet = RGB(112, 48, 160)
   
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On réfère l'axe des abscisses
    Set oAxis = oChart.Axes(xlCategory)
    With oAxis
        'On indique que l'axe a un titre
        .HasTitle = True
        With .AxisTitle
            'On indique le titre de l'axe
            .Text = "Postes budgétaires"
            'On formate et colorise le titre de l'axe
            .Font.Size = 10
            .Font.Italic = True
            .Font.Color = lgvsViolet
        End With
        'On colorise les étiquettes
        .TickLabels.Font.Color = lgvsViolet
    End With
End Sub

Résultat obtenu :

Courbe de Bézier

Le code VBA suivant affecte un titre à l’axe des ordonnées et modifie sa couleur :

Sub SetOrdonnees()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oAxis As Axis
    Dim lgvsViolet As Long
    
    'On valorise une variable locale à la couleur violet
    lgvsViolet = RGB(112, 48, 160)
   
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On réfère l'axe des ordonnées
    Set oAxis = oChart.Axes(xlValue)
    With oAxis
        With .Format.Line
            'On positionne une flêche sur l'axe des ordonnées
            .EndArrowheadStyle = msoArrowheadTriangle
            'On fixe la taille de l'axe
            .Weight = 1.5
            'On colorise l'axe des ordonnées en bleu
            .ForeColor.RGB = RGB(0, 0, 255)
            'On indique que l'axe a un titre
        End With
        'On indique que l'axe a un titre
        .HasTitle = True
        With .AxisTitle
            'On indique le titre de l'axe
            .Text = "Dépenses"
            'On formate et colorise le titre de l'axe
            .Font.Size = 10
            .Font.Italic = True
            .Font.Color = vbBlue
        End With
        'On colorise les étiquettes
        .TickLabels.Font.Color = vbBlue
    End With
End Sub

Résultat obtenu :

Courbe de Bézier

SPECIFIER LA COLLECTION ‘SERIESCOLLECTION’

La collection SeriesCollection rassemble toutes les séries de valeurs présentes dans le graphique.

L’objet Series désigne les séries du graphique. On réfère une série particulière de valeurs en spécifiant son index.

De plus, l’objet Series possède la collection DataLabels référençant les étiquettes de données de la série.

Le code VBA suivant ajoute des étiquettes à la série de donnée d’index 1 et les met en forme :

Sub addDatalabels()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oSerie As Series
    Dim oDatalabel As DataLabel
    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On réfère la première série
    Set oSerie = oChart.SeriesCollection(1)
    'On indique que la série possède des étiquettes
    oSerie.HasDataLabels = True
    For Each oDatalabel In oSerie.DataLabels
        'On colorise le texte de l'étiquette et la met en italique
        With oDatalabel
            .Font.Color = vbBlue
            .Font.Italic = True
        End With
    Next
End Sub

Résultat obtenu :

Courbe de Bézier

AJOUTER DES SERIES DE DONNEES A UN GRAPHIQUE

La méthode SeriesCollection.NewSeries permet d’ajouter de nouvelles séries de données au graphique.

Le code VBA suivant ajoute 3 nouvelles séries de données se référant aux dépenses des mois de février, mars et avril :

Sub AddSeries()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oSerie As Series
    Dim i As Integer
    
    'On réfère la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On réfère le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On réalise une boucle de 3 itérations
    For i = 1 To 3
        'On ajoute une série de données
        Set oSerie = oChart.SeriesCollection.NewSeries
        'On référençe la plage de valeurs de la colonne correspondante du tableau de données
        oSerie.Values = oSheet.Range("B3:B11").Offset(, i)
    Next
End Sub

Résultat obtenu :

Liste déroulante

MODIFIER LES CARACTERISTIQUES DES SERIES

Les objets Series.Values et Series.XValue permettent d’indiquer les références de plages, respectivement pour les données et pour les étiquettes d’une série.

Le code VBA suivant spécifie la plage de données EXCEL pour les valeurs et les étiquettes d’une série d’un graphique :

Sub AddSampleChart()
    Dim oSheet As Worksheet
    Dim oChartObject As ChartObject
    Dim oChart As Chart
    Dim oSerie As Series
    
    'On référe la feuille de destination du graphique contenant les données
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On créé un nouveau graphique incorporé du type par défaut
    Set oChartObject = oSheet.ChartObjects.Add(1, 200, 300, 200)
    'On réfère le graphique créé
    Set oChart = oChartObject.Chart
    'On ajoute une série au graphique
    Set oSerie = oChart.SeriesCollection.NewSeries
    With oSerie
        'On indique la plage utilisée pour les valeurs de la série
        .Values = oSheet.Range("B3:B11")
        'On indique la plage utilisée pour les libellés de l'axe horizontal
        .XValues = oSheet.Range("A3:A11")
    End With
End Sub
L’objet Series.Format permet d’agir sur les caractéristiques de l’objet Serie.

Le code VBA suivant modifie la couleur des barres de la serie d’index 3 du graphique :

Sub changeBarColor()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oSerie As Series
    Dim oFormat As ChartFormat
    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On réfère la troisième série
    Set oSerie = oChart.SeriesCollection(3)
    'On réfère le format de la série
    Set oFormat = oSerie.Format
    'On modifie la couleur de la barre
    oFormat.Fill.ForeColor.RGB = RGB(153, 102, 0)
End Sub

Résultat obtenu :

Liste déroulante
La propriété Series.Name permet d’affecter un nom aux séries de données.

Le code VBA suivant affecte un nom a chacune des 4 séries de données du graphique :

Sub SetSeriesName()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oSerie As Series
    Dim i As Integer
    
    'On réfère la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On réfère le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    For i = 1 To 4
        Set oSerie = oChart.SeriesCollection(i)
        'On affecte le nom de la série par référence à l'entête de la colonne du tableau
        oSerie.Name = oSheet.Range("A2").Offset(, i).Value
    Next    
End Sub

Résultat obtenu :

Liste déroulante

AJOUTER UNE COURBE DE TENDANCE

La collection TrendLines d’un objet Serie réfère toutes les courbes de tendance définies pour une série.

L’objet TrendLine désigne une courbe de tendance particulière pour une série donnée.

La méthode Serie.TrendLines.Add(xlTrendLineType,…) permet d’ajouter une nouvelle courbe de tendance à une série de données.

Le code VBA suivant crée une courbe de tendance sur la moyenne de 2 valeurs successives pour la série de données d’index 1 et formate cette courbe :

Sub AddTrendLine()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    Dim oTendance As Trendline
    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On ajoute une courbe de tendance sur la moyenne entre 2 valeurs de la série 1
    Set oTendance = oChart.SeriesCollection(1).Trendlines.Add(xlMovingAvg)
    'On formate la courbe de tendance : couleur rouge, épaisseur 1.5
    With oTendance.Format.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 0, 0)
        .Weight = 1.5
    End With
End Sub

Résultat obtenu :

Liste déroulante

APPLIQUER UN STYLE PREDEFINI AU GRAPHIQUE

Plutôt que de modifier individuellement les caractéristiques des objets d’un graphique, EXCEL offre la possibilité d’appliquer un style prédéfini.

La propriété Chart.Style (lStyle) permet d’appliquer un style prédéfini à un graphique.

Pour déterminer la valeur du paramètre « lStyle», le plus simple consiste à utiliser l’enregistreur de macros en effectuant manuellement la transformation désirée.

Le code VBA suivant applique le style prédéfini d’index 294 au graphique :

Sub changeChartStyle()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On rétablit la mise en forme par défaut du graphique
    oChart.ClearToMatchStyle
    'On applique le style désiré : Barres 3D fond noir
    oChart.ChartStyle = 294
End Sub

Résultat obtenu :

Liste déroulante

DESCRIPTION DE QUELQUES METHODES UTILES DE LA CLASSE CHART

 

EXPORTER UN GRAPHIQUE EN PDF

La méthode Chart.ExportAsFixedFormat

La méthode Chart.ExportAsFixedFormat (Type, FileName,…) permet d’exporter un graphique au format PDF.

Le code VBA suivant exporte le graphique dans un fichier PDF ayant pour nom ‘EXCELLONS_TUTO_VBA_GRAPHE.pdf’ :

Private Sub exportChart()
    Dim sMess As String
    Dim lElementID As Long, lArg1 As Long, lArg2 As Long
    Dim oSheet As Worksheet
    Dim oChart As Chart
    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On exporte le graphique dans un fichier PDF
    oChart.ExportAsFixedFormat ExportAsFixedFormat, ThisWorkbook.Path & "\" & "EXCELLONS_TUTO_VBA_GRAPHE.pdf"

End Sub

EXPORTER UN GRAPHIQUE AU FORMAT JPEG

La méthode Chart.Export

La méthode Chart.Export (FileName) permet d’exporter un graphique au format JPEG.

Le code VBA suivant exporte le graphique dans un fichier JPEG ayant pour nom ‘EXCELLONS_TUTO_VBA_GRAPHE.jpg’ :

Private Sub exportToJPEG()
    Dim lElementID As Long, lArg1 As Long, lArg2 As Long
    Dim oSheet As Worksheet
    Dim oChart As Chart
    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On exporte le graphique au format image JPEG
    oChart.Export ThisWorkbook.Path & "\" & "EXCELLONS_TUTO_VBA_GRAPHE.jpg"    
End Sub

IMPRIMER UN GRAPHIQUE

La méthode Chart.PrintOut

La méthode Chart.PrintOut permet d’imprimer un graphique.

Le code VBA suivant lance l’impression du graphique par l’imprimante par défaut du poste de travail :

Private Sub printChart()
    Dim sMess As String
    Dim lElementID As Long, lArg1 As Long, lArg2 As Long
    Dim oSheet As Worksheet
    Dim oChart As Chart
    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On imprime le graphique
    oChart.PrintOut
End Sub

ENREGISTRER UN GRAPHIQUE EN TANT QUE MODELE

La méthode Chart.SaveChartTemplate

La méthode La méthode Chart.SaveChartTemplate permet de sauvegarder un graphique en tant que modèle..

Le code VBA suivant sauvegarde le graphique comme modèle sous le nom ‘DepensesParPostes’ :

Private Sub SaveChartAsTemplate()
    Dim oSheet As Worksheet
    Dim oChart As Chart
    
    'On référe la feuille
    Set oSheet = ThisWorkbook.Worksheets("Données")
    'On référe le graphique incorporé
    Set oChart = oSheet.ChartObjects(1).Chart
    'On exporte le graphique sous forme de graphique modèle
    oChart.SaveChartTemplate ThisWorkbook.Path & "\" & "DepensesParPostes.crtx"
End Sub

Q