Choix aléatoire de 200 valeurs parmi 1000 sans doublons

exene

XLDnaute Accro
Bonjour,

Je ne sais pas si le titre de la discussion est explicite.

En Feuille1, colonne A, mille valeurs. Je souhaiterais pouvoir extraire 200 valeurs de façon aléatoire et sans doublons et les copier en Feuille2, colonne A. Ensuite la ListBox est alimentée par ces 200 valeurs.

Pour illustrer mon propos, j'ai utilisé la fonction aléa entre bornes en Feuiille2 mais cela ne fonctionnera pas dans le projet final.

Merci du temps passé pour me répondre.

@+
 

Pièces jointes

  • echantillon.xls
    122 KB · Affichages: 55
  • echantillon.xls
    122 KB · Affichages: 50
  • echantillon.xls
    122 KB · Affichages: 55

JCGL

XLDnaute Barbatruc
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Bonjour à tous,
Salut Pascal,

Peux-tu essayer avec ceci :

VB:
Option Explicit


Sub Lancement()    ' Adapté de Robert sur XLD
    Dim x%, y As Byte, t%, Z%
    Dim Val()
    Z = Feuil1.Range("A65536").End(xlUp).Row
    Feuil2.Range("A2:A202").ClearContents
    For x = 2 To 201
        Randomize
        t = Int((Z * Rnd) + 1)
        'If t = 10 Then Exit Sub
        Feuil2.Cells(x, 1).Value = Feuil1.Cells(t, 1).Value
        ReDim Preserve Val(x - 1)
        If x > 1 Then
            For y = 0 To UBound(Val, 1)
                If t = Val(y) Then
                    Cells(x, 1).Value = ""
                    x = x - 1
                    GoTo Suite
                End If
            Next y
        End If
        Val(x - 1) = t
Suite:
    Next x
End Sub

A++
A+ à tous
 

exene

XLDnaute Accro
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Bonjour,

Salut JC, la procédure me retourne des cellules vides en Feuille2 et des #NA# en colonne B

Voir le fichier joint

PS : Effectivement, j'ai remarqué que Picketti additionnait des pourcentages :eek:
 

Pièces jointes

  • echantillon.xls
    116.5 KB · Affichages: 53
  • echantillon.xls
    116.5 KB · Affichages: 55
  • echantillon.xls
    116.5 KB · Affichages: 60

JCGL

XLDnaute Barbatruc
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Bonjour à tous,

Tu auras toujours des vides dans ta liste source ?

A+ à tous
 

Pièces jointes

  • JC Liste de 200 sur 1000 sans doublons.xls
    174 KB · Affichages: 54
Dernière édition:

exene

XLDnaute Accro
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Re

La liste source est figée et sans ligne vide. Je ne comprends avoir joint un fichier avec des vides (bétâ, que je suis).
J'ai remarqué que la procédure créait des cellules vides dans la Feuille1 :confused:
 

Dranreb

XLDnaute Barbatruc
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Bonjour.

Une autre proposition avec le module de classe central de OutIdx, qui peut aussi servir à bien d'autres choses
 

Pièces jointes

  • TIdxExene.xls
    132.5 KB · Affichages: 109

camarchepas

XLDnaute Barbatruc
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Bonjour JCGL, DRANREB et Exene,

Si je comprends bien tu ne veux pas de doublons pour le tirage , mais tu ne souhaites pas supprimer les éléments sélectionnés de la liste d'origine.
une mémorisation des tirages dans un dico ou dans une liste ou dans un tableau serait l'idéal je pense.

A mois que l'idée de Dranreb te satisfasse .

Cordialement,
 

Modeste geedee

XLDnaute Barbatruc
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Bonsour
En Feuille1, colonne A, mille valeurs. Je souhaiterais pouvoir extraire 200 valeurs de façon aléatoire et sans doublons et les copier en Feuille2, colonne A. Ensuite la ListBox est alimentée par ces 200 valeurs.

garanti sans vide et sans doublon : (sauf s'il y a déjà des vides et doublons dans la liste d'origine :p)
Capture.JPG
 

Pièces jointes

  • echantillon.xls
    143.5 KB · Affichages: 43
  • echantillon.xls
    143.5 KB · Affichages: 47
  • echantillon.xls
    143.5 KB · Affichages: 56
  • Capture.JPG
    Capture.JPG
    24.2 KB · Affichages: 62
  • Capture.JPG
    Capture.JPG
    24.2 KB · Affichages: 54

exene

XLDnaute Accro
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Bonjour,

Jean Claude, je viens d'essayer ton dernier code, l'en tête de colonne se retrouve au milieu de la liste aléatoire.?

camarchepas, la liste en Feuille1 doit resté figée (enfin, jusqu'à la prochaine réorganisation du service)

Modeste geedee, le code fonctionne bien, mais le secteur ne doit pas apparaître dans la ListBox.

Le contexte : Dans mon travail, une règle très ancienne, pour devenir titulaire d'une position de travail, un agent doit pouvoir associer une rue à un secteur ( la rue x appartient au secteur 1, la rue y appartient au secteur 2)

La règle : 200 rues tirées au hasard, l'agent doit les associer aux différents secteurs, il a dix minutes pour ce faire avec au maximum trois erreurs.

VBA Crumble avait commencé une ébauche mais a décidé de se retirer du Forum

Auparavant, nous avions différents jeux de 200 enveloppes, l'agent triait et au bout de dix minutes, on vérifiait la concordance entre les rues et les secteurs.

Maintenant, ils ont tous une clé USB et souhaitent simuler cet examen à la maison. J'essaye de trouver une solution à leur besoin.

NB : Avoir cet examen est un véritable confort dans le quotidien.
 

Modeste geedee

XLDnaute Barbatruc
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Bonsour®
Modeste geedee, le code fonctionne bien, mais le secteur ne doit pas apparaître dans la ListBox.

Le contexte : Dans mon travail, une règle très ancienne, pour devenir titulaire d'une position de travail, un agent doit pouvoir associer une rue à un secteur ( la rue x appartient au secteur 1, la rue y appartient au secteur 2)

La règle : 200 rues tirées au hasard, l'agent doit les associer aux différents secteurs, il a dix minutes pour ce faire avec au maximum trois erreurs.
alors simplement :
Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    68.2 KB · Affichages: 61
  • Capture.JPG
    Capture.JPG
    68.2 KB · Affichages: 64

Modeste geedee

XLDnaute Barbatruc
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Bonsour®

tiens pour aller plus loin :
Capture.JPG
:eek: :cool:
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    30.1 KB · Affichages: 51
  • Capture.JPG
    Capture.JPG
    30.1 KB · Affichages: 59
  • echantillon.xls
    815.5 KB · Affichages: 52
  • echantillon.xls
    815.5 KB · Affichages: 55
  • echantillon.xls
    815.5 KB · Affichages: 67
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

salut

on perd la tête Modeste geedee :cool:
Ho (E) rreur.jpg

La feuille intermédiaire est vraiment utile ?
Dans l'exemple joint, elle n'est donnée que si c'est le cas.
Sinon le code peut être très simple :
VB:
Private Sub UserForm_Initialize()
  Dim Zone, Temp
  Dim n As Long, L As Byte
  [A2:B201] = ""
  Randomize
  Zone = Feuil1.[A2:A1001]
  For L = 1 To 200
      n = Int(1000 * Rnd) + 1
      Temp = Zone(n, 1)
      Zone(n, 1) = Zone(L, 1)
      Zone(L, 1) = Temp
      ListBox1.AddItem Zone(L, 1)
  Next
End sub
 

Pièces jointes

  • Tirage 200 sur 1000 sans doublon vers ListBox.xlsm
    41.5 KB · Affichages: 60
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

Bonsour® Si...

tu as certainement raison :cool:
la lumière vient souvent du partage.

je suis d'abord formuliste avant d'etre VBaïste... :cool:
le code fourni découle donc d'une transposition rapide : manuel => proc.
tu aura remarqué également que je mixe allégrement formules et procs :rolleyes:
dans le listbox je ramène également 3 colonnes a fin de lier la rue à son secteur.

Nb :
je n'ai pas fourni de : Echantillon-4.xls ... :confused:
je ne reproduis pas l'erreur que tu signales
Lien supprimé :(

voir dernier lien : Lien supprimé

@+
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Choix aléatoire de 200 valeurs parmi 1000 sans doublons

re

Nb :
je n'ai pas fourni de : Echantillon-4.xls ... :confused:
@+

donc je ne sais pas* où je l'ai téléchargé, mais peu importe, avec ma machine, ce message apparait quel que soit le fichier que tu as proposé (y compris le dernier).

* je dois manquer de mémoire ;)

Il n'empêche que ton fichier m'apporte beaucoup et je m'en vais le décortiquer complètement.
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa