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