Const FEUILLE_DATA As String = "Feuil2"
Type structGroupe
LigDeb As Long
LigFin As Long
Item As Long
End Type
Sub aa()
Dim Groupe() As structGroupe
Dim S As Worksheet
Dim CH As Chart
Dim SC As Series
Dim LG As Legend
Dim Position As Range
Dim R As Range
Dim var As Variant
Dim LastGroup&
Dim Lig&
Dim varGroupe
Dim i&
Dim cpt&
'### Les données ###
Set S = Sheets(FEUILLE_DATA)
Set R = S.[a1].CurrentRegion.Offset(1, 0)
var = R
'---
Lig& = 2
varGroupe = 1
For i& = 1 To UBound(var, 1)
If var(i&, 1) <> varGroupe Then
cpt& = cpt& + 1
ReDim Preserve Groupe(1 To cpt&)
With Groupe(cpt&)
.Item = varGroupe
.LigDeb = Lig&
.LigFin = i&
End With
varGroupe = varGroupe + 1
Lig& = i& + 1
End If
Next i&
'#### Les graphiques ###
Set S = Sheets.Add(after:=Sheets(Sheets.Count))
Set Position = S.[b2]
For i& = 1 To cpt&
S.Shapes.AddChart(xlXYScatterSmooth, Position.Left, Position.Top, Application.CentimetersToPoints(24.89), Application.CentimetersToPoints(9.91)).Select
Set CH = Selection.Parent
'--- Position du graphique ---
If i& Mod 2 = 0 Then
Set Position = Position.Offset(20, -12)
Else
Set Position = Position.Offset(0, 12)
End If
'On ajoute la série des valeurs "Value":
Set SC = CH.SeriesCollection.NewSeries
SC.Name = "=Feuil2!$E$1" 'Nom de la série qu'on retrouvera dans la légende
SC.XValues = "=Feuil2!$D$" & Groupe(i&).LigDeb & ":$D$" & Groupe(i&).LigFin 'Valeurs en abscisses: les dates + heures qu'on trouve en colonne D
SC.Values = "=Feuil2!$E$" & Groupe(i&).LigDeb & ":$E$" & Groupe(i&).LigFin 'Valeurs en ordonnées: la T°: colonne E
'On ajoute la série "Max Value":
Set SC = CH.SeriesCollection.NewSeries
SC.Name = "=Feuil2!$F$1"
SC.XValues = "=Feuil2!$D$" & Groupe(i&).LigDeb & ":$D$" & Groupe(i&).LigFin
SC.Values = "=Feuil2!$F$" & Groupe(i&).LigDeb & ":$F$" & Groupe(i&).LigFin 'Valeurs en ordonnées: la T° MAX: colonne F
SC.MarkerStyle = 8 'Type de marqueur = points
SC.MarkerSize = 2 'Taille marqueurs
SC.Format.Line.Weight = 1
'2) on rajoute un cadre autour de la légende
Set LG = CH.Legend
LG.Border.Color = vbBlack
'3) On insère un titre sur le graphique
CH.HasTitle = True
With CH.ChartTitle
.Text = "Evolution temperature of the lighting (Group" & i& & ")"
.Characters.Font.Size = 14
End With
'4) On ajoute un titre à l'axe des abscisses:
With CH.Axes(xlCategory)
.HasTitle = True
With .AxisTitle
.Caption = "Inspection time"
.Font.Size = 10
End With
End With
'5) on ajoute un titre à l'axe des ordonnées
With CH.Axes(xlValue)
.HasTitle = True
With .AxisTitle
.Caption = "Temperature values (degree celsius)"
.Font.Size = 10
End With
End With
Next i&
End Sub