Bonjour,
J'ai créé un petit jeu qui pose des questions, dans ce cas des pays dans
une colonne et il faut trouver les capitales qui sont dans l'autre
colonne masquée, j'ai pour cela utiliser rand, cela sort au hasard les
pays mais ils reviennent souvent. Comment faire pour qu'une fois le pays
sorti, il ne revient pas dans le rand ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour,
Tu copies ceci dans un module standard :
'--------------------------------------------------------------- Sub Liste_Pays_au_hasard() Dim A As Long, B As Long, I As Long, X As Integer Dim Arr As Variant, N As Long, NbPays As Integer 'Dim D As Object, Texte As String Dim NomFeuille As String, Adr As String
'Liste des caractères possible : 'Adapte le nom de la feuille où sont tes données With Worksheets("Sheet1") Arr = .Range("R1:R26") ' Plage contenant tes pays End With
'********* Variables à renseigner **************
NbPays = UBound(Arr) 'Nombre de pays total N = NbPays 'Nombre de pays que tu veux sortir 'lors du tirage. Ne peut pas être 'plus grand que le nombre de pays total 'Si tu veux un nombre moins grand que le total, tu soustrait 'N = NbPays - 5
NomFeuille = "Feuil1" ' nom de l'onglet de la feuille 'où la liste sera inscrite Adr = "A1" ' Adresse de la première cellule ' où débutera la liste '***************************************************
I = 0 Set D = CreateObject("Scripting.Dictionary") Do Until I = N For X = 1 To NbPays Randomize Texte = Texte & Arr(Int((UBound(Arr, 1) - _ LBound(Arr, 1) + 1) * Rnd + LBound(Arr, 1)), 1)
If Not D.Exists(Texte) Then D.Add Texte, Texte I = I + 1 End If Texte = "" Next Loop
With Sheets(NomFeuille) .Range(Adr).NumberFormat = "Genreral" .Range(Adr).Resize(N) = Application.Transpose(D.Items) End With End Sub '---------------------------------------------------------------
"Alain Lebayle" a écrit dans le message de groupe de discussion : Bonjour, J'ai créé un petit jeu qui pose des questions, dans ce cas des pays dans une colonne et il faut trouver les capitales qui sont dans l'autre colonne masquée, j'ai pour cela utiliser rand, cela sort au hasard les pays mais ils reviennent souvent. Comment faire pour qu'une fois le pays sorti, il ne revient pas dans le rand ?
'---------------------------------------------------------------
Sub Liste_Pays_au_hasard()
Dim A As Long, B As Long, I As Long, X As Integer
Dim Arr As Variant, N As Long, NbPays As Integer
'Dim D As Object, Texte As String
Dim NomFeuille As String, Adr As String
'Liste des caractères possible :
'Adapte le nom de la feuille où sont tes données
With Worksheets("Sheet1")
Arr = .Range("R1:R26") ' Plage contenant tes pays
End With
'********* Variables à renseigner **************
NbPays = UBound(Arr) 'Nombre de pays total
N = NbPays 'Nombre de pays que tu veux sortir
'lors du tirage. Ne peut pas être
'plus grand que le nombre de pays total
'Si tu veux un nombre moins grand que le total, tu soustrait
'N = NbPays - 5
NomFeuille = "Feuil1" ' nom de l'onglet de la feuille
'où la liste sera inscrite
Adr = "A1" ' Adresse de la première cellule
' où débutera la liste
'***************************************************
I = 0
Set D = CreateObject("Scripting.Dictionary")
Do Until I = N
For X = 1 To NbPays
Randomize
Texte = Texte & Arr(Int((UBound(Arr, 1) - _
LBound(Arr, 1) + 1) * Rnd + LBound(Arr, 1)), 1)
If Not D.Exists(Texte) Then
D.Add Texte, Texte
I = I + 1
End If
Texte = ""
Next
Loop
With Sheets(NomFeuille)
.Range(Adr).NumberFormat = "Genreral"
.Range(Adr).Resize(N) = Application.Transpose(D.Items)
End With
End Sub
'---------------------------------------------------------------
"Alain Lebayle" <alain.lebayle@club-internet.fr> a écrit dans le message de groupe de
discussion : OUGDIJq0KHA.4832@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai créé un petit jeu qui pose des questions, dans ce cas des pays dans
une colonne et il faut trouver les capitales qui sont dans l'autre
colonne masquée, j'ai pour cela utiliser rand, cela sort au hasard les
pays mais ils reviennent souvent. Comment faire pour qu'une fois le pays
sorti, il ne revient pas dans le rand ?
'--------------------------------------------------------------- Sub Liste_Pays_au_hasard() Dim A As Long, B As Long, I As Long, X As Integer Dim Arr As Variant, N As Long, NbPays As Integer 'Dim D As Object, Texte As String Dim NomFeuille As String, Adr As String
'Liste des caractères possible : 'Adapte le nom de la feuille où sont tes données With Worksheets("Sheet1") Arr = .Range("R1:R26") ' Plage contenant tes pays End With
'********* Variables à renseigner **************
NbPays = UBound(Arr) 'Nombre de pays total N = NbPays 'Nombre de pays que tu veux sortir 'lors du tirage. Ne peut pas être 'plus grand que le nombre de pays total 'Si tu veux un nombre moins grand que le total, tu soustrait 'N = NbPays - 5
NomFeuille = "Feuil1" ' nom de l'onglet de la feuille 'où la liste sera inscrite Adr = "A1" ' Adresse de la première cellule ' où débutera la liste '***************************************************
I = 0 Set D = CreateObject("Scripting.Dictionary") Do Until I = N For X = 1 To NbPays Randomize Texte = Texte & Arr(Int((UBound(Arr, 1) - _ LBound(Arr, 1) + 1) * Rnd + LBound(Arr, 1)), 1)
If Not D.Exists(Texte) Then D.Add Texte, Texte I = I + 1 End If Texte = "" Next Loop
With Sheets(NomFeuille) .Range(Adr).NumberFormat = "Genreral" .Range(Adr).Resize(N) = Application.Transpose(D.Items) End With End Sub '---------------------------------------------------------------
"Alain Lebayle" a écrit dans le message de groupe de discussion : Bonjour, J'ai créé un petit jeu qui pose des questions, dans ce cas des pays dans une colonne et il faut trouver les capitales qui sont dans l'autre colonne masquée, j'ai pour cela utiliser rand, cela sort au hasard les pays mais ils reviennent souvent. Comment faire pour qu'une fois le pays sorti, il ne revient pas dans le rand ?
'------------------------------------------------ Sub Lister_Pays_au_hasard_Sans_Doublon() Dim A As Long, I As Long, X As Integer Dim Arr As Variant, N As Long, NbPays As Integer Dim D As Object, Pays As String Dim NomFeuille As String, Adr As String
'Adapte le nom de la feuille où sont tes données With Worksheets("Sheet1") Arr = .Range("R1:R26") ' Plage contenant tes pays End With
'********* Variables à renseigner **************
NbPays = UBound(Arr) 'Nombre de pays total N = NbPays 'Nombre de pays que tu veux sortir 'lors du tirage. Ne peut pas être 'plus grand que le nombre de pays total 'Si tu veux un nombre moins grand que le total, tu soustrait 'N = NbPays - 5
NomFeuille = "Feuil1" ' nom de l'onglet de la feuille 'où la liste sera inscrite Adr = "A1" ' Adresse de la première cellule ' où débutera la liste '***************************************************
Set D = CreateObject("Scripting.Dictionary")
Do Until I = N For X = 1 To NbPays Randomize Pays = Pays & Arr(Int((UBound(Arr, 1) - _ LBound(Arr, 1) + 1) * Rnd + LBound(Arr, 1)), 1) If Not D.Exists(Pays) Then D.Add Pays, Pays I = I + 1 If I = N Then Exit For End If Pays = "" Next Loop
With Sheets(NomFeuille) .Range(Adr).NumberFormat = "@" .Range(Adr).Resize(N) = Application.Transpose(D.Items) End With End Sub '------------------------------------------------
"Alain Lebayle" a écrit dans le message de groupe de discussion : Bonjour, J'ai créé un petit jeu qui pose des questions, dans ce cas des pays dans une colonne et il faut trouver les capitales qui sont dans l'autre colonne masquée, j'ai pour cela utiliser rand, cela sort au hasard les pays mais ils reviennent souvent. Comment faire pour qu'une fois le pays sorti, il ne revient pas dans le rand ?
'------------------------------------------------
Sub Lister_Pays_au_hasard_Sans_Doublon()
Dim A As Long, I As Long, X As Integer
Dim Arr As Variant, N As Long, NbPays As Integer
Dim D As Object, Pays As String
Dim NomFeuille As String, Adr As String
'Adapte le nom de la feuille où sont tes données
With Worksheets("Sheet1")
Arr = .Range("R1:R26") ' Plage contenant tes pays
End With
'********* Variables à renseigner **************
NbPays = UBound(Arr) 'Nombre de pays total
N = NbPays 'Nombre de pays que tu veux sortir
'lors du tirage. Ne peut pas être
'plus grand que le nombre de pays total
'Si tu veux un nombre moins grand que le total, tu soustrait
'N = NbPays - 5
NomFeuille = "Feuil1" ' nom de l'onglet de la feuille
'où la liste sera inscrite
Adr = "A1" ' Adresse de la première cellule
' où débutera la liste
'***************************************************
Set D = CreateObject("Scripting.Dictionary")
Do Until I = N
For X = 1 To NbPays
Randomize
Pays = Pays & Arr(Int((UBound(Arr, 1) - _
LBound(Arr, 1) + 1) * Rnd + LBound(Arr, 1)), 1)
If Not D.Exists(Pays) Then
D.Add Pays, Pays
I = I + 1
If I = N Then Exit For
End If
Pays = ""
Next
Loop
With Sheets(NomFeuille)
.Range(Adr).NumberFormat = "@"
.Range(Adr).Resize(N) = Application.Transpose(D.Items)
End With
End Sub
'------------------------------------------------
"Alain Lebayle" <alain.lebayle@club-internet.fr> a écrit dans le message de groupe de
discussion : OUGDIJq0KHA.4832@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai créé un petit jeu qui pose des questions, dans ce cas des pays dans
une colonne et il faut trouver les capitales qui sont dans l'autre
colonne masquée, j'ai pour cela utiliser rand, cela sort au hasard les
pays mais ils reviennent souvent. Comment faire pour qu'une fois le pays
sorti, il ne revient pas dans le rand ?
'------------------------------------------------ Sub Lister_Pays_au_hasard_Sans_Doublon() Dim A As Long, I As Long, X As Integer Dim Arr As Variant, N As Long, NbPays As Integer Dim D As Object, Pays As String Dim NomFeuille As String, Adr As String
'Adapte le nom de la feuille où sont tes données With Worksheets("Sheet1") Arr = .Range("R1:R26") ' Plage contenant tes pays End With
'********* Variables à renseigner **************
NbPays = UBound(Arr) 'Nombre de pays total N = NbPays 'Nombre de pays que tu veux sortir 'lors du tirage. Ne peut pas être 'plus grand que le nombre de pays total 'Si tu veux un nombre moins grand que le total, tu soustrait 'N = NbPays - 5
NomFeuille = "Feuil1" ' nom de l'onglet de la feuille 'où la liste sera inscrite Adr = "A1" ' Adresse de la première cellule ' où débutera la liste '***************************************************
Set D = CreateObject("Scripting.Dictionary")
Do Until I = N For X = 1 To NbPays Randomize Pays = Pays & Arr(Int((UBound(Arr, 1) - _ LBound(Arr, 1) + 1) * Rnd + LBound(Arr, 1)), 1) If Not D.Exists(Pays) Then D.Add Pays, Pays I = I + 1 If I = N Then Exit For End If Pays = "" Next Loop
With Sheets(NomFeuille) .Range(Adr).NumberFormat = "@" .Range(Adr).Resize(N) = Application.Transpose(D.Items) End With End Sub '------------------------------------------------
"Alain Lebayle" a écrit dans le message de groupe de discussion : Bonjour, J'ai créé un petit jeu qui pose des questions, dans ce cas des pays dans une colonne et il faut trouver les capitales qui sont dans l'autre colonne masquée, j'ai pour cela utiliser rand, cela sort au hasard les pays mais ils reviennent souvent. Comment faire pour qu'une fois le pays sorti, il ne revient pas dans le rand ?
Bonjour, Michdenis, Je suis parfaitement satisfait de ta procédure qui fonctionne à merveille, un très grand merci à toi ! Bonne journée Alain
michdenis a écrit :
Bonjour,
Tu copies ceci dans un module standard :
'------------------------------------------------ Sub Lister_Pays_au_hasard_Sans_Doublon() Dim A As Long, I As Long, X As Integer Dim Arr As Variant, N As Long, NbPays As Integer Dim D As Object, Pays As String Dim NomFeuille As String, Adr As String
'Adapte le nom de la feuille où sont tes données With Worksheets("Sheet1") Arr = .Range("R1:R26") ' Plage contenant tes pays End With
'********* Variables à renseigner **************
NbPays = UBound(Arr) 'Nombre de pays total N = NbPays 'Nombre de pays que tu veux sortir 'lors du tirage. Ne peut pas être 'plus grand que le nombre de pays total 'Si tu veux un nombre moins grand que le total, tu soustrait 'N = NbPays - 5
NomFeuille = "Feuil1" ' nom de l'onglet de la feuille 'où la liste sera inscrite Adr = "A1" ' Adresse de la première cellule ' où débutera la liste '***************************************************
Set D = CreateObject("Scripting.Dictionary")
Do Until I = N For X = 1 To NbPays Randomize Pays = Pays & Arr(Int((UBound(Arr, 1) - _ LBound(Arr, 1) + 1) * Rnd + LBound(Arr, 1)), 1) If Not D.Exists(Pays) Then D.Add Pays, Pays I = I + 1 If I = N Then Exit For End If Pays = "" Next Loop
With Sheets(NomFeuille) .Range(Adr).NumberFormat = "@" .Range(Adr).Resize(N) = Application.Transpose(D.Items) End With End Sub '------------------------------------------------
"Alain Lebayle" a écrit dans le message de groupe de discussion : Bonjour, J'ai créé un petit jeu qui pose des questions, dans ce cas des pays dans une colonne et il faut trouver les capitales qui sont dans l'autre colonne masquée, j'ai pour cela utiliser rand, cela sort au hasard les pays mais ils reviennent souvent. Comment faire pour qu'une fois le pays sorti, il ne revient pas dans le rand ?
Bonjour, Michdenis,
Je suis parfaitement satisfait de ta procédure qui fonctionne à
merveille, un très grand merci à toi !
Bonne journée
Alain
michdenis a écrit :
Bonjour,
Tu copies ceci dans un module standard :
'------------------------------------------------
Sub Lister_Pays_au_hasard_Sans_Doublon()
Dim A As Long, I As Long, X As Integer
Dim Arr As Variant, N As Long, NbPays As Integer
Dim D As Object, Pays As String
Dim NomFeuille As String, Adr As String
'Adapte le nom de la feuille où sont tes données
With Worksheets("Sheet1")
Arr = .Range("R1:R26") ' Plage contenant tes pays
End With
'********* Variables à renseigner **************
NbPays = UBound(Arr) 'Nombre de pays total
N = NbPays 'Nombre de pays que tu veux sortir
'lors du tirage. Ne peut pas être
'plus grand que le nombre de pays total
'Si tu veux un nombre moins grand que le total, tu soustrait
'N = NbPays - 5
NomFeuille = "Feuil1" ' nom de l'onglet de la feuille
'où la liste sera inscrite
Adr = "A1" ' Adresse de la première cellule
' où débutera la liste
'***************************************************
Set D = CreateObject("Scripting.Dictionary")
Do Until I = N
For X = 1 To NbPays
Randomize
Pays = Pays & Arr(Int((UBound(Arr, 1) - _
LBound(Arr, 1) + 1) * Rnd + LBound(Arr, 1)), 1)
If Not D.Exists(Pays) Then
D.Add Pays, Pays
I = I + 1
If I = N Then Exit For
End If
Pays = ""
Next
Loop
With Sheets(NomFeuille)
.Range(Adr).NumberFormat = "@"
.Range(Adr).Resize(N) = Application.Transpose(D.Items)
End With
End Sub
'------------------------------------------------
"Alain Lebayle" <alain.lebayle@club-internet.fr> a écrit dans le message de groupe de
discussion : OUGDIJq0KHA.4832@TK2MSFTNGP04.phx.gbl...
Bonjour,
J'ai créé un petit jeu qui pose des questions, dans ce cas des pays dans
une colonne et il faut trouver les capitales qui sont dans l'autre
colonne masquée, j'ai pour cela utiliser rand, cela sort au hasard les
pays mais ils reviennent souvent. Comment faire pour qu'une fois le pays
sorti, il ne revient pas dans le rand ?
Bonjour, Michdenis, Je suis parfaitement satisfait de ta procédure qui fonctionne à merveille, un très grand merci à toi ! Bonne journée Alain
michdenis a écrit :
Bonjour,
Tu copies ceci dans un module standard :
'------------------------------------------------ Sub Lister_Pays_au_hasard_Sans_Doublon() Dim A As Long, I As Long, X As Integer Dim Arr As Variant, N As Long, NbPays As Integer Dim D As Object, Pays As String Dim NomFeuille As String, Adr As String
'Adapte le nom de la feuille où sont tes données With Worksheets("Sheet1") Arr = .Range("R1:R26") ' Plage contenant tes pays End With
'********* Variables à renseigner **************
NbPays = UBound(Arr) 'Nombre de pays total N = NbPays 'Nombre de pays que tu veux sortir 'lors du tirage. Ne peut pas être 'plus grand que le nombre de pays total 'Si tu veux un nombre moins grand que le total, tu soustrait 'N = NbPays - 5
NomFeuille = "Feuil1" ' nom de l'onglet de la feuille 'où la liste sera inscrite Adr = "A1" ' Adresse de la première cellule ' où débutera la liste '***************************************************
Set D = CreateObject("Scripting.Dictionary")
Do Until I = N For X = 1 To NbPays Randomize Pays = Pays & Arr(Int((UBound(Arr, 1) - _ LBound(Arr, 1) + 1) * Rnd + LBound(Arr, 1)), 1) If Not D.Exists(Pays) Then D.Add Pays, Pays I = I + 1 If I = N Then Exit For End If Pays = "" Next Loop
With Sheets(NomFeuille) .Range(Adr).NumberFormat = "@" .Range(Adr).Resize(N) = Application.Transpose(D.Items) End With End Sub '------------------------------------------------
"Alain Lebayle" a écrit dans le message de groupe de discussion : Bonjour, J'ai créé un petit jeu qui pose des questions, dans ce cas des pays dans une colonne et il faut trouver les capitales qui sont dans l'autre colonne masquée, j'ai pour cela utiliser rand, cela sort au hasard les pays mais ils reviennent souvent. Comment faire pour qu'une fois le pays sorti, il ne revient pas dans le rand ?