DIFFERENCE ENTRE DEUX HEURES

  • DIFFERENCE ENTRE DEUX HEURES

    Posté par Peggy sur 5 février 2024 à 17h50

    Bonjour Chers tous,
    J’ai besoin calculer la durée de travail de mes employés sur le site

    – Heure arrivée :7h
    – Heure depart : 17h
    – Durée de la pause : 1h

    • Soit 8h de travail effectif

    Durée de Travail = Heure Arrivée – Heure depart – Durée Pause

    La formule que j’utilise est la suivante, mais ne marche pas, La durée de presence n’est pas diminué DE LA PAUSE :

    DureePresenceSec = DATEDIFF(‘table'[Heure arrivée ajustée],’table'[Heure depart ajustée],SECOND)-TIME(00,00,3600))

    Pouvez vous me donner une coup de main, pour calculer la durée exacte de travail des employés?

    David a répondu Il y a 5 mois, 2 semaines 3 Membres · 5 Réponses
  • 5 Réponses
  • StevannS

    Membre
    5 février 2024 à 18h00

    Bonjour Pegguy, j’ai répondu à ta même question du 30 novembre 2023 à 19h09.

  • Peggy

    Membre
    5 février 2024 à 18h09

    Hello StevannS

    Je ne voit pas ta reponse, peux tu me la partager nouveau STP

  • StevannS

    Membre
    5 février 2024 à 18h13

    Bonjour Peggy, en fait, DATEDIFF renvoie un chiffre et pas un temps : tu soustrais donc une valeur TIME à une valeur entière. Le site “learn.microsoft.com” indique : Return Value = The count of interval boundaries between 2 dates.

    Donc, pour que cela fonctionne, il faut que tu retires 3600 et non TIME(0, 0, 3600), et que DureePresenceSec soit en format “Nombre entier”. Cependant, tu obtiendras des secondes qu’il faudra convertir en heures et min, car c’est ce qui t’intéresse… C’est faisable mais pas vraiment efficace…

    Donc, pour moi, DATEDIFF n’est pas la meilleure solution à ton besoin. La meilleure méthode consisterait à calculer directement la différence entre les Dates Départ et Arrivée en retirant cette fois-ci Time(1, 0, 0), te donnant ainsi une différence directement en hh:mm, comme suit :

    Colonne calculée =
    VAR _DateArrivee = TableHeures[Date arrivée] + TableHeures[Heure arrivée]
    VAR _DateDepart = TableHeures[Date départ] + TableHeures[Heure départ]

    RETURN
    _DateDepart – _DateArrivee – TIME(1,0,0)

    Voilà.

    • Cette réponse a été modifiée Il y a 5 mois, 2 semaines par  StevannS.
  • Peggy

    Membre
    5 février 2024 à 18h16

    Merci StevannS

  • David

    Membre
    6 février 2024 à 14h57

    Bonjour Peggy,

    Voici aussi une autre solution

    <pre class=”language-markup”>VAR __dif = DATEDIFF(TIME(7,0,0), TIME(17,0,0), SECOND) - 3600
    VAR __h = INT(DIVIDE(__dif, 3600))
    VAR __m = INT(DIVIDE(MOD(__dif, 3600), 60))
    VAR __s = MOD(MOD(__dif, 3600), 60)
    RETURN
    TIME(__h, __m, __s)

    • Cette réponse a été modifiée Il y a 5 mois, 2 semaines par  David.

Connectez-vous pour répondre.