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).xRangeetyRange: 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.xRangeest 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,
yRangeest défini commews.Range("B2:B10"), représentant les valeurs sur l’axe Y.
3. Créer l’objet graphique :
Set chartObj = ws.ChartObjects.Addcrée un nouvel objet graphique dans la feuille.With chartObjdémarre la configuration du graphique.
4. Définir le type de graphique et les données :
.Chart.ChartType = xlXYScatterLinesdé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.Addajoute une ligne de tendance à la première série du graphique.trendline.Type = xlLineardé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 = 2ajuste l’épaisseur de la ligne de tendance.
6. Personnalisation du graphique :
.Chart.HasTitle = Trueajoute 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 = Trueajoute un titre à l’axe des X, et.Chart.Axes(xlValue, xlPrimary).HasTitle = Trueajoute 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.