Prélever 23 valeurs aléatoirement dans un tableau.

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 !

controlo

XLDnaute Occasionnel
Bonsoir ,


Me revoilà avec un nouveau problème et j'aimerais avoir votre aide, vous trouverez ci-dessous un exemple de ce que j'ai à faire. Mon problème est le suivant : j'ai en feuille 1 un tableau de 3 colonnes (a,b et c) et de 71 lignes , ce que je veux faire en automatique c'est prélever aléatoirement 23 lignes parmi ces 71 lignes et les retranscrires dans les cellules du tableau qui se trouve en feuilles 2.J'ai commencé à remplir le tableau de la feuille 2 pour vous montrer par exemple que si l'on prend la valeur 560 qui correspond à ligne 2 de la colonne a on doit aussi reporter dans le classeur de la feuille 2 la valeur qui se trouve dans la colonne b de la ligne 2 ,idem pour c.

Merci de votre coup de main
 

Pièces jointes

Re : Prélever 23 valeurs aléatoirement dans un tableau.

Salut victor 21,

Ce n'est pas ce que je veux faire .Je veux une macro qui prélève,aléatoirement, 23 valeurs dans le tableau de la feuille1 pour les mettre dans le tableau (qui est vierge à la base) de la feuille 2 ; tout cela en respectant les lignes.
 
Re : Prélever 23 valeurs aléatoirement dans un tableau.

Re,

Pour la macro, il vous faudra attendre un autre intervenant.
Pour le reste de vos exigences, voyez ce fichier joint.

Edit : Bonjour, Bruno 😉
 

Pièces jointes

Dernière édition:
Re : Prélever 23 valeurs aléatoirement dans un tableau.

Bonjour à tous,

Une autre variante avec la fonction ALEAS() de la macro complémentaire morefunc qu'on trouve dans plusieurs sites. Cette fonction (matricielle) donne un nombre aléatoire d'une étendue de nombres entiers sans doublons...

Cordialement
 

Pièces jointes

Re : Prélever 23 valeurs aléatoirement dans un tableau.

Bonjour à tous


Encore une procédure :
VB:
Sub toto()
'
Dim i%, j%, k%, l%, m%, n%, T As Sort
    l = 2
    m = 22
    n = 70
ReDim oLg%(n), oPl%(m, l)
'
'Création de la liste oLg des entiers de 0 à n (ici n=70)
    For i = 0 To n: oLg(i) = i: Next
'
'Mélange des éléments de oLg
    Randomize
    For i = n To 0 Step -1
        j = Int(n * Rnd)
        k = oLg(i): oLg(i) = oLg(j): oLg(j) = k
    Next
'
'Extraction (indexée par les éléments de oLg) de m + 1 (ici 23) lignes
'de la plage de données Feuil1.[A2:E72]
    With Feuil1.[A2]
        For i = 0 To m
            For j = 0 To l
                oPl(i, j) = .Offset(oLg(i), 2 * j).Value '2 * j pour ignorer les colonnes vides
            Next
        Next
    End With
'
'Sortie des données sélectionnées vers la feuille Feuil2
    With Feuil2.[C9].Resize(m + 1, l + 1)
        .Value = oPl
'
'Remise en ordre
        Set T = .Parent.Sort
        T.SortFields.Clear
        T.SortFields.Add Key:=.Columns(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        T.SortFields.Add Key:=.Columns(2), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        T.SetRange .Cells
        T.Header = xlNo
        T.MatchCase = False
        T.Orientation = xlTopToBottom
        T.Apply
    End With
'
End Sub


ROGER2327
#5553


Lundi 2 Pédale 139 (Saint André Marcueil, ascète cycliste - fête Suprême Quarte)
6 Ventôse An CCXX, 0,1428h - asaret
2012-W08-6T00:20:34Z
 
Dernière édition:
Re : Prélever 23 valeurs aléatoirement dans un tableau.

Suite...


Une autre encore :
VB:
Sub tata()
'
Dim i%, j%, k%, l%, m%, n%
    l = 2
    m = 22
    n = 70
ReDim oLg%(n), oPl%(m, l)
'
'Création de la liste oLg des entiers de 0 à n (ici n=70)
     For i = 0 To n: oLg(i) = i: Next
'
'Mélange des éléments de oLg
     Randomize
    For i = n To 0 Step -1
        j = Int(n * Rnd)
        k = oLg(i): oLg(i) = oLg(j): oLg(j) = k
    Next
'
'Classement croissant des m + 1 (ici 23) premiers éléments
      For i = m To 1 Step -1
        k = oLg(i)
        For j = i - 1 To 0 Step -1
            If oLg(j) > k Then oLg(i) = oLg(j): oLg(j) = k: k = oLg(i)
        Next
    Next
'
'Extraction (indexée par les éléments de oLg) de m + 1 (ici 23) lignes
'de la plage de données Feuil1.[A2:E72]
     With Feuil1.[A2]
        For i = 0 To m
            For j = 0 To l
                oPl(i, j) = .Offset(oLg(i), 2 * j).Value '2 * j pour ignorer les colonnes vides
           Next
        Next
    End With
'
'Sortie des données sélectionnées vers la feuille Feuil2
     Feuil2.[C9].Resize(m + 1, l + 1).Value = oPl
'
End Sub
L'ordre de la liste de sortie est conforme à l'ordre du tableau de données, même si le tableau de données n'est pas classé en croissant.​


ROGER2327
#5554


Lundi 2 Pédale 139 (Saint André Marcueil, ascète cycliste - fête Suprême Quarte)
6 Ventôse An CCXX, 1,0544h - asaret
2012-W08-6T02:31:50Z
 
Dernière édition:
Re : Prélever 23 valeurs aléatoirement dans un tableau.

bonjour tous 🙂🙂🙂🙂🙂🙂

une autre facon de l'ecrire je mets pas dans l'ordre il faut... il faut pas ??

Code:
Sub es()
 Dim T(), i As Long, m As Object
 Set m = CreateObject("Scripting.Dictionary")
 Do Until i = 23
 v = Int((72 - 2 + 1) * Rnd() + 2)
 If Not m.Exists(v) Then m.Add v, v: i = i + 1
 Loop
 T = m.Items
 For i = 0 To UBound(T)
 Feuil2.Cells(i + 9, 3) = Feuil1.Cells(T(i), 1)
 Feuil2.Cells(i + 9, 4) = Feuil1.Cells(T(i), 3)
 Feuil2.Cells(i + 9, 5) = Feuil1.Cells(T(i), 5)
 Next i
 Set m = Nothing: Erase T
End Sub
 
- 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
Microsoft 365 Tableau
Réponses
5
Affichages
208
Retour