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
|
Dim time_Range As Range
Dim pression_Range As Range
Dim temperature_Range As Range
Dim time As Variant
Dim temperature As Variant
Dim pression As Variant
Sub utilisegraphique()
'Je déclare des plages qui sont trop grandes car je ne sais pas combien de lignes j'ai dans mon fichier
Set time_Range = Worksheets("Feuil").Range("a2:a1000")
Set pression_Range = Worksheets("Feuil").Range("c2:c1000")
Set temperature_Range = Worksheets("Feuil").Range("b2:c1000")
'Je compte le nombre de ligne que j'ai dans mes tableaux (le comptage est 'basique mais étant donné que je débute, je ne connais pas encore la 'fonction qui pourrait être plus raffinée)
For i = 1 To 1000
If IsEmpty(time_Range.Cells(i)) Then
i = 1000
Else
j = j + 1
End If
Next i
'Je dimensionne mes vecteurs à la bonne dimension
ReDim time(1 To j) As Double
ReDim pression(1 To j) As Double
ReDim temperature(1 To j) As Double
'J'affecte les valeurs à mes vecteurs
For i = 1 To j
time(i) = time_Range.Cells(i)
pression(i) = pression_Range.Cells(i)
temperature(i) = temperature_Range.Cells(i)
Next i
'Je réalise mes graphes
Call Graphique(time, pression, "Pression en fonction du temps", "Temps [s]", "Pression [bar]", "Pression")
Call Graphique(time, temperature, "Temperature en fonction du temps", "Temps [s]", "Temperature [°C]", "Temperature")
End Sub
Sub Graphique(a As Variant, b As Variant, Titre As String, LegendeX As String, LegendeY As String, Nom As String)
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = a
ActiveChart.SeriesCollection(1).Values = b
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=Nom
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = Titre
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = LegendeX
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = LegendeY
End With
End Sub |
Partager