[EXCEL] - Tirage aléatoire dans un fichier

Résolu
pissdrunk Messages postés 66 Statut Membre -  
 Camille -
Bonjour,

Je travaille actuellement sur un fichier *.xls avec comme intitulés de colonne: Identifiant - Nom - Prénom - Email.
J'ai en quelque sorte un fichier représentant une population.
Je souhaiterais, à partir de ce fichier, pouvoir extraire un échantillon aléatoire de ce fichier avec une invite qui me demanderait combien de personnes faudrait il tirer. L'échantillon serait alors inséré sur une nouvelle feuille avec les mêmes infos qu'au début pr chaque personne tirée aléatoirement (Identifiant, Nom, Prenom, Email).
Pr info: Il ne faudrait pas qu'une personne puisse apparaître plus d'une fois dans l'échantillon.
Je ne sais pas commentr m'y prendre car je ne m'y connais que très très peu en programmation.
D'avance merci pour votre aide !

Cordialement,

Jean.
A voir également:

21 réponses

pissdrunk Messages postés 66 Statut Membre 22
 
Y'a t il une formule dans EXCEL permettant de faire ca ? ou faut-il passer par une macro ?

D'avance merci pour vos réponses.
10
Polux31 Messages postés 7219 Statut Membre 1 204
 
bonjour,

Voilà un exemple sur ce lien : https://www.cjoint.com/?ellqqVdYFN

A toi de l'adapter à ton besoin ...

bon courage

;o)

polux
3
pissdrunk Messages postés 66 Statut Membre 22
 
Un grand merci à toi !
Tout fonctionne.
0
Jung
 
Bonjour,
Je suis désolé de relancer le sujet des années plus tard mais le lien étant mort je voulais vous demander si vous pouviez à nouveau me transmettre l'exemple? je cherche en effet à sélectionner aléatoirement un ensemble de lignes d'un tableau.
Mille mercis d'avance

Jung
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
de rien, content que ça solutionne ton blème

Bon courage pour la suite

;o)

Polux
2
pissdrunk Messages postés 66 Statut Membre 22
 
Salut Polux,

Je reviens vers toi concernant cette macro.

J'aimerai l'adapter à un fichier comportant plus de colonne et plus de lignes avec des infos différentes. Peux-tu m'expliquer dans quelle partie changer le code vba ?

D'avance merci pour ton aide !
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
bon je crois y être arrivé avec une autre méthode:

tirageAleatoire.xls

;o)
1

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

Posez votre question
Christal0907
 
Génial...Tout simplement génial.
Ca fonctionne!
Je n'ai plus qu'à le tester sur un fichier encore plus grand...pourvu que ca marche!;-)
en tout cas, je te remercie d'avoir pris du temps pour m'aider.
Et Bonnes Vacances!
;-)
Christelle
1
Christal0907
 
Bonjour,
J'ai la meme question que Jean. Le problème, c'est que votre lien n'est plus valide. Serait-il possible que vous me fassiez parvenir votre réponse?

"Je travaille actuellement sur un fichier *.xls avec comme intitulés de colonne: Identifiant - Nom - Prénom - Email.
J'ai en quelque sorte un fichier représentant une population.
Je souhaiterais, à partir de ce fichier, pouvoir extraire un échantillon aléatoire de ce fichier avec une invite qui me demanderait combien de personnes faudrait il tirer. L'échantillon serait alors inséré sur une nouvelle feuille avec les mêmes infos qu'au début pr chaque personne tirée aléatoirement (Identifiant, Nom, Prenom, Email).
Pr info: Il ne faudrait pas qu'une personne puisse apparaître plus d'une fois dans l'échantillon.
Je ne sais pas commentr m'y prendre car je ne m'y connais que très très peu en programmation.
D'avance merci pour votre aide !

Cordialement,

Jean."

Très cordialement.
Christelle
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

Je n'avais pas gardé le fichier. J'en ai refait un autre en espèrant que ça réponde à ton problème:

https://www.cjoint.com/?hknn6VveFK

Bon courage

;o)

Polux
0
Christal0907
 
Bonjour,
Merci beaucoup pour votre rapidité. C'est exactement ce que je voulais.
Bonne journée.
Coridalement.
Christelle
0
Polux31 Messages postés 7219 Statut Membre 1 204 > Christal0907
 
Très heureux t'avoir pu t'aider ...

bonne continuation.

;o)

Polux
0
Christal0907
 
Re...
En fait, je viens de regarder de plus près le fichier...mais il bugue...seuls les tirages de 1 et 2 lignes fonctionnent. Les autres font buguer le programme.
Bizarre...
Je vais essayer de regarder de plus près, mais je ne suis pas très très douée en VBA...
;-)
Christelle
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
Re,

Je pense que le programme beug parce qu'il n'y a pas assez de personnes dans la feuille 1. Je n'ai mis que 10 lignes, donc plus l'échantillon est grand, plus le programme mouline pour ne pas avoir de doublon ...

;o)
0
Christal0907
 
Re,
Oui, mais lorsqu'on demande 5 échantillons, ca bugue dans le fichier que vous avez fourni. or, il n'y a pas plus de données (je n'ai rien modifié).
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
je suis désolé, j'étais en réu toute l'aprem.

Je regarderai ça demain ...

bonne soirée.

;o)
0
Christal0907
 
Bonjour,
Ce n'est pas grave. J'ai regardé le fichier hier, mais je ne trouve pas la solution. parfois le tirage me ressort les lignes d'en-têtes plusieurs fois, parfois, il ressort le bon nombre qu'on lui demande, mais parfois, il ne ressort pas le bon nombre de tirage...Bref, je ne comprends pas comment débuguer le programme.
ca plante à partir de là :

For i = 1 To nbTirage
ws2.Range("A" & lg).Value = ws1.Range("A" & tabTirage(i)).Value
ws2.Range("B" & lg).Value = ws1.Range("B" & tabTirage(i)).Value
ws2.Range("C" & lg).Value = ws1.Range("C" & tabTirage(i)).Value
ws2.Range("D" & lg).Value = ws1.Range("D" & tabTirage(i)).Value
lg = lg + 1
Next i

Merci de vos éclairages...
Christelle
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

je ne vais pas avoir le temps de décortiquer ça aujourd'hui (j'ai pas mal de boulot à finir avant de partir en congés ce soir).

Je te conseille de passer tout le code en mode pas à pas en mettant un point d'arrêt dès le début du programme.
Ca permet de voir comment le programme se comporte.

;o)
0
Christal0907
 
ok ce n'est pas grave, je vais me débrouiller autrement.
J'ai déjà fait le pas à pas détaillé et c'est sur la partie que j'ai copier dans le précédent message que ca bugue lors du programme.
Bonne vacances.
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
ça me chiffonne ce truc, je vais y jeter un oeil entre 12 et 14h ... screugneudiouuu ... on va lui tordre le cou .. :DD

;o)
0
Christal0907
 
Re,
Je viens de regarder ton nouveau fichier. en effet, cela fonctionne mieux.
Par contre, j'essaie de l'adapter à une autre liste plus longue et avec plus de colonnes, mais je n'arrive pas à le faire bien marcher.
j'ai modifié le code suivant, pour mettre le nombre de colonnes que j'ai actuellement :
If j = 2 Then
ws2.Range("A" & j).Value = ws1.Range("A" & alea).Value
ws2.Range("B" & j).Value = ws1.Range("B" & alea).Value
ws2.Range("C" & j).Value = ws1.Range("C" & alea).Value
ws2.Range("D" & j).Value = ws1.Range("D" & alea).Value
ws2.Range("E" & j).Value = ws1.Range("E" & alea).Value
ws2.Range("F" & j).Value = ws1.Range("F" & alea).Value
ws2.Range("G" & j).Value = ws1.Range("G" & alea).Value
ws2.Range("H" & j).Value = ws1.Range("H" & alea).Value
ws2.Range("I" & j).Value = ws1.Range("I" & alea).Value
End If
If doesExist(ws1.Range("A" & alea).Value) = False Then
ws2.Range("A" & j).Value = ws1.Range("A" & alea).Value
ws2.Range("B" & j).Value = ws1.Range("B" & alea).Value
ws2.Range("C" & j).Value = ws1.Range("C" & alea).Value
ws2.Range("D" & j).Value = ws1.Range("D" & alea).Value
ws2.Range("E" & j).Value = ws1.Range("E" & alea).Value
ws2.Range("F" & j).Value = ws1.Range("F" & alea).Value
ws2.Range("G" & j).Value = ws1.Range("G" & alea).Value
ws2.Range("H" & j).Value = ws1.Range("H" & alea).Value
ws2.Range("I" & j).Value = ws1.Range("I" & alea).Value
i = i + 1

Y a t il autre chose à modifier??
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
non je ne pense pas, le nombre de ligne est mis à jour automatiquement au lancement avec la fonction compteLigne()

Peux-tu me dire où ça ne marche pas ?

0
Christal0907
 
oui ca met erreur d'execution 13 : débogage
et ca me renvoit sur la ligne :
If doesExist(ws1.Range("A" & alea).Value) = False Then
car j'ai fait le pas à pas détaillé après cette ligne et ca fonctionne.

voila
;-)
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
combien as-tu de lignes stp ? et quelle est la valeur de alea dans la ligne qui pose problème ?

;o)
0
Christal0907
 
J'ai 94 lignes.
La valeur de alea dans la ligne??? est ce le nombre que je demande comme tirage? car ca bugue à chaque chiffre.
Petite précision : faut-il absolument mettre des valeurs chiffrées dans la colonne A de ma liste?
car j'ai des M, MME et MLLe dans la colonne A.
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
ah bah vi ... c'est pour ça .... rajoute une colonne en A et met une numérotation ... ensuite modifie le code :

If j = 2 Then 
ws2.Range("A" & j).Value = ws1.Range("B" & alea).Value 
ws2.Range("B" & j).Value = ws1.Range("C" & alea).Value 
ws2.Range("C" & j).Value = ws1.Range("D" & alea).Value 
ws2.Range("D" & j).Value = ws1.Range("E" & alea).Value 
ws2.Range("E" & j).Value = ws1.Range("F" & alea).Value 
ws2.Range("F" & j).Value = ws1.Range("G" & alea).Value 
ws2.Range("G" & j).Value = ws1.Range("H" & alea).Value 
ws2.Range("H" & j).Value = ws1.Range("I" & alea).Value 
ws2.Range("I" & j).Value = ws1.Range("J" & alea).Value 
End If 
If doesExist(ws1.Range("A" & alea).Value) = False Then 
ws2.Range("A" & j).Value = ws1.Range("B" & alea).Value 
ws2.Range("B" & j).Value = ws1.Range("C" & alea).Value 
ws2.Range("C" & j).Value = ws1.Range("D" & alea).Value 
ws2.Range("D" & j).Value = ws1.Range("E" & alea).Value 
ws2.Range("E" & j).Value = ws1.Range("F" & alea).Value 
ws2.Range("F" & j).Value = ws1.Range("G" & alea).Value 
ws2.Range("G" & j).Value = ws1.Range("H" & alea).Value 
ws2.Range("H" & j).Value = ws1.Range("I" & alea).Value 
ws2.Range("I" & j).Value = ws1.Range("J" & alea).Value 
i = i + 1 


;o)
0