Table des matières
Programmation en VBA - Excel : graphiques
Bibliographie
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 % |