Faire apparaître des chiffres aléatoire de 1 à 50 sans doublon

Chveitsarski

XLDnaute Nouveau
Salut à tous,

Tout est dans le titre :)
Mais pour être plus clair, je dois faire apparaître une dizaine de chiffres aléatoire, et dans tout ces nombres, il ne dois pas y avoir de doublon...
Ca fait un moment que je bloque la dessus... Si quelqu'un avait une solution ? :o

Merci à tous !
 

job75

XLDnaute Barbatruc
Re : Faire apparaître des chiffres aléatoire de 1 à 50 sans doublon

Bonjour Chveitsarski, salut JCGL, excalibur :)

Puisque j'ai fait le travail, voici le fichier et la macro :

Code:
Sub Alea50()
Dim n As Byte, c As New Collection, al As Byte, i As Byte
n = 10 ' quantité de nombres aléatoires désirés
If n > 50 Then MsgBox "Impossibilité": Exit Sub
On Error Resume Next
While c.Count < n
al = Int(1 + 50 * Rnd)
c.Add al, CStr(al)
Wend
For i = 1 To n
Range("A" & i) = c(i)
Next
End Sub

A+
 

Pièces jointes

Dernière édition:

Chveitsarski

XLDnaute Nouveau
Re : Faire apparaître des chiffres aléatoire de 1 à 50 sans doublon

Merci pour ta réponse rapide, mais malheureusement j'obtiens des doublons...

En fait j'ai 5 colonnes, et ces 5 doivent avoir 5 chiffres de 1 à 50 sans doublons..
Mais La colonne 1 peut avoir "10" par exemple, et la colonne 3 peut également l'avoir...

A+
 

JCGL

XLDnaute Barbatruc
Re : Faire apparaître des chiffres aléatoire de 1 à 50 sans doublon

Bonjour à tous,
Salut Excalibur (Grand beau sur Cham : neige ++, soleil ++):)
Salut Job :)

Tu aurais du donner toutes les condition dès le départ...
J'ai fait par lignes et elles sont sans doublons

A+ à tous
 

Chveitsarski

XLDnaute Nouveau
Re : Faire apparaître des chiffres aléatoire de 1 à 50 sans doublon

Oui excuse, je n'ai pas été clair...
Mais j'ai essayé ton programme JCGL, et ça fonctionne.. presque ;)
Parce que justement j'aimerai que ça soit par colonne et non par ligne le tri..
Qu'est-ce que je dois modifier ?

Encore merci !
 

job75

XLDnaute Barbatruc
Re : Faire apparaître des chiffres aléatoire de 1 à 50 sans doublon

Re,

Donc pour un tableau 5 x 5, sans doublon dans chaque colonne.

J'utilise 2 macros et déclare Public la collection :

Code:
Public c As New Collection

Sub RemplissageAleatoire()
Dim lig As Byte, col As Byte
For col = 1 To 5
Call Alea50
For lig = 1 To 5
Cells(lig, col).Value = c(lig)
Next
Set c = Nothing
Next
End Sub

Sub Alea50()
Dim n As Byte, al As Byte
n = 5 ' quantité de nombres aléatoires désirés
If n > 50 Then MsgBox "Impossibilité": Exit Sub
On Error Resume Next
While c.Count < n
al = Int(1 + 50 * Rnd)
c.Add al, CStr(al)
Wend
End Sub

A+
 

Pièces jointes

Chveitsarski

XLDnaute Nouveau
Re : Faire apparaître des chiffres aléatoire de 1 à 50 sans doublon

J'ai été un peu rapide ;)

J'ai trouvé...

En ayant modifié le code ainsi :

Nbr = 5
If Nbr = 0 Then Exit Sub

For k = 1 To Nbr
For i = 1 To 5
Do
If i < 1 Then
num = Int((50 * Rnd) + 1)
Else
Tablo(i) = Int((50 * Rnd) + 1)
End If
Doublons = False
For j = 1 To 10
If i <> j Then
If Tablo(j) <> "" Then
If Tablo(i) = Tablo(j) Then
Doublons = True
Exit For
End If
End If
End If
Next j
Loop Until Not Doublons
Next i

Ligne = Ligne + 1
For i = 1 To 10
Cells(i, Ligne) = Tablo(i)
Next i
Next k

Encore un grand merci et une bonne soirée avec la neige :D
 

Discussions similaires

Réponses
2
Affichages
346
Réponses
9
Affichages
315
Réponses
21
Affichages
1 K
Réponses
3
Affichages
604
Réponses
8
Affichages
473
Réponses
2
Affichages
1 K

Statistiques des forums

Discussions
315 285
Messages
2 118 029
Membres
113 416
dernier inscrit
rr69