7 Replies Latest reply: Apr 27, 2016 11:02 AM by Jordan Smagghe RSS

    Calcul en fonction du mois

    Jordan Smagghe

      Bonjour, je débute dans Qlikview et je suis confronté à un petit problème.

       

      En gros j'ai une somme : j'additionne des jours acquis =sum(NB_JourAcquis)

       

      Seulement je voudrais en fonction de l'utilisateur donc du "$" (la sélection active) gérer mon addition selon cette règle :

                     de juin à mai une personne gagne 2.08 jours donc au mois de mai elle aurait 2.08 * 12. Mais au mois de juin elle obtient uniquement 2.08 jours.


      je sais que je peux faire {$<Année={$(=Only(Année)-1)},Mois={"<=$(=max(Mois))"}>} qui me permet d'obtenir l'année précédente jusqu'au mois Maximum.

       

      Comment je peux faire pour par exemple avoir l'année précédente à partir du mois de juin jusqu'au mois en cours? svp

       

      Merci d'avance.

       

      Jordan Smagghe

        • Re: Calcul en fonction du mois
          Christophe Brault

          Bonjour,

           

          ma réponse rapide, un exemple serait plus parlant ...

           

          Dans ton application, si tu a une table calendrier (Master Calendar), l'idée est de créer un champs AnnéeCongé, qui démarre en Juin et termine en mai et de changer le numéro de la periode pour l'utiliser dans l'expression.

           

          En gros dans le calendrier tu fais :

           

          if( num(month(DATE))>=6,year(DATE)+1,year(DATE) as AnnéeCongé,

           

          Et tu peux utiliser ce champs dans le set analysis

            • Re: Calcul en fonction du mois
              Jordan Smagghe

              Bonjour Christophe, merci pour ta réponse.

               

              lorsque j'applique j'ajoute à ma table calendrier ce que tu m'as donné :

               

              Calendrier:

              LOAD *,

                if( num(month(Date))>=6,year(Date)+1,year(Date)) as AnnéeCongé

              FROM

              $(QVD_TRANSFO_DIR)Calendrier.QVD

              (qvd);

               

              mais il me dit que "Date" est introuvable.

               

              J'ai essayé de remplacer Date par un champ de ma table soit Date Calendrier et il me dit qu'il ne trouve pas non plus.

              Je vais continuer de chercher.

               

              Merci d'avance pour ta réponse.

            • Re: Calcul en fonction du mois
              Florent Lelarge-Otiniano

              Bonjour Jordan,

               

              tu peux essayer ceci :

              Dans le début du script, vous trouvez

              SET FirstMonthOfYear = 1;

               

              Changez cela en

              SET FirstMonthOfYear = 6

               

              Juin devrait être le Mois n°1, juillet le N°2, etc

               

              ta formule fonctionnerai t'elle ainsi ?

               

              FLO

              • Re: Calcul en fonction du mois
                Jordan Smagghe

                Bonjour, pour vous expliquer un peu plus j'ai tenté de réaliser l'expression que je voudrais avoir :

                 

                =If(GetFieldSelections(Mois)='juin'or GetFieldSelections(Mois)='juil.'or GetFieldSelections(Mois)='août'or GetFieldSelections(Mois)='sept.' or

                  GetFieldSelections(Mois)='oct.'or GetFieldSelections(Mois)='nov.'or GetFieldSelections(Mois)='déc.',

                  sum({$<Année = {$(=Only(Année))}, Mois= {">=juin <=Only(Mois)"}>}[NBRJCPACQUIS]),

                  sum({$<Année = {">=Only(Année)-1 <=Only(Année)"}, Mois= {">=juin <=Only(Mois)"}>}[NBRJCPACQUIS]))

                 

                Si le mois est juin, juil, aout, sept, oct, nov ou dec : je fais la somme des jours acquis pour l'année en cours du mois de juin au mois actuel.

                Sinon(donc si j'ai sélectionné janv, fev, mars, avril, mai) je fais la somme des jours acquis pour l'année -1 à l'année en cours pour les mois de juin de l'année précédente aux mois actuel de l'année actuel.

                 

                Mais ça fonctionne pas... j'ai du faire des erreurs ^^.

                 

                Qu'en pensez vous de cette manière de faire, y aurait il un moyen que ça fonctionne? Et quels sont mes erreurs?

                 

                Merci d'avance

                 

                Cordialement

                 

                Jordan

                • Re: Calcul en fonction du mois
                  Jordan Smagghe

                  Bonjour à tous, j'ai fais comme ceci, j'ai crée une expression nb jours acquis dans laquelle je fais ça :

                   

                  //Si juin,juil,aout,sept,oct,nov ou dec est selectionné.

                  =If(GetFieldSelections(Mois)='juin'or GetFieldSelections(Mois)='juil.'or GetFieldSelections(Mois)='août'or GetFieldSelections(Mois)='sept.' or

                    GetFieldSelections(Mois)='oct.'or GetFieldSelections(Mois)='nov.'or GetFieldSelections(Mois)='déc.',

                   

                  //On fait la somme du nbrjcpacquis pour l'année en cours de tous les mois - janv, fevrier, mars, avril, mai.

                    Sum({$<Année = {$(=Only(Année))}, Mois={"<= $(=max(Mois))"}-{'janv.'}-{'févr.'}-{'mars'}-{'avr.'}-{'mai'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100)),

                   

                  //Sinon on fait la somme de l'année - 1 du moi de juin juil aout setp oct nov dec.

                    Sum({$<Année = {$(=max(Année)-1)}, Mois={'juin'}+{'juil.'}+{'août'}+{'sept.'}+{'oct.'}+{'nov.'}+{'déc.'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100))+

                    // + sum de l'année en cours - les mois de juin juil aout sept oct nov dec.

                    Sum({$<Année = {$(=max(Année))}, Mois={"<= $(=max(Mois))"}-{'juin'}-{'juil.'}-{'août'}-{'sept.'}-{'oct.'}-{'nov.'}-{'déc.'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100)))

                   

                  Le soucis c'est que le chiffre que j'obtient est multiplié par le nb de jour du mois. Je sais comment diviser par le nb de jour du mois mais cela fonctionne uniquement pour le mois de juin dès que je serais en juillet, il saura le faire pour juillet mais plus pour juin.

                   

                  Comment faire?

                   

                  Je voudrais faire:

                   

                  Sum({$<Année = {$(=Only(Année))}, Mois={"<= $(=max(Mois))"}-{'janv.'}-{'févr.'}-{'mars'}-{'avr.'}-{'mai'}>}[NBRJCPACQUIS]*(Pourc_Ventilation2/100)*(Pourc_Ventilation/100)/Count([Période]),

                   

                  mais lorsque j'affiche mon tableau j'ai l'erreur "Nested aggregation not allowed"

                   

                  Merci d'avance.

                   

                  Jordan