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 :
- Créer un tableau de données avec les valeurs à afficher sous forme de puces.
- Insérer des barres (par exemple, des barres horizontales) qui simuleront les puces.
- 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.