Bonjour,
Une autre possibilité : construire une fonction personnalisée qui cumule des tirages aléatoires de nombres.
Function ALEASCUMULES(born1 As Integer, born2 As Integer, Optional ncumul As Integer = 0)
Static cum As Integer, n As Integer
Dim na As Integer
Application.Volatile
Randomize
na = Int((born2 - born1 + 1) * Rnd + 1)
If ncumul > 0 And ncumul = n Then
n = 0
cum = 0
End If
cum = cum + na
n = n + 1
ALEASCUMULES = cum
End Function
Elle s'utilise comme la fonction ALEA.ENTRE.BORNES. On met comme arguments les 2 bornes mini et maxi entre lesquelles on tire. J'ai ajouté un 3e argument optionnel : le nb de tirages à cumuler, à partir duquel, au tirage suivant elle repart sur un nouveau cumul. Si on ne met rien, elle cumule indéfiniment...
Limitation : utilisable dans une seule cellule (sans quoi si elle ne produit pas d'erreur (sais pas, pas vérifié !) elle cumulera tout...
Elle n'est pas conçue pour gérer des cumuls distincts [j'y penserai une autre fois]
Cependant, si l'on a un nombre limités de cellules pour lesquelles on veut opérer des cumuls simultanés, on peut en faire autant de copies en les déclinant : ALEASCUMULES1, ...2, ...3 ... Elles fonctionneront comme des fonctions distinctes (attention de reprendre le nom avec déclinaison dans la sortie du résultat en dernière ligne).
Il faudra aussi les synchroniser une fois entrées (car chaque fois qu'on en entre une dans une cellule, les autres prendront un tour d'avance). Pour cela, faire un passage par l'éditeur VBA pour appuyer sur le petit carré de réinitialisation (ce qui effacera toutes les variables et permettra de redémarrer avec le même décompte de recalculs...)
Cela reste encore artisanal mais on essaiera plus élaboré une prochaine fois !
Cordialement
Ferrand