Créer un graphique de type « nuage de points » (scatter plot), Excel VBA

Créer un graphique de type « nuage de points » (scatter plot), Excel VBA

Voici un code VBA détaillé pour créer un graphique de type « nuage de points » (scatter plot) avec une ligne de tendance. Je vais expliquer chaque étape du code en détail.
Code VBA pour créer un nuage de points avec une ligne de tendance :

Sub CreateScatterPlotWithTrendline()
    ' Déclarer les variables
    Dim ws As Worksheet
    Dim chartObj As ChartObject
    Dim dataRange As Range
    Dim xRange As Range
    Dim yRange As Range
    ' Définir la feuille où se trouvent les données
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Modifier avec le nom de votre feuille
    ' Définir les plages des données X et Y
    Set xRange = ws.Range("A2:A10") ' Modifier avec la plage de vos données X
    Set yRange = ws.Range("B2:B10") ' Modifier avec la plage de vos données Y
    ' Créer un objet graphique
    Set chartObj = ws.ChartObjects.Add
    With chartObj
        ' Définir le type de graphique en nuage de points
        .Chart.ChartType = xlXYScatterLines
        ' Définir les données pour le graphique
        .Chart.SetSourceData Source:=Union(xRange, yRange)
        ' Ajouter une ligne de tendance
        Dim trendline As Trendline
        Set trendline = .Chart.SeriesCollection(1).Trendlines.Add
        trendline.Type = xlLinear ' Définir la ligne de tendance comme linéaire
        ' Personnaliser l'apparence de la ligne de tendance (ex: couleur, épaisseur)
        trendline.Format.Line.ForeColor.RGB = RGB(255, 0, 0) ' Couleur rouge
        trendline.Format.Line.Weight = 2 ' Épaisseur de la ligne
        ' Personnaliser le titre du graphique et des axes
        .Chart.HasTitle = True
        .Chart.ChartTitle.Text = "Nuage de points avec ligne de tendance"
        .Chart.Axes(xlCategory, xlPrimary).HasTitle = True
        .Chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Titre de l'axe X"
        .Chart.Axes(xlValue, xlPrimary).HasTitle = True
        .Chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Titre de l'axe Y"
    End With
End Sub

Explication détaillée :
1. Déclaration des variables :

  • ws : Représente la feuille de calcul où se trouvent les données. Vous devez modifier "Sheet1" avec le nom de votre feuille de calcul.
  • chartObj : Cette variable contient l’objet du graphique que nous allons créer.
  • dataRange : Contient la plage de données pour les points (non utilisé directement ici, mais peut être utile dans d’autres cas).
  • xRange et yRange : Contiennent les plages de données pour les axes X et Y respectivement.

2. Définir la feuille et les plages de données :

  • Set ws = ThisWorkbook.Sheets("Sheet1") définit la feuille de calcul. Modifiez "Sheet1" pour qu’il corresponde à votre feuille.
  • xRange est défini comme ws.Range("A2:A10"), représentant les valeurs sur l’axe X (ajustez cette plage en fonction de vos données).
  • De même, yRange est défini comme ws.Range("B2:B10"), représentant les valeurs sur l’axe Y.

3. Créer l’objet graphique :

  • Set chartObj = ws.ChartObjects.Add crée un nouvel objet graphique dans la feuille.
  • With chartObj démarre la configuration du graphique.

4. Définir le type de graphique et les données :

  • .Chart.ChartType = xlXYScatterLines définit le type de graphique comme un nuage de points avec des lignes reliant les points.
  • .Chart.SetSourceData Source:=Union(xRange, yRange) définit les données à utiliser pour le graphique, en combinant les plages X et Y.

5. Ajouter et personnaliser la ligne de tendance :

  • Set trendline = .Chart.SeriesCollection(1).Trendlines.Add ajoute une ligne de tendance à la première série du graphique.
  • trendline.Type = xlLinear définit la ligne de tendance comme étant linéaire (vous pouvez la modifier en xlExponential, xlLogarithmic, etc., en fonction de vos besoins).
  • trendline.Format.Line.ForeColor.RGB = RGB(255, 0, 0) change la couleur de la ligne de tendance en rouge (vous pouvez ajuster les valeurs RGB pour obtenir une autre couleur).
  • trendline.Format.Line.Weight = 2 ajuste l’épaisseur de la ligne de tendance.

6. Personnalisation du graphique :

  • .Chart.HasTitle = True ajoute un titre au graphique.
  • .Chart.ChartTitle.Text = "Nuage de points avec ligne de tendance" définit le titre du graphique.
  • .Chart.Axes(xlCategory, xlPrimary).HasTitle = True ajoute un titre à l’axe des X, et .Chart.Axes(xlValue, xlPrimary).HasTitle = True ajoute un titre à l’axe des Y.
  • Vous pouvez personnaliser les titres des axes en définissant .AxisTitle.Text.

Conseils de personnalisation :

  • Type de graphique : Vous pouvez changer le type de graphique (par exemple, xlXYScatterLinesNoMarkers, xlXYScatterSmooth, etc.) selon la façon dont vous souhaitez présenter votre nuage de points.
  • Type de ligne de tendance : La ligne de tendance peut être personnalisée en linéaire, exponentielle, polynomiale, etc.
  • Formatage : Vous pouvez modifier d’autres propriétés comme la couleur de fond du graphique, les lignes de grille, et bien plus encore pour améliorer l’apparence visuelle.
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x