[Excel] Tirage aléatoire lignes d'un tableau

Résolu
qjungers Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
qjungers Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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


A voir également:

5 réponses

lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
1
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
0
qjungers Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Merci à tous!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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.
-1