Club Power BI

Please login or click SIGN UP FOR FREE to create your PowerBIUG account to join this user group.
 View Only
  • 1.  calculs sur tranches (1)

    Posted Feb 07, 2023 07:32 AM
    Bonjour à tous,
    je dois calculer un nombre de clients et de CA par tranche

    J'arrive à compter le nombre de client par tranches :


    Mais j'aimerais que mon total fasse la somme des clients (ici j'ai le nombre total de clients ) :

    Nb Clients CAM Tranche =
    IF(HASONEVALUE(Tranches[Mini]),
         COUNTROWS(FILTER(CLIENTS, [CA Total (CAM)]>=VALUES(Tranches[Mini]) && [CA Total (CAM)]<VALUES(Tranches[Maxi])))
        ,COUNTROWS(CLIENTS))


    ------------------------------
    LAURENT SANCHEZ
    Formateur Consultant
    laurent@sanchezconsultant.com
    LE HAVRE
    662527022
    ------------------------------


  • 2.  RE: calculs sur tranches (1)

    Posted Feb 07, 2023 11:05 AM

    Bonjour, 

    Si je traduits ta formule, elle dit : 

    Si la colonne "mini" de la table Tranches  a 1 seule valeur, alors tu comptes toutes les lignes de la table "Clients" pour lesquelles la mesure "CA TOTAL CAM" est supérieure ou égale à LA valeur de "Mini" de la table "Tranche" et cette mesure doit être également inférieure à Maxi de la table "Tranche"  de ladite valeur. 

    Si ce n'est pas le cas, tu ne filtres rien et tu comptes tous mes clients. (en tenant compte de potentiels segments)

    pour que cette formule fonctionne, il faut d'une part que tu n'ais qu'une valeur pour [Mini] dans la table Tranche. De plus, il faut que tu ais créé une relation entre la table Tranche et la table Clients.

    Est ce le cas ?

    pour vérifier si HASONEVALUE(Tranches[Mini]) n'a qu'une seule valeur, je t'invite à créer une mesure :

    Test = HASONEVALUE(Tranches[Mini])

    Tu créés une carte et si ça te retourne "True" c'est que tu n'en as bien qu'une.

    J'espère ne pas répondre à côté de la plaque, mais sans une vision des relations entre tes tables et les colonnes de tes tables, c'est pas simple.

    Si ce n'est pas le cas, n'hésite pas à me le dire et à apporter plus de précisions (une photo de tes relations entre tables seraient chouette)



    ------------------------------
    ludovic ROBIN
    ------------------------------



  • 3.  RE: calculs sur tranches (1)

    Posted Feb 09, 2023 11:42 AM

    Bonjour à tous et merci pour vos posts

    Voici la solution qui fonctionne ;)

    Nb Clients CAM Tranche =
    IF(HASONEVALUE(Tranches[Mini]),
         COUNTROWS(FILTER(CLIENTS, [CA Total CAM]>=VALUES(Tranches[Mini]) && [CA Total CAM]<VALUES(Tranches[Maxi])))
        ,COUNTX(FILTER(SUMMARIZE(CLIENTS,CLIENTS[CODE_CLIENT],"XX",[CA Total CAM]),[XX]>Min(TRANCHES[Mini])),[XX]))



    ------------------------------
    LAURENT SANCHEZ
    Formateur Consultant
    laurent@sanchezconsultant.com
    LE HAVRE
    662527022
    ------------------------------



  • 4.  RE: calculs sur tranches (1)

    Silver Contributor
    Posted Feb 08, 2023 06:44 AM
    Bonjour,

    Attention aussi au fait que les tranches se superposent, un client à 2000 tout rond je ne sais pas s'il est en tranche 1 ou 2 ou les deux. Même si la formule DAX clarifie les choses.
    Si tu as déjà une colonne avec la tranche calculée, c'est le plus simple puisque tu peux faire une somme de CA par tranche avec un SUMMARIZECOLUMNS.
    Mais je pense que cette colonne n'existe pas ?
    Auquel cas passes par un table virtuelle, avec un ADDCOLUMNS pour ajouter ta colonne de SUM de CA à cette table.
    Un exemple un peu du même type, je veux un pourcentage par famille et ne garder que les % sup à 10% :
    TableCalculée = 
    VAR CA_AllFAM = CALCULATE( [CA Global] , ALL(Articles[Famille]))
    VAR TableFamille = ADDCOLUMNS( SUMMARIZE( Articles , Articles[Famille]),  "Part_FAM" ,
    DIVIDE (  [CA Global] , CA_AllFAM ) )
    RETURN
    FILTER( TableFamille , [Part_FAM]>0.1 )

    CA Global est une simple mesure qui somme la colonne CA et articles la table des produits avec leurs familles.
    J'espère que ça peut t'aider
    Tiens nous au courant

    ------------------------------
    Olivier
    ------------------------------