Calculateur de Jours entre Deux Dates (Excel)
Calculez précisément le nombre de jours, semaines ou mois entre deux dates – comme dans Excel. Parfait pour les projets, les contrats ou la planification financière.
Guide Complet: Calculer le Nombre de Jours entre Deux Dates dans Excel
Le calcul des jours entre deux dates est une opération fondamentale dans Excel, utilisée dans de nombreux contextes professionnels: gestion de projets, calculs financiers, planification des ressources humaines, ou suivi des délais légaux. Ce guide expert vous expliquera toutes les méthodes possibles, avec leurs avantages et limites.
1. Méthode de Base: Soustraction Simple
La méthode la plus simple consiste à soustraire directement deux dates:
- Dans une cellule, entrez votre date de début (ex: A1)
- Dans une autre cellule, entrez votre date de fin (ex: B1)
- Dans une troisième cellule, entrez la formule:
=B1-A1
Excel affichera par défaut le résultat en format date. Pour obtenir le nombre de jours, formatez la cellule en “Nombre”.
2. Fonction DATEDIF: Précision et Flexibilité
La fonction DATEDIF (Date Difference) offre plus de contrôle:
=DATEDIF(date_début; date_fin; unité)
Où “unité” peut être:
"d": Jours complets entre les dates"m": Mois complets entre les dates"y": Années complètes entre les dates"ym": Mois restants après les années complètes"md": Jours restants après les mois complets"yd": Jours restants après les années complètes
| Unité | Exemple | Résultat (pour 15/01/2020 – 20/03/2023) |
|---|---|---|
| “d” | =DATEDIF(“15/01/2020″;”20/03/2023″;”d”) | 1160 |
| “m” | =DATEDIF(“15/01/2020″;”20/03/2023″;”m”) | 38 |
| “y” | =DATEDIF(“15/01/2020″;”20/03/2023″;”y”) | 3 |
| “ym” | =DATEDIF(“15/01/2020″;”20/03/2023″;”ym”) | 2 |
3. Calcul des Jours Ouvrés (Exclure Week-ends et Jours Fériés)
Pour les calculs professionnels, vous devrez souvent exclure les week-ends et jours fériés:
=NETWORKDAYS(date_début; date_fin; [jours_fériés])
Exemple avec jours fériés français (à placer dans une plage comme D1:D10):
=NETWORKDAYS(A1; B1; D1:D10)
Pour une précision maximale, combinez avec:
=NETWORKDAYS.INTL(date_début; date_fin; [weekend]; [jours_fériés])
Où “weekend” peut être:
1: Samedi-Dimanche (défaut)2: Dimanche-Lundi11: Dimanche seulement12: Lundi seulement- etc. (voir documentation Microsoft)
4. Calculs Avancés avec Formules Matricielles
Pour des calculs complexes (comme le nombre de mois partiels), utilisez des formules matricielles:
=SUMPRODUCT(--(YEAR($A$1:$A$100)=2023); --(MONTH($A$1:$A$100)=3))
Cette formule compte le nombre de dates en mars 2023 dans une plage A1:A100.
5. Visualisation des Résultats
Pour présenter vos calculs de manière professionnelle:
- Sélectionnez vos données (dates + résultats)
- Allez dans l’onglet “Insertion”
- Choisissez “Graphique en colonnes” ou “Graphique en barres”
- Personnalisez avec des couleurs d’entreprise
6. Erreurs Courantes et Solutions
| Erreur | Cause | Solution |
|---|---|---|
| ###### | Cellule trop étroite pour afficher la date | Élargissez la colonne ou changez le format |
| #VALEUR! | Format de date incorrect | Vérifiez que les cellules sont formatées en “Date” |
| Résultat négatif | Date de fin antérieure à la date de début | Inversez les dates ou utilisez ABS() |
| #NOM? | Faute de frappe dans le nom de fonction | Vérifiez l’orthographe (DATEDIF, pas DATEDIFF) |
7. Automatisation avec VBA
Pour les utilisateurs avancés, voici un exemple de macro VBA pour calculer les jours ouvrés entre deux dates, en excluant des jours fériés spécifiques:
Function CustomWorkDays(start_date As Date, end_date As Date) As Long
Dim holidays As Variant
holidays = Array("01/01/2023", "17/04/2023", "01/05/2023", "08/05/2023", _
"18/05/2023", "29/05/2023", "14/07/2023", "15/08/2023", _
"01/11/2023", "11/11/2023", "25/12/2023")
CustomWorkDays = 0
Dim current_date As Date
current_date = start_date
Do While current_date <= end_date
If Weekday(current_date, vbMonday) < 6 Then
If Not IsHoliday(current_date, holidays) Then
CustomWorkDays = CustomWorkDays + 1
End If
End If
current_date = current_date + 1
Loop
End Function
Function IsHoliday(check_date As Date, holidays As Variant) As Boolean
Dim i As Integer
For i = LBound(holidays) To UBound(holidays)
If CDate(holidays(i)) = check_date Then
IsHoliday = True
Exit Function
End If
Next i
IsHoliday = False
End Function
8. Comparaison des Méthodes
| Méthode | Précision | Flexibilité | Complexité | Cas d'usage |
|---|---|---|---|---|
| Soustraction simple | ⭐⭐⭐ | ⭐ | ⭐ | Calculs basiques |
| DATEDIF | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | Calculs par unités spécifiques |
| NETWORKDAYS | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | Calculs professionnels |
| Formules matricielles | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | Analyses complexes |
| VBA | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Solutions sur mesure |
9. Bonnes Pratiques
- Validez toujours vos données: Utilisez la validation des données (Onglet Données > Validation des données) pour garantir que seules des dates valides sont entrées.
- Documentez vos formules: Ajoutez des commentaires (clic droit > Insérer un commentaire) pour expliquer les calculs complexes.
- Utilisez des noms de plage: Dans l'onglet Formules > Définir un nom, donnez des noms significatifs à vos plages de dates (ex: "DateDébutProjet").
- Gérez les fuseaux horaires: Pour les projets internationaux, utilisez la fonction
TIMEZONEou convertissez toutes les dates en UTC. - Testez avec des cas limites: Vérifiez vos formules avec des dates identiques, des années bissextiles, et des transitions d'année.
10. Alternatives à Excel
Si vous ne disposez pas d'Excel, voici des alternatives:
- Google Sheets: Utilisez
=DAYS(end_date, start_date)ou=NETWORKDAYS(syntaxe identique à Excel). - Python: Avec la bibliothèque
datetime:from datetime import date d0 = date(2023, 1, 15) d1 = date(2023, 3, 20) delta = d1 - d0 print(delta.days) # Affiche 64 - JavaScript: Dans un navigateur:
const diffTime = Math.abs(new Date("2023-03-20") - new Date("2023-01-15")); const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); console.log(diffDays); // Affiche 64 - SQL: Dans la plupart des SGBD:
SELECT DATEDIFF(day, '2023-01-15', '2023-03-20') AS DayCount;
Conclusion
Maîtriser le calcul des jours entre deux dates dans Excel est une compétence essentielle pour tout professionnel travaillant avec des données temporelles. Que vous ayez besoin d'un simple décompte de jours ou d'un calcul complexe de jours ouvrés excluant les jours fériés spécifiques à votre pays, Excel offre les outils nécessaires.
Pour aller plus loin:
- Explorez les fonctions
EDATEetEOMONTHpour des calculs de dates avancés - Combinez les calculs de dates avec des fonctions conditionnelles comme
IFouSUMIFS - Automatisez vos rapports avec des tableaux croisés dynamiques basés sur des plages de dates
- Découvrez Power Query pour importer et transformer des données temporelles depuis diverses sources
En appliquant les techniques décrites dans ce guide, vous serez capable de gérer n'importe quel scénario impliquant des calculs de dates dans Excel, avec précision et professionnalisme.