Créer un graphique à puces, Excel VBA

Créer un graphique à puces, Excel VBA

Créer un graphique à puces dans Excel à l’aide de VBA nécessite un certain travail, car Excel ne propose pas directement un type de graphique « puces » comme un graphique standard. Cependant, on peut simuler un graphique à puces en utilisant des barres ou des formes et en les formatant de manière appropriée. 

Je vais vous guider à travers les étapes pour créer un graphique à puces à l’aide de VBA. 

Étapes principales : 

  1. Créer un tableau de données avec les valeurs à afficher sous forme de puces. 
  2. Insérer des barres (par exemple, des barres horizontales) qui simuleront les puces. 
  3. Formater ces barres pour qu’elles apparaissent sous forme de graphiques à puces. 

Exemple de code VBA pour créer un graphique à puces : 

Sub CreerGraphiqueAPuces() 
    Dim ws As Worksheet 
    Dim chartObj As ChartObject 
    Dim dataRange As Range 
    Dim i As Integer 
    Dim puceWidth As Double 
    Dim maxLength As Double 
    Dim maxValue As Double 
    ' Créer une nouvelle feuille pour le graphique 
    Set ws = ThisWorkbook.Sheets.Add 
    ws.Name = "GraphiquePuces" 
    ' Exemple de données (valeurs que nous voulons afficher sous forme de puces) 
    ws.Cells(1, 1).Value = "Nom" 
    ws.Cells(1, 2).Value = "Valeur" 
    ws.Cells(2, 1).Value = "Item 1" 
    ws.Cells(2, 2).Value = 7 
    ws.Cells(3, 1).Value = "Item 2" 
    ws.Cells(3, 2).Value = 5 
    ws.Cells(4, 1).Value = "Item 3" 
    ws.Cells(4, 2).Value = 9 
    ws.Cells(5, 1).Value = "Item 4" 
    ws.Cells(5, 2).Value = 6 
    ' Définir la plage de données 
    Set dataRange = ws.Range("A2:B5") 
    ' Trouver la valeur maximale dans la colonne "Valeur" 
    maxValue = Application.WorksheetFunction.Max(ws.Range("B2:B5")) 
    ' Définir la largeur des puces (barres) en fonction de la largeur de la colonne 
    puceWidth = 5 ' Largeur initiale de la puce 
    maxLength = 200 ' Largeur maximale des barres 
    ' Créer un graphique à puces (en insérant des formes rectangulaires) 
    For i = 2 To dataRange.Rows.Count 
        ' Ajouter une forme de rectangle pour chaque ligne 
        Dim rect As Shape 
        Set rect = ws.Shapes.AddShape(msoShapeRectangle, 100, 20 * i, 0, 10) 
        ' Définir la largeur de la puce en fonction de la valeur 
        rect.Width = (ws.Cells(i, 2).Value / maxValue) * maxLength 
        ' Formater la puce (couleur, bordure, etc.) 
        rect.Fill.ForeColor.RGB = RGB(0, 0, 255) ' Couleur bleu 
        rect.Line.Visible = msoFalse ' Pas de bordure 
        rect.LockAspectRatio = msoFalse ' Déverrouiller l'aspect de la forme 
    Next i 
    ' Ajuster les colonnes et lignes pour rendre le graphique lisible 
    ws.Columns("A:B").AutoFit 
    ws.Rows("1:1").RowHeight = 20 
End Sub

Explication du code : 

1. Création d’une nouvelle feuille : Nous créons une nouvelle feuille de calcul pour héberger le graphique à puces.

Set ws = ThisWorkbook.Sheets.Add 
ws.Name = "GraphiquePuces"

2. Insertion des données : Nous insérons des données d’exemple dans les cellules de la feuille. Ces données incluent les noms des éléments et leurs valeurs associées. 

ws.Cells(1, 1).Value = "Nom" 
ws.Cells(1, 2).Value = "Valeur" 
ws.Cells(2, 1).Value = "Item 1" 
ws.Cells(2, 2).Value = 7

3. Calcul de la valeur maximale : Nous trouvons la valeur maximale dans la colonne des valeurs afin d’ajuster la taille des barres (puces). 

maxValue = Application.WorksheetFunction.Max(ws.Range("B2:B5")) 

4. Création des puces (formes rectangulaires) : Pour chaque valeur dans la colonne « Valeur », nous ajoutons une forme de rectangle qui agira comme une barre pour représenter la valeur. La largeur du rectangle est proportionnelle à la valeur par rapport à la valeur maximale. 

Set rect = ws.Shapes.AddShape(msoShapeRectangle, 100, 20 * i, 0, 10) 
rect.Width = (ws.Cells(i, 2).Value / maxValue) * maxLength

5. Formatage des puces : Nous formatons les rectangles en leur attribuant une couleur de remplissage et en supprimant les bordures.

rect.Fill.ForeColor.RGB = RGB(0, 0, 255) 
rect.Line.Visible = msoFalse

6. Ajustement des dimensions : Enfin, nous ajustons la largeur des colonnes et la hauteur des lignes pour que le graphique soit bien lisible. 

Résultat : 

Ce code créera une feuille Excel avec un graphique à puces, où chaque ligne représente un élément, et la largeur des puces sera proportionnelle à la valeur associée. 

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