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

Résolu/Fermé
qjungers Messages postés 2 Date d'inscription lundi 7 mai 2012 Statut Membre Dernière intervention 7 mai 2012 - 7 mai 2012 à 09:56
qjungers Messages postés 2 Date d'inscription lundi 7 mai 2012 Statut Membre Dernière intervention 7 mai 2012 - 7 mai 2012 à 17:39
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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 7/05/2012 à 11:05
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 7/05/2012 à 11:19
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 7/05/2012 à 10:54
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 lundi 7 mai 2012 Statut Membre Dernière intervention 7 mai 2012
7 mai 2012 à 17:39
Merci à tous!
0

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

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 7/05/2012 à 10:40
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