Créer un graphique en pyramide, Excel VBA

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 et valuesRange 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 et chartObj.Width définissent la taille du graphique.
  • chartObj.Top et chartObj.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.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x