10 Replies Latest reply: Mar 30, 2017 6:49 PM by Sébastien Fatoux RSS

    tirage au sort

    Florent Lelarge-Otiniano

      Bonjour,

       

      est-il possible de faire un tirage au sort, sur un nombre variable de dossiers (20, 40, 100) et ce, sans doublon ?

       

      Merci

       

      Florent

        • Re: tirage au sort
          Sébastien Fatoux

          Je ne comprends pas ce que tu veux exactement.

           

          Peux donner un exemple ou une explication plus complète

            • Re: tirage au sort
              Florent Lelarge-Otiniano

              oui bien sûr,

               

              on me demande régulièrement de sortir par tirage au sort,  une liste de séjours pour études de ceux ci.

              jusqu'à maintenant, je sort l'intégralité des séjours sur la période concernée en fichier excel, puis je lance une manip dans celui ci pour en extraire le nombre souhaité (qui n'est pas toujours le même en fonction des demande).

              le pb c'est que cette manip (un fichier que j'ai trouvé sur le net) me génère des doublons, donc j'en tire plus au sort, et je supprime les doublons, et je réduit la liste au nb souhaité.

               

              pour éviter tout cela, j'aurai voulu savoir s'il était possible de sortir un nb de dossiers, aléatoirement, directement via qlikview, sans doublon.

               

              Florent

            • Re: tirage au sort
              bruno bertels

              Bonjour

               

              Il me semble que j'avais lu dans l'aide une fonction servant à çà et j'ai trouvé çà :

               

              çà pourra peut être t'aider.

               

              En tapant Rand dans la recherche j'ai trouvé des post que tu pourras adapter à ton besoin

              Closedrand

              La fonction renvoie un nombre aléatoire compris entre 0 et 1. Elle peut servir à créer des échantillons de données.

              rand( )

              Exemple :

              Cet exemple de script crée une table de 1 000 enregistrements contenant des caractères en majuscules sélectionnés de manière aléatoire, c'est-à-dire des caractères compris dans la plage 65 à 91 (65+26).

              Load Chr( Floor(rand() * 26) + 65) as UCaseChar, RecNo() as ID Autogenerate 1000;

               

                • Re: tirage au sort
                  Florent Lelarge-Otiniano

                  bonjour Bruno,

                   

                  merci pour ta réponse, je vais creuser de mon côté sur le sujet le rand()

                  mais l'idée serait de le faire en prod, pas en script, pour pouvoir y joindre une variable pour le nb attendu de résultats

                  en excel; pour 1 résultat, c'est ça :

                  =INDEX(ListeAgents;ENT(ALEA()*ENT(NBVAL(ListeAgents)));1)

                  c'est cette correspondance que je cherche...

                  Florent

                    • Re: tirage au sort
                      bruno bertels

                      Bonjour

                       

                      OK , si je saisi bien la formule excel pour ton cas je ne vois pas comment la transcrire sous qlik désolé.  Mais si je te suis bien tu veux pourvoir permettre à l'utilisateur de choisir ( variable) un nombre X de dossier à sortir d'une liste de séjour.

                      Encore une fois en tapant rand dans la recherche j'ai lu des post en anglais qui le font.

                       

                      Peut être une autre piste avec l’instruction sample()

                      https://community.qlik.com/message/1145015#1145015

                        • Re: tirage au sort
                          Florent Lelarge-Otiniano

                          oui, c'est tout à fait ça.

                            • Re: tirage au sort
                              Sébastien Fatoux

                              Salut,

                               

                              • créer une variable vNbValeur initialisée à 20
                              • créer une variable vSolution initialisée à 1
                              • Aller dans propriétés de document --> Variables
                                • Sélectionner vNbValeur
                                • Sélectionner Standard  --> Entier   comme Contrainte de saisie
                                • Sélectionner Valeurs prédéfinies avec défilement dans Liste de valeurs
                                • Saisir 20;40;100 dans Valeurs listées de Valeurs prédéfinies
                                • OK
                              • créer un tableau simple avec en dimension la ou les valeur à extraire
                                • ajouter en première position l'expression :  Rand() * vSolution
                                • dans l'onglet Limites dimensionnelles , afficher uniquement maximum vNbValeur
                                • supprimer l'affichage des Autres dans Options
                              • créer une Zone de saisie avec la variable vNbValeur
                              • créer un bouton Tirage qui va incrémenter de 1 la variable vSolution

                               

                              Et voilà :

                              • tu peux facilement choisir le nombre de valeur à extraire
                              • tu peux changer le tirage
                                • Re: tirage au sort
                                  Florent Lelarge-Otiniano

                                  Merci Sébastien,

                                   

                                  ça semble marcher.

                                  je n'arrive juste pas à faire fonctionner le bouton... quelle action choisir ?

                                  j'ai essayé "bouton de sélection", champ : =vSolution, =vSolution+1...

                                  mais ça, ça ne marche pas...

                                   

                                  en biaisant, on peut changer le vNbValeur, mais quand on remet la valeur souhaitée, ce sont exactement les mêmes dossier qui sont sélectionnés  (parx ex, à achaque fois que je choisi "1", c'es le N° 7772872 qui sort...

                        • Re: tirage au sort
                          bruno bertels

                          Bonjour

                           

                          Regarde avec la fonction rand()