1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| Sub Graphique()
Dim Xmin As Double, Xmax As Double, Ymin As Double, Ymax As Double, MU As Double
Dim FeuilleDonnees As String, Titre As String, LabelX As String, LabelY As String
Dim Grf As ChartObject
Dim Sh As Worksheet
'Ici initialisation des variables (pour l'exemple en dur, mais rien ne t'empêche d'initialiser ces variables à partir de cellules de ta feuille)
FeuilleDonnees = "Courbes"
Titre = "Compte rendu du " & ActiveSheet.Name
LabelX = "Temps"
LabelY = "°C/Wh/W.m^-2/W"
Xmin = 0: Xmax = 105
Ymin = -10: Ymax = 135
MU = 2.5 / 24 'MU: Pas de l'axe des abscisses, Ici de 2.5h en une journée
With ActiveSheet
If IsDate(.Name) Then
'ajout du graphique avec les dimensions
Set Grf = .ChartObjects.Add(.Range("C12").Left, .Range("C12").Top, 500, 320)
'choix du type du graphique
Grf.Chart.ChartType = xlXYScatterSmooth
'choix de la source de données
Grf.Chart.SetSourceData Source:=.Range("A7:C69,O7:O69,P7:P69")
With Grf.Chart
'graphique avec titre
.HasTitle = True
'le texte du titre avec mise en forme de la police
With .ChartTitle.Characters
.Text = Titre
With .Font
.Bold = True
.ColorIndex = 11
.Size = 18
End With
End With
.SeriesCollection(1).Name = "Température du module"
.SeriesCollection(2).Name = "Irradiance"
.SeriesCollection(3).Name = "Puissance totale"
.SeriesCollection(4).Name = "Energie totale"
'L'axe horizontal
With .Axes(xlCategory)
.HasTitle = True
.AxisTitle.Characters.Text = LabelX
.MinimumScale = 0
.MaximumScale = 1
.TickLabels.NumberFormat = "hh-mm"
.MajorUnit = MU
End With
'l'axe vertical
With .Axes(xlValue)
.HasTitle = True
.AxisTitle.Characters.Text = LabelY
.MinimumScale = 0
.MaximumScale = 1900
.TickLabels.NumberFormat = "0.00"
End With
'la zone de traçage
.PlotArea.Interior.ColorIndex = xlNone
End With
'Ajout d'une feuille Courbe
On Error Resume Next
Set Sh = Sheets(FeuilleDonnees)
On Error GoTo 0
If Sh Is Nothing Then
Set Sh = Worksheets.Add(After:=Worksheets(1))
Sh.Name = FeuilleDonnees
End If
Grf.Chart.Location Where:=xlLocationAsObject, Name:=FeuilleDonnees
Set Grf = Nothing
End If
End With
End Sub |