Sub test2()
Dim TabInc(), TabDép(), TNbTest(), Fin As Boolean, N As Long
TabDép = [I4:K7].Value
TNbTest = [I10:K10].Value
ReDim TabInc(1 To UBound(TabDép, 1), 1 To UBound(TabDép, 2))
For N = 0 To 2000
IncCol TabInc, TabDép, TNbTest, Fin
If Fin And N > 0 Then Exit Sub
Cells(13, "I").Resize(4, 3).Offset(5 * N).Value = TabInc
Next N
End Sub
Sub IncCol(TabInc(), TabDép(), TNbTest(), Fin As Boolean)
Dim C As Long, L As Long, Somme As Long, ResteSurLaColonne As Boolean
Fin = False
For C = UBound(TabDép, 2) To 1 Step -1
ResteSurLaColonne = True
Do
For L = UBound(TabDép, 1) To 1 Step -1
If TabInc(L, C) > 0 Then TabInc(L, C) = TabInc(L, C) - 1: Exit For
TabInc(L, C) = TabDép(L, C): Next L
If L = 0 Then ResteSurLaColonne = False
Somme = 0
For L = 1 To UBound(TabInc, 1): Somme = Somme + TabInc(L, C): Next L
Loop Until Somme = TNbTest(1, C)
If ResteSurLaColonne Then Exit Sub
Next C
Fin = True
End Sub