Dates excel depuis 1900 ou 1904?

Pour mémoire, une date dans un tableur est un nombre réel qui représente les jours écoulés depuis une date origine. Par exemple, 13,5 signifie 13 jours et 12 heures depuis origine. Origine peut être le 1/1/1904 ou le 1/1/1900, selon une préférence attachée au document. C’est simplement le formatage de la cellule qui fait qu’on voit une date et/ou une heure.

Je lis des données dans des feuilles de excel avec 2 plugins, celui de https://github.com/miyako/4d-plugin-free-xlMiyako> ou celui de https://www.pluggers.nl/product/xl-plugin/Rob Lavaux>. Les deux, quand la cellule lue est une date, retournent le nombre (et non le nombre-formaté-en-date tel qu’on le voit dans la feuille). J’ai de quoi convertir, mais si je ne connais pas origine, je peux me planter de 4 ans. J’ai une piste qui consiste à lire le formatage du nombre-représenté-en-date de la feuille, mais ça me complique beaucoup la vie.

Quelqu’un a une idée ?

[]31681086;“Plugin de Rob…”[/]
D’après la doc du plugin de Rob il retourne les 2 la date ET le chiffre en milliseconde ?

Plus loin, on peut lire cela:
Please note that Excel stores date/time values as numbers. To display the number as a date or time, you need to apply a numeric format to the cell. See the command xlFormatSetNumFormat for more information.

On trouve aussi page 27 de la doc le format d’affichage des Years il indique 1900-9999 je ne sais pas si c’est une indication. :expressionless:

En fait, je connais les positions des colonnes de date. Si je pouvais lire quelque part la date d’origine utilisée par la feuille, ça me demanderait peu de code 4d ; là je dois tout faire en plug, lire le formatage puis convertir en date. Pas grave…

J’ai pas tout suivi ?
Tu dis connaitre les positions des colonnes de date : parfait; dans ce cas quel est ton problème ? avec la commande de lecture du plug de Rob il te retourne la date au format 4D non ?

Savoir que le colonne est de type date ne me suffit pas, il me faut aussi la valeur du paramètre origine de la feuille (1990 ou 1904), sinon je risque de tout décaler de 4 ans. Apparemment, le plugin n’a pas de commande pour lire cette valeur, par contre il doit la lire sans quoi sa commande xlSheetGetCellDateTime risquerait de produire ce décalage.

Bon, pas grave, je fais :
Code :
lire type cellule
si type = nombre, lire le format
si format = date, convertir en date avec xlSheetGetCellDateTime

:idea: Si t’as un doute je serais toi je ferais un petit mail à Rob nul doute qu’il te dira ce qu’il fait si besoin.

Pour les dates, c’est ok. Maintenant ce sont les numéros de sécu vécus comme des nombres qui me font des misères : sans clé, ça passe (13 chiffres significatifs) mais avec la clé (15 chiffres significatifs) c’est la cata des arrondis. Je déprime.