Créer un graphique à courbe en cloche, Excel VBA
Créer un graphique en forme de courbe en cloche (courbe de Gauss) dans Excel à l’aide de VBA nécessite plusieurs étapes. L’idée est de créer une distribution normale, puis de l’afficher sous forme de graphique. Voici comment vous pouvez procéder étape par étape.
- Créer les données
La courbe en cloche est une courbe de distribution normale. Pour la générer, nous allons créer des valeurs X (par exemple, -5 à +5), calculer les valeurs correspondantes Y en utilisant la fonction de densité de probabilité de la loi normale.
La formule de la densité de probabilité pour une loi normale est la suivante :
f(x)=1 / σ.√(2.∏) × exp(−(x−μ)² / 2σ²)
où :
- μ est la moyenne (par exemple, 0),
- σ est l’écart-type (par exemple, 1),
- x est la variable indépendante.
- Code VBA
Voici un code VBA détaillé pour créer ce graphique :
Sub CreerCourbeGaussienne()
' Déclaration des variables
Dim ws As Worksheet
Dim x As Double
Dim mu As Double, sigma As Double
Dim i As Long
Dim nPoints As Long
Dim rangeX As Range, rangeY As Range
' Définir la feuille de travail
Set ws = ThisWorkbook.Sheets("Feuille1")
' Initialiser les paramètres de la courbe normale
mu = 0 ' Moyenne
sigma = 1 ' Écart-type
nPoints = 100 ' Nombre de points à générer
' Effacer les anciennes données
ws.Cells.Clear
' Créer les données X et Y
For i = 1 To nPoints
x = (i - 1) * (10 / (nPoints - 1)) - 5 ' Générer X de -5 à +5
ws.Cells(i, 1).Value = x ' Placer X dans la colonne A
ws.Cells(i, 2).Value = (1 / (sigma * Sqr(2 * Application.Pi))) * Exp(-((x - mu) ^ 2) / (2 * sigma ^ 2)) ' Calculer Y (densité normale)
Next i
' Définir les plages de données
Set rangeX = ws.Range(ws.Cells(1, 1), ws.Cells(nPoints, 1))
Set rangeY = ws.Range(ws.Cells(1, 2), ws.Cells(nPoints, 2))
' Créer un graphique
Dim chartObj As ChartObject
Set chartObj = ws.ChartObjects.Add(Left:=100, Top:=100, Width:=600, Height:=400)
' Ajouter un graphique de type courbe
chartObj.Chart.SetSourceData Source:=Union(rangeX, rangeY)
chartObj.Chart.ChartType = xlXYScatterSmooth ' Type de graphique : Courbe lissée
' Ajouter un titre au graphique
chartObj.Chart.HasTitle = True
chartObj.Chart.ChartTitle.Text = "Courbe de Gaussienne (Distribution Normale)"
' Ajouter un titre aux axes
chartObj.Chart.Axes(xlCategory, xlPrimary).HasTitle = True
chartObj.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "X (Valeurs)"
chartObj.Chart.Axes(xlValue, xlPrimary).HasTitle = True
chartObj.Chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Densité de probabilité"
End Sub
3. Explications du code
Déclaration des variables :
- ws: La feuille de calcul où seront créées les données.
- x, mu, sigma: Variables nécessaires pour calculer les valeurs de la distribution normale. mu est la moyenne et sigma est l’écart-type de la distribution.
- i: Un compteur pour la boucle qui génère les points de données.
- nPoints: Le nombre de points à générer pour tracer la courbe.
- rangeX, rangeY: Plages de données pour les valeurs X et Y à afficher dans le graphique.
Création des données X et Y :
- Pour chaque point de la plage de valeurs X, on calcule la densité de probabilité correspondante en utilisant la formule de la distribution normale.
Création du graphique :
- Un graphique de type XY Scatter Smooth est ajouté à la feuille de calcul. Ce type de graphique permet d’afficher des courbes lissées entre les points de données.
- Les données sont ensuite liées au graphique via SetSourceData.
Personnalisation du graphique :
- Titre du graphique : « Courbe de Gaussienne (Distribution Normale) ».
- Titres des axes X et Y : indiquent respectivement les valeurs de X et la densité de probabilité.
4. Exécution du code
- Ouvrez Excel et accédez à l’éditeur VBA (Alt + F11).
- Créez un nouveau module (Insertion > Module).
- Collez le code ci-dessus dans le module.
- Fermez l’éditeur et exécutez le code en allant dans « Développeur » puis « Macros », sélectionnez CreerCourbeGaussienne, et cliquez sur « Exécuter ».
5. Résultat
Après avoir exécuté le code, vous devriez voir un graphique représentant une courbe en cloche basée sur une distribution normale standard (moyenne = 0, écart-type = 1).