1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| Dim MinI, MaxI
Dim Msg
Sub Tirage(MinI,MaxI)
Dim TableauFinal()
Dim i
Dim Ch
Dim Nb 'Variant pour splitter la chaine contenant les nombres à choisir
Dim NbAleatoire 'Indice aléatoire pour choisir un élément de la chaine contenant les nombres
ReDim TableauFinal(MaxI - MinI)
'On va générer une chaine partant du premier au dernier chiffre (donc de 5 à 24 par défaut),
'les chiffres étant séparés par une virgule
'Par défaut on aura donc Ch = "5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24"
Ch = MinI
For i = MinI + 1 To MaxI
Ch = Ch & "," & i
Next
'On met les chiffres dans un tableau issu du split de la chaine contenant tous les nombres
Nb = Split(Ch, ",")
'On tire un nombre x parmi les n éléments
'Si ce nombre n'est pas le dernier de la liste, le nombre d'indice x devient le nombre d'indice n
'Par exemple au premier tirage on tire le 7ème nombre parmi les 20, donc 7 pour mon exemple
'Dans le tableau Nb, on remplace 7 par 24
'Puis on tire un nombre x parmi les n - 1 éléments (donc parmi les 24 de mon tableau Nb),
'ça ne peut pas être 7 puisqu'il a été remplacé par le 24ème
'Si ce nombre n'est pas le n - 1 de la liste, le nombre d'indice x devient le nombre d'indice n - 1
'Etc...
Randomize 'Initialise le générateur de nombres aléatoires
For i = MaxI - MinI To 0 Step -1
NbAleatoire = Int((i + 1) * Rnd)
TableauFinal(MaxI - MinI - i) = Nb(NbAleatoire)
If NbAleatoire < i Then Nb(NbAleatoire) = Nb(i)
Next
Msg = ""
For i = MinI To MaxI
Msg = Msg & TableauFinal(i - MinI) & " , "
Next
end sub
Tirage 5,24
msgbox msg |
Partager