Microsoft 365 Nombre aléatoire d'une liste sans doublon

gothc

XLDnaute Occasionnel
Bonjour le forum
j'ai besoin de votre aide je cherche a l'aide d'une liste sur l'onglet base à sortir un numéro aléatoire sans doublon à l'aide d'un userform de préférence.
avec une animation de 5 secondes avant d'affiché de résultat style chiffre qui défile
Merci de votre aide
je laisse un fichier joint
 

Pièces jointes

  • chiffre aléatoire.xlsx
    10.8 KB · Affichages: 14

Dranreb

XLDnaute Barbatruc
Bonjour.
Et si, pour plus de 150 personnes environ, au lieu de déplacer des labels, on rendais progressivement invisibles ceux qui ne sont pas celui tiré, jusqu'à ce qu'il ne reste plus que celui là ?
Oh, c'est juste une idée comme ça …
 

Katido

XLDnaute Occasionnel
Bonjour à tous,

Je crois entrevoir le besoin...

Si on tire 20 fois un jeton dans une boite qui contient 20 jetons différents, en remettant à chaque fois le jeton dans la boite après l'avoir regardé, on a de grandes chances de tirer plusieurs fois le même.
C'est équivalent à ce que fait la formule :
=INDEX($B$3:$B$22;ALEA()*LIGNES($B$3:$B$22)+1)
Et c'est ce que Gothc ne veut pas

Il veut générer une liste de 20 nombres différents au hasard.
Un algorithme simple consiste à partir d'une liste de 20 nombres différents (mettons 1, 2, 3,..., 19, 20), puis de réaliser "un certain nombre" de permutations aléatoires de deux nombres de cette liste.
Ce que fait ListeAleasSansDoublon dans ce petit programme :

Public Sub ListeAleasSansDoublon(n%, ByRef liste%())

Dim i%, j%, k%, u%

ReDim liste(1 To n)
For i = 1 To n: liste(i) = i: Next i

Randomize Timer
For k = 1 To n
i = 1 + Int(Rnd * n): j = 1 + Int(Rnd * n)
u = liste(i): liste(i) = liste(j): liste(j) = u
Next k

End Sub

Public Sub Test()

Dim li%(), nb%, i%

nb = 20
ListeAleasSansDoublon nb, li
For i = 1 To nb: Debug.Print li(i): Next i

End Sub

Le "certain nombre" de permutations (la boucle For k = 1 To n) doit au minimum être égal au nombre d'éléments de la liste (20 dans notre cas). Mais plus on fait de permutations, mieux c'est (on peut prendre 10 x n si on n'a pas des milliers d'éléments)

Je laisse de côté l'animation

Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG