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