LGPDM

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 2 août 2006

OpenDocument en Espagne

D'après cet article, l'Estrémadure (une des 17 communautés autonomes d'Espagne) passe sur Linux et le format de fichier OpenDocument (le format de la suite bureautique libre OpenOffice.org). Une bonne nouvelle, cela vas dans le même sens que ce que propose la France, le Danemark, la Belgique, Le Massachusetts ...

Pourquoi les formats ouverts ? Tout simplement parce qu'ils permettent de garantir la pérénité des données et sont le pivot de l'interopérabilité.

Refs :

Rappel : Microsoft propose un Add-in pour lire les fichiers OpenDocument dans Microsoft Office (ref).

mercredi 18 janvier 2006

Excel vs OpenOffice Calc : Le 16 janvier 1900, un Lundi ou un Mardi ?

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