Sub duplication()
Dim tsData As ListObject, tsQte As ListObject
Dim min&, som&, max&, td, tq, nfois, nlig&, i&, j&, k&
With Worksheets("Restant Prod")
Set tsData = .Range("a1").ListObject: Set tsQte = .Range("k1").ListObject
td = tsData.DataBodyRange.Value: tq = tsQte.DataBodyRange.Value
min = Application.min(tsQte.DataBodyRange.Columns(3))
som = Application.Sum(tsData.DataBodyRange.Columns(5).Value)
max = som / min + tsData.DataBodyRange.Rows.Count
ReDim res(1 To max, 1 To UBound(td, 2))
For i = 1 To UBound(td)
max = td(i, 5)
For k = 1 To UBound(tq)
If td(i, 1) = tq(k, 1) And td(i, 3) = tq(k, 2) Then max = tq(k, 3)
Next k
nfois = Int(td(i, 5) / max)
For k = 1 To nfois
nlig = nlig + 1
For j = 1 To UBound(td, 2): res(nlig, j) = td(i, j): Next
res(nlig, 5) = max
Next k
If max * nfois <> td(i, 5) Then
nlig = nlig + 1
For j = 1 To UBound(td, 2): res(nlig, j) = td(i, j): Next
res(nlig, 5) = td(i, 5) - max * nfois
End If
Next i
tsData.ListColumns(1).Range(2, 1).Resize(nlig, UBound(td, 2)) = res
End With
End Sub