Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonsoir, j'aimerais avoir 1 nombre aléatoires dans 4 cellules dont la somme des cellules doit être égal à une somme connu déjà bien avant: qu'elle est la formule excel qu'il faut ??? Merci beaucoup de m'aider
T'es au courant qu'il y a 17 179 869 184 cellules dans une feuille et que ça risque d'être "un peu" long d'inscrire quatre nombres dans chaque cellule ?
Je pense même que c'est impossible à faire.
T'es au courant qu'il y a 17 179 869 184 cellules dans une feuille et que ça risque d'être "un peu" long d'inscrire quatre nombres dans chaque cellule ?
Je pense même que c'est impossible à faire.
Je suppose qu'il faut travailler avec des nombres entiers positifs.
Alors voyez le fichier joint et cette macro :
VB:
Sub Tirages()
Dim s, a(1 To 4), i, n
s = Int(Val([A1]))
If s < UBound(a) Then [B1:B4].ClearContents: Exit Sub
Randomize
Do
For i = 1 To 4: a(i) = 1 + Int(s * Rnd): Next
n = n + 1
Loop While Application.Sum(a) <> s
[B1:B4] = Application.Transpose(a)
MsgBox Format(n, "#,##0") & " itérations"
End Sub
re
Bonjour à tous
perso je prends 3 nombres compris entre 1 et le (max demandé/4) et le 4eme c'est le reste
je n'ai pas besoins de do/loop pour tester si la somme est bonne
et finalement le 4eme est un nombre au hasard puisqu'il est la conséquence des 3 premiers nombre aléatoire
VB:
Option Explicit
Sub Tirages()
Dim s, a(1 To 4), i
s = Int(Val([A1]))
[B1:B4].ClearContents
Randomize
For i = 1 To 3: a(i) = 1 + Int(Rnd * (s / 4)): Next
a(4) = s - Application.Sum(a)
[B1:B4] = Application.Transpose(a)
End Sub
pareil pour toi
en fait si tu regarde bien les sub resultat en console tu fait la même chose
alors oui je te l'accorde la largeur de possibilité est plus grange pour a(1) et a(2) mais c'est exactement la même chose
re
Bonjour @job75
ma fois sur 100 000
si a(1) te sort 50000 il te reste quoi 😉
comme je te l'ai dit c'est la même chose sauf que la limite dépend des précédents items de a
si a(1) sort 50 000 il ne reste plus que 50 000 à partager en 3
si a(2) sort 40 000 il ne reste plus que 10 000 a partager dans les deux autres
autrement dit si tu sort un gros chiffre dans les premier items les suivants seront très petits par rapport au premiers
avec ma méthode on fait pareil finalement mais a l'envers puisque si j'ai un total très petit le 4 est forcement bien plus grand
disons que il y a plus de chance de repartir la somme en 4 parts de même tranches
donc quand tu dis
Les 4 nombres que tu obtiens ne sont pas vraiment aléatoires puisque chacun est limité au quart de la somme.
et bien avec ta version
a(1) n'est pas limité sauf avec le -3
a(2) est limité a le max - a(1)
a(3) est limité au max - les deux précédents
a(4) est limité au max - les 3 précédents
on peut donc considérer que ce n'est plus vraiment aléatoire aussi
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD