En ce qui te concerne, tu aurais été mieux inspiré en fournissant un classeur...
Sub Répartir2()
Dim n%, x%, nx%, i%, T(6, 0)
With ActiveSheet.Range("A1")
If .Value = "" Or Not IsNumeric(.Value) Then
Exit Sub
Else
n = CInt(.Value / 5)
If .Value <> n * 5 Then .Value = n * 5
End If
End With
Randomize
For i = 6 To 1 Step -1
nx = IIf(n < 16, n - 3, 13)
x = Int(nx * Rnd + 4)
If n - x < i * 4 Or n - x > i * 16 Then
i = i + 1
Else
T(6 - i, 0) = x: n = n - x
End If
Next i
T(6, 0) = n
For i = 0 To 6
T(i, 0) = T(i, 0) * 5
Next i
ActiveSheet.Range("C1:C7").Value = T
End Sub