4 Replies Latest reply: Jun 9, 2017 3:34 AM by Kevin Chevrier RSS

    Somme en excluant (retraitant) des données

    Saad Chraibi

      Bonjour,

       

      J'ai une table sous cette forme :

       

       

      Réf N°DOC Ventes HT

      xxx 7xxxx xxxx

      xxx Exxxx xxxx

      xxx BCxxx xxxx

      xxx BTxxx xxxx

      xxx 45xxx xxxx

       

       

      Les 7xxx correspondent à des factures en HT

      Les Exxx correspondent à des échantillons qui peuvent être soit offerts soit facturés

      Les BC et BT représentent des bons de Livraisons que les clients nous paient en TTC (La valeur est donc à diviser par 1.2 pour avoir le montant HT correct)

      Les 45xxx correspondent simplement à des offres de prix (Donc à ne pas tenir compte lors du calcul de la somme totale)

       

      Mon souhait est de faire dans mon graphe une somme des Ventes HT, en excluant les 45xxx, en mettant à jour la division par 1.2 des docs qui commencent par BC ou BT.

      Je souhaite faire une somme des ventes HT uniquement des documents commençant par BC ou BT et que ça a apparaisse dans un coin à part

      Je souhaite faire une somme des ventes HT uniquement des documents commençant par Exx pour savoir combien nous avons facturé d'échantillons.

       

      Merci infiniment pour votre aide.

        • Re: Somme en excluant (retraitant) des données
          Kevin Chevrier

          Bonjour,

           

          Voici comment je procéderais :

           

          1) Dans ton script :

           

          LOAD

          Réf,

          N°DOC,

          [Ventes HT] as VENTES,

          IF(Mid(N°DOC,1,2)='BC' OR Mid(N°DOC,1,2)='BT', ([Ventes HT] / 1.2),[Ventes HT]) as VENTES_HT,

          Mid(N°DOC,1,1) as FILTRE_UNE_LETTRE,

          Mid(N°DOC,1,2) as FILTRE_DEUX_LETTRES

          FROM TA_TABLE

           

          2) Dans ton graphique je ferai 3 expression en utiliserant les set analysis suivant :


          - Mon souhait est de faire dans mon graphe une somme des Ventes HT, en excluant les 45xxx, en mettant à jour la division par 1.2 des docs qui commencent par BC ou BT :

          =Sum({$ <FILTRE_DEUX_LETTRES-= {'45'}>} Ventes_HT)



          - Je souhaite faire une somme des ventes HT uniquement des documents commençant par BC ou BT et que ça a apparaisse dans un coin à part

          =Sum({$ <FILTRE_DEUX_LETTRES= {'BC','BT'}>} Ventes_HT)

          Ps: Si tu veux le résultat dans un "coin à part", tu peux utiliser un objet texte et y mettre ta formule.


          - Je souhaite faire une somme des ventes HT uniquement des documents commençant par Exx pour savoir combien nous avons facturé d'échantillons.

          =Sum({$ <FILTRE_UNE_LETTRE= {'E'}>} Ventes_HT)

           

          Kevin

          • Re: Somme en excluant (retraitant) des données
            Sébastien Fatoux

            Sans modifier le script de chargement :

             

            Mon souhait est de faire dans mon graphe une somme des Ventes HT, en excluant les 45xxx, en mettant à jour la division par 1.2 des docs qui commencent par BC ou BT.

            =Sum({$ <[N°DOC]={'BC*', 'BT*'}>} [Ventes HT])/1.2 + Sum({$ <[N°DOC]={'7*', 'E*'}>} [Ventes HT])

             

            Je souhaite faire une somme des ventes HT uniquement des documents commençant par BC ou BT et que ça a apparaisse dans un coin à part

            =Sum({$ <[N°DOC]={'BC*', 'BT*'}>} [Ventes HT])/1.2

             

            Je souhaite faire une somme des ventes HT uniquement des documents commençant par Exx pour savoir combien nous avons facturé d'échantillons.

            =Sum({$ <[N°DOC]={'E*'}>} [Ventes HT])

             

             

            C'est  mieux de modifier le script de chargement, surtout pour appliquer la conversion (divisé par 1.2) pour les BT* et les BC* afin d'avoir de vrai montant HT, mais dans ce cas, je trouve plus simple de catégoriser directement les types de ventes plutôt que de créer les deux champs de filtre.

             

            LOAD

                Réf,

                [N°DOC],

                [Ventes HT] as VENTES,

                If(WildMatch([N°DOC], 'BC*', 'BT*') > 0, ([Ventes HT] / 1.2), [Ventes HT]) as VENTES_HT,

                If(WildMatch([N°DOC], 'BC*', 'BT*') > 0,

                    'Bon de livraison',

                    If(WildMatch([N°DOC], '7*') > 0,

                        'Facture',

                        If(WildMatch([N°DOC], 'E*') > 0,

                            'Echantillon',

                            If(WildMatch([N°DOC], '45*') > 0,

                                'Offre',

                                'Inconnu'

                            )

                        )

                    )

                ) as [TYPE VENTES]

            FROM TA_TABLE

             

            Du coup les expression sont les suivantes:

             

            Mon souhait est de faire dans mon graphe une somme des Ventes HT, en excluant les 45xxx, en mettant à jour la division par 1.2 des docs qui commencent par BC ou BT.

            =Sum({$ <[TYPE VENTES]-={'Offre'}>} [Ventes HT])

             

            Je souhaite faire une somme des ventes HT uniquement des documents commençant par BC ou BT et que ça a apparaisse dans un coin à part

            =Sum({$ <[TYPE VENTES]={'Bon de livraison'}>} [Ventes HT])

             

            Je souhaite faire une somme des ventes HT uniquement des documents commençant par Exx pour savoir combien nous avons facturé d'échantillons.

            =Sum({$ <[TYPE VENTES]={'Echantillon'}>} [Ventes HT])

            • Re: Somme en excluant (retraitant) des données
              Kevin Chevrier

              Saad,

               

              As-tu réussi ?

               

              Kevin

               

              ----------------------------------------------------------------------------------------------------------------------------------

              Si la réponse apportée a permis de résoudre votre problème merci de marquer celle-ci comme RÉPONSE CORRECTE. Cela aidera la communauté et les employés de Qlik à savoir quelles sont les discussions qui sont toujours en cours et celles qui ont une solution à un problème. Merci de marquer la réponse comme étant UTILE si celle-ci vous a aidé sans nécessairement apporter la solution. Cela peut indiquer des pistes de recherches pour d'autres personnes dans ton cas.