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

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

  • exemple 24-02-12.xls
    19.5 KB · Affichages: 62

Victor21

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

Bonsoir.

Un essai avec alea entre bornes (attention aux doublons...)
 

Pièces jointes

  • exemple aléa.xls
    23.5 KB · Affichages: 51
  • exemple aléa.xls
    23.5 KB · Affichages: 53
  • exemple aléa.xls
    23.5 KB · Affichages: 51

controlo

XLDnaute Occasionnel
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.
 

Victor21

XLDnaute Barbatruc
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

  • exemple aléa.xls
    23.5 KB · Affichages: 34
  • exemple aléa.xls
    23.5 KB · Affichages: 38
  • exemple aléa.xls
    23.5 KB · Affichages: 41
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Prélever 23 valeurs aléatoirement dans un tableau.

Bonsoir,

Pour l'autre partie de vos exigences, un fichier avec une macro (sans doublon)
v2 => sans tri final, v3 => avec tri final
 

Pièces jointes

  • Alea sans doublons v2.xls
    58.5 KB · Affichages: 48
  • Alea sans doublons v3.xls
    53 KB · Affichages: 42
Dernière édition:

R@chid

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

Salut @ tous,
une variante avec ALEA et sans doublons tries.
Voir PJ.

Edit : Modf. PJ pour le tri
j'ai lu que tu veux respecter les lignes, tu veux dire le tri?
Voir PJ
 

Pièces jointes

  • Alea_Rachid_Alea-Sansdoublons-tries.xls
    40.5 KB · Affichages: 49
Dernière édition:

hbenalia

XLDnaute Occasionnel
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

  • Exemple ALEAS_Morefunc.xls
    28 KB · Affichages: 46

ROGER2327

XLDnaute Barbatruc
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:

ROGER2327

XLDnaute Barbatruc
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:

laetitia90

XLDnaute Barbatruc
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
 

R@chid

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

Salut @ tous,
Voir si ca te convient sans macro....
il renvoie 23 valeurs sans doublons triees ... et a la demande
Amicalement
 

Pièces jointes

  • Alea_Rachid_Alea-Sansdoublons-tries2.xls
    43 KB · Affichages: 42

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16