(résolu) sélection aléatoire et proportionnel questionnaire de satisfaction)

jozerebel

XLDnaute Occasionnel
Bonjour à tous,

Je poste ce nouveau message et clôture un précédent dont la solution a été donnée.

Cependant, ma demande a quelque peu évolué.

En fait, j'ai une liste très importante d'individus qui sont identifiés à la fois par l'appartenance à un secteur et à un organisme.

Je souhaiterais imposer un même % pour tous les secteurs (20% par exemple) puis répartir ces 20% proportionnellement à la répartition des organismes dans ce même secteur. (par exemple, si j'ai 100 personnes dans le secteur A, je souhaite sélectionner 20 individus en fonction de la répartition par organisme dans ce secteur : si 50% appartiennent à l'organisme AA, je souhaite en avoir 10, sélectionnés aléatoirement). Et cela pour tous les secteurs.

Tout cela doit être fait de manière automatique et aléatoire.

J'espère avoir été clair... et je poste un fichier natif.

D'avance merci pour votre aide précieuse!

Bon dimanche.

EDIT : est-il possible d'imposer un minimum de personnes sélectionnées par secteur ? (par exemple, si les 20% d'une population sont inférieurs à 20 personnes, alors prendre les 20 personnes)...
 

Pièces jointes

  • xlsnaute.xlsx
    11.1 KB · Affichages: 65
  • xlsnaute.xlsx
    11.1 KB · Affichages: 72
  • xlsnaute.xlsx
    11.1 KB · Affichages: 70
Dernière édition:

amine00z

XLDnaute Nouveau
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Bonjour
à priori c'est possible mais sur ton fichier il n'y a pas assez d'éléments pour le faire, si tu pouvais uploader un fichier qui contient toutes les données (sans les noms et les adresses evidemment) ça serait génial
 

jozerebel

XLDnaute Occasionnel
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Désolé, mais je travaille pour l instant sur une maquette. La base données sera requêtee selon ma maquette. Dc, je n ai pas encore de données réelles. Quelqu un peut il qd mm m aider?

D avance merci.
 

CBernardT

XLDnaute Barbatruc
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Bonjour à tous,


Un essai de traitement avec, j'espère, tous les paramètres pour traiter la base, Base qui a dû être allongée afin d'obtenir des échantillons significatifs de personnes par secteur.

Deux tableaux annexes et non indispensables affichent, le premier les résultats escomptés, le second les résultats acquis après tirage aléatoire.

Un "X" définit les personnes retenues dans la base de travail. Ces résultats pourraient aussi bien être regroupés dans un tableau affiché dans une autre feuille.

Un bouton est en place pour effectuer le tirage aléatoire.
 

Pièces jointes

  • xlsnaute-V1.xlsm
    69.8 KB · Affichages: 59

jozerebel

XLDnaute Occasionnel
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Bnjour CBernardT,

Merci pour ta reponse.

Je teste demain avec ma bdd et te tiens au courant!

Encore merci.

Bonsoir CBernardT,

J'ai modifié ma macro car les secteurs sont en colonne L et les organismes en colonne K, et le tirage en O.

Malheureusement, la macro me plante excel à chaque fois.

Voici la macro modifiée. Merci pour ton aide.

Option Explicit
Sub EchantillonsAleatoires()
Dim Derlig As Integer, Tablo, i As Integer, j As Byte, k As Byte
Dim NbPers As Integer, Sect As Object, NbSect As Integer, NombSect, Org As Object, NbOrg As Integer, NombOrg
Dim TabEch, TabTirage, Tirage As Integer, n As Integer

With Sheets("BASE")
Derlig = .Range("B65000").End(xlUp).Row
Tablo = .Range("B2:O" & Derlig)
End With
Set Sect = CreateObject("Scripting.Dictionary")
Set Org = CreateObject("Scripting.Dictionary")

'Recherche du nombre et des noms des secteurs et organismes
For i = 1 To UBound(Tablo, 1)
If Not Sect.exists(Tablo(i, 11)) Then Sect.Add Tablo(i, 11), Tablo(i, 11)
If Not Org.exists(Tablo(i, 10)) Then Org.Add Tablo(i, 10), Tablo(i, 10)
Next i

NbPers = UBound(Tablo, 1) ' Nombre de personnes
NbSect = Sect.Count ' Nombre de secteurs
NbOrg = Org.Count ' Nombre d'organismes

' Définition des dimensions du tableau de l'échantillon
ReDim TabEch(1 To NbOrg * 2 + 3, 1 To NbSect + 1)

' Mise en place des noms des secteurs dans le tableau
NombSect = Sect.keys
For i = 0 To Sect.Count - 1
TabEch(1, i + 2) = NombSect(i)
Next

' Mise en place des noms des organismes dans le tableau
NombOrg = Org.keys
For i = 0 To Org.Count - 1
TabEch(i + 2, 1) = NombOrg(i)
TabEch(i + NbOrg + 4, 1) = NombOrg(i)
Next

' Recherche et mise en tableau du nombre de personnes d'un organisme par secteur
For i = 1 To UBound(Tablo, 1)
For j = 2 To NbOrg + 2 ' Boucle sur les organismes existants
For k = 2 To NbSect + 1 ' Boucle sur les secteurs existants
If Tablo(i, 10) = TabEch(j, 1) And Tablo(i, 11) = TabEch(1, k) Then
TabEch(j, k) = TabEch(j, k) + 1
TabEch(NbOrg + 2, k) = TabEch(NbOrg + 2, k) + 1
End If
Next k
Next j
Next i

' Calcul de l'échantillon de personnes à 20% par secteur avec minimum 20
For j = 2 To NbSect + 1
If TabEch(NbOrg + 2, j) / 5 < 20 Then
TabEch(NbOrg + 3, j) = TabEch(NbOrg + 2, j)
Else
TabEch(NbOrg + 3, j) = Application.Round(TabEch(NbOrg + 2, j) / 5, 0)
End If

' Calcul du nombre de personnes par organisme et par secteur
For k = NbOrg + 4 To NbOrg * 2 + 3
If TabEch(k - (NbOrg + 2), j) = "" Then
TabEch(k, j) = ""
Else
TabEch(k, j) = Application.Round(TabEch(NbOrg + 3, j) / TabEch(NbOrg + 2, j) * TabEch(k - (NbOrg + 2), j), 0)
End If
Next k
Next j

' Tirage au sort des personnes selon le nombre calculé de personnes par organisme et par secteur
ReDim TabTirage(1 To NbPers, 1 To 1)
For j = 2 To NbSect + 1
For k = NbOrg + 4 To NbOrg * 2 + 3
If TabEch(k, j) <> "" Then
n = 0
Do
Do
Tirage = Int((NbPers * Rnd) + 1) ' Tirage aléatoire d'une ligne
Loop Until Tablo(Tirage, 10) = TabEch(k, 1) And Tablo(Tirage, 11) = TabEch(1, j) And TabTirage(Tirage, 1) = ""
TabTirage(Tirage, 1) = "X" ' Marquage du tirage
n = n + 1
Loop Until n = TabEch(k, j)
End If
Next k
Next j

' Report des résultats du tirage aléatoire dans la base
Sheets("BASE").Range("O2:O" & Derlig) = TabTirage
End Sub
 

Habitude

XLDnaute Accro
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Bonjour à tous

Contribution en POO pour ceux que ca puisse intéresser.

Merci à CBernardT pour la base
 

Pièces jointes

  • jozerebel.xlsm
    82.4 KB · Affichages: 72
  • jozerebel.xlsm
    82.4 KB · Affichages: 76
  • jozerebel.xlsm
    82.4 KB · Affichages: 66

jozerebel

XLDnaute Occasionnel
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Bonjour,

Merci pour votre réponse.

Cependant, ma maquette a changé quelque peu : les secteurs sont en colonne L et les organismes en colonne K

comment adapter votre code?

d'avance merci.
 

Habitude

XLDnaute Accro
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Re

Paramétrage simple
Cette ligne

d.Add cell.Offset(, 6), cell.Offset(, 5), cell, cell.Offset(, 1), cell.Offset(, 2), cell.Offset(, 3), cell.Offset(, 4)

en fait c'est
d.add Secteur, Organisme, Nom, Prénom, Adresse, Postal, Ville


Donc secteur au lieu de cell.offset(,6) serait cell.offset(,11)


Attention ces 2 paramètres sont important
d.PourcentageSondeur = [L1]: d.MinimumParSecteur = [L2]
 

CBernardT

XLDnaute Barbatruc
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Bonjour à vous,

Un peu en retard mais....


J'ai déplacé les colonnes et modifié le code afin d'obtenir le résultat dans la colonne O.

A voir si cela convient sur ta BDD.
 

Pièces jointes

  • xlsnaute-V2.xlsm
    84.2 KB · Affichages: 45
  • xlsnaute-V2.xlsm
    84.2 KB · Affichages: 51
  • xlsnaute-V2.xlsm
    84.2 KB · Affichages: 53

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Bonjour à tous,

Pour le fun, un autre essai basé sur des formules excel générées par VBA.
 

Pièces jointes

  • xlsnaute v1.xlsm
    58.1 KB · Affichages: 60
Dernière édition:

jozerebel

XLDnaute Occasionnel
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Bonjour CbernardT,

le fichier excel plante...

Il faut savoir que j'ai 4500 lignes et des nombres stockés sous format texte dans la colonne L.

D'où cela peut-il venir?

D'avance merci!
 

CBernardT

XLDnaute Barbatruc
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact

Bonjour,

Je suis un peu étonné que tu dises qu'il y a des nombres stockés sous forme texte dans la colonne L alors que dans le post 8 tu annonçais :

"Cependant, ma maquette a changé quelque peu : les secteurs sont en colonne L et les organismes en colonne K".

Donc si tu changes la forme de ta maquette régulièrement, il est normal de ne pas avoir le résultat escompté.

A+
 
Dernière édition:

jozerebel

XLDnaute Occasionnel
Re : Sélection aléatoire et proportionnel (échantillonnage questionnaire de satisfact


Bonjour,

En fait, certains secteurs ont des noms du type "6" ou "12".

J'ai essayé de tout mettre en format texte, mais ça plante qd même...

J'ignore pourquoi.
 

Discussions similaires

Statistiques des forums

Discussions
314 647
Messages
2 111 533
Membres
111 197
dernier inscrit
john49