Table des matières

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

valeureffet
xlLineCourbes
xlLineMarkersStackedCourbes empilées avec marqueurs
xlLineStackedCourbes empilées
xlPieSecteurs
xlPieOfPieSecteurs de secteurs
xlPyramidBarStackedBarres pyramidales empilées
xlPyramidColHistogramme pyramidal 3D
xlPyramidColClusteredHistogramme pyramidal en cluster
xlPyramidColStackedHistogramme pyramidal empilé
xlPyramidColStacked100Histogramme pyramidal empilé à 100 %
xlRadarRadar
xlRadarFilledRadar plein
xlRadarMarkersRadar avec indicateurs de données
xlStockHLCMax-Min-Clôture
xlStockOHLCOuverture-Max-Min-Clôture
xlStockVHLCVolume-Max-Min-Clôture
xlStockVOHLCVolume-Ouverture-Max-Min-Clôture
xlSurfaceSurface 3D
xlSurfaceTopViewSurface (vue du dessus)
xlSurfaceTopViewWireframeSurface (Structure vue de dessus)
xlSurfaceWireframeSurface 3D (structure)
xlXYScatterNuages de points
xlXYScatterLinesNuages de points avec courbes
xlXYScatterLinesNoMarkersNuages de points avec courbes et sans indicateurs de données
xlXYScatterSmoothNuages de points avec courbes lissées
xlXYScatterSmoothNoMarkersNuages de points avec courbes lissées et sans indicateurs de données
xl3DAreaAires 3D
xl3DAreaStackedAires 3D empilées
xl3DAreaStacked100Aires empilées 100 %
xl3DBarClusteredBarres 3D en cluster
xl3DBarStackedBarres 3D empilées
xl3DBarStacked100Barres 3D empilées 100 %
xl3DColumnHistogramme 3D
xl3DColumnClusteredHistogramme 3D en cluster
xl3DColumnStackedHistogramme 3D empilé
xl3DColumnStacked100Histogramme 3D empilé 100 %
xl3DLineCourbes 3D
xl3DPieSecteurs 3D
xl3DPieExplodedSecteurs 3D éclatés
xlAreaAires
xlAreaStackedAires empilées
xlAreaStacked100Aires empilées 100 %
xlBarClusteredBarres en cluster
xlBarOfPieBarres de secteurs
xlBarStackedBarres empilées
xlBarStacked100Barres empilées 100 %
xlBubbleBulles
xlBubble3DEffectBulles avec effets 3D
xlColumnClusteredHistogramme en cluster
xlColumnStackedHistogramme empilé
xlColumnStacked100Histogramme empilé 100 %
xlConeBarClusteredBarres coniques en cluster
xlConeBarStackedBarres coniques empilées
xlConeBarStacked100Barres coniques empilées 100 %
xlConeColHistogramme conique 3D
xlConeColClusteredHistogramme conique en cluster
xlConeColStackedHistogramme conique empilé
xlConeColStacked100Histogramme conique empilé 100 %
xlCylinderBarClusteredBarres cylindriques en cluster
xlCylinderBarStackedBarres cylindriques empilées
xlCylinderBarStacked100Barres cylindriques empilées 100 %
xlCylinderColHistogramme en cylindres 3D
xlCylinderColClusteredHistogramme conique en cluster
xlCylinderColStackedHistogramme conique empilé
xlCylinderColStacked100Histogramme en cylindres empilés 100 %
xlDoughnutAnneau
xlDoughnutExplodedAnneau éclaté
xlLineMarkersCourbes avec marqueurs
xlLineMarkersStacked100Courbes empilées 100 % avec marqueurs
xlLineStacked100Courbes empilées 100 %
xlPieExplodedSecteurs éclatés
xlPyramidBarClusteredBarres pyramidales en cluster
xlPyramidBarStacked100Barres pyramidales empilées 100 %