Sub ab()
Dim dl1&, x$, sh As Worksheet: Set sh = ActiveSheet
'/////////////////////////////////////////////////////////////////////////////////////
'les trois lignes ci dessous ne servent qu'à créer les données pour l'exemple
Cells.Clear
Range("A1:A5").Value = Application.Transpose(Array("A", "B", "C", "D", "E"))
MsgBox "Poursuivre le test ?"
'////////////////////////////////////////////////////////////////////////////////////
'On insére une ligne vide entre dès que la valeur change dans la colonne A
For dl1 = Cells(Rows.Count, "A").End(3).Row To 2 Step -1
If Cells(dl1, "A") <> Cells(dl1 - 1, "A") Then Rows(dl1).Resize(2).EntireRow.Insert
Next dl1
With Range(sh.Cells(1, 1), sh.Cells(Rows.Count, 1).End(3)(3))
' On insère une formule dans les cellules vides de la colonne
'formule qui recopie la valeur du dessus
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
'On transforme les formules en valeurs seuls
.Value = .Value
'On se décale en colonne B
With .Offset(, 1) ' dans la cellule B1
x = .Address 'on mémorise l'adresse de la plage de cellules pour la recopie
With .Cells(1, 1).Resize(3) 'en B1:B3 en copie S,M,XL
.Value = Application.Transpose([{"S","M","XL"}])
'puis on recopie vers le bas ces trois valeurs
.AutoFill Destination:=Range(x)
End With
End With
End With
End Sub