Comment calculer les durées de travail complexes (à cheval sur deux jours) dans Excel ?

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

Dans ce tutoriel, je vais vous montrer comment gérer des plages horaires complexes, comme celles qui son à cheval sur deux journées dans Excel. Nous verrons également comment développer vos propres fonctions Excel pour rendre ces tâches encore plus simples et automatisées.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

 

1. Présentation

Pour illustrer ce tutoriel, prenons l’exemple d’un service de livraison qui fonctionne jour et nuit.

Voici les horaires réalisés par un de ses livreurs sur une semaine :

Excel formation - 0026-Calculer les heures sur deux journées - 01

Ici, nous allons souhaiter calculer la durée totale de chaque journée, et identifier les heures réalisées uniquement pendant la nuit (entre 22h et 6h).

 

2. Calculer la durée totale d’une plage horaire

 

Pour calculer la durée totale d’une plage horaire à cheval sur deux journées, nous ne pouvons pas nous contenter de simplement soustraire l’heure de fin à l’heure de début, comme nous le ferions pour calculer une durée classique.

En effet, dans ce cas de figure précis, l’heure de fin serait inférieure à l’heure de début, et donc le résultat retourné serait négatif.

Une soustraction classique fonctionne correctement tant que les horaires restent dans la même journée.

Par exemple, si l’heure de début est 08:00 et l’heure de fin est 16:00, le calcul 16:00 - 08:00 donnera 8:00, ce qui est correct.

Cependant, dès que l’horaire traverse minuit, le résultat obtenu devient incorrect et plutôt que de présenter un résultat incohérent, Excel préfère retourner une erreur.

Ainsi, si nous saisissons la formule suivante dans la cellule D9 nous obtiendrons une erreur Excel. 

En effet, ici l’heure de début est 20:00 et l’heure de fin est 03:00 le lendemain.

Le résultat dans la cellule D9 sera affiché sous forme de dièses (#####).

En passant le curseur de la souris sur la cellule, Excel affiche un message d’information indiquant :

« Les dates et heures négatives ou trop longues s’affichent sous la forme #####. »

Excel formation - 0026-Calculer les heures sur deux journées - 02

Pour résoudre ce problème, nous utilisons la fonction MOD, qui permet de calculer une durée tout en tenant compte des horaires qui traversent minuit.

La fonction MOD (ou RESTE en français) est idéale pour traiter les horaires traversant minuit. Lorsqu’on soustrait une heure de fin à une heure de début, si cette plage couvre minuit, le résultat peut être négatif. La fonction MOD permet de contourner ce problème en ajustant la durée dans une plage de 24 heures.

La syntaxe de la fonction est :

 =MOD(Nombre;Diviseur) 
  • Nombre : c’est la valeur à diviser. Ici, il s’agit de « Heure de fin » - « Heure de début ».
  • Diviseur : pour les horaires, il vaut toujours 1, car une journée correspond à 1 dans le format horaire Excel.

Saisissons maintenant la formule suivante dans la cellule D9 :

 =MOD(C9-B9;1) 
  • C9 correspond à l’heure de fin.
  • B9 correspond à l’heure de début.
  • Et 1 correspond à une journée complète dans le système de gestion des dates et heures d’Excel, et il est utilisé comme base pour ramener la différence entre C9 et B9 dans une plage positive comprise entre 0 et 1 (nous y reviendrons juste après).

Il faut en effet savoir qu’Excel considère les horaires comme des fractions de journée. Voici quelques exemples :

  • 00:00 (minuit) correspond à 0, car il s’agit du début de la journée.
  • 12:00 correspond à 0,5 (12 heures divisées par 24).
  • 24:00 (minuit le jour suivant) correspond à 1, soit une journée complète.

Cela signifie que toutes les heures sont représentées par des valeurs comprises entre 0 et 1.

Ainsi, lorsque nous soustrayons une heure de début supérieure à l’heure de fin (par exemple, 20:00 - 03:00), Excel retourne une valeur négative, car 0,125 (03:00) est inférieur à 0,833 (20:00). C’est donc là qu’intervient la fonction MOD. Elle corrige automatiquement cette différence en ajoutant 1 (une journée complète) lorsque la valeur est négative. Cela ramène toujours la durée dans une plage positive.

Cela revient à saisir la formule suivante :

 =C9-B9+1 

Sauf qu’avec MOD, le « +1 » n’est ajouté que lorsque la valeur est négative.

Enfin, cette valeur est convertie au format horaire (HH:MM). Comme 0,2917 représente environ 7 heures (0,2917 × 24 = 7), le résultat final est 07:00, ce qui correspond bien à la durée entre 20:00 et 03:00.

Il ne reste plus qu’à étendre la formule vers le bas pour l’appliquer à toutes les lignes.

La fonction retournera la durée totale pour chaque plage horaire, même si celle-ci traverse minuit.

Astuce : Assurez-vous que toutes les colonnes d’heure sont correctement formatées en « Heure » via un clic droit > Format de cellule > Heure.

 

3. La fonction CALCULDUREE()

Pour aller plus vite en évitant de devoir ressaisir cette formule à chaque fois que nous devons calculer des durées, nous pouvons également créer notre propre fonction Excel.

Cette fonction personnalisée calculera automatiquement la durée entre deux horaires, y compris lorsqu'ils traversent minuit.

Ce type de fonction est appelé une fonction personnalisée, et elle doit être développée dans le langage VBA (Visual Basic for Applications).

Ce langage de programmation intégré dans Excel (et dans les autres applications de la suite Office, comme Word et Access) permet d’automatiser des tâches répétitives, de créer des macros, et d’ajouter des fonctionnalités avancées, comme des fonctions personnalisées utilisables directement dans les feuilles de calcul.

En d’autres termes, grâce au VBA, nous pouvons étendre les fonctionnalités d’Excel et adapter ses outils à nos besoins spécifiques. Ici, nous allons créer une fonction personnalisée pour simplifier le calcul des durées.

Si vous débutez en VBA et souhaitez en apprendre davantage, je vous invite à découvrir mon livre « Le VBA pour les grands débutants », disponible en cliquant ici.

Pour écrire notre fonction, nous devons d’abord accéder à l’éditeur VBA, qui est une interface dédiée au développement. Elle nous permet d’écrire, de modifier et de gérer le code VBA associé à nos classeurs Excel.

Il existe plusieurs méthodes pour lancer cet éditeur, la plus rapide étant d’utiliser le raccourci clavier [Alt]+[F11].

Une fois dans l’éditeur VBA, nous devons ajouter un module pour y écrire notre code, en cliquant sur le menu Insertion > Module.

Un nouveau module vide s’ajoute dans le projet. C’est ici que nous allons écrire notre fonction.

Maintenant, pour créer une fonction utilisable dans les cellules d’une feuille de calcul, nous devons commencer par utiliser l’instruction Function, suivi du nom de la fonction

Function calculeDuree

Ensuite, si nous le souhaitons, nous pouvons venir saisir les arguments de la fonction entre parenthèses.

Cette fonction prendra deux arguments :

  • hDebut : l’heure de début,
  • hFin : l’heure de fin.

Ces arguments doivent être typés pour indiquer à Excel qu’ils représentent des nombres (plus précisément des fractions de journée, comme Excel stocke les heures). Nous les déclarons en tant que Double, qui est un type numérique précis.

Function calculeDuree(hDebut As Double, hFin As  Double)
End Function

À l’intérieur de la fonction, nous ajoutons la logique pour calculer la durée laquelle consiste à calculer la différence entre hFin et hDebut (nous affectons cette valeur directement à la fonction) :

calculeDuree = hFin - hDebut

Enfin, si l’heure de fin est inférieure à l’heure de début, cela signifie que la plage horaire traverse minuit.

Dans ce cas, et comme nous l’avons vu juste avant, nous devons ajouter 1 (une journée complète) à la différence.

If calculeDuree < 0 Then calculeDuree  = calculeDuree + 1

Une fois la fonction terminée, nous revenons dans la feuille de calcul.

Nous pouvons maintenant tester la fonction directement dans une cellule, comme nous le ferions pour n’importe quelle autre fonction d’Excel.

Par exemple, dans la cellule D9, nous saisissons :

 =calculeDuree(B9;C9) 

Où B9 correspond à l’heure de début (par exemple, 20:00), et C9 correspond à l’heure de fin (par exemple, 03:00).

Le résultat affiché sera 07:00, qui correspond bien à la durée totale entre 20:00 et 03:00.

L’utilisation d’une fonction personnalisée présente plusieurs avantages :

  • Gain de temps : une fois créée, vous pouvez réutiliser cette fonction dans toutes vos feuilles de calcul sans ressaisir de formules complexes.
  • Lisibilité : la fonction calculeDuree rend vos calculs plus clairs et compréhensibles, surtout si d’autres utilisateurs doivent consulter vos fichiers.
  • Polyvalence : vous pouvez adapter la fonction à d’autres besoins, comme le calcul des heures de nuit ou l’ajout de plages horaires spécifiques.

Par contre, pour conserver votre fonction personnalisée, enregistrez le fichier au format Classeur Excel avec macros activées (.xlsm). Si vous utilisez un format classique (.xlsx), le code VBA sera supprimé.

 



Articles qui pourraient vous intéresser

Comment calculer les durées de travail complexes (à cheval sur deux jours) dans Excel ?
Comment comparer facilement deux listes avec une simple formule Excel ?
Comment effectuer des remplacements multiples avec une seule formule magique d'Excel que personne ne vous a jamais montrée !
Les erreurs de concaténation qui vous font perdre du temps sur Excel
Découvrez la nouvelle fonction Excel que 90% des experts ne connaissent pas !
Boostez vos investissements : maîtrisez le calcul du taux de rentabilité avec Excel en 10 minutes !
Les 8 (+1 incroyable) fonctions Excel à maîtriser absolument en 2024
Percez les secrets de la fonction SOMME (SOMME.SI/SOMMEPROD) et des ces déclinaisons pour boostez votre productivité sur Excel ?
TOP3 des méthodes pour extraire des données par date dans Excel
Comment identifier la date la plus ancienne ou la plus récente en fonction de critères sur Excel ?
Comment calculer une moyenne sans tenir compte des zéros sur Excel ?
Comment fusionner des tableaux, les trier et supprimer les doubles avec une seule formule Excel ? (ASSEMB.V et ASSEMB.H)

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2024 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.