Avec cette macro, j'obtiens en A1:A12, douze entiers
distincts compris entre 1 et 50 :
Sub HasardSansDoublons()
a = 1
b = 50
n = 12
Set dico = CreateObject("Scripting.Dictionary")
Do Until i = n
v = Int((b - a + 1) * Rnd() + a)
If Not dico.Exists(v) Then
dico.Add v, v
i = i + 1
End If
Loop
[a1].Resize(i) = Application.Transpose(dico.items)
End Sub
Mais voilà, j'aimerais me référer à ces nombres sans les
inscrire dans des cellules ?
Par exemple, quel est le deuxième trouvé ?
J'ai essayé dico(2) et dico.Items(2) mais
ça ne mène nulle part.
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
Daniel.C
Bonjour. Bizarrement : Var = dico.items toto = Var(2) Cordialement. Daniel
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers distincts compris entre 1 et 50 : Sub HasardSansDoublons() a = 1 b = 50 n = 12 Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a1].Resize(i) = Application.Transpose(dico.items) End Sub Mais voilà, j'aimerais me référer à ces nombres sans les inscrire dans des cellules ? Par exemple, quel est le deuxième trouvé ? J'ai essayé dico(2) et dico.Items(2) mais ça ne mène nulle part.
Serge
Bonjour.
Bizarrement :
Var = dico.items
toto = Var(2)
Cordialement.
Daniel
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers
distincts compris entre 1 et 50 :
Sub HasardSansDoublons()
a = 1
b = 50
n = 12
Set dico = CreateObject("Scripting.Dictionary")
Do Until i = n
v = Int((b - a + 1) * Rnd() + a)
If Not dico.Exists(v) Then
dico.Add v, v
i = i + 1
End If
Loop
[a1].Resize(i) = Application.Transpose(dico.items)
End Sub
Mais voilà, j'aimerais me référer à ces nombres sans les
inscrire dans des cellules ?
Par exemple, quel est le deuxième trouvé ?
J'ai essayé dico(2) et dico.Items(2) mais
ça ne mène nulle part.
Bonjour. Bizarrement : Var = dico.items toto = Var(2) Cordialement. Daniel
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers distincts compris entre 1 et 50 : Sub HasardSansDoublons() a = 1 b = 50 n = 12 Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a1].Resize(i) = Application.Transpose(dico.items) End Sub Mais voilà, j'aimerais me référer à ces nombres sans les inscrire dans des cellules ? Par exemple, quel est le deuxième trouvé ? J'ai essayé dico(2) et dico.Items(2) mais ça ne mène nulle part.
Serge
MichDenis
Admettons que tu modifies ce bout de procédure comme ceci :
If Not dico.Exists(v) Then g = g + 1 'Compteur dico.Add g, v i = i + 1 End If
Si tu veux retracer le deuxième item : Msgbox dico(2)
"garnote" a écrit dans le message de groupe de discussion :
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers distincts compris entre 1 et 50 : Sub HasardSansDoublons() a = 1 b = 50 n = 12 Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a1].Resize(i) = Application.Transpose(dico.items) End Sub Mais voilà, j'aimerais me référer à ces nombres sans les inscrire dans des cellules ? Par exemple, quel est le deuxième trouvé ? J'ai essayé dico(2) et dico.Items(2) mais ça ne mène nulle part.
Serge
Admettons que tu modifies ce bout de procédure comme ceci :
If Not dico.Exists(v) Then
g = g + 1 'Compteur
dico.Add g, v
i = i + 1
End If
Si tu veux retracer le deuxième item :
Msgbox dico(2)
"garnote" <garnote3@videotron.ca> a écrit dans le message de groupe de discussion :
O08w4kIBKHA.1492@TK2MSFTNGP03.phx.gbl...
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers
distincts compris entre 1 et 50 :
Sub HasardSansDoublons()
a = 1
b = 50
n = 12
Set dico = CreateObject("Scripting.Dictionary")
Do Until i = n
v = Int((b - a + 1) * Rnd() + a)
If Not dico.Exists(v) Then
dico.Add v, v
i = i + 1
End If
Loop
[a1].Resize(i) = Application.Transpose(dico.items)
End Sub
Mais voilà, j'aimerais me référer à ces nombres sans les
inscrire dans des cellules ?
Par exemple, quel est le deuxième trouvé ?
J'ai essayé dico(2) et dico.Items(2) mais
ça ne mène nulle part.
Admettons que tu modifies ce bout de procédure comme ceci :
If Not dico.Exists(v) Then g = g + 1 'Compteur dico.Add g, v i = i + 1 End If
Si tu veux retracer le deuxième item : Msgbox dico(2)
"garnote" a écrit dans le message de groupe de discussion :
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers distincts compris entre 1 et 50 : Sub HasardSansDoublons() a = 1 b = 50 n = 12 Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a1].Resize(i) = Application.Transpose(dico.items) End Sub Mais voilà, j'aimerais me référer à ces nombres sans les inscrire dans des cellules ? Par exemple, quel est le deuxième trouvé ? J'ai essayé dico(2) et dico.Items(2) mais ça ne mène nulle part.
Serge
garnote
Merci à vous deux et bonne journée.
Serge "L'art est long et la vie est courte".
"garnote" a écrit dans le message de news:
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers distincts compris entre 1 et 50 : Sub HasardSansDoublons() a = 1 b = 50 n = 12 Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a1].Resize(i) = Application.Transpose(dico.items) End Sub Mais voilà, j'aimerais me référer à ces nombres sans les inscrire dans des cellules ? Par exemple, quel est le deuxième trouvé ? J'ai essayé dico(2) et dico.Items(2) mais ça ne mène nulle part.
Serge
Merci à vous deux et bonne journée.
Serge
"L'art est long et la vie est courte".
"garnote" <garnote3@videotron.ca> a écrit dans le message de news:
O08w4kIBKHA.1492@TK2MSFTNGP03.phx.gbl...
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers
distincts compris entre 1 et 50 :
Sub HasardSansDoublons()
a = 1
b = 50
n = 12
Set dico = CreateObject("Scripting.Dictionary")
Do Until i = n
v = Int((b - a + 1) * Rnd() + a)
If Not dico.Exists(v) Then
dico.Add v, v
i = i + 1
End If
Loop
[a1].Resize(i) = Application.Transpose(dico.items)
End Sub
Mais voilà, j'aimerais me référer à ces nombres sans les
inscrire dans des cellules ?
Par exemple, quel est le deuxième trouvé ?
J'ai essayé dico(2) et dico.Items(2) mais
ça ne mène nulle part.
Avec cette macro, j'obtiens en A1:A12, douze entiers distincts compris entre 1 et 50 : Sub HasardSansDoublons() a = 1 b = 50 n = 12 Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a1].Resize(i) = Application.Transpose(dico.items) End Sub Mais voilà, j'aimerais me référer à ces nombres sans les inscrire dans des cellules ? Par exemple, quel est le deuxième trouvé ? J'ai essayé dico(2) et dico.Items(2) mais ça ne mène nulle part.
Serge
Mishell
Bonjour. Tu peux aussi utiliser une collection pour obtenir douze entiers distincts.
Dim dico As New Collection
a = 1 b = 50 n = 12 ligne = 0 Randomize Timer On Error Resume Next Do Until dico.Count = n v = Int((b - a + 1) * Rnd() + a)
ligne = dico.Count dico.Add Item:=v, key:=CStr(v)
If ligne < dico.Count Then [b1].Cells(dico.Count, 1) = dico.Item(dico.Count) End If
Loop On Error GoTo 0
Debug.Print dico.Item(2)
Mishell
"garnote" wrote in message news:
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers distincts compris entre 1 et 50 : Sub HasardSansDoublons() a = 1 b = 50 n = 12 Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a1].Resize(i) = Application.Transpose(dico.items) End Sub Mais voilà, j'aimerais me référer à ces nombres sans les inscrire dans des cellules ? Par exemple, quel est le deuxième trouvé ? J'ai essayé dico(2) et dico.Items(2) mais ça ne mène nulle part.
Serge
Bonjour.
Tu peux aussi utiliser une collection pour obtenir douze entiers distincts.
Dim dico As New Collection
a = 1
b = 50
n = 12
ligne = 0
Randomize Timer
On Error Resume Next
Do Until dico.Count = n
v = Int((b - a + 1) * Rnd() + a)
ligne = dico.Count
dico.Add Item:=v, key:=CStr(v)
If ligne < dico.Count Then
[b1].Cells(dico.Count, 1) = dico.Item(dico.Count)
End If
Loop
On Error GoTo 0
Debug.Print dico.Item(2)
Mishell
"garnote" <garnote3@videotron.ca> wrote in message
news:O08w4kIBKHA.1492@TK2MSFTNGP03.phx.gbl...
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers
distincts compris entre 1 et 50 :
Sub HasardSansDoublons()
a = 1
b = 50
n = 12
Set dico = CreateObject("Scripting.Dictionary")
Do Until i = n
v = Int((b - a + 1) * Rnd() + a)
If Not dico.Exists(v) Then
dico.Add v, v
i = i + 1
End If
Loop
[a1].Resize(i) = Application.Transpose(dico.items)
End Sub
Mais voilà, j'aimerais me référer à ces nombres sans les
inscrire dans des cellules ?
Par exemple, quel est le deuxième trouvé ?
J'ai essayé dico(2) et dico.Items(2) mais
ça ne mène nulle part.
Bonjour. Tu peux aussi utiliser une collection pour obtenir douze entiers distincts.
Dim dico As New Collection
a = 1 b = 50 n = 12 ligne = 0 Randomize Timer On Error Resume Next Do Until dico.Count = n v = Int((b - a + 1) * Rnd() + a)
ligne = dico.Count dico.Add Item:=v, key:=CStr(v)
If ligne < dico.Count Then [b1].Cells(dico.Count, 1) = dico.Item(dico.Count) End If
Loop On Error GoTo 0
Debug.Print dico.Item(2)
Mishell
"garnote" wrote in message news:
Bonjour,
Avec cette macro, j'obtiens en A1:A12, douze entiers distincts compris entre 1 et 50 : Sub HasardSansDoublons() a = 1 b = 50 n = 12 Set dico = CreateObject("Scripting.Dictionary") Do Until i = n v = Int((b - a + 1) * Rnd() + a) If Not dico.Exists(v) Then dico.Add v, v i = i + 1 End If Loop [a1].Resize(i) = Application.Transpose(dico.items) End Sub Mais voilà, j'aimerais me référer à ces nombres sans les inscrire dans des cellules ? Par exemple, quel est le deuxième trouvé ? J'ai essayé dico(2) et dico.Items(2) mais ça ne mène nulle part.