Créer un graphique combiné, Excel VBA
Créer un graphique combiné dans Excel avec VBA consiste à utiliser différentes séries de données dans un seul graphique, en combinant plusieurs types de graphiques (par exemple, des colonnes et des lignes). Voici un exemple détaillé d’un code VBA qui crée un graphique combiné dans Excel.
Étapes pour créer un graphique combiné avec VBA :
1. Préparer les données : Pour cet exemple, imaginons que vous avez des données dans la plage A1:C6 :
- Colonne A : Mois
- Colonne B : Ventes
- Colonne C : Coût
2. Créer un graphique combiné : Le graphique combiné affichera les « Ventes » sous forme de graphique à colonnes et le « Coût » sous forme de graphique en ligne.
Code VBA
Sub CreerGraphiqueCombine()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim chart As Chart
' Référencer la feuille de calcul active
Set ws = ThisWorkbook.Sheets("Feuille1") ' Modifier "Feuille1" par le nom réel de votre feuille
' Créer un graphique combiné (graphique à colonnes et en ligne)
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=400, Top:=100, Height:=300)
Set chart = chartObj.Chart
' Définir la plage de données pour le graphique
chart.SetSourceData Source:=ws.Range("A1:C6")
' Définir le type de graphique combiné
chart.ChartType = xlColumnClustered ' Type de graphique par défaut : colonnes groupées
' Ajouter une série (par exemple "Ventes") comme graphique à colonnes
With chart.SeriesCollection.NewSeries
.Name = "Ventes"
.XValues = ws.Range("A2:A6")
.Values = ws.Range("B2:B6")
.ChartType = xlColumnClustered ' Graphique en colonnes
End With
' Ajouter une série (par exemple "Coût") comme graphique en ligne
With chart.SeriesCollection.NewSeries
.Name = "Coût"
.XValues = ws.Range("A2:A6")
.Values = ws.Range("C2:C6")
.ChartType = xlLine ' Graphique en ligne
.AxisGroup = 2 ' Série sur l'axe secondaire
End With
' Ajouter un axe secondaire pour la série "Coût"
chart.Axes(xlValue, xlSecondary).CategoryNames = ws.Range("A2:A6")
chart.HasSecondaryAxis = True
' Personnaliser les axes
With chart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
.TickLabels.NumberFormat = "#,##0"
End With
' Personnalisation du graphique
chart.HasTitle = True
chart.ChartTitle.Text = "Graphique combiné Ventes et Coût"
chart.HasLegend = True
chart.Legend.Position = xlLegendPositionBottom
End Sub
Explication du Code
1. Déclaration des objets :
- ws : fait référence à la feuille de calcul dans laquelle les données et le graphique seront insérés.
- chartObj : crée un objet graphique dans la feuille de calcul.
- chart : référence le graphique créé.
2. Création du graphique :
- Set chartObj = ws.ChartObjects.Add(…) : ajoute un objet graphique à la feuille de calcul avec les dimensions spécifiées.
- chart.SetSourceData Source:=ws.Range(« A1:C6 ») : définit la plage de données à partir de laquelle le graphique sera généré.
3. Ajouter les séries :
- Pour la première série (« Ventes »), le type de graphique est défini sur xlColumnClustered (graphique à colonnes groupées).
- Pour la deuxième série (« Coût »), le type de graphique est défini sur xlLine (graphique en ligne), et la propriété .AxisGroup = 2 place cette série sur l’axe secondaire.
4. Axe secondaire :
- chart.HasSecondaryAxis = True : permet d’ajouter un axe secondaire pour la série « Coût », qui pourrait avoir une échelle différente de celle des ventes.
5. Personnalisation :
- Titre du graphique : chart.ChartTitle.Text = « Graphique combiné Ventes et Coût ».
- Légende en bas du graphique : chart.Legend.Position = xlLegendPositionBottom.
- Personnalisation des axes : ajout de lignes de grille et format des nombres.
Résultat attendu :
Le code créera un graphique combiné où :
- La série « Ventes » est affichée avec des colonnes.
- La série « Coût » est affichée avec une ligne.
- L’axe secondaire est utilisé pour la série « Coût », permettant de comparer les deux séries qui peuvent avoir des échelles différentes.
Personnalisation supplémentaire :
- Vous pouvez ajuster les couleurs, les types de graphiques, et d’autres paramètres selon vos préférences en modifiant les propriétés du graphique et des séries.