Sub Test()
Dim s%, i%, n&, c&
Const Cs& = 6, Mn& = 5, Mx& = 20, Cb& = 80 'nb de cases, minimum, maximum, cible
ReDim Tb%(1 To Cs) 'conteneur des cases
n = Mx - Mn + 1 'nb de nombres autorisés
Randomize
Line1:
Do
c = c + 1 'compteur d'essais (inutile, pr info)
s = 0 'somme des aléatoires en cours
For i = 1 To Cs
Tb(i) = Mn + Int(n * Rnd) 'valeur aléatoire pour ième case
s = s + Tb(i) 'MJ résultat
If s + (Cs - i) * Mx < Cb Or s + (Cs - i) * Mn > Cb Then Exit For 'arréter essai en cours si impossibilité (pas super utile sur 6 cases seulement)
Next i
If i < Cs + 1 Then GoTo Line1 'si i < 7, c'est que l'essai à été avorté, refaire
Loop Until s = Cb 'refaire tant que cible non atteinte
[A1].Resize(Cs) = Application.Transpose(Tb) 'afficher en ligne à partir de A1
MsgBox "Trouvé en " & c & " essai" & String(-(c > 1), "s") 'info
End Sub