OVH Cloud OVH Cloud

Nombres aléatoires

4 réponses
Avatar
olitoto
Bonjour,

Je voudrais remplir une colonne de 50 lignes avec des nombres aléatoires
entre
0 et 50, MAIS sans qu'aucun des nombres ne se répète deux fois.

Bien sûr, j'ai essayé la fonction ALEA() en la triturant, mais rien à faire,
elle me sort souvent 2 à 3 fois le même nombre dans la série.

Puis je résoudre ce pb sans passer par la programmation ?

Merci à tous ,

Olivier

4 réponses

Avatar
Denys
Bonjour Olitoto,

Voici une petite macro de Debra Dalgleish utilisée pour la loterie et
que j'ai modifiée pour la cause:

Sub Aléatoire()
Dim c As Range
Dim rng As Range
Dim x As Integer
x = 50
Set rng = Range("A1:A50")
rng.Clear

For Each c In rng
c.Value = Int(x * Rnd + 1)
Do Until Application.WorksheetFunction _
.CountIf(rng, c.Value) = 1
c.Value = Int(x * Rnd + 1)
Loop
Next
End Sub

Bonne journée

Denys



Bonjour,

Je voudrais remplir une colonne de 50 lignes avec des nombres aléatoires
entre
0 et 50, MAIS sans qu'aucun des nombres ne se répète deux fois.

Bien sûr, j'ai essayé la fonction ALEA() en la triturant, mais rien à faire,
elle me sort souvent 2 à 3 fois le même nombre dans la série.

Puis je résoudre ce pb sans passer par la programmation ?

Merci à tous ,

Olivier


Avatar
AV
Puis je résoudre ce pb sans passer par la programmation ?


En A2:A51 ta série de nombres 1;2;3;4;5.....50
En B2 et recopie ---> B51 =ALEA()
En C2 et recopie ---> C51 : =INDEX($A$2:$A$51;RANG(B2;$B$2:$B$51))

Chaque appui sur la touche F9 effectuera un nouveau retirage dans un ordre
aléatoire en C2:C51

Par macro, pour un tirage en E2:E51 :

Sub zzz()
[E2:E51] = ""
For i = 1 To 50
x1 = Evaluate("int(rand()*(" & 50 + 1 & "-" & 1 & ")+" & 1 & ")")
If Application.CountIf([E2:E51], x1) > 0 Then i = i - 1 Else Cells(i + 1,
5) = x1
Next
End Sub

Exemples là :
http://cjoint.com/?mfhwNMgEjx

AV

Avatar
olitoto
Bonjour Olitoto,

Voici une petite macro de Debra Dalgleish utilisée pour la loterie et
que j'ai modifiée pour la cause:

Sub Aléatoire()
Dim c As Range
Dim rng As Range
Dim x As Integer
x = 50
Set rng = Range("A1:A50")
rng.Clear

For Each c In rng
c.Value = Int(x * Rnd + 1)
Do Until Application.WorksheetFunction _
.CountIf(rng, c.Value) = 1
c.Value = Int(x * Rnd + 1)
Loop
Next
End Sub

Bonne journée

Denys




Bonjour,

Je voudrais remplir une colonne de 50 lignes avec des nombres aléatoires
entre
0 et 50, MAIS sans qu'aucun des nombres ne se répète deux fois.

Bien sûr, j'ai essayé la fonction ALEA() en la triturant, mais rien à faire,
elle me sort souvent 2 à 3 fois le même nombre dans la série.

Puis je résoudre ce pb sans passer par la programmation ?

Merci à tous ,

Olivier



Merci beaucoup à tous les deux !


Olivier


Avatar
olitoto
Puis je résoudre ce pb sans passer par la programmation ?



En A2:A51 ta série de nombres 1;2;3;4;5.....50
En B2 et recopie ---> B51 =ALEA()
En C2 et recopie ---> C51 : =INDEX($A$2:$A$51;RANG(B2;$B$2:$B$51))

Chaque appui sur la touche F9 effectuera un nouveau retirage dans un ordre
aléatoire en C2:C51

Par macro, pour un tirage en E2:E51 :

Sub zzz()
[E2:E51] = ""
For i = 1 To 50
x1 = Evaluate("int(rand()*(" & 50 + 1 & "-" & 1 & ")+" & 1 & ")")
If Application.CountIf([E2:E51], x1) > 0 Then i = i - 1 Else Cells(i + 1,
5) = x1
Next
End Sub

Exemples là :
http://cjoint.com/?mfhwNMgEjx

AV


Merci beaucoup à tous les deux !


Olivier