Option Explicit
Sub Regroup()
Dim TS(), Fab As SsGr, Opé As SsGr, Dat As SsGr, LS&
ReDim TS(1 To Feuil1.UsedRange.Rows.Count, 1 To 5)
For Each Fab In Gigogne(Feuil1.[A5:E5], 3, 4, 2)
For Each Opé In Fab.Co
For Each Dat In Opé.Co
LS = LS + 1
TS(LS, 1) = Dat.Co(1)(1)
TS(LS, 2) = Dat.Id
TS(LS, 3) = Fab.Id
TS(LS, 4) = Opé.Id
TS(LS, 5) = Dat.Somme(5): Next Dat, Opé, Fab
Feuil1.[I5].Resize(UBound(TS, 1), 5).Value = TS
End Sub