mercredi 18 janvier 2006
Excel vs OpenOffice Calc : Le 16 janvier 1900, un Lundi ou un Mardi ?
Par Florent Manens, mercredi 18 janvier 2006 à 01:03 :: Informatique
Par hasard, j'ai découvert un comportement bizarre sur OpenOffice et Excel.
Rappel : dans ces deux tableurs, les dates sont comptés en nombre de jours depuis une date de référence. Par exemple, OpenOffice compte les jours depuis le 30/12/1899. Aujourd'hui nous sommes au jour n° 38735 (le 18 janvier 2006), un mercredi.
Excel et OpenOfficesont en accord sur :
- le nombre de jour entre la date initiale et le jour actuel
- le jour de la semaine de la date actuelle.
Tout semble bien fonctionner SAUF dans certains cas.
Par exemple, au lieu d'avoir une date récente, je vais utiliser une date plus ancienne, le 16 janvier 1900 par exemple.
Dans OpenOffice, si je saisit : 16/1/1900 dans le tableur, la date s'affiche. Si j'affiche le jour uniquement (format personnalisé puis "JJJ"), J'ai un Mardi qui s'affiche. Dans Excel, avec la même manipulation, C'est un Lundi qui s'affiche.
Il y donc dans ce cas un décalage de 1 jour.
Comme il ne peut y avoir qu'une seule bonne réponse, j'ai utilisé Google et la commande "cal 1900". Le résultat est flagrand, Excel a faux, OOo Win ! :
1900 janvier février mars di lu ma me je ve sa di lu ma me je ve sa di lu ma me je ve sa 1 2 3 4 5 6 1 2 3 1 2 3 7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10 14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17 21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24 28 29 30 31 25 26 27 28 25 26 27 28 29 30 31 avril mai juin di lu ma me je ve sa di lu ma me je ve sa di lu ma me je ve sa 1 2 3 4 5 6 7 1 2 3 4 5 1 2 8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9 15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16 22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23 29 30 27 28 29 30 31 24 25 26 27 28 29 30 juillet août septembre di lu ma me je ve sa di lu ma me je ve sa di lu ma me je ve sa 1 2 3 4 5 6 7 1 2 3 4 1 8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8 15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15 22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22 29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29 30 octobre novembre décembre di lu ma me je ve sa di lu ma me je ve sa di lu ma me je ve sa 1 2 3 4 5 6 1 2 3 1 7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8 14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15 21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22 28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29 30 31
Pour tout dire, il y a une explication rationnelle à ça. Premièrement, la date de départ des 2 applications n'est pas la même (par défaut) :
- le 0 Janvier 1900 pour Excel (oui oui, le 0, =annee(0) retourne 1900 et pas 1899)
- le 30 Décembre 1899 pour OpenOffice.org
(fatigue : je viens de prendre le trognon de pomme sur le bord de la table pour une souris)
La différence au niveau de point de départ permet d'expliquer la différence sur les dates en 1900. Cependant, ça n'explique pas comment au bout d'un certain temps les 2 logiciels fonctionnent de façon identique. Alors, Bug de Excel ? Et bien ... non, ça n'est pas vraiment un bug. C'est une fonctionnalitée choisie par l'éditeur pour garder une compatibilitée avec lotus 123 (qui lui avait le bug), un "By design". Pour être précis, le décalage continue jusqu'au 29 février 1900 (date qui n'a jamais existée, sauf dans lotus 123 et Excel :p).
Du coup, je me pose une question, que je laisserai ouverte pour le moment : dans quelle mesure doit-on garder des éléments de compatibilitée avec d'autres applications ? Peut-on introduire des erreurs de calculs pour des raisons de compatibilitée ?
Edit: un lien vers la "knowledge Base" de microsoft : http://support.microsoft.com/kb/214058/en-us
9921 lectures :: 4 commentaires :: un trackback