Bonsoir Jacques,
On 13/07/2011 23:46, Jacques Montier wrote:

[...]

Bonsoir,

Non, j'avoue que je n'ai pas pensé à l'aide (c'est pas bien, je
sais...), mais j'irai voir.
Je n'ai rien inventé ; les formules ne sont pas vraiment triviales et je
ne suis guère compétent dans les problèmes de calendrier :-(
Dans les en-têtes d'images CCD, en astronomie, les dates sont données en
jour julien et j'avais besoin d'en déduire les dates dans notre
calendrier grégorien via le tableur calc.

Ces formules ont été écrites par Daniel LACROZE-MARTY (merci à lui) pour
Excel, mais fonctionnent très bien pour Calc :
J'ai vérifié les résultats avec le calculateur de l'Institut de
Mécanique Céleste
http://www.imcce.fr/fr/grandpublic/temps/jour_julien.php

- La cellule A1 contient le jour julien

- la cellule B1 donnant le jour doit contenir la formule :
=SI(ENT(A1+0,5)<2299161;ENT(A1+0,5);ENT(A1+0,5)+1+ENT((ENT(A1+0,5)-1867216,25)/36524,25)
-ENT(ENT((ENT(A1+0,5) -1867216,25)/36524,25)/4))+1524
-ENT(365,25*ENT((SI(ENT(A1+0,5)<2299161;ENT(A1+0,5);ENT(A1+0,5)+1+ENT((ENT(A1+0,5)-1867216,25)/36524,25)
-ENT(ENT((ENT(A1+0,5)-1867216,25)/36524,25)/4))+1524-122,1)/365,25))
-ENT(30,6001*ENT((SI(ENT(A1+0,5)<2299161;ENT(A1+0,5) ;
ENT(A1+0,5)+1+ENT((ENT(A1+0,5)-1867216,25)/36524,25)-ENT(ENT((ENT(A1+0,5)-1867216,25)/36524,25)/4))+1524
-ENT(365,25*ENT((SI(ENT(A1+0,5)<2299161 ;
ENT(A1+0,5);ENT(A1+0,5)+1+ENT((ENT(A1+0,5)-1867216,25)/36524,25)-ENT(ENT((ENT(A1+0,5)
-1867216,25)/36524,25)/4))+1524-122,1)/365,25)))/30,6001))

- la cellule C1 donnant le mois doit contenir la formule :
=SI(ENT((SI(ENT(A1+0,5)<2299161;ENT(A1+0,5);ENT(A1+0,5)+1+ENT((ENT(A1+0,5)
-1867216,25)/36524,25)-ENT(ENT((ENT(A1+0,5)-1867216,25)/36524,25)/4))+1524
-ENT(365,25*ENT((SI(ENT(A1+0,5)<2299161;ENT(A1+0,5);ENT(A1+0,5)+1+ENT((ENT(A1+0,5)-1867216,25)/36524,25)
-ENT(ENT((ENT(A1+0,5)-1867216,25)/36524,25)/4))+1524
-122,1)/365,25)))/30,6001)<13,5;ENT((SI(ENT(A1+0,5)<2299161;ENT(A1+0,5);ENT(A1+0,5)+1+ENT((ENT(A1+0,5)
-1867216,25)/36524,25)-ENT(ENT((ENT(A1+0,5)-1867216,25)/36524,25)/4))+1524
-ENT(365,25*ENT((SI(ENT(A1+0,5)<2299161;ENT(A1+0,5);ENT(A1+0,5)+1+ENT((ENT(A1+0,5)-1867216,25)/36524,25)
-ENT(ENT((ENT(A1+0,5)-1867216,25)/36524,25)/4))+1524-122,1)/365,25)))/30,6001)
-1;ENT((SI(ENT(A1+0,5)<2299161;ENT(A1+0,5);ENT(A1+0,5)+1+ENT((ENT(A1+0,5)-1867216,25)/36524,25)
-ENT(ENT((ENT(A1+0,5)-1867216,25)/36524,25)/4))+1524
-ENT(365,25*ENT((SI(ENT(A1+0,5)<2299161;ENT(A1+0,5);ENT(A1+0,5)+1+ENT((ENT(A1+0,5)-1867216,25)/36524,25)
-ENT(ENT((ENT(A1+0,5)-1867216,25)/36524,25)/4))+1524-122,1)/365,25)))/30,6001)-13)

- la cellule D1 donnant l'année doit contenir la formule :
=SI(C1>2,5;ENT((SI(ENT(A1+0,5)<2299161;ENT(A1+0,5);ENT(A1+0,5)+1+ENT((ENT(A1+0,5)
-1867216,25)/36524,25)-ENT(ENT((ENT(A1+0,5)-1867216,25)/36524,25)/4))+1524-122,1)/365,25)
-4716;ENT((SI(ENT(A1+0,5)<2299161;ENT(A1+0,5);ENT(A1+0,5)+1
+ENT((ENT(A1+0,5)-1867216,25)/36524,25)-ENT(ENT((ENT(A1+0,5)-1867216,25)/36524,25)/4))+1524-122,1)
/365,25)-4715)

- la cellule E1 donnant les heures :
=ENT((A1+0,5-ENT(A1+0,5))*24)

- la cellule F1 donnant les minutes :
=ENT((A1+0,5-ENT(A1+0,5))*1440-ENT(E1*60))

- la cellule G1 donnant les secondes (arrondies si l'on veut)
=ARRONDI((A1+0,5-ENT(A1+0,5))*86400-E1*3600-F1*60;0)

Le lien où se trouvent d'autres calculs :
http://www.louisg.net/Formules.htm

Merci pour tes explications, comme tu dis, les formules ne sont pas triviales ;) J'ai ajouté le lien vers les formules sur le wiki dans la partie qui traite des calendriers
http://wiki.documentfoundation.org/FR/Calc:_Fonctions_date_heure#Ann.C3.A9es_avant_1925

À bientôt
Sophie
--
Founding member of The Document Foundation

--
Envoyez un mail à [email protected] pour savoir comment vous 
désinscrire
Les archives de la liste sont disponibles à 
http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne 
pourront pas être supprimés

Répondre à