Créer un graphique de Pareto, Excel VBA

Créer un graphique de Pareto, Excel VBA

Voici un exemple détaillé de code VBA pour créer un graphique de Pareto dans Excel, avec une explication complète de chaque partie du code.
Code VBA pour créer un graphique de Pareto

Sub CreateParetoChart()
    Dim ws As Worksheet
    Dim chartObj As ChartObject
    Dim dataRange As Range
    Dim cumulativeRange As Range
    Dim lastRow As Long
    Dim i As Long
    ' Définir la feuille de calcul
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez le nom de la feuille si nécessaire
    ' Trouver la dernière ligne de données
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    ' Définir la plage de données (suppose que les données commencent à A2 et B2)
    Set dataRange = ws.Range("A2:B" & lastRow)
    ' Trier les données par fréquence de manière décroissante (Colonne B)
    dataRange.Sort Key1:=ws.Range("B2"), Order1:=xlDescending, Header:=xlNo
    ' Ajouter une nouvelle colonne pour le pourcentage cumulatif (Colonne C)
    ws.Cells(1, 3).Value = "Pourcentage Cumulatif"
    ws.Cells(2, 3).Value = ws.Cells(2, 2).Value / Application.WorksheetFunction.Sum(ws.Range("B2:B" & lastRow))
    For i = 3 To lastRow
        ws.Cells(i, 3).Value = ws.Cells(i - 1, 3).Value + ws.Cells(i, 2).Value / Application.WorksheetFunction.Sum(ws.Range("B2:B" & lastRow))
    Next i
    ' Créer le graphique de Pareto (Graphique combiné)
    Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=500, Top:=50, Height:=300)
    With chartObj.Chart
        .SetSourceData Source:=ws.Range("A1:C" & lastRow)
        .ChartType = xlColumnClustered ' Graphique en colonnes pour les fréquences
        ' Ajouter un graphique en ligne pour le pourcentage cumulatif
        .SeriesCollection.NewSeries
        .SeriesCollection(2).XValues = ws.Range("A2:A" & lastRow)
        .SeriesCollection(2).Values = ws.Range("C2:C" & lastRow)
        .SeriesCollection(2).ChartType = xlLine
        .SeriesCollection(2).AxisGroup = 2 ' Utiliser l'axe secondaire pour le pourcentage cumulatif
        ' Définir l'axe secondaire au format pourcentage
        .Axes(xlValue, xlSecondary).TickLabels.NumberFormat = "0%"
        ' Définir le titre du graphique et les étiquettes des axes
        .HasTitle = True
        .ChartTitle.Text = "Graphique de Pareto"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Text = "Catégories"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Text = "Fréquence"
        .Axes(xlValue, xlSecondary).HasTitle = True
        .Axes(xlValue, xlSecondary).AxisTitle.Text = "Pourcentage Cumulatif"
    End With
End Sub

Explication détaillée :
1. Définir la feuille de calcul et la plage de données :

  • Le code commence par définir la feuille de calcul (ws) où se trouvent vos données.
  • La dataRange est définie sur les colonnes A et B (les catégories et les fréquences). Assurez-vous que vos données commencent à la ligne 2 (après l’en-tête).

2. Trier les données par fréquence :

  • La fonction dataRange.Sort trie les données par fréquence dans la colonne B de manière décroissante. Cette étape est essentielle pour appliquer le principe de Pareto (règle 80/20), où vous voulez que les catégories les plus fréquentes apparaissent en premier.

3. Calculer les pourcentages cumulés :

  • Dans la colonne C, le pourcentage cumulatif est calculé. Pour la première ligne, il s’agit simplement de la fréquence divisée par la somme totale de toutes les fréquences.
  • Pour les lignes suivantes, le pourcentage cumulatif est la somme du pourcentage cumulatif précédent et du pourcentage de la catégorie actuelle.

4. Créer le graphique :

  • Un nouveau graphique est créé à l’aide de ChartObjects.Add avec des dimensions spécifiques.
  • La plage de données (A1:C & lastRow) est définie comme source du graphique, ce qui inclut les colonnes des fréquences et des pourcentages cumulés.
  • Le type de graphique est d’abord défini comme un graphique à colonnes groupées (xlColumnClustered) pour les données de fréquence.
  • Un graphique en ligne est ajouté pour représenter le pourcentage cumulatif. Ce graphique en ligne utilise un axe secondaire (xlSecondary), qui est formaté en pourcentage.

5. Définir les titres du graphique et des axes :

  • Le graphique reçoit un titre : « Graphique de Pareto ».
  • L’axe principal (représentant les fréquences) et l’axe secondaire (représentant le pourcentage cumulé) sont étiquetés.
  • L’axe secondaire est formaté pour afficher les valeurs en pourcentage (0%).

Comment fonctionne le code :

  • Ce code VBA automatise la création d’un graphique de Pareto. Il commence par trier vos données par fréquence, puis calcule les pourcentages cumulés, et enfin génère le graphique.
  • Le graphique présente un axe principal pour les fréquences et un axe secondaire pour les pourcentages cumulés, ce qui permet de visualiser à la fois les fréquences et l’effet cumulatif des catégories.
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x