Selection aléatoire sans doublon

Résolu
Sormick Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   -  
Sormick Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un code vba qui me permet de sélectionner de manière aléatoire des valeurs
dans la colonne A de mon tableau.
Mais je souhaiterais qu'il ne me sélectionne pas deux fois la même valeur!!!
Voici mon code vba:

Dim sel As Range
Dim i As Integer
For i = 1 To Range("k2").Value
Dim alearow As Integer
Randomize Timer
alearow = Int(Rnd() * 4) + 1
Set sel = Cells(alearow, 1)
Range("M65536").End(xlUp).Offset(1, 0) = sel.Value
Range("l1") = sel.Select
MsgBox Selection
Next i

1 réponse

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour
Sub faites_vos_jeux()
Dim dico As Object, Tirage As Byte

Set dico = CreateObject("scripting.dictionary")
For cptr = 1 To 100
Tirage = Int(Rnd * 100) + 1
If Not dico.exists(Tirage) Then dico.Add Tirage, ""
Next
Range("A1").Resize(dico.Count, 1) = Application.Transpose(dico.keys)

End Sub

1
Sormick Messages postés 146 Date d'inscription   Statut Membre Dernière intervention  
 
olala!!!!
quelque chose ne va pas dans votre code!
il m'efface les valeurs que j'ai dans ma colonne A et me mets des valeurs comme ceci:
50
42
70
18
43
55
jusqu'à la cellule (A67)
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Excuse moi de t'avoir dérangé
et merci pour le temps passé ?
Relis quand même ton charabia que tu as appelé "code"
0
Sormick Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   > michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention  
 
désolé si je m'exprime mal . je débute en vba.
en fait voila ce que je souhaite faire mais je n'y arrive pas.
je souhaite que une valeur soit sélectionnée au hazard dans la colonne (A)
puis il passe à une autre valeur toujours de manière aléatoire.
mais tout ceci sans sélectionner une deuxième fois une valeur déjà sélectionnée auparavant!
il doit faire la sélection que trois fois maximum donc je pense qu'il faut utiliser une boucle du genre:
i cptr = 1 To 3
voilà . désolé. si besoin je vous mettrais une pièce jointe de mon tableau
Merci
0
Sormick Messages postés 146 Date d'inscription   Statut Membre Dernière intervention  
 
Super j'ai enfin trouvé la solution!!
La voici::
Columns("c:c").ClearContents
Dim FillRange As Range, SrcRange As Range
Dim LastRow As Long, c As Range
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
Set SrcRange = Range("A1:A" & LastRow)
Set FillRange = Range("c1:c" & Range("h1").Value)
For Each c In FillRange
Do
c.Value = Application.Index(SrcRange, Int((LastRow * Rnd) + 1))
Loop Until WorksheetFunction.CountIf(FillRange, c.Value) < 2
Next

Bonne journée à tous!!
0