Excel calcul de la différence entre deux dates (suite)

Fermé
patrick1870 Messages postés 64 Date d'inscription dimanche 23 novembre 2014 Statut Membre Dernière intervention 6 juin 2024 - 27 janv. 2021 à 02:12
Raymond PENTIER Messages postés 58645 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 13 septembre 2024 - 28 janv. 2021 à 02:14
Bonjour à tous,

J'ai clôturé un peu tôt le sujet "excel calcul de la différence entre 2 dates" (https://forums.commentcamarche.net/forum/affich-37059123-excel-calcul-de-la-difference-entre-2-dates)
Je disais qu'après maints essais je n'avais pu reproduire la situation où DATEDIF(date_début;date_fin;"md") retournait un résultat erroné.

En continuant à explorer (car je suis têtu, j'avais constaté une erreur !), je suis retombé sur la situation en question il s'agit de cas où la date de début est antérieure au 1er mars 1900. Dans cette circonstance, même le nombre de mois donné par DATEDIF(date_début;date_fin;"ym") peut être faux.
Par exemple : date_début = 02/01/1900 et date_fin = 01/03/1900

la réponse est 1 mois et 28 jours : du 2 janvier au 2 février s'écoule 1 mois, du 2 février au 28 février s'écoulent 26 jours et du 28 février au 1er mars 1 jour soit 27 jours au total.




Configuration: Windows / Firefox 84.0

3 réponses

Raymond PENTIER Messages postés 58645 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 13 septembre 2024 17 194
28 janv. 2021 à 02:14
Bonjour.

La fonction DATEDIF présente effectivement un certain nombre d'inexactitudes ; c'est bien pourquoi elle ne figure plus dans la liste des fonctions proposées dans Excel.



Pour information, en voici un exemple :

1
patrick1870 Messages postés 64 Date d'inscription dimanche 23 novembre 2014 Statut Membre Dernière intervention 6 juin 2024 11
27 janv. 2021 à 03:52
je m'aperçois que j'ai dû faire une mauvaise manipulation voici le texte intégral :

Bonjour à tous,

J'ai clôturé un peu tôt le sujet "excel calcul de la différence entre 2 dates" (https://forums.commentcamarche.net/forum/affich-37059123-excel-calcul-de-la-difference-entre-2-dates)
Je disais qu'après maints essais je n'avais pu reproduire la situation où DATEDIF(date_début;date_fin;"md") retournait un résultat erroné.

En continuant à explorer (car je suis têtu, j'avais constaté une erreur !), je suis retombé sur la situation en question. Il s'agit de cas où la date de début est antérieure au 1er mars 1900 et où le résultat peut être faux.

Premier exemple : date_début = 02/01/1900 et date_fin = 01/03/1900
la réponse est 1 mois et 28 jours
En comptant sur mes doigts je trouve : du 2 janvier au 2 février s'écoule 1 mois, du 2 février au 28 février s'écoulent 26 jours et du 28 février au 1er mars 1 jour soit 27 jours au total.

Deuxième exemple : date_début = 30/01/1900 et date_fin = 01/03/1900 la réponse est 1 mois moins 1 jour (- 1 jour) !

Troisième exemple : date_début = 25/02/1900 et date_fin = 15/03/1900 la réponse est 19 jours
Comptons : du 25 au 28 février = 3 jours + du 28 février au 1er mars = 1 jour + du 1er mars au 15 mars = 14 jours soit 18 jours au total

J'ai tout d'abord pensé que c'était dû au fait que 1900 est considéré à tort par Excel comme une année bissextile.
Mais si dans les exemples on met 2000 à la place de 1900, le résultat est le même.

C'est peut-être la raison pour laquelle Microsoft ne recommande pas l'utilisation de la fonction DATEDIF avec le paramètre "md".

Comment expliquer ces erreurs ? (j'ai une petite idée mais je dois vérifier)

Merci d'avance pour vos commentaires.

Patrick
0
Abominafreutroce Messages postés 19 Date d'inscription vendredi 22 janvier 2021 Statut Membre Dernière intervention 13 février 2021 1
27 janv. 2021 à 10:36
Bonjour,

Excel dit dans dans sa doc :
https://docs.microsoft.com/fr-fr/office/troubleshoot/excel/determine-a-leap-year
que 1900 est traité comme une année bissextile pour des raisons de compatibilité

2000 était bien une année bissextile

2100 ne l'est pas et Excel le prend bien en compte.

Bonne journée
0
patrick1870 Messages postés 64 Date d'inscription dimanche 23 novembre 2014 Statut Membre Dernière intervention 6 juin 2024 11
27 janv. 2021 à 18:43
Merci abominafreutroce

J'avais bien observé que 1900, sans me l'expliquer, était considéré à tort par excel comme une année bissextile.
Je n'ignorais pas que 2000 était une année bissextile et que 2100 ne le sera pas.

A force d'avoir le nez sur un problème on finit par perdre de vue l'essentiel ...
Il est en effet normal que la réponse pour l'année 2000 soit la même que pour l'année 1900.
Mais alors que c'est une anomalie, assumée par Excel, pour 1900 la réponse est normale pour l'année 2000 (ce qui a fini par m'échapper).

Il reste la formulation curieuse de la réponse à mon 2° exemple avec la date_début 31/01/1900 (et non 30/1/1900 comme indiqué par erreur) où le nombre de jours retourné est -1 (moins 1)
Lorsqu'on remplace 1900 par 2000, la fonction DATEDIF(31/01/2000;01/03/2000;"ym") et DATEDIF(31/01/2000;01/03/2000;"md") retourne 1 mois moins 1 jour
et si on remplace 2000 par 2001, la fonction DATEDIF(31/01/2001;01/03/2001;"ym") et DATEDIF(31/01/2001;01/03/2001;"md") retourne 1 mois moins 2 jours
alors que la réponse attendue dans les deux cas est 1 mois (le mois de février) plus 1 jour (le 1er mars)

Ceci n'est qu'un exemple, et je me demande quelle est la règle appliquée par la fonction DATEDIF pour aboutir à ces résultats.

Si quelqu'un a une idée ...

Encore merci à abominafreutroce d'avoir pris la peine d'écrire pour me ramener à l'essentiel.
0