Créer un histogramme, Excel VBA

Créer un histogramme, Excel VBA

Voici un code VBA détaillé pour créer un histogramme dans Excel, accompagné d’une explication de chaque étape :
Objectif :
Ce code VBA créera un histogramme basé sur une plage de données dans Excel. L’histogramme sera créé en utilisant les fonctionnalités de graphique intégrées d’Excel.
Code VBA :

Sub CreateHistogram()
    Dim dataRange As Range
    Dim chartObj As ChartObject
    Dim binRange As Range
    Dim chartTitle As String
    Dim xAxisTitle As String
    Dim yAxisTitle As String
    ' Définir la plage de données pour l'histogramme
    Set dataRange = Range("A2:A20") ' Modifiez cette plage en fonction de vos données
    ' Définir la plage des intervalles (facultatif ; si non spécifié, Excel génère automatiquement les intervalles)
    Set binRange = Range("B2:B10") ' Modifiez cette plage en fonction de vos intervalles, ou laissez vide
    ' Définir les titres du graphique
    chartTitle = "Histogramme des données"
    xAxisTitle = "Valeurs des données"
    yAxisTitle = "Fréquence"
    ' Créer un graphique
    Set chartObj = ActiveSheet.ChartObjects.Add(Left:=200, Width:=375, Top:=75, Height:=225)
    ' Définir le type de graphique comme Histogramme
    chartObj.Chart.ChartType = xlColumnClustered
    ' Définir les données pour le graphique
    chartObj.Chart.SetSourceData Source:=dataRange
    ' Appliquer la mise en forme du graphique en histogramme
    With chartObj.Chart
        .HasTitle = True
        .ChartTitle.Text = chartTitle
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Text = xAxisTitle
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Text = yAxisTitle
        ' Si une plage d'intervalles est définie, utiliser cette plage pour l'histogramme
        If Not binRange Is Nothing Then
            .Axes(xlCategory).CategoryNames = binRange
        End If
        ' Définir l'apparence de l'histogramme (facultatif)
        .SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(100, 149, 237) ' Couleur des barres
        .SeriesCollection(1).Format.Line.Visible = msoFalse ' Supprimer les bordures des barres
    End With
End Sub

Explication détaillée :
1. Définition de la plage de données :
Set dataRange = Range("A2:A20")
Cette ligne définit la plage de données pour laquelle vous souhaitez créer l’histogramme. Ici, la plage est de A2 à A20, mais vous pouvez la modifier en fonction de vos données.
2. Définition de la plage des intervalles :
Set binRange = Range("B2:B10")
Cette plage (binRange) est utilisée pour définir les intervalles (catégories) de l’histogramme. Si vous ne définissez pas cette plage, Excel générera automatiquement les intervalles.
3. Création du graphique :
Set chartObj = ActiveSheet.ChartObjects.Add(Left:=200, Width:=375, Top:=75, Height:=225)
Cette ligne crée un objet graphique sur la feuille active, en spécifiant sa position et sa taille. Left et Top déterminent la position du graphique, tandis que Width et Height contrôlent sa taille.
4. Définition du type de graphique :
chartObj.Chart.ChartType = xlColumnClustered
Cette ligne définit le type de graphique en tant que graphique en colonnes groupées, ce qui est adapté pour simuler un histogramme. Excel ne dispose pas d’un type direct de graphique histogramme dans VBA, mais un graphique en colonnes peut être utilisé pour cela.
5. Définition de la source de données :
chartObj.Chart.SetSourceData Source:=dataRange
Cette ligne définit la source de données pour le graphique, qui est la plage dataRange que nous avons définie précédemment (les données).
6. Mise en forme du graphique :

    • Les titres sont définis pour le graphique et les axes avec :
.HasTitle = True 
.ChartTitle.Text = chartTitle

Les lignes ci-dessus activent le titre du graphique et lui attribuent le texte "Histogramme des données". De la même manière, des titres sont attribués aux axes X et Y.
7. Définition des catégories des intervalles :

If Not binRange Is Nothing Then
    .Axes(xlCategory).CategoryNames = binRange
End If

Si vous avez défini une plage d’intervalles (binRange), cette ligne garantit que l’axe X affichera ces catégories d’intervalles.
8. Personnalisation de l’apparence du graphique :

.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(100, 149, 237)
.SeriesCollection(1).Format.Line.Visible = msoFalse

Ces lignes formatent l’apparence des barres de l’histogramme. Dans ce cas, les barres sont colorées avec une valeur RGB spécifique, et les bordures des barres sont supprimées.
Remarques :

  • Intervalles : Si vous ne définissez pas de plage d’intervalles, Excel calculera automatiquement les intervalles. Vous pouvez définir des intervalles pour un meilleur contrôle sur la façon dont les données sont regroupées.
  • Type de graphique : Le type xlColumnClustered est utilisé pour simuler un histogramme. Vous pouvez également utiliser xlBarClustered pour un graphique à barres horizontales.

Comment utiliser :
1. Ouvrez le fichier Excel sur lequel vous souhaitez travailler.
2. Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
3. Insérez un nouveau module : Insertion > Module.
4. Collez le code fourni dans le module.
5. Appuyez sur F5 pour exécuter la macro et générer l’histogramme.
Cela vous donnera un graphique histogramme détaillé dans votre feuille Excel.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x