La différence entre deux dates repose sur un mécanisme que les tableurs masquent derrière leurs interfaces : chaque date est stockée comme un nombre entier séquentiel. Excel utilise le système 1900 (le 1er janvier 1900 vaut 1), Google Sheets le système 1899. Une soustraction brute entre deux cellules de dates renvoie donc un écart en jours, sans fonction particulière. Toute la complexité apparaît quand on veut exprimer cet écart en mois, en années ou en jours ouvrés.
Sérialisation des dates et pièges du système 1900 dans Excel
Excel hérite d’un bug historique de Lotus 1-2-3 : le 29 février 1900 est considéré comme une date valide alors que 1900 n’est pas une année bissextile. Ce jour fantôme décale d’une unité tous les numéros de série antérieurs au 1er mars 1900.
A voir aussi : Idées et conseils essentiels pour organiser un mariage inoubliable facilement
En pratique, ce décalage n’affecte que les calculs portant sur des dates situées avant mars 1900, un cas rare. Nous recommandons de le garder en tête lorsqu’on manipule des archives historiques ou qu’on importe des fichiers entre Excel et un système qui n’applique pas ce même biais (bases de données SQL, Python datetime).
Google Sheets contourne le problème en adoptant le système 1899, où le 30 décembre 1899 vaut 0. Lors d’un transfert de fichier entre les deux tableurs, un écart d’un jour peut apparaître sur les dates anciennes. La vérification manuelle d’une date de référence connue, avant tout calcul en masse, évite les erreurs silencieuses. Pour approfondir ces mécanismes, vous pouvez découvrir les solutions sur Anekdotes dans un contexte détaillé.
A lire aussi : Msc croisières : naviguer entre luxe et aventure

DATEDIF, FRACTION.ANNEE et soustraction directe : quelle formule pour quel besoin
La soustraction directe (cellule fin – cellule début) reste la méthode la plus fiable pour obtenir un nombre de jours. Le résultat est un entier, sans ambiguïté. Pour des semaines, on divise par 7 et on tronque.
La fonction DATEDIF accepte trois arguments : date de début, date de fin, et une unité (« d » pour jours, « m » pour mois, « y » pour années). Elle permet aussi des combinaisons comme « ym » (mois restants après décompte des années) ou « md » (jours restants après décompte des mois). Microsoft signale explicitement que DATEDIF peut produire des résultats incorrects dans certains scénarios, notamment avec l’argument « md » sur des plages couvrant un changement de mois court (février).
FRACTION.ANNEE combinée à TRONQUE
Pour obtenir un nombre d’années décimales entre deux dates, FRACTION.ANNEE (YEARFRAC en anglais) offre une alternative plus transparente. Elle accepte un paramètre de base de calcul qui modifie la convention de comptage des jours :
- Base 0 (US 30/360) : chaque mois est compté comme 30 jours, l’année comme 360. Utilisée en finance pour les obligations.
- Base 1 (Actual/Actual) : jours réels sur année réelle. Le choix le plus intuitif pour des calculs calendaires.
- Base 3 (Actual/365) : jours réels sur 365, ignore les années bissextiles. Fréquente en comptabilité bancaire.
En imbriquant FRACTION.ANNEE dans TRONQUE, on isole la partie entière pour obtenir un nombre d’années complètes. TRONQUE(FRACTION.ANNEE(debut;fin;1)) renvoie les années pleines écoulées, sans arrondi.
Calcul des jours ouvrés avec NETWORKDAYS et NETWORKDAYS.INTL
Compter les jours calendaires ne suffit pas dans un contexte professionnel. La fonction NB.JOURS.OUVRES (NETWORKDAYS) exclut automatiquement les samedis, dimanches et jours fériés listés dans une plage de référence.
Sa variante NETWORKDAYS.INTL permet de redéfinir le week-end. Le deuxième argument accepte un code numérique ou une chaîne binaire de 7 caractères (un par jour de la semaine). Un « 1 » signale un jour de repos. Exemple : « 0000011 » désigne samedi et dimanche comme week-end, « 0000010 » ne retire que le samedi.
Cette flexibilité couvre les contextes où le week-end diffère du standard occidental. Nous observons régulièrement des erreurs sur ce paramètre quand il est configuré à la main : inverser un seul bit dans la chaîne fausse tout le décompte.
Gérer la plage des jours fériés
NETWORKDAYS attend une plage optionnelle de dates fériées. Deux bonnes pratiques :
- Stocker les jours fériés dans un onglet dédié, nommé explicitement (« Fériés_2025 »), pour simplifier la maintenance annuelle.
- Utiliser une plage nommée dynamique (OFFSET + COUNTA ou un tableau structuré) afin que l’ajout d’un jour férié soit pris en compte sans modifier la formule.
- Vérifier que les dates fériées sont bien au format date et non texte, sous peine d’un décompte silencieusement faux.

Automatiser le calcul de différence de dates dans les outils no-code
Les plateformes no-code intègrent désormais des modules natifs de calcul de durées entre deux dates. Make (ex-Integromat) propose un module « Date & Time » avec une opération de différence paramétrable en jours, heures ou minutes, sans écrire de formule.
L’intérêt par rapport à un tableur est double. D’abord, le calcul s’exécute dans un flux automatisé (webhook, CRM, outil de gestion de projet) sans intervention manuelle. Ensuite, le fuseau horaire est géré au niveau du scénario, ce qu’un tableur classique ne fait pas nativement sur les dates sans composante horaire.
La convergence entre Excel pour le web et Excel de bureau a aussi progressé : des fonctions comme NETWORKDAYS.INTL sont maintenant supportées dans Excel pour le web, ce qui rend les calculs de durées de projet exploitables directement dans un navigateur, sans version desktop.
Le choix de la méthode dépend du volume et du contexte. Pour un calcul ponctuel, la soustraction directe dans un tableur reste le chemin le plus court. Dès que le calcul alimente un processus récurrent (facturation, suivi de projet, relance contractuelle), l’automatisation via un outil no-code ou une formule NETWORKDAYS bien paramétrée évite les erreurs de copier-coller qui s’accumulent discrètement, mois après mois.
