Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

tirage sans doublon dans une liste (vba)

  • Initiateur de la discussion Initiateur de la discussion teabox
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2016 liste
Réponses
10
Affichages
301
  • Question Question
Réponses
2
Affichages
124
Réponses
2
Affichages
130
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…