[Excel] Tirage aléatoire lignes d'un tableau [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
7 mai 2012
-
Messages postés
2
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
7 mai 2012
-
Bonjour,
Je souhaite effectuer un tirage aléatoire de lignes sur un tableau. Le tableau fait environ 10000x20 et je souhaite créer un autre tableau (sur un autre onglet) qui serait constituer de 500 lignes sélectionner aléatoirement de ce tableau.
Mille Merci d'avance

Jung


5 réponses

Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 099
Bonjour CCM, je viens juste de terminer un exemple,..
Option Explicit  

Sub CopieAleatoire()  
Dim Lig As Long, LigCopy As Long, TB() As Boolean  
Dim DerLig As Long  
Dim WkCopy As Worksheet  
    Randomize Timer  
    Set WkCopy = Sheets("Feuil2")  
    LigCopy = 1  
    With Sheets("Feuil1")  
        DerLig = .Range("A" & Rows.Count).End(xlUp).Row  
        ReDim TB(DerLig) 'éviter de recopier plusieur fois la même ligne  
        Do While LigCopy <= 500  
            Lig = (DerLig * Rnd) + 1  
            While TB(Lig) = True  
                Lig = (DerLig * Rnd) + 1  
                DoEvents
            Wend  
            TB(Lig) = True  
            .Rows(Lig).Copy WkCopy.Rows(LigCopy)  
            LigCopy = LigCopy + 1  
            DoEvents  
        Loop  
    End With  
End Sub

Attention, si moins de 500 ligne bloque Excel, c'est pour cela que j'ai mis les DoEvents.
Si tu est certains du nombre de ligne tu peu les enlever pour accéléré le code.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57025 internautes nous ont dit merci ce mois-ci

Messages postés
9523
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 juillet 2020
1 874
re
correction d'une erreur,
Pour copier dans la feuille extraction à partir de la colonne codebX

' copie des lignes selectionnées 
For k = 1 To nbliX 
  d = T.items 
  Sheets(nfO).Range(plageO).Rows(d(k - 1)).Copy Sheets(nfX).Cells(lidebX + k - 1, codebX) 
Next k 


bonne suite
Messages postés
9523
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 juillet 2020
1 874
bonjour

un exemple
https://www.cjoint.com/?0EhkYRFnXfX

et comme dit lermite222 (bonjour à toi),
tu pourras y ajouter Randomize pour réinitialiser le générateur d'aleas

bonne suite
Messages postés
2
Date d'inscription
lundi 7 mai 2012
Statut
Membre
Dernière intervention
7 mai 2012

Merci à tous!
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 099
Bonjour,
Voir avec la fonction Rnd() et Randomize
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.