Médiaforma

VBA Excel – Ajouter un graphique personnalisé

Print Friendly, PDF & Email

Dans l’article “Tracé d’un graphique en VBA“, vous avez appris à insérer un graphique dans la feuille courante. Cet article va aller beaucoup plus loin. En effet, vous allez y apprendre comment choisir l’emplacement, la taille, la position et le type du graphique dans la feuille.

Voici le code utilisé :

Dim feuille As Worksheet

Dim graphique As ChartObject

Set feuille = Sheets("Feuil1")

Set graphique = feuille.ChartObjects.Add(60, 50, 500, 300)

With graphique.Chart

  .ChartType = xlLineMarkers

  .SeriesCollection.NewSeries

  With .SeriesCollection(1)
 
    .Values = feuille.Range("A2:C2")

    .XValues = feuille.Range("A1:C1")

  End With

End With

Set graphique = Nothing

Set feuille = Nothing

Les deux premières instructions définissent les variables feuille et graphique qui représenteront respectivement la feuille dans laquelle le graphique sera inséré et le graphique à insérer :

Dim feuille As Worksheet

Dim graphique As ChartObject

L’instruction suivante affecte la feuille Feuil1 à la variable feuille :

Set feuille = Sheets("Feuil1")

L’instruction suivante ajoute à la feuille Feuil1 un graphique :

  • de largeur 500 pixels ;
  • de hauteur 500 pixels ;
  • dont l’angle supérieur gauche se trouve à 60 pixels du bord gauche et à 50 pixels du bord supérieur.

Pour faciliter l’écriture du code, ce graphique est affecté à la variable graphique :

Set graphique = feuille.ChartObjects.Add(60, 50, 500, 300)

L’instruction With … End With suivante définit les caractéristiques du graphique. On commence par le type du graphique, via la propriété ChartType :

With graphique.Chart

  .ChartType = xlLineMarkers

Comme le montre le tableau suivant, de très nombreux graphiques peuvent être définis dans Excel 2016 :

ChartType Signification
xl3DArea Aires 3D
xl3DAreaStacked Aires 3D empilées
xl3DAreaStacked100 Aires empilées 100 %
xl3DBarClustered Barres groupées 3D
xl3DBarStacked Barres empilées 3D
xl3DBarStacked100 Barres empilées 100 % 3D
xl3DColumn Histogramme 3D
xl3DColumnClustered Histogramme groupé 3D
xl3DColumnStacked Histogramme empilé 3D
xl3DColumnStacked100 Histogramme empilé 100 % 3D
xl3DLine Courbe 3D
xl3DPie Secteurs en 3D
xl3DPieExploded Secteurs éclatés en 3D
xlArea Aires
xlAreaStacked Aires empilées
xlAreaStacked100 Aires empilées 100 %
xlBarClustered Barres groupées
xlBarOfPie Barres de secteurs
xlBarStacked Barres empilées
xlBarStacked100 Barres empilées 100 %
xlBubble Bulles
xlBubble3DEffect Bulles avec effet 3D
xlColumnClustered Histogramme groupé
xlColumnStacked Histogramme empilé
xlColumnStacked100 Histogramme empilé 100 %
xlConeBarClustered Barres groupées à forme conique
xlConeBarStacked Barres empilées à forme conique
xlConeBarStacked100 Barres empilées 100 % à forme conique
xlConeCol Histogramme 3D à forme conique
xlConeColClustered Histogramme groupé à formes coniques
xlConeColStacked Histogramme empilé à formes coniques
xlConeColStacked100 Histogramme empilé 100 % à formes coniques
xlCylinderBarClustered Barres groupées à formes cylindriques
xlCylinderBarStacked Barres empilées à formes cylindriques
xlCylinderBarStacked100 Barres empilées 100 % à formes cylindriques
xlCylinderCol Histogramme 3D à formes cylindriques
xlCylinderColClustered Histogramme groupé à formes coniques
xlCylinderColStacked Histogramme empilé à formes coniques
xlCylinderColStacked100 Histogramme empilé 100 % à formes cylindriques
xlDoughnut Anneau
xlDoughnutExploded Anneau éclaté
xlLine Courbe
xlLineMarkers Courbes avec marques
xlLineMarkersStacked Courbe empilée avec marques
xlLineMarkersStacked100 Courbe empilée 100 % avec marques
xlLineStacked Courbe empilée
xlLineStacked100 Courbe empilée 100 %
xlPie Secteurs
xlPieExploded Secteurs éclatés
xlPieOfPie Secteurs de secteurs
xlPyramidBarClustered Histogramme groupé à formes pyramidales
xlPyramidBarStacked Histogramme empilé à formes pyramidales
xlPyramidBarStacked100 Histogramme empilé 100 % à formes pyramidales
xlPyramidCol Histogramme 3D à formes pyramidales
xlPyramidColClustered Histogramme groupé à formes pyramidales
xlPyramidColStacked Histogramme empilé à formes pyramidales
xlPyramidColStacked100 Histogramme empilé 100 % à formes pyramidales
xlRadar Radar
xlRadarFilled Radar plein
xlRadarMarkers Radar avec marqueurs
xlStockHLC Max-Min-Clôture
xlStockOHLC Ouverture-Max-Min-Clôture
xlStockVHLC Volume-Max-Min-Clôture
xlStockVOHLC Volume-Ouverture-Max-Min-Clôture
xlSurface Surface 3D
xlSurfaceTopView Surface 3D avec structure apparente
xlSurfaceTopViewWireframe Contour
xlSurfaceWireframe Contour filaire
xlXYScatter Nuage de points
xlXYScatterLines Nuages de points avec courbes
xlXYScatterLinesNoMarkers Nuages de points avec courbes et sans marqueurs
xlXYScatterSmooth Nuages de points avec courbes lissées
xlXYScatterSmoothNoMarkers Nuages de points avec courbes lissées et sans marqueurs

 

L’instruction suivante ajoute une collection de séries :

.SeriesCollection.NewSeries

Cette collection est utilisée pour définir les abscisses (XValues) et les ordonnées (Values) correspondantes :

With .SeriesCollection(1)

  .Values = feuille.Range("A2:C2")

  .XValues = feuille.Range("A1:C1")

End With

Le code se termine par la suppression des variables objet graphique et feuille :

Set graphique = Nothing

Set feuille = Nothing

Voici un exemple d’exécution :

Vous avez aimé cet article ? Partagez-le avec vos réseaux...