Créer un graphique en pyramide, Excel VBA
Voici un code détaillé en VBA pour créer un graphique en pyramide dans Excel, ainsi qu’une explication complète. Un graphique en pyramide ressemble généralement à un graphique à barres empilées avec les données arrangées en ordre décroissant, créant ainsi une forme de pyramide.
Étapes pour créer un graphique en pyramide avec VBA :
1. Préparer les données : Avant d’écrire le code VBA, vous devez avoir des données dans Excel. Par exemple, supposons que vous avez deux colonnes : une avec des catégories et l’autre avec des valeurs correspondantes (par exemple, des tranches d’âge et la population).
2. Vue d’ensemble du code VBA :
- Nous allons créer un nouveau graphique.
- Nous allons utiliser la plage de données que vous fournissez.
- Nous allons formater le graphique pour qu’il ressemble à une pyramide.
- Nous allons inverser l’ordre des catégories et ajuster la mise en page du graphique.
Code VBA pour créer un graphique en pyramide :
Sub CreatePyramidChart()
' Déclarer les variables
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim dataRange As Range
Dim categoriesRange As Range
Dim valuesRange As Range
Dim chart As Chart
' Définir l'objet feuille de calcul
Set ws = ThisWorkbook.Sheets("Sheet1") ' Ajustez le nom de la feuille si nécessaire
' Définir la plage de données (ajustez en fonction de vos données)
Set dataRange = ws.Range("A1:B6") ' Supposons que vos données sont dans A1:B6 (catégories dans la colonne A et valeurs dans la colonne B)
Set categoriesRange = ws.Range("A2:A6") ' Catégories
Set valuesRange = ws.Range("B2:B6") ' Valeurs
' Créer un nouveau graphique
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=400, Top:=100, Height:=300)
Set chart = chartObj.Chart
' Définir la source de données du graphique
chart.SetSourceData Source:=dataRange
' Définir le type de graphique comme étant un graphique à barres empilées
chart.ChartType = xlBarStacked
' Inverser l'ordre des catégories pour ressembler à une pyramide
chart.Axes(xlCategory).CategoryNames = categoriesRange
chart.Axes(xlCategory).ReversePlotOrder = True
' Formater le graphique pour ressembler à une pyramide
chart.PlotArea.Format.Fill.ForeColor.RGB = RGB(255, 255, 255) ' Définir l'arrière-plan sur blanc
chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(255, 255, 255) ' Définir l'arrière-plan de la zone du graphique sur blanc
' Ajuster le format des séries (couleurs, espacement)
Dim series As Series
For Each series In chart.SeriesCollection
series.Format.Fill.ForeColor.RGB = RGB(0, 102, 204) ' Définir la couleur de la série sur bleu (ajustez selon vos besoins)
series.Format.Line.Visible = msoFalse ' Supprimer les bordures
Next series
' Ajuster le format des axes
With chart.Axes(xlCategory)
.TickLabelPosition = xlLow
.TickLabels.Font.Size = 12
End With
' Ajouter un titre au graphique
chart.HasTitle = True
chart.ChartTitle.Text = "Exemple de graphique en pyramide"
' Optionnel : Ajouter des étiquettes de données pour plus de clarté
chart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False
' Ajustements finaux du graphique
chartObj.Height = 300
chartObj.Width = 500
chartObj.Left = 100
chartObj.Top = 100
End Sub
Explication du code :
1. Définir la feuille de calcul et les plages de données :
ws = ThisWorkbook.Sheets("Sheet1")définit la feuille de calcul où vos données sont situées.dataRange = ws.Range("A1:B6")définit la plage de vos données (catégories dans la colonne A et valeurs dans la colonne B).categoriesRangeetvaluesRangesont utilisés pour spécifier les plages des étiquettes des catégories et des valeurs.
2. Créer le graphique :
Set chartObj = ws.ChartObjects.Addcrée un nouveau graphique dans la feuille de calcul.- Le type de graphique est défini sur
xlBarStacked, ce qui donne un graphique à barres empilées, que nous manipulerons pour ressembler à une pyramide.
3. Inverser l’ordre des catégories :
chart.Axes(xlCategory).ReversePlotOrder = Trueinverse l’ordre des catégories, ce qui fait en sorte que la valeur la plus grande apparaisse en bas de la pyramide, créant ainsi l’apparence d’une pyramide inversée.
4. Mise en forme du graphique :
chart.PlotArea.Format.Fill.ForeColor.RGB = RGB(255, 255, 255)définit la couleur de fond de la zone du graphique sur blanc.- Dans la boucle,
series.Format.Fill.ForeColor.RGBdéfinit la couleur de chaque série (barre du graphique). Vous pouvez modifier la couleur selon vos préférences en utilisant une autre valeur RGB. series.Format.Line.Visible = msoFalsesupprime les bordures autour des barres.
5. Mise en forme des axes :
- La mise en forme des axes permet d’ajuster l’apparence des étiquettes des catégories. Vous pouvez personnaliser la taille et le positionnement des étiquettes.
6. Ajouter des étiquettes de données :
chart.ApplyDataLabelsajoute des étiquettes de données sur chaque barre pour afficher les valeurs directement sur la pyramide.
7. Ajustements finaux :
chartObj.HeightetchartObj.Widthdéfinissent la taille du graphique.chartObj.TopetchartObj.Leftajustent la position du graphique sur la feuille de calcul.
Comment exécuter le code :
1. Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA dans Excel.
2. Insérez un nouveau module en cliquant sur Insertion > Module.
3. Collez le code fourni dans le module.
4. Fermez l’éditeur VBA et exécutez la macro en appuyant sur Alt + F8, sélectionnez CreatePyramidChart, puis cliquez sur Exécuter.
Cela générera un graphique en pyramide dans votre feuille de calcul avec les données de la plage spécifiée.