Selection aléatoire sans doublon

Résolu
Sormick Messages postés 163 Statut Membre -  
Sormick Messages postés 163 Statut Membre -
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. Sormick Messages postés 163 Statut Membre
       
      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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      1. Sormick Messages postés 163 Statut Membre > michel_m Messages postés 18903 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
    3. Sormick Messages postés 163 Statut Membre
       
      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