Programmation en VBA - Excel : graphiques

Bibliographie

http://www.vbfrance.com/codes/EXEMPLE-AFFICHAGE-GRAPHIQUE-DANS-USERFORM-VBA-EXCEL_37702.aspx

Mettre un graphique sur un userform

source : http://www.vbfrance.com/codes/INSERER-GRAPHIQUE-DANS-USERFORM_37885.aspx

<note important>Dans l'éditeur VBE, il faut d'abord insérer le controle supplementaire.

Pour cela, aller dans outils/contrôles upplémentaires :

et cocher le contrôle “ Microsot Office Chart xxx” :

Le nouveau contrôle apparaît dans la palette : </note>

Voici un exemple de code VBA :

Private Sub UserForm_Activate()
Dim oChart, oSeries1, oSeries2
Dim oAxis1, oAxis2, oConst
Dim S1(43), S2(43), S3(43) As Variant
'on crée les tableaux de variables
For i = 1 To 43
S1(i) = Cells(i + 1, 2)
S2(i) = Cells(i + 1, 3)
S3(i) = Cells(i + 1, 4)
Next
'on efface tout
ChartSpace1.Clear
Set oConst = ChartSpace1.Constants
' Création diagramme dans le ChartSpace
Set oChart = ChartSpace1.Charts.Add
' Ajout 1ere série de type XYscatter plot
Set oSeries1 = oChart.SeriesCollection.Add
oSeries1.Caption = "Current"
oSeries1.Type = oConst.chChartTypeScatterSmoothLine ' on peut changer le type, se reférer à l'explorateur d'objet
oSeries1.SetData oConst.chDimXValues, oConst.chDataLiteral, S1()
oSeries1.SetData oConst.chDimYValues, oConst.chDataLiteral, S2()
' Ajout 2eme série de type XYscatter plot
Set oSeries2 = oChart.SeriesCollection.Add
oSeries2.Caption = "estimate"
oSeries2.Type = oConst.chChartTypeScatterSmoothLine
oSeries2.SetData oConst.chDimXValues, oConst.chDataLiteral, S1()
oSeries2.SetData oConst.chDimYValues, oConst.chDataLiteral, S3()
' les Axes
Set oAxis1 = oChart.Axes(oConst.chAxisPositionLeft)
oAxis1.Scaling.Maximum = 0.05
oAxis1.Scaling.Minimum = 0.025
oAxis1.NumberFormat = "0.0%"
oAxis1.HasMajorGridlines = True
Set oAxis2 = oChart.Axes(oConst.chAxisPositionBottom)
oAxis2.Scaling.Maximum = 30
oAxis2.Scaling.Minimum = 0
oAxis2.NumberFormat = "0"
oAxis2.HasMajorGridlines = True
'on indique la légende
oChart.HasLegend = True
oChart.Legend.Position = oConst.chLegendPositionBottom
'on définit la couleur de fonds
oChart.PlotArea.Interior.Color = "white"
'on peut définir toutes les propriétés supplémentaires en se référant à l'explorateur sous "spacechart"
End Sub

Créer un graphique

sur une feuille graphique

Pour créer une feuille graphique par manipulation de séries :

Dim objChart As Chart, objRange As Range, MaSerie As Series, i As Long
Set objRange = Worksheets("Feuil1").Range(Worksheets("Feuil1").Cells(1, 1), Worksheets("Feuil1").Cells(21, 3))
Set objChart = ThisWorkbook.Charts.Add
with objChart
.ChartType = xlXYScatter
.SeriesCollection.Add objRange, xlColumns, True, True
For i = 2 To objRange.Columns.Count
Set MaSerie = .SeriesCollection.NewSeries
MaSerie.Values = "=" & objRange.Columns(i).Address(True, True, xlR1C1, True)
MaSerie.XValues = "=" & objRange.Columns(1).Address(True, True, xlR1C1, True)
Next i
end with

valeurs possibles pour la propriété ChartType

valeur	effet
xlLine	Courbes
xlLineMarkersStacked	Courbes empilées avec marqueurs
xlLineStacked	Courbes empilées
xlPie	Secteurs
xlPieOfPie	Secteurs de secteurs
xlPyramidBarStacked	Barres pyramidales empilées
xlPyramidCol	Histogramme pyramidal 3D
xlPyramidColClustered	Histogramme pyramidal en cluster
xlPyramidColStacked	Histogramme pyramidal empilé
xlPyramidColStacked100	Histogramme pyramidal empilé à 100 %
xlRadar	Radar
xlRadarFilled	Radar plein
xlRadarMarkers	Radar avec indicateurs de données
xlStockHLC	Max-Min-Clôture
xlStockOHLC	Ouverture-Max-Min-Clôture
xlStockVHLC	Volume-Max-Min-Clôture
xlStockVOHLC	Volume-Ouverture-Max-Min-Clôture
xlSurface	Surface 3D
xlSurfaceTopView	Surface (vue du dessus)
xlSurfaceTopViewWireframe	Surface (Structure vue de dessus)
xlSurfaceWireframe	Surface 3D (structure)
xlXYScatter	Nuages de points
xlXYScatterLines	Nuages de points avec courbes
xlXYScatterLinesNoMarkers	Nuages de points avec courbes et sans indicateurs de données
xlXYScatterSmooth	Nuages de points avec courbes lissées
xlXYScatterSmoothNoMarkers	Nuages de points avec courbes lissées et sans indicateurs de données
xl3DArea	Aires 3D
xl3DAreaStacked	Aires 3D empilées
xl3DAreaStacked100	Aires empilées 100 %
xl3DBarClustered	Barres 3D en cluster
xl3DBarStacked	Barres 3D empilées
xl3DBarStacked100	Barres 3D empilées 100 %
xl3DColumn	Histogramme 3D
xl3DColumnClustered	Histogramme 3D en cluster
xl3DColumnStacked	Histogramme 3D empilé
xl3DColumnStacked100	Histogramme 3D empilé 100 %
xl3DLine	Courbes 3D
xl3DPie	Secteurs 3D
xl3DPieExploded	Secteurs 3D éclatés
xlArea	Aires
xlAreaStacked	Aires empilées
xlAreaStacked100	Aires empilées 100 %
xlBarClustered	Barres en cluster
xlBarOfPie	Barres de secteurs
xlBarStacked	Barres empilées
xlBarStacked100	Barres empilées 100 %
xlBubble	Bulles
xlBubble3DEffect	Bulles avec effets 3D
xlColumnClustered	Histogramme en cluster
xlColumnStacked	Histogramme empilé
xlColumnStacked100	Histogramme empilé 100 %
xlConeBarClustered	Barres coniques en cluster
xlConeBarStacked	Barres coniques empilées
xlConeBarStacked100	Barres coniques empilées 100 %
xlConeCol	Histogramme conique 3D
xlConeColClustered	Histogramme conique en cluster
xlConeColStacked	Histogramme conique empilé
xlConeColStacked100	Histogramme conique empilé 100 %
xlCylinderBarClustered	Barres cylindriques en cluster
xlCylinderBarStacked	Barres cylindriques empilées
xlCylinderBarStacked100	Barres cylindriques empilées 100 %
xlCylinderCol	Histogramme en cylindres 3D
xlCylinderColClustered	Histogramme conique en cluster
xlCylinderColStacked	Histogramme conique empilé
xlCylinderColStacked100	Histogramme en cylindres empilés 100 %
xlDoughnut	Anneau
xlDoughnutExploded	Anneau éclaté
xlLineMarkers	Courbes avec marqueurs
xlLineMarkersStacked100	Courbes empilées 100 % avec marqueurs
xlLineStacked100	Courbes empilées 100 %
xlPieExploded	Secteurs éclatés
xlPyramidBarClustered	Barres pyramidales en cluster
xlPyramidBarStacked100	Barres pyramidales empilées 100 %