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).