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).categoriesRange
etvaluesRange
sont utilisés pour spécifier les plages des étiquettes des catégories et des valeurs.
2. Créer le graphique :
Set chartObj = ws.ChartObjects.Add
cré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 = True
inverse 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.RGB
dé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 = msoFalse
supprime 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.ApplyDataLabels
ajoute des étiquettes de données sur chaque barre pour afficher les valeurs directement sur la pyramide.
7. Ajustements finaux :
chartObj.Height
etchartObj.Width
définissent la taille du graphique.chartObj.Top
etchartObj.Left
ajustent 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.