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 :
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