Calculer une différence de dates dans Excel semble trivial jusqu’au moment où le résultat ne correspond pas à la règle de délai attendue. Excel stocke chaque date comme un numéro de série entier – le 1er janvier 1900 vaut 1, le 1er janvier 2025 vaut 45658 – et toute soustraction entre deux cellules de dates produit ce même type de valeur numérique.
Le problème n’est pas technique : il est sémantique. Un écart de 4 jours entre lundi et vendredi n’est pas la même chose que 4 jours ouvrés, et Excel ne fait pas cette distinction seul.
Ce que la soustraction simple calcule vraiment
La formule =date_fin – date_début compte l’intervalle entre deux dates, bornes non comprises. Du lundi au vendredi, elle retourne 4, pas 5. Pour obtenir 5, il faudrait inclure le jour de départ en ajoutant 1 au résultat.
Ce comportement est cohérent avec la représentation interne des dates. Le problème survient quand la règle métier dit « délai de 5 jours calendaires incluant le jour de démarrage ». La formule brute donnera 4, et personne ne s’en apercevra forcément.
Avant de choisir une fonction, il faut donc répondre à trois questions : le délai se mesure-t-il en jours calendaires ou ouvrés ? Le jour de départ est-il compris ? Le jour d’échéance est-il compris ? Ce sont ces choix qui déterminent la formule, pas le nom de celle-ci.
DATEDIF, NB.JOURS.OUVRES : choisir selon la règle de délai, pas selon le nom
DATEDIF est une fonction héritée de Lotus 1-2-3, conservée pour la compatibilité mais absente de l’autocomplétion d’Excel. Sa syntaxe est =DATEDIF(date_début ; date_fin ; "unité") avec six unités possibles : « d » pour les jours, « m » pour les mois complets, « y » pour les années complètes, et trois variantes combinées (« yd », « ym », « md »).
Microsoft signale explicitement que l’unité « MD » peut produire des résultats erronés – résultat négatif, nul ou inexact – notamment sur les dates de fin de mois. Pour tout calcul de délai, les unités « d », « m » et « y » restent fiables ; « MD » est à éviter.
NB.JOURS.OUVRES fonctionne différemment : elle compte les jours ouvrés et inclut les deux bornes si elles sont des jours ouvrés. Entre lundi et vendredi, elle retourne 5. Ce comportement est l’inverse de la soustraction simple, et les confondre génère des écarts d’un jour difficiles à diagnostiquer.

Pour les contextes où le week-end n’est pas samedi-dimanche – calendriers locaux, équipes travaillant le samedi, délais contractuels spécifiques – NB.JOURS.OUVRES.INTL accepte un paramètre supplémentaire qui définit quels jours constituent le week-end, plus une liste optionnelle de jours fériés à exclure. Une formule standard construite sans ce paramètre peut sous-estimer ou surestimer le délai réel selon le calendrier applicable.
Jours fériés et bornes : deux réglages que les formules n’intègrent pas par défaut
Aucune des fonctions de date d’Excel n’intègre automatiquement les jours fériés. Pour NB.JOURS.OUVRES et NB.JOURS.OUVRES.INTL, la liste des jours fériés doit être fournie manuellement comme troisième argument – typiquement une plage de cellules contenant les dates concernées.
Cette contrainte a des conséquences pratiques : un calcul de délai de livraison ou de préavis qui ne tient pas compte des jours fériés locaux sera faux pour les périodes concernées, sans que la formule génère d’erreur visible.
- Jours calendaires sans borne incluse : soustraction simple
=date_fin - date_début. Résultat : écart brut entre les deux dates. - Jours calendaires borne de départ incluse :
=date_fin - date_début + 1. Convient aux délais de préavis comptés à partir du jour même. - Jours ouvrés avec jours fériés exclus :
=NB.JOURS.OUVRES(date_début ; date_fin ; plage_fériés). Inclut les deux bornes si ouvrées.
Le problème des systèmes de dates 1900 et 1904
Excel dispose de deux systèmes de numérotation des dates : le système 1900 (par défaut sur Windows) et le système 1904 (historiquement lié à Excel pour Mac). Lorsque des données sont copiées ou importées entre deux classeurs utilisant des systèmes différents, Microsoft indique un décalage de 1 462 jours entre les deux représentations.
Un délai calculé à partir de dates importées d’un autre système peut donc afficher un écart de plusieurs années sans que la formule signale d’erreur. Ce type d’erreur est particulièrement difficile à repérer parce que les cellules affichent des dates visuellement cohérentes, mais les numéros de série sous-jacents ne le sont pas.
Pour vérifier, il suffit d’aller dans Fichier > Options > Options avancées et de vérifier l’état de la case « Utiliser le calendrier depuis 1904 ». Deux classeurs ouverts simultanément peuvent avoir des réglages différents.
Quelle formule pour quel type de délai
Le choix entre soustraction, DATEDIF et NB.JOURS.OUVRES dépend moins des fonctionnalités que de la définition précise du délai à mesurer.
- Ancienneté en années complètes :
=DATEDIF(date_embauche ; AUJOURD'HUI() ; "y")retourne le nombre d’années révolues, sans arrondi. - Délai contractuel en jours ouvrés :
=NB.JOURS.OUVRESavec la liste des jours fériés du pays concerné, en vérifiant si le contrat inclut les deux bornes. - Durée d’un projet en mois :
=DATEDIFavec l’unité « m » pour les mois complets, ou=MOIS.DECALERpour calculer une date d’échéance à partir d’une durée. - Délai en jours calendaires bornés : soustraction avec ou sans +1 selon que le jour de départ est compté ou non.
La règle métier prime sur le nom de la fonction. Documenter dans une cellule adjacente quelle convention de comptage s’applique – bornes incluses ou non, jours ouvrés ou calendaires, jours fériés considérés – évite les erreurs lors d’une reprise du fichier.
Pour les calculs d’âge ou d’ancienneté qui doivent rester stables dans le temps, remplacer AUJOURD'HUI() par une date de référence fixe garantit que le résultat ne change pas à chaque ouverture du classeur – un détail qui compte dès que le fichier est partagé ou archivé.

