Créer un graphique High-Low-Close (haut-bas-fermé), Excel VBA
Voici un code VBA détaillé pour créer un graphique High-Low-Close (haut-bas-fermé) dans Excel, avec une explication complète de chaque étape :
Code VBA pour un graphique High-Low-Close :
Sub CreateHighLowCloseChart()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim chart As Chart
Dim dataRange As Range
Dim xValues As Range
Dim highValues As Range
Dim lowValues As Range
Dim closeValues As Range
' Définir la feuille de calcul
Set ws = ThisWorkbook.Sheets("Sheet1")
' Définir la plage de données (assurez-vous que les données sont dans un tableau avec Date, High, Low, et Close)
' Supposons que les données sont dans les colonnes A, B, C, et D avec une ligne d'en-tête
Set dataRange = ws.Range("A1:D10") ' Ajustez la plage en fonction de vos données
' Définir les plages de données individuelles
Set xValues = ws.Range("A2:A10") ' Dates
Set highValues = ws.Range("B2:B10") ' Prix hauts
Set lowValues = ws.Range("C2:C10") ' Prix bas
Set closeValues = ws.Range("D2:D10") ' Prix de clôture
' Ajouter un nouveau graphique à la feuille de calcul
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=500, Top:=100, Height:=300)
Set chart = chartObj.Chart
' Définir le type de graphique comme High-Low-Close
chart.ChartType = xlStockHLC
' Définir les données pour le graphique (High-Low-Close)
chart.SetSourceData Source:=dataRange
' Définir l'axe X comme les dates
chart.Axes(xlCategory).CategoryNames = xValues
' Définir les séries pour High, Low et Close
chart.SeriesCollection.NewSeries
chart.SeriesCollection(1).XValues = xValues
chart.SeriesCollection(1).Values = highValues
chart.SeriesCollection(1).Name = "High"
chart.SeriesCollection.NewSeries
chart.SeriesCollection(2).XValues = xValues
chart.SeriesCollection(2).Values = lowValues
chart.SeriesCollection(2).Name = "Low"
chart.SeriesCollection.NewSeries
chart.SeriesCollection(3).XValues = xValues
chart.SeriesCollection(3).Values = closeValues
chart.SeriesCollection(3).Name = "Close"
' Format du titre du graphique
chart.HasTitle = True
chart.ChartTitle.Text = "Graphique High-Low-Close"
' Format des titres des axes
chart.Axes(xlCategory, xlPrimary).HasTitle = True
chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Date"
chart.Axes(xlValue, xlPrimary).HasTitle = True
chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Prix"
' Personnalisation des autres éléments du graphique si nécessaire (par exemple, couleurs, étiquettes)
' Exemple : changer la couleur des séries
chart.SeriesCollection(1).Format.Line.ForeColor.RGB = RGB(255, 0, 0) ' Série High - Rouge
chart.SeriesCollection(2).Format.Line.ForeColor.RGB = RGB(0, 255, 0) ' Série Low - Vert
chart.SeriesCollection(3).Format.Line.ForeColor.RGB = RGB(0, 0, 255) ' Série Close - Bleu
' Ajustement de l'échelle des axes (facultatif)
chart.Axes(xlValue).MinimumScale = WorksheetFunction.Min(closeValues) * 0.9
chart.Axes(xlValue).MaximumScale = WorksheetFunction.Max(closeValues) * 1.1
End Sub
Explication du Code :
1. Définition de la feuille de calcul et des plages :
- Le code commence par définir la feuille de calcul
wsoù les données sont situées (Sheet1dans cet exemple). - Les données pour le graphique High-Low-Close sont supposées être dans les colonnes A (Date), B (High), C (Low), et D (Close). La plage de données (
dataRange) est définie pour inclure ces colonnes.
2. Création du graphique :
- La méthode
ChartObjects.Addajoute un graphique à la feuille de calcul. Les propriétésLeft,Width,Top, etHeightdéfinissent la taille et la position du graphique sur la feuille. - Le type de graphique est défini par
chart.ChartType = xlStockHLC, qui correspond à un graphique High-Low-Close utilisé pour les données financières, comme les prix des actions.
3. Définition des données pour le graphique :
- Les valeurs de l’axe des X (dates) sont définies avec
xValues, et les valeurs des axes Y sont définies pour High (highValues), Low (lowValues), et Close (closeValues). - La méthode
SeriesCollection.NewSeriescrée une nouvelle série de données pour chaque valeur High, Low, et Close.
4. Personnalisation du graphique :
- Un titre est ajouté au graphique avec
chart.HasTitle = Trueetchart.ChartTitle.Text. - Des titres sont ajoutés aux axes (catégorie = Date et valeur = Prix).
- Les couleurs de chaque série (High, Low, Close) sont personnalisées à l’aide de
Format.Line.ForeColor.RGB.
5. Personnalisations optionnelles :
- L’échelle des axes peut être ajustée en définissant les valeurs minimales et maximales pour l’axe des valeurs en fonction des données de clôture (
MinimumScaleetMaximumScale). - Vous pouvez également personnaliser davantage le graphique avec des étiquettes, des marqueurs de données, etc.
Notes Importantes :
- La plage de données et le nom des feuilles doivent être ajustés en fonction de vos propres données.
- Le type de graphique
xlStockHLCest idéal pour les données financières, mais vous pouvez changer le type de graphique si nécessaire (par exemple,xlLinepour un graphique en ligne). - Le graphique s’adapte automatiquement lorsque les données sous-jacentes changent.
Ce code vous permettra de générer un graphique High-Low-Close dynamique, qui se mettra à jour chaque fois que les données de la plage spécifiée seront modifiées. Si vous avez besoin de plus de détails ou de modifications, n’hésitez pas à me le faire savoir !