Macro permettant de réaliser un échantillonage

Bonsoir,

J'ai une base de données contenant environ 30 000 entreprises. Pour chaque entreprise j'ai 3 données :

_ La raison sociale

_ La taille (3 tranches : - 10 salariés ; 10 à 49 salariés ; 50 salariés et plus)

_ Le département

Je cherche à créer une macro qui pourrait m'extraire aléatoirement de cette base, 4000 entreprises répondant aux critères suivants :

_ Par exemple 2500 de moins de 10 salariés ; 1000 de 10-49 et 500 de + 50

_ 200 du département 01 ; 304 du département 02 etc etc

Mon but final est de créer un échantillon tiré aléatoirement mais représentatif de la population mère.

Pour le moment je n'ai pas vraiment d'idée par où commencer !

Si vous avez une une idée de la structure à adopter, de la fonction à utiliser ou autre... je suis preneur !

Merci d'avance et bonne soirée.

Bonjour et bienvenue sur le forum

Un essai. Te convient-il ?

Avec 30 000 lignes, c'est un peu long...

Bonsoir,

Merci beaucoup je n’attendais pas tant !

Pourrais-tu m’expliquer à quoi sert le fonctionnement du numéro aléatoire qui apparaît en colonne D ?

Pourrais-tu également m’expliquer comment je pourrai croiser les deux critères c'est-à-dire que l’extraction respecte à la fois des conditions de tranches et de département ?

Par exemple :

1 – 9 : 10 entreprises

10 – 49 : 15 entreprises

50 et plus : 5 entreprises

Et en termes de département :

01 : 15 entreprises

02 : 10 entreprises

03 : 5 entreprises ?

Encore merci et bonne soirée.

Bonjour

Tu écris :

Pourrais-tu m’expliquer à quoi sert le fonctionnement du numéro aléatoire qui apparaît en colonne D ?

Une fonction VBA permet de donner un numéro aléatoire, compris entre 0 et 1. Je m’en sers, via la macro, pour en mettre un dans toutes les lignes de la liste, en colonne D. Ainsi, quand je fais un classement du plus petit au plus grand selon cette colonne, toute ma liste est classée dans un ordre aléatoire.

Pourrais-tu également m’expliquer comment je pourrai croiser les deux critères c'est-à-dire que l’extraction respecte à la fois des conditions de tranches et de département ?

Si j’avais à résoudre ce problème, mais je ne le ferai pas, je m’y prendrais de la façon suivante.

Je commencerais par établir un tableau, sur une feuille de papier, à la main, avec sur une ligne horizontale une case par nombre de critère de départements.

En colonne, je mettrais une case par Tranche.

Pour prendre ton exemple, j’aurais ainsi un tableau de 3 x 3 cases.

Et je remplirais ce tableau en faisant en sorte que le total des lignes et des colonnes fasse le nombre désiré, en essayant d’y mettre des 0 pour qu’il soit plus simple à exploiter.

Parmi les multiples façons de remplir ce tableau, j’en retiendrais une toute simple :

15 Départements 01 soit : 10 Tranches 1 + 5 Tranches 2

10 Départements 02 soit : 10 Tranches 2

5 Départements 03 soit : 5 Tranches 3

J’ai bien le total de 30 entreprises qu’il me faut extraire. Le compte y est.

Et là, je sais faire avec une macro du même type que celle qui a fait l’objet de mon premier message :

On cherche et on extrait de la liste 10 entreprises de la tranche 1 puis 5 de la tranche 2 dont le département est 01

Puis on extrait 10 entreprises de la tranche 2 dont le département est 02

Et enfin 5 entreprises dont la tranche est 3 et le département 03

En vérifiant avant d’extraire que l’entreprise concernée n’a pas déjà été extraite, on peut faire chaque recherche sur l’ensemble de la liste.

Bon courage.

Bonsoir,

Ne pensant pas disposer du niveau nécessaire en VBA pour faire la macro que tu m'as proposée, j'ai opté pour une méthode plus classique.

Comme tu l'avais préconisé j'ai fait un tableau avec les départements en ligne et les tailles d'entreprises en colonne (onglet critères d'échantillonnage)

Dans l'onglet "population mère" j'ai créé une colonne générant un nombre aléatoire puis une seconde générant le rang global. Ensuite je définis le rang pour chaque tranche de taille puis je vérifie si le nombre du rang est bien inférieur au nombre d'entreprises à extraire.

Si c'est le cas les entreprises constituant l'échantillon apparaissent dans le tcd.

La limite de ma méthode est que le rang est défini selon la taille et non selon le département. Du coup mon échantillon est faux.

Aurais-tu une idée d'une fonction RANG permettant de générer un classement (un rang) selon le département dans une même colonne ?

Je ne sais pas si c'est très clair... je te mets mon fichier en PJ.

Bonne soirée et encore merci.

Bonjour

Tu écris :

Aurais-tu une idée d'une fonction RANG permettant de générer un classement (un rang) selon le département dans une même colonne ?

La fonction « Rang » existe bien dans Excel et tu la connais puisque tu l’utilises dans ta feuille de calcul.

Néanmoins, je ne vois pas pour autant comment résoudre le problème avec une feuille de calcul Excel.

Pas plus de chance pour moi d’y arriver qu’avec une feuille de papier blanche et un crayon.

Et pour me faire pardonner, j’ai finalement fait cette macro qui y parvient facilement. A tester tout de même.

Le plus long pour elle est d’écrire les nombres aléatoires. Elle peut prendre en compte les critères croisés de 8 tranches de nombre de personnels et de 8 départements différents. Au-delà, il faut « pousser » les tableaux et donc modifier les références de cellules dans la macro.

Bye !

Rechercher des sujets similaires à "macro permettant realiser echantillonage"