Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)
Dim ET As Range 'déclare la variable ET (En-Tête)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Set O = Worksheets("Feuil1") 'définit l'onglet O
Set PL = O.Range("A1").CurrentRegion 'définit la plage PL
DL = PL.Rows.Count 'définit la dernière ligne DL de la plage PL
Set ET = PL.Rows(1) 'définit la plage ET
PL.Sort key1:=O.Range("C1"), Header:=xlYes 'tri la plage PL en fonction du Lot
For I = DL To 3 Step -1 'boucle inversée des lignes DL à 3
'condition : si la cellule au-dessus est différente que la cellule de la boucle
If O.Cells(I - 1, "C").Value <> O.Cells(I, "C").Value Then
O.Rows(I).Insert 'insère une ligne en position I
ET.Copy Rows(I) 'copy l'en tête dans la ligne I
End If 'fin de la condition
Next I 'prochaine ligne de la boucle inversée
End Sub