Calculer un nombre de jours depuis une date dans un tableur, tout le monde sait le faire. Automatiser ce calcul pour qu’il alimente un rapport sans intervention manuelle, c’est une autre affaire. La différence tient à trois choix techniques : la fonction de calcul de date retenue, la gestion du recalcul dynamique et le traitement des jours non ouvrés.
Soustraction directe ou DATEDIF dans Excel : ce que le choix de formule change dans un rapport
La soustraction de deux cellules contenant des dates reste la méthode la plus fiable pour obtenir un écart en jours dans Excel. Une cellule B2 contenant une date de début, soustraite de TODAY(), renvoie un entier qui se met à jour à chaque recalcul du classeur.
DATEDIF, elle, accepte trois arguments (date de début, date de fin, unité) et peut renvoyer des années, des mois ou des jours. En apparence, c’est plus souple. En pratique, cette fonction compte des frontières de période et non une durée stricte. Un écart calculé en mois par DATEDIF entre le 31 janvier et le 1er mars renverra « 1 », là où la soustraction directe donne le nombre réel de jours écoulés.
Pour un rapport automatisé qui suit des délais de traitement, des durées de contrat ou des anciennetés, nous recommandons de réserver DATEDIF aux affichages « années-mois-jours » destinés à la lecture humaine, et d’utiliser la soustraction directe (ou la fonction DAYS) pour tout calcul qui alimente un indicateur ou un graphique.

Formule Excel dynamique avec TODAY : piloter le nombre de jours sans recalcul manuel
Un rapport automatisé exige que la valeur change sans qu’un utilisateur ouvre le fichier et appuie sur F9. TODAY() se recalcule à chaque ouverture du classeur, ce qui couvre la majorité des cas de reporting hebdomadaire ou quotidien.
Le piège classique : un champ qui contient une date et une heure. La soustraction de deux dates-heures produit un résultat fractionnaire. Si la cellule de début vaut « 15/03/2025 14:30 » et que TODAY() renvoie « 10/06/2025 » (sans composante horaire), le résultat sera 86,39… au lieu de 87 jours entiers. Deux solutions :
- Envelopper la date de début dans INT() pour tronquer la partie horaire avant la soustraction : =INT(TODAY()-INT(A2))
- Formater la cellule source en date pure dès l’import, surtout quand les données proviennent d’un export CRM ou ERP qui injecte systématiquement un horodatage
- Utiliser DAYS(TODAY();A2) qui ignore nativement la composante horaire et renvoie toujours un entier
Dans un contexte de reporting récurrent, la deuxième option est préférable : nettoyer le format à la source évite de multiplier les formules défensives dans chaque onglet.
Jours ouvrés et NETWORKDAYS.INTL : adapter le calcul aux rapports RH et gestion de projet
Compter les jours calendaires entre une date de début et aujourd’hui ne suffit pas pour un suivi de délais contractuels ou un tableau de bord RH. La tendance documentée en reporting métier est de privilégier des calculs excluant week-ends et jours fériés.
NETWORKDAYS.INTL offre un contrôle fin. Son troisième argument (weekend) accepte une chaîne de 7 caractères où chaque position représente un jour de la semaine. « 0000011 » exclut samedi et dimanche. « 0000001 » n’exclut que le dimanche, configuration utile pour certains secteurs.
Le quatrième argument, optionnel, pointe vers une plage contenant les dates de jours fériés. Nous recommandons de centraliser cette plage dans un onglet dédié nommé « Paramètres » ou « Ref », référencé en nom défini. Cela permet de mettre à jour le calendrier des jours fériés une seule fois pour l’ensemble du classeur.
La formule type devient :
=NETWORKDAYS.INTL(A2;TODAY(); »0000011″;Parametres!$A$2:$A$20)
Ce calcul, combiné à TODAY(), produit un indicateur dynamique de jours ouvrés écoulés, directement exploitable dans un tableau croisé ou un graphique de suivi.

DATEDIFF en Power BI DAX : les limites à connaître pour un reporting fiable
En Power BI, DATEDIFF est la fonction la plus utilisée pour mesurer un écart entre deux colonnes de dates. Sa syntaxe paraît simple : DATEDIFF(date_debut, date_fin, unité). Le résultat dépend de l’unité choisie (DAY, MONTH, QUARTER, YEAR).
Le problème documenté est que DATEDIFF compte des frontières de période, pas des durées exactes. En unité MONTH, un écart du 15 janvier au 14 février renvoie 0, alors que du 31 janvier au 1er février renvoie 1. Ce comportement crée des incohérences visibles dans les rapports mensuels automatisés.
Pour un calcul de jours depuis une date dans une mesure DAX, la soustraction directe reste plus prédictible :
Jours_depuis = INT(TODAY() – MIN(‘Table'[Date_debut]))
Cette mesure, placée dans une carte ou une matrice, se rafraîchit à chaque actualisation du jeu de données. Si le rapport est publié sur le service Power BI avec une actualisation planifiée, la valeur se met à jour sans intervention.
Structurer le classeur pour un reporting autonome
La formule ne fait que la moitié du travail. L’autre moitié tient à l’architecture du fichier ou du modèle de données.
- Séparer les données brutes (onglet « Data ») des calculs (onglet « Calculs ») et de la restitution (onglet « Rapport »). Ce découpage empêche qu’une modification de structure casse une formule en cascade
- Nommer les plages critiques (date de début, liste de jours fériés, date de référence) pour que les formules restent lisibles à la relecture, même plusieurs mois après
- Verrouiller les cellules contenant TODAY() ou NETWORKDAYS.INTL avec une protection de feuille partielle, afin qu’un utilisateur ne puisse pas écraser le calcul dynamique par une valeur en dur
- En Power BI, isoler les mesures temporelles dans une table de mesures dédiée et documenter le choix entre DATEDIFF et soustraction directe dans la description de chaque mesure
Un rapport qui calcule automatiquement le nombre de jours depuis une date ne demande ni macro ni script. Il demande une formule adaptée au contexte métier, un format de date maîtrisé à la source et une architecture de classeur qui protège les calculs dynamiques. Le reste, TODAY() s’en charge.

