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
etyRange
: 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 commews.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 commews.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 enxlExponential
,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.