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.
XL 2019Fonction aléatoire sans doublons pour quizz
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
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.