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
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
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 % |