Club Power BI

Please login or click SIGN UP FOR FREE to create your PowerBIUG account to join this user group.
 View Only
Expand all | Collapse all

nbre de de jours par mois entre 2 dates

  • 1.  nbre de de jours par mois entre 2 dates

    Posted 21 days ago
    Bonjour,
    j'ai un tableau dans lequel j'ai indiqué la date d'entrée et de sortie de chaque salarié, et j'aimerais obtenir une mesure me permettant de compter le nombre de jours pour chaque salarié et PAR MOIS
    (pour compter le nombre de jours au total je connais DATEDIFF, mals j'ai besoin de connaitre le nb par mois) :


    Nom Date début Date fin
    Pierre 10/10/2021 25/12/2021
    Marc 10/12/2021 25/12/2021
    Yves 01/09/2021 31/12/2021

    Auriez vous une idée ?

    Merci

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


  • 2.  RE: nbre de de jours par mois entre 2 dates

    Silver Contributor
    Posted 20 days ago
    Bonjour Laurent,

    La méthode à suivre est la suivante :
    1/ Avoir une table de dates et dans cette table une colonne avec des 1 et 0 selon que le jour est ouvré ou non
    2/ Faire la somme de cette colonne avec un CALCULATE et un DATESBETWEEN ou DATESINPERIOD pour sélectionner entre les deux dates.

    Si vous avez déjà une table de dates, ci dessous quelques formules DAX pour créer les colonnes manquantes :
    1/ Calcul des jours fériés mobiles, à créer dans la table de dates
    LUNDI DE PAQUES
    Date Lun Paques = DATE(1900,1,1)+(ROUND(DATE(MonCalendrier[Annee],4,MOD(234-11*MOD(MonCalendrier[Annee],19),30))/7,0)*7-6)-1
    DIMANCHE & LUNDI DE PENTECOTE
    Date Dim Pentecote = MonCalendrier[Date Lun Paques]+48
    Date Lundi Pentecote = MonCalendrier[Date Lun Paques]+49
    JEUDI DE L'ASCENSION
    Date Jeu Ascension = MonCalendrier[Date Lun Paques]+38

    2/ Test pour créer colonne avec 0 et 1 selon que je jour est travaillé ou non :

    JoursOuvres = SWITCH (FORMAT (MonCalendrier[DateRef], "dd/mm"), "01/01",0, //Jour de lan
    "01/05",0, //Fete du travail
    "08/05",0, //Armistice 39-45
    "14/07",0, //Fete nationale
    "15/08",0, //Assomption
    "01/11",0, //Toussaint
    "11/11",0, //Armistice 14-18
    "25/12",0, //Noel
    SWITCH(VALUE(MonCalendrier[DateRef]), VALUE(MonCalendrier[Date Lun Paques]),0, //Lundi de paques
    VALUE(MonCalendrier[Date Jeu Ascension]),0, //Jeudi de l'Ascension
    VALUE(MonCalendrier[Date Dim Pentecote]),0, //Dimanche de Pentecote
    VALUE(MonCalendrier[Date Lundi Pentecote]),0, //Lundi de Pentecote
    SWITCH(MonCalendrier[JourSemaineNom], //Test du WE (sam dim)
    "samedi",0, "dimanche",0,1))) //Jour Ferie=0, Non Ferie=1


    ​Et si jamais vous n'avez pas de table de dates, voici un lien pour en créer une :
    Création table de dates

    Bon calcul !

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



  • 3.  RE: nbre de de jours par mois entre 2 dates

    Posted 16 days ago
    Bonjour Olivier,
    je viens de rentrer de congés ;) et je vous remercie pour votre réponse détaillée, mais je souhaitais compter le nombre de jours entre 2 dates, en DAX, sans ajout de tables, et par mois (les jours fériés m'importent peu)


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



  • 4.  RE: nbre de de jours par mois entre 2 dates

    Silver Contributor
    Posted 16 days ago
    Bonjour Laurent,

    S'il s'agit juste du nombre de jours la fonction DATEDIFF devrait suffire, s'il faut par contre retirer les WE je te conseille l'utilisation d'une table de dates. Avec Power BI difficile de jouer sur les dates sans un calendrier (table de dates).
    A ma connaissance il n'existe pas l'équivalent Excel de NetWorkingDays en PBI d'où la table de dates qui de toute façon est aussi utile (voire indispensable) avec la plupart des fonctions de Time Intelligence.
    C'est très rapide comme création de table, avec une fonction CALENDARAUTO ou avec le code que je t'ai proposé.

    Bon calcul et bonne reprise

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



  • 5.  RE: nbre de de jours par mois entre 2 dates

    Silver Contributor
    Posted 16 days ago
    Bonjour Laurent,

    Est-ce que cela fonctionne, ou avez-vous besoin de plus d'informations ?

    Bonne journée

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



  • 6.  RE: nbre de de jours par mois entre 2 dates

    Posted 16 days ago
    Bonjour Olivier,
    comment implémenter la fonction DATEDIFF dans une mesure ?

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



  • 7.  RE: nbre de de jours par mois entre 2 dates

    Silver Contributor
    Posted 16 days ago
    Edited by Olivier Aillery 16 days ago
    Bonjour Laurent,

    Dans une mesure il va falloir "l'aider" à sélectionner la valeur à utiliser.
    Une fonction SELECTEDVALUE, LASTDATE, MIN devrait pouvoir aider à sélectionner cette valeur.
    Cela dépend du tableau dans lequel tu souhaites l'utiliser, et aussi bien sur du modèle s'il y en a un.
    Par exemple dans un tableau avec des factures comme niveau de détail, j'utilise cette mesure pour calculer l'écart entre date facture et date échéance.
    Sans la fonction SELECTEDVALUE j'obtiens une erreur car PBI ne "sait" pas quelle dates il doit prendre en compte parmi toutes celles de la colonne.
    Mesu Nb Jours Ouvrés entre DateFact et Echéance = CALCULATE(
    SUM(MonCalendrier[JoursOuvres]),//Somme de la colonne avec des 0 et des 1
    DATESBETWEEN(MonCalendrier[DateRef],//Référence à la table de dates
    SELECTEDVALUE(Factures[Date Facture]),//Date de début= Date facture
    SELECTEDVALUE(Factures[Date Echeance Fact])))//Date de Fin de période= date échéance

    Donc dans ton cas, il te faudra un SELECTEDVALUE sur DATEDEBUT et un autre sur DATE de FIN, dans ta fonction DATEDIFF.
    J'espère que cela t'aidera.


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



  • 8.  RE: nbre de de jours par mois entre 2 dates

    Silver Contributor
    Posted 14 days ago
    Bonjour,

    Ca fonctionne ? Si oui n'hésites pas à partager la formule finale pour les autres membres.

    Bonne journée

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



  • 9.  RE: nbre de de jours par mois entre 2 dates

    Posted 13 days ago
      |   view attached
    Bonjour Laurent
    le résultat comme demandé dans le post . Il faut passer par quelques étapes Power Query largement inspirées par ce post Power Query - Calculer Nb Jours entre deux Date en Mois et Année - YouTube


    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------

    Attachment(s)

    pbix
    Employés.pbix   23 KB 1 version


  • 10.  RE: nbre de de jours par mois entre 2 dates

    Posted 8 days ago
    Bonjour à tous,
    j'ai trouvé une méthode qui me permet de créer une mesure en DAX sans avoir besoin de préparer mes données avec PowerQuery.

    Je me suis basé sur le pattern Events in Progress qui m'avait été proposé par Bertand d'arbonneau
    https://www.daxpatterns.com/events-in-progress/

    Et je l'ai adapté pour compter le nb de jours d'absence, par mois, pour les employés :

    Si vous avez mieux ou plus concis, je prends ;)

    Nb Jours =
    VAR MinDate = MIN ( 'Calendar'[Date] )
    VAR MaxDate = MAX ( 'Calendar'[Date] )
    VAR Result =
    CALCULATE (
    SUMX (Absences,
    IF(DATEDIFF(MAX(MinDate,Absences[Date Début]),MIN(MaxDate,Absences[Date Fin]),DAY)+1<0,0,
    DATEDIFF(MAX(MinDate,Absences[Date Début]),MIN(MaxDate,Absences[Date Fin]+1),DAY)+1)),ALL('Calendar')
    )
    RETURN
    Result


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



  • 11.  RE: nbre de de jours par mois entre 2 dates

    Bronze Contributor
    Posted 8 days ago
    Edited by Bertrand d'Arbonneau 8 days ago

    Une autre approche consiste à itérer les dates dans le contexte d'évaluation, compter le nombre d'absences pour chaque journée, puis faire la somme. Hors exception à investiguer, le code suivant donne les mêmes résultats que la formule à base de DATEDIFF, mais privilégie l'utilsation du Storage Engine.

    Nbr Jours Absence =
    SUMX (
        VALUES ( Calendar[Date] ),
        VAR _day = Calendar[Date]
        RETURN
            CALCULATE (
                COUNTROWS ( Absences ),
                Absences[Date début] <= _day,
                Absences[Date fin] >= _day,
                ALL ( Calendar )
            )
    )


    ------------------------------
    Bertrand d'Arbonneau
    ------------------------------