tirage sans doublon dans une liste (vba)

teabox

XLDnaute Nouveau
Bonjour à tous,

Je suis novice en vba et je n'ai pas été capable de trouver une solution à mon problème malgré de nombreuses discussions sur le sujet.

J'ai une série de données numérotés et je voudrais trouver un moyen de tirer aléatoirement et sans doublon un nombre variable de ces données (5 par exemple) pour les travailler indépendement dans un autre tableau.

Je vous joint un exemple du format de ma fiche de travail.

Merci d'avance pour votre aide.

teabox
 

Pièces jointes

  • test-rnd.xlsx
    10.6 KB · Affichages: 135

ROGER2327

XLDnaute Barbatruc
Bonjour à tous.

Une autre procédure, sans dictionnaire.
(Ça n'apporte rien de neuf, si ce n'est une autre approche.)
VB:
Sub tire()
  Dim h&, i&, j&, k&, u() As Variant, v&(), w() As Variant
  Dim Origine As Range, Destination As Range, nbCol&

' === Paramètres =======================================

    Set Origine = Me.Range("A1").Cells: nbCol = 4
    Set Destination = Me.Range("H1").Cells
    k = Me.Range("F5").Value

' ======================================================

    With Origine
      u = .Parent.Range(.Cells, .Parent.Cells(.Parent.Rows.Count, .Column).End(xlUp).Offset(0, nbCol - 1)).Value
    End With

    Randomize
    h = UBound(u, 1)
    ReDim v(1 To h)
    For i = 1 To h: v(i) = i: Next i
    For i = 2 To h: j = v(i): v(i) = v(i + Int((h - i + 1) * Rnd)): v(i + Int((h - i + 1) * Rnd(0))) = j: Next i
    If 0 > k Then k = 0 Else If k > h - 1 Then k = h - 1
    k = k + 1: ReDim w(1 To k, 1 To nbCol)
    For i = 1 To k: For j = 1 To nbCol: w(i, j) = u(v(i), j): Next j, i

    With Application: .ScreenUpdating = False: .EnableEvents = False: End With
    With Destination: .Resize(h, nbCol).ClearContents: .Resize(k, nbCol).Value = w: End With
    With Application: .EnableEvents = True: .ScreenUpdating = True: End With

End Sub

Bonne soirée.


ℝOGER2327
#8450


Lundi 16 Décervelage 144 (Saint Mauvais, sujet - fête Suprême Quarte)
24 Nivôse An CCXXV, 7,2691h - cuivre
2017-W02-5T17:26:45Z
 

Pièces jointes

  • Copie de Teabox_Tirage_rnd_a.xlsm
    23.4 KB · Affichages: 56

Discussions similaires

Réponses
3
Affichages
249

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 501
dernier inscrit
talebafia