Bonsoir,
heu ... après ... une simple recherche sur le forum de "aléatoire sans doublon" retourne un sacré nombre résultat ... il n'y aurait pas ton bonheur dans tout cela ?
Bonsoir,
heu ... après ... une simple recherche sur le forum de "aléatoire sans doublon" retourne un sacré nombre résultat ... il n'y aurait pas ton bonheur dans tout cela ?
je te propose le fichier Excel joint en fin de post.
regarde "Feuil1", puis fais Ctrl t : ça affiche un nombre aléatoire en B1, entre 1 et 41 ; recommence plusieurs fois ; tu peux vérifier que c'est bien un tirage sans remise ; même que si tu continues de faire Ctrl t, tu vas aboutir, inévitablement, à ce message d'erreur :
eh oui, hein ? à force de puiser des boules de loto dans le sac sans les y remettre, ben à la longue, le sac finit tôt ou tard par s'épuiser ! c'est là qu'on entend la voix de Coluche qui dit : « circulez, y'a rien à voir ! »
bon, alors qu'est-ce qu'on fait maint'nant qu'tu as vidé ton sac ? c'est fini ? tu vas en taule ou on continue à jouer ? tu préfères continuer à jouer, hein ? à vrai dire, j'm'en doutais bien un peu !
bon, alors soit : fais Ctrl i ; puis lis le message de la boîte de dialogue ; ah oui, hein ? ça change la donne ! clique sur le bouton OK pour fermer la boîte de dialogue (tu peux aussi appuyer sur la touche Entrée ou sur la touche Echap : même réaction : ça ferme la boîte de dialogue ; c'est vrai qu'elle ne sert pas à grand chose vu qu't'es pas très loquace ! y'a qu'moi qui cause, ici !) ; bon, ben maint'nant qu't'es d'retour sur la feuille de calcul, tu peux de nouveau t'amuser à faire Ctrl t : comme ils disent au casino : « faites vos jeux ! »(j'me dégage de toute responsabilité si tu perds ta chemise au Loto ; idem si tu finis ruiné, sur la paille, sans un sou vaillant en poche !)
code VBA de ThisWorkbook (3 lignes) :
VB:
Private Sub Workbook_Open()
T(1) = 255: TblInit
End Sub
code VBA de Module1 (22 lignes) :
VB:
Option Explicit: Option Base 1
Public T(41) As Byte
Sub TblInit()
Dim i As Byte: Randomize: [B1].ClearContents
If T(1) < 255 Then MsgBox "Initialisation effectuée"
For i = 1 To 41: T(i) = i: Next i
End Sub
Sub Tirage()
Dim n As Byte, i As Byte
Do
For i = 1 To 41
If T(i) > 0 Then n = 1: Exit For
Next i
If n = 0 Then MsgBox "Tous les numéros ont été tirés.", 64, "Terminé !": Exit Sub
n = Int(41 * Rnd + 1): If T(n) > 0 Then T(n) = 0: Exit Do
Loop
[B1] = n
End Sub
je te propose le fichier Excel joint en fin de post.
regarde "Feuil1", puis fais Ctrl t : ça affiche un nombre aléatoire en B1, entre 1 et 41 ; recommence plusieurs fois ; tu peux vérifier que c'est bien un tirage sans remise ; même que si tu continues de faire Ctrl t, tu vas aboutir, inévitablement, à ce message d'erreur :
eh oui, hein ? à force de puiser des boules de loto dans le sac sans les y remettre, ben à la longue, le sac finit tôt ou tard par s'épuiser ! c'est là qu'on entend la voix de Coluche qui dit : « circulez, y'a rien à voir ! »
bon, alors qu'est-ce qu'on fait maint'nant qu'tu as vidé ton sac ? c'est fini ? tu vas en taule ou on continue à jouer ? tu préfères continuer à jouer, hein ? à vrai dire, j'm'en doutais bien un peu !
bon, alors soit : fais Ctrl i ; puis lis le message de la boîte de dialogue ; ah oui, hein ? ça change la donne ! clique sur le bouton OK pour fermer la boîte de dialogue (tu peux aussi appuyer sur la touche Entrée ou sur la touche Echap : même réaction : ça ferme la boîte de dialogue ; c'est vrai qu'elle ne sert pas à grand chose vu qu't'es pas très loquace ! y'a qu'moi qui cause, ici !) ; bon, ben maint'nant qu't'es d'retour sur la feuille de calcul, tu peux de nouveau t'amuser à faire Ctrl t : comme ils disent au casino : « faites vos jeux ! »(j'me dégage de toute responsabilité si tu perds ta chemise au Loto ; idem si tu finis ruiné, sur la paille, sans un sou vaillant en poche !)
code VBA de ThisWorkbook (3 lignes) :
VB:
Private Sub Workbook_Open()
T(1) = 255: TblInit
End Sub
code VBA de Module1 (22 lignes) :
VB:
Option Explicit: Option Base 1
Public T(41) As Byte
Sub TblInit()
Dim i As Byte: Randomize: [B1].ClearContents
If T(1) < 255 Then MsgBox "Initialisation effectuée"
For i = 1 To 41: T(i) = i: Next i
End Sub
Sub Tirage()
Dim n As Byte, i As Byte
Do
For i = 1 To 41
If T(i) > 0 Then n = 1: Exit For
Next i
If n = 0 Then MsgBox "Tous les numéros ont été tirés.", 64, "Terminé !": Exit Sub
n = Int(41 * Rnd + 1): If T(n) > 0 Then T(n) = 0: Exit Do
Loop
[B1] = n
End Sub