1 votes

Excel : Calcul du nombre d'heures travaillées entre deux dates

Résumé :

Je sais que la fonction NETWORKDAYS peut être utilisée pour trouver le nombre de jours ouvrables (=hors week-ends et jours fériés) entre deux dates. Mais que faire si je veux connaître le nombre d'heures ouvrables entre, par exemple, hier à 14h et aujourd'hui à 10h ?

--> J'ai besoin d'une fonction NETWORKINGHOURS qui n'existe pas (Excel 2003). En substance, prenez NETWORKDAYS et ajoutez deux paramètres supplémentaires début de journée de travail et fin de journée de travail. Cela semble simple, mais mes tentatives pour le créer par formule deviennent rapidement très complexes.

Question :
Comment faire en sorte que mon code networkhours fonctionne même lorsque l'heure de fin de la journée est avant l'heure de début de la journée ?

Détails :

J'ai une feuille Excel avec deux colonnes date+heure. Je veux calculer le nombre de jours+heures+minutes entre les horodatages, mais en ne comptant que les heures ouvrables.

La fonction NETWORKDAYS peut être utilisée pour trouver les jours ouvrables en excluant les week-ends et jours fériés (en soustrayant 2 de son résultat, car la fonction compte à la fois le jour de début et le jour de fin, quel que soit l'heure). Jusque-là tout va bien. Cela ressemble à ceci (inspiration d'ici):

=CONCATENER(NETWORKDAYS($A6;B6;holidays)-1
;"j "
;HEURE(MIN(fin de journée;MOD(B6;1))-MAX(début de journée;MOD($A6;1)))
;":"
;SI(MINUTE(MIN(fin de journée;MOD(B6;1))-MAX(début de journée;MOD($A6;1)))>9
;MINUTE(MIN(fin de journée;MOD(B6;1))-MAX(début de journée;MOD($A6;1)))
;CONCATENER("0";MINUTE(MIN(fin de journée;MOD(B6;1))-MAX(début de journée;MOD($A6;1))))))

me donne de très bons résultats dans le format 1j 2:30 en supposant que j'ai nommé les cellules pour début de journée (08:00), fin de journée (16:00) et holidays (colonne avec des valeurs de date).

Cela fonctionne très bien à l'exception du fait que la formule casse lorsque l'heure de fin de journée est avant l'heure de début de journée. Voici mes données de test et mes formules :

texte alternatif

networkdays-2 =NETWORKDAYS($A6;B6;holidays)-2
heures =MIN($B$3;MOD(B6;1))-MAX($A$3;MOD(A6;1))
minutes =MINUTE(MIN(fin de journée;MOD(B6;1))-MAX(début de journée;MOD($A6;1)))
networkhours voir bloc de code ci-dessus

2voto

Steve Points 1319

Journées de travail complètes = NETWORKDAYS - 2

temps travaillé le premier jour = MAX(0, fin de la journée - MAX(heure de début, début de la journée))

temps travaillé le dernier jour = MAX(0, MIN(heure de fin, fin de la journée) - début de la journée)

jours de travail total = journées de travail complètes + INT((temps travaillé le premier jour + temps travaillé le dernier jour) / (fin de la journée - début de la journée))

temps supplémentaire (après les jours totaux) = MOD(temps travaillé le premier jour + temps travaillé le dernier jour, fin de la journée - début de la journée)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X