Sub inc()
Dim TableauSource()
Dim TableauRésultat()
Dim NbLignesParCode As Integer
Dim NbLignesTotal As Integer
Dim compt1 As Integer
Dim compt2 As Integer
TableauSource = Worksheets("Feuil1").Range("A2:D" & Range("A1").End(xlDown).Row).Value
NbLignesTotal = 0
compt1 = 1
For i = LBound(TableauSource) To UBound(TableauSource)
NbLignesParCode = Application.Index(TableauSource, i, 3) - Application.Index(TableauSource, i, 2) + 1
NbLignesTotal = NbLignesTotal + NbLignesParCode
compt2 = 1
ReDim Preserve TableauRésultat(1 To 4, 1 To NbLignesTotal)
For j = 1 To NbLignesParCode
TableauRésultat(1, compt1) = Application.Index(TableauSource, i, 1)
TableauRésultat(2, compt1) = compt1
TableauRésultat(3, compt1) = Application.Index(TableauSource, i, 4)
If TableauRésultat(3, compt1) <> "" Then
TableauRésultat(4, compt1) = compt2
End If
compt1 = compt1 + 1
compt2 = compt2 + 1
Next j
Next i
Worksheets("Feuil1").Range("G2:J" & NbLignesTotal + 1).ClearContents
Worksheets("Feuil1").Range("G2:J" & NbLignesTotal + 1).Value = Application.Transpose(TableauRésultat)
End Sub