Excellent exemple de récursivité avec cette fonction écrivant les méthodiquement les manière d’écrire un nombre entier par addition:
Sub demo()
printPartitions 4, 4, ""
End Sub
Function printPartitions(tgt As Long, max As Long, sfx As String) As String
If tgt = 0 Then
Debug.Print sfx
Else
If max > 1 Then printPartitions tgt, max - 1, sfx
If max <= tgt Then printPartitions tgt - max, max, sfx & " " & max
End If
End Function
J’ai juste inversé sfx et max pour avoir la décomposition en partant du plus grand nombre au plus petit.