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.