Calcul Excel Entre Deux Dates

Calculateur Excel Entre Deux Dates

Calculez précisément la différence entre deux dates avec options avancées pour jours ouvrés, weekends et jours fériés

Jours totaux
0
Jours ouvrés
0
Weekends
0
Jours fériés
0
Années complètes
0
Mois complets
0
Formule Excel
=DATEDIF(DATE(2023,1,1),DATE(2023,1,1),”D”)

Guide Complet : Calculer la Différence Entre Deux Dates dans Excel

Le calcul de la différence entre deux dates est une opération courante dans Excel, que ce soit pour gérer des projets, calculer des durées de contrat, ou analyser des données temporelles. Ce guide expert vous expliquera toutes les méthodes disponibles, leurs avantages et limites, avec des exemples concrets et des astuces professionnelles.

1. La Fonction DATEDIF : Le Couteau Suisse des Calculs de Dates

La fonction DATEDIF (Date Difference) est la méthode la plus puissante pour calculer des différences entre dates dans Excel. Bien qu’elle ne soit pas documentée dans l’aide d’Excel (pour des raisons historiques), elle reste parfaitement fonctionnelle.

Syntaxe de base :

=DATEDIF(date_début; date_fin; unité)

unité peut prendre les valeurs suivantes :

  • “D” : Nombre de jours complets entre les deux dates
  • “M” : Nombre de mois complets entre les deux dates
  • “Y” : Nombre d’années complètes entre les deux dates
  • “YM” : Nombre de mois restants après les années complètes
  • “MD” : Nombre de jours restants après les mois complets
  • “YD” : Nombre de jours entre les dates comme si elles étaient de la même année

Exemples concrets :

Formule Résultat Explication
=DATEDIF(“15/01/2023”; “20/03/2023”; “D”) 64 Nombre total de jours entre le 15 janvier et le 20 mars 2023
=DATEDIF(“15/01/2023”; “20/03/2023”; “M”) 2 Nombre de mois complets (février complet + mars partiel)
=DATEDIF(“15/01/2020”; “20/03/2023”; “Y”) 3 Nombre d’années complètes entre les deux dates
=DATEDIF(“15/01/2023”; “20/03/2023”; “YM”) 2 Mois restants après les années complètes (0 année ici)

Limites de DATEDIF :

  • Ne gère pas directement les jours ouvrés (excluant weekends et jours fériés)
  • Peut donner des résultats inattendus avec des dates inversées (elle retourne alors #NOMBRE!)
  • N’est pas disponible dans toutes les versions locales d’Excel (mais fonctionne dans la version française)

2. Méthodes Alternatives pour des Calculs Spécifiques

Selon vos besoins précis, d’autres approches peuvent être plus adaptées que DATEDIF :

a) Simple soustraction pour les jours

=B2-A2 (où A2 contient la date de début et B2 la date de fin)

Cette méthode donne le nombre de jours avec un format personnalisable :

  • Format “Standard” : 64 (nombre de jours)
  • Format “Date” : 20/03/1900 (64 jours après le 01/01/1900)

b) Fonction DAYS pour une syntaxe plus claire

=DAYS(date_fin; date_début)

Introduite dans Excel 2013, cette fonction est plus intuitive que la soustraction directe.

c) Fonction NETWORKDAYS pour les jours ouvrés

=NETWORKDAYS(date_début; date_fin; [jours_fériés])

Cette fonction exclut automatiquement les samedis et dimanches, et peut optionnellement exclure une liste de jours fériés.

Exemple avec jours fériés :

=NETWORKDAYS(A2; B2; $D$2:$D$10)

Où D2:D10 contient la liste des jours fériés.

d) Fonction YEARFRAC pour des fractions d’année précises

=YEARFRAC(date_début; date_fin; [base])

Calcule la fraction d’année entre deux dates selon différentes bases de calcul :

  • 0 ou omis : US (NASD) 30/360
  • 1 : Réel/réel
  • 2 : Réel/360
  • 3 : Réel/365
  • 4 : Européen 30/360

3. Calculs Avancés avec Jours Ouvrés

Pour des calculs professionnels prenant en compte les weekends et jours fériés, combinez plusieurs fonctions :

a) Liste dynamique de jours fériés

Créez un tableau des jours fériés qui s’adapte automatiquement à l’année :

=DATE(ANNEE(A2); 1; 1)   '1er janvier
=DATE(ANNEE(A2); 5; 1)   'Fête du travail
=DATE(ANNEE(A2); 5; 8)   'Victoire 1945
=DATE(ANNEE(A2); 7; 14)  'Fête nationale
=DATE(ANNEE(A2); 8; 15)  'Assomption
=DATE(ANNEE(A2); 11; 1)  'Toussaint
=DATE(ANNEE(A2); 11; 11) 'Armistice
=DATE(ANNEE(A2); 12; 25) 'Noël
        

b) Calcul avec NETWORKDAYS.INTL

Pour des semaines de travail non standard (ex: du lundi au vendredi) :

=NETWORKDAYS.INTL(A2; B2; 1; $D$2:$D$10)

Où le troisième paramètre (1) indique que le weekend est samedi-dimanche. Autres options :

  • 1 : Samedi-Dimanche (par défaut)
  • 2 : Dimanche-Vendredi
  • 11 : Dimanche seulement
  • 12 : Samedi seulement
  • 17 : Vendredi-Samedi

c) Calcul de jours ouvrés entre deux dates avec heures

Pour inclure les heures de travail dans le calcul :

=(NETWORKDAYS(A2; B2)*24 + MOD(B2-A2; 1)*24)*60

Cette formule donne le résultat en minutes de travail, en supposant 24h de travail par jour ouvré.

4. Visualisation des Résultats avec des Graphiques

Excel offre plusieurs options pour visualiser les différences entre dates :

a) Graphique en barres empilées

Idéal pour montrer la répartition entre jours ouvrés, weekends et jours fériés :

  1. Créez un tableau avec les catégories (Jours ouvrés, Weekends, Fériés)
  2. Ajoutez les valeurs calculées
  3. Insérez un graphique en barres empilées
  4. Personnalisez les couleurs (bleu pour ouvrés, gris pour weekends, rouge pour fériés)

b) Diagramme de Gantt

Parfait pour visualiser des périodes dans le temps :

  1. Créez un tableau avec tâches, dates de début et durée
  2. Utilisez un graphique à barres horizontales
  3. Ajustez l’axe des dates
  4. Supprimez les barres de valeur pour ne garder que les barres de durée

c) Chronologie (Timeline)

Pour Excel 2013 et versions ultérieures :

  1. Sélectionnez vos données avec des dates
  2. Allez dans l’onglet “Insertion” > “Chronologie”
  3. Personnalisez la période affichée
  4. Utilisez les filtres pour analyser des sous-périodes

5. Gestion des Dates dans Différents Fus Horaires

Lorsque vous travaillez avec des dates provenant de différents fuseaux horaires, Excel peut générer des incohérences. Voici comment les gérer :

a) Conversion de fuseaux horaires

Utilisez cette formule pour convertir une date/heure :

=A2 + (décalage_heures/24)

Exemple pour convertir de New York (UTC-5) à Paris (UTC+1) :

=A2 + (6/24) (car 1 – (-5) = 6 heures de différence)

b) Fonction WORKDAY.INTL avec fuseaux horaires

Pour calculer des jours ouvrés en tenant compte des fuseaux horaires :

=WORKDAY.INTL(A2 + (décalage/24); jours; [weekend]; [fériés])

6. Erreurs Courantes et Solutions

Erreur Cause Probable Solution
#VALEUR! Format de date incorrect Vérifiez que les cellules sont bien formatées en date (Ctrl+1)
#NOMBRE! Date de fin antérieure à la date de début dans DATEDIF Inversez les dates ou utilisez ABS(DATEDIF(…))
Résultat inattendu Année bissextile non prise en compte Utilisez DATE(année;mois;jour) pour forcer le calcul correct
#N/A Référence à une cellule vide dans NETWORKDAYS Vérifiez que toutes les dates sont remplies
Dates affichées comme nombres Format numérique au lieu de format date Appliquez le format “Date” (Ctrl+Shift+#)

7. Automatisation avec VBA

Pour des calculs complexes ou répétitifs, le VBA (Visual Basic for Applications) offre une puissance supplémentaire :

a) Fonction personnalisée pour jours ouvrés

Function JoursOuvres(Debut As Date, Fin As Date, Optional Feries As Range) As Long
    Dim Jour As Date
    Dim Compteur As Long

    Compteur = 0
    For Jour = Debut To Fin
        Select Case Weekday(Jour, vbMonday)
            Case 1 To 5 'Lundi à vendredi
                If Not EstFerie(Jour, Feries) Then
                    Compteur = Compteur + 1
                End If
            Case Else 'Weekend
                'Ne rien compter
        End Select
    Next Jour

    JoursOuvres = Compteur
End Function

Function EstFerie(Jour As Date, Feries As Range) As Boolean
    Dim Cellule As Range
    If Not Feries Is Nothing Then
        For Each Cellule In Feries
            If Cellule.Value = Jour Then
                EstFerie = True
                Exit Function
            End If
        Next Cellule
    End If
    EstFerie = False
End Function
        

b) Macro pour générer un calendrier

Cette macro crée un calendrier mensuel avec mise en évidence des weekends et jours fériés :

Sub GenererCalendrier()
    Dim Annee As Integer, Mois As Integer
    Dim DebutMois As Date, FinMois As Date
    Dim i As Integer, j As Integer
    Dim Ligne As Integer, Colonne As Integer

    Annee = InputBox("Entrez l'année:", "Calendrier", Year(Date))
    Mois = InputBox("Entrez le mois (1-12):", "Calendrier", Month(Date))

    DebutMois = DateSerial(Annee, Mois, 1)
    FinMois = DateSerial(Annee, Mois + 1, 1) - 1

    'Effacer l'ancienne feuille si elle existe
    On Error Resume Next
    Application.DisplayAlerts = False
    Sheets("Calendrier").Delete
    Application.DisplayAlerts = True
    On Error GoTo 0

    'Créer une nouvelle feuille
    Sheets.Add.Name = "Calendrier"

    'Titre
    Cells(1, 1).Value = MonthName(Mois) & " " & Annee
    Cells(1, 1).Font.Bold = True
    Cells(1, 1).Font.Size = 14

    'En-têtes des jours
    For i = 1 To 7
        Cells(3, i).Value = Format(DateSerial(2023, 1, i), "ddd")
        Cells(3, i).Font.Bold = True
        Cells(3, i).HorizontalAlignment = xlCenter
    Next i

    'Remplir les dates
    Ligne = 4
    Colonne = Weekday(DebutMois, vbMonday)

    For i = 1 To Day(FinMois)
        Cells(Ligne, Colonne).Value = i

        'Mise en forme conditionnelle
        Select Case Weekday(DateSerial(Annee, Mois, i), vbMonday)
            Case 6, 7 'Samedi, dimanche
                Cells(Ligne, Colonne).Interior.Color = RGB(240, 240, 240)
            Case Else
                'Vérifier si jour férié (à implémenter)
        End Select

        Colonne = Colonne + 1
        If Colonne = 8 Then
            Colonne = 1
            Ligne = Ligne + 1
        End If
    Next i

    'Ajustement des colonnes
    Columns("A:G").AutoFit
    Rows("1:1").RowHeight = 20
End Sub
        

8. Comparaison des Méthodes de Calcul

Voici un comparatif des différentes méthodes selon différents critères :

Méthode Précision Jours Ouvrés Fuseaux Horaires Complexité Performance
Soustraction simple ⭐⭐⭐⭐⭐ ❌ Non ❌ Non ⭐⭐⭐⭐⭐
DATEDIF ⭐⭐⭐⭐⭐ ❌ Non ❌ Non ⭐⭐ ⭐⭐⭐⭐
NETWORKDAYS ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ❌ Non ⭐⭐⭐ ⭐⭐⭐
NETWORKDAYS.INTL ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ❌ Non ⭐⭐⭐ ⭐⭐⭐
YEARFRAC ⭐⭐⭐⭐ ❌ Non ❌ Non ⭐⭐⭐ ⭐⭐⭐⭐
VBA personnalisé ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐
Power Query ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
Sources Officielles et Ressources Complémentaires

Pour approfondir vos connaissances sur les calculs de dates dans Excel, consultez ces ressources autoritaires :

9. Études de Cas Réels

a) Calcul de Durées de Projet

Dans la gestion de projet, le calcul précis des durées est crucial. Voici comment structurer un tableau de suivi :

Tâche Début Fin Jours Totaux Jours Ouvrés % Complétion Retard (jours)
Analyse des besoins 01/06/2023 15/06/2023 =DATEDIF(B2;C2;”D”) =NETWORKDAYS(B2;C2) 100% =MAX(0;C2-TODAY())
Conception 16/06/2023 30/06/2023 =DATEDIF(B3;C3;”D”) =NETWORKDAYS(B3;C3) 85% =MAX(0;C3-TODAY())
Développement 01/07/2023 31/08/2023 =DATEDIF(B4;C4;”D”) =NETWORKDAYS(B4;C4) 60% =MAX(0;C4-TODAY())
Tests 01/09/2023 15/09/2023 =DATEDIF(B5;C5;”D”) =NETWORKDAYS(B5;C5) 0% =MAX(0;C5-TODAY())
Total Projet =MIN(B2:B5) =MAX(C2:C5) =DATEDIF(B6;C6;”D”) =NETWORKDAYS(B6;C6) =MOYENNE(F2:F5) =MAX(0;C6-TODAY())

b) Calcul d’Ancienneté en Entreprise

Pour le service RH, calculer l’ancienneté des employés avec précision :

=SI(DATEDIF(B2;AUJOURDHUI();"Y")>0;
   DATEDIF(B2;AUJOURDHUI();"Y") & " an(s) " &
   DATEDIF(B2;AUJOURDHUI();"YM") & " mois";
   DATEDIF(B2;AUJOURDHUI();"M") & " mois " &
   DATEDIF(B2;AUJOURDHUI();"MD") & " jours")
        

c) Calcul de Délais de Livraison

Dans la logistique, estimer les dates de livraison en excluant weekends et jours fériés :

=WORKDAY.INTL(A2; B2; “0000011”; $D$2:$D$15)

Où :

  • A2 = date de commande
  • B2 = délai en jours ouvrés
  • “0000011” = weekend est samedi-dimanche (1=jour travaillé, 0=weekend)
  • $D$2:$D$15 = plage des jours fériés

10. Bonnes Pratiques et Astuces Professionnelles

  • Validez toujours vos formats de date : Utilisez CTRL+1 pour vérifier que les cellules sont bien formatées en date.
  • Gérez les années bissextiles : Excel les prend en compte automatiquement, mais vérifiez les calculs manuels.
  • Utilisez des noms de plage : Pour les listes de jours fériés, créez des noms comme JoursFeries pour plus de clarté.
  • Documentez vos formules : Ajoutez des commentaires (Nouveau commentaire) pour expliquer les calculs complexes.
  • Testez avec des dates limites : Vérifiez vos formules avec des dates identiques, des dates inversées, et des plages incluant des changements d’année.
  • Utilisez le format conditionnel : Mettez en évidence les dates expirées ou les retards avec des règles de mise en forme.
  • Considérez les fuseaux horaires : Pour les données internationales, ajoutez toujours une colonne avec le fuseau horaire d’origine.
  • Archivez vos calendriers : Conservez une feuille avec tous les jours fériés par année pour référence future.
  • Validez les entrées : Utilisez la Validation des données pour limiter les entrées aux dates valides.
  • Automatisez les rapports : Créez des tableaux croisés dynamiques pour analyser les durées par catégorie.

11. Évolution des Fonctions de Date dans Excel

Les fonctions de date dans Excel ont évolué au fil des versions. Voici un historique des principales améliorations :

Version Excel Année Nouveautés sur les Dates
Excel 2.0 1987 Introduction du système de dates (1=01/01/1900)
Excel 97 1997 Fonction DATEDIF “cachée” mais fonctionnelle
Excel 2003 2003 Amélioration de NETWORKDAYS avec gestion des jours fériés
Excel 2007 2007 Nouveaux formats de cellule pour les dates
Excel 2010 2010 Fonctions DAYS, ISOWEEKNUM introduites
Excel 2013 2013 NETWORKDAYS.INTL pour des weekends personnalisés
Excel 2016 2016 Intégration avec Power Query pour le traitement des dates
Excel 2019 2018 Fonctions dynamiques de tableau (débordement)
Excel 365 2020+ Fonctions LET et LAMBDA pour des calculs de dates complexes

12. Alternatives à Excel pour les Calculs de Dates

Bien qu’Excel soit l’outil le plus courant, d’autres solutions existent pour calculer des différences entre dates :

a) Google Sheets

Les équivalents des fonctions Excel :

  • =DATEDIF (identique)
  • =NETWORKDAYS (identique)
  • =DAYS (identique)
  • =WORKDAY (équivalent à WORKDAY.INTL)

Avantages :

  • Collaboration en temps réel
  • Intégration avec d’autres outils Google
  • Accès depuis n’importe quel appareil

b) Python avec pandas

Pour les développeurs, la bibliothèque pandas offre des capacités avancées :

import pandas as pd

start_date = pd.to_datetime('2023-01-15')
end_date = pd.to_datetime('2023-03-20')

# Différence en jours
total_days = (end_date - start_date).days

# Jours ouvrés (exclut samedi-dimanche)
business_days = pd.bdate_range(start_date, end_date).size
        

c) JavaScript

Pour les applications web, JavaScript propose :

const startDate = new Date('2023-01-15');
const endDate = new Date('2023-03-20');

// Différence en millisecondes
const diffTime = Math.abs(endDate - startDate);
// Convertir en jours
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
        

d) SQL

Dans les bases de données, les fonctions de date varient selon le SGBD :

-- MySQL
SELECT DATEDIFF('2023-03-20', '2023-01-15') AS days_diff;

-- SQL Server
SELECT DATEDIFF(day, '2023-01-15', '2023-03-20') AS days_diff;

-- PostgreSQL
SELECT '2023-03-20'::date - '2023-01-15'::date AS days_diff;
        

13. Conclusion et Recommandations

Le calcul de la différence entre deux dates dans Excel est une compétence essentielle pour de nombreux professionnels. Voici nos recommandations finales :

  1. Pour des calculs simples : Utilisez la soustraction directe ou la fonction DAYS.
  2. Pour des durées en années/mois/jours : Préférez DATEDIF malgré son absence de documentation.
  3. Pour les jours ouvrés : NETWORKDAYS ou NETWORKDAYS.INTL sont indispensables.
  4. Pour des analyses complexes : Combinez plusieurs fonctions ou utilisez Power Query.
  5. Pour l’automatisation : Le VBA offre des possibilités illimitées pour des calculs personnalisés.
  6. Pour la visualisation : Les graphiques en barres empilées ou les chronologies sont très efficaces.
  7. Pour la collaboration : Google Sheets peut être une alternative intéressante.
  8. Pour les développeurs : pandas (Python) ou les bibliothèques JavaScript offrent plus de flexibilité.

En maîtrisant ces techniques, vous serez capable de gérer pratiquement tous les scénarios impliquant des calculs de dates dans Excel, que ce soit pour des projets personnels ou professionnels.

N’oubliez pas que la précision est cruciale lorsque vous travaillez avec des dates – une petite erreur dans une formule peut avoir des conséquences importantes, surtout dans des contextes juridiques ou financiers. Testez toujours vos calculs avec des cas limites et documentez votre travail pour faciliter les audits ou les reprises ultérieures.

Leave a Reply

Your email address will not be published. Required fields are marked *