Liste aléatoire

fanic

XLDnaute Nouveau
Bonjour,

J'ai besoin de générer une liste aléatoire sans doublons de 14 chiffres comprise entre 1 et 40 puis de la copier dans une feuille à partir de la cellule A4 et une seconde liste de 6 chiffres comprise entre 41 et 80 puis de la copier dans la même feuille à partir de la cellule A19.
Dans les archives du forum, j'ai trouvé ce code mais je n'arrive pas à l'adapter à mon besoin.
Code:
Sub Test()
    GenereSerieAleatoireSansDoublons 10, Range("a2")
End Sub


Sub GenereSerieAleatoireSansDoublons(NbValeurs As Integer, Cell As Range)
    Dim Tableau() As Integer, TabNumLignes() As Integer
    Dim i As Integer, k As Integer
    
    ReDim Tableau(NbValeurs)
    ReDim TabNumLignes(NbValeurs)
    
    For i = 1 To NbValeurs
        TabNumLignes(i) = i
        Tableau(i) = i
    Next
    
    'Initialise le générateur de nombres aléatoires
    Randomize
    
    For i = NbValeurs To 1 Step -1
        k = Int((i * Rnd) + 1)
        Cells(Cell.Row + i - 1, Cell.Column) = Tableau(TabNumLignes(k))
        TabNumLignes(k) = TabNumLignes(i)
    Next

End Sub

Si quelqu'un peut m'aider...

Merci d'avance
 

mécano41

XLDnaute Accro
Re : Liste aléatoire

Bonjour,

Voici une routine qui doit faire ce que tu souhaites. J'ai mis un bouton mais tu peux lancer directement en remplaçant le titre du Sub BoutonAppel_Click() par autre chose ou même intégrer cette partie dans une autre routine.

Tu peux modifier facilement les paramètres dans cette première routine

La seconde routine travaille dans la feuille EXCEL, mais en ajoutant des colonnes qu'elle efface ensuite pour éviter de perturber le reste.

Cordialement
 

Pièces jointes

  • Nb Aleat. sans doublon2.xls
    29 KB · Affichages: 142

mécano41

XLDnaute Accro
Re : Liste aléatoire

Bonjour Pierre Jean

Ta méthode paraît intéressante mais je n'ai pas tout compris. Même en regardant l'aide (succincte) sur le Dictionary et Key, je n'ai pas vu comment tu évitais les doublons. Je ne comprends pas non plus la différence entre les variables d et a ; en regardant ces variables, on voit qu'il y a les mêmes choses dedans...seul l'indice est décalé ...

Si tu pouvais m'en dire deux mots ...

Merci d'avance

Cordialement

EDIT : j'ai compris, le Dictionary ne prend que ce qui n'est pas déjà dedans ....
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Liste aléatoire

Re

Je ne manipule pas depuis longtemps le dictionary
Je puis dire seulement que dictionary(cle)=1 (ou toute autre valeur ) crée un tableau intitulé dictionary.keys (car la creation est faite automatiquement si le dictionary(cle) n'existe pas)
Par ailleurs il semble bien qu'il faille passer par un tableau classique pour exploiter le dictionary.keys
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste aléatoire

Bonsoir,

@PierreJean

Code:
Sub liste_14()
Set d = CreateObject("Scripting.Dictionary")
While d.Count < 14
 Randomize
 x = Int((40 * Rnd) + 1)
 d(x) = x
Wend
[COLOR="Red"][B][A4].Resize(d.Count) = Application.Transpose(d.keys)[/B][/COLOR]
End Sub

JB
 

Discussions similaires

Réponses
6
Affichages
271
Réponses
23
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 379
Messages
2 087 765
Membres
103 662
dernier inscrit
rterterert