Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Calcule Jour de Pâques

28 réponses
Avatar
JC
Bonjour,
Il me semble avoir vu sur ce forum une formule qui calculait quel était le
jour de pâques, mais je ne la retrouve plus. quelqu'un a une idée

Merci
Joe

10 réponses

1 2 3
Avatar
à Becassine ???
;-)))
toujours à l'affut de tes épatrouillantes gognandises...
c'est en effet chez www.herber.de que j'ai récupéré cette
compilation que j'ai religieusement gardé dessous mon
coude.
mais comme je ne pratique en aucune façon la langue de
Goethe ???,
j'ai bien eu quelques difficultes en en comprendre toutes
les subtilités.
notament cette curieuse formule
de "" dans laquelle je subodore un
probleme de calcul d'epacte ????
c'est me semble-t-il la seule qui fournisse des résultats
erronés

au plaisir de te lire et peut-etre de te rencontrer

Modeste
@+

-----Message d'origine-----

Salut Modeste,

Pour compléter, une explication de la 1ère formule par
son auteur, Norbert

Hetterich:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. My exact formula was the german version of
the 'currency' type:


=DM((TAG(MINUTE(A1/38)/2+55)&".4."&A1)/7;)*7-6

Your 'franc'-formula is the translation into french excel
terms and should work

with a french excel ( excel 95 and above ) for the years
from 1900 to 2078.


The other formula also works, if you have an english
excel.


The formulas were the result of an international contest
for the shortest german

easter sunday formula. The contest was intiated by the
german excel expert Hans

W. Herber ( see www.herber.de ). The first 20 formulas
are enclosed in

eformula.zip .

The formulas should work for the years 1900 to 2078,
which is the range of years

that Excel 95 can handle.

One could also give an english formula. My formula would
translate to

=DOLLAR((DAY(MINUTE(A1/38)/2+55)&".4."&A1)/7,)*7-6
But this is 5 characters longer than the also working
=FLOOR(DAY(MINUTE(A1/38)/2+56)&"/5/"&A1,7)-34 and so I
published the latter

formula.
Note: for american date formats they do not work; day and
month have to be

changed in order to work properly!

The first term is always a function that rounds or
truncates to integer. In

german excel the DM-function is the shortest way, FLOOR
would translate to

UNTERGRENZE. There is no way to compute an integer
division like in Visual Basic

with the backslash; a function has to be used.

2. Explanation of the formulas

Here I will describe the FLOOR formula, the way to the
currency formula is

similar:

Easter Sunday is defined to be the first sunday after the
first full moon in

spring.

Let 'b' be the number of days after the start of spring
on 21st of march, then

the date of the first full moon evaluates from te
(y,3,21+b) or as a literal

=(21+b)&"/3/"&y or =(b-10)&"/4/"&y with Y = year.

A date in excel is internally represented by an integer (
with 1/1/1900 = 1 ).


So an integer division by 7 after adding 6 to the day-
field yields the weeks

since 1.jan 1900.
After multiplying with 7 and adding 1 you have the easter
sunday =

(date(y,3,21+b+6)7) * 7 + 1 or [backslash int div not
supported in functions]

= floor(date(y,3,27+b),7) + 1 or
= floor(date(y,4,b-4),7) + 1 or
= floor(date(y,4,b+31),7) - 34 or
= floor(date(y,5,b+1),7) - 34 or as literal
= floor((b+1)&"/5/"&Y,7) - 34
equivalent is
= dollar((b&"/4/"&Y)/7) * 7 - 6

There are several methods for calculating 'b'. One of
them is the Carter

formula, which gives correct results in the mentioned
range:


b = mod(19*mod(y,19)-6,30)
if b 27 : b = b - 1

After some modulo arithmetics you receive for 'b'

mod(19*(mod(y,19)-6,30)
=
mod(19*19*(mod(y/19,1)-6,30)
=
mod(361*(mod(y/19,1)-6,30)
~
mod(360*(mod(y/19,1)-6,30)
=
mod(360*y/19-6,30)
~
day(mod(360*y/19,30)+55)

and for 'b+1'

day(mod(360*y/19,30)+56)

The day function is used to handle the case
differentiation for b 27.

It would be to lengthy to do it with the if-function.
(The formula calculates b% where it should be 26; this
doesn't matter in the

given range of years 1900 - 2078 ; but does not work for
2079 !)


After replacing the modulo 30 calculation by the minute-
function, which computes

modulo 60, you get the final result in literal date form
as

=floor(day(minute(y/38)/2+56)&"/5/"&y,7)-34

The other floor-functions mentioned above would be more
lengthy, because the

day-function the way it is used only gives correct
results if the additive term

is 55 or 56. An example is

=floor((day(minute(y/38)/2+55)-4)&"/4/"&y,7)+1 or
=floor(date(y,4,day(minute(y/38)/2+55)-4),7)+1

which in both cases has three characters more.

Norbert Hetterich

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Amicalement,

Croquignol


Bonjour Charles,
;-)))
oui hélas et faute d'avoir vérifié, ce n'est pas la
seule


erreur....

1986,1989,1997,2005,2008,2016,2024,2027,2035,2043,2046,2054


2062,2065,2073
J'avais surtout proposé cette formule pour son aspect
curieux et toutefois précisé :
ne demande SURTOUT pas comment on arrive à ce résultat
:-)


pour etre exhaustif a ce sujet et coherents sur la
plage


1979/2078 :

=PLANCHER(JOUR(MINUTE(A1/38)/2+56)&"/5/"&A1;7)-34

la formule la plus courte 49 caractères !!!!

=FRANC(("4/"&A1)/7+MOD(19*MOD(A1;19)-7;30)*14%;)*7-6


=PLANCHER(DATE(A1;3;MOD(18,37*MOD(A1;19)-6;29));7)+29


=TRONQUE(DATE(A1;3;MOD(349*MOD(A1/19;1)-6;29))/7)*7+29


=7*TRONQUE(DATE(A1;3;MOD(18,37*MOD(A1;19)-6;29))/7)+29


)+7*TRONQUE(DATE(A1;3;MOD(19*MOD(A1;19)-6;30)*96%)/7)


=TRONQUE(DATE(A1;4;MOD(19*MOD(A1;19)-6;30)*96%-3)/7)*7+1


=ENT(PLANCHER("3/5/"&A1;29,5311)/7-(MOD(A1;95)))*7-6


=PLAFOND(("17/4/"&A1)-TRONQUE(MOD(11*MOD(A1;19)+5;30)-
1,5);7)+1


=PLAFOND(DATE(A1;4;20)-MOD(6+11*MOD(A1;19);30)-(MOD
(6+11*MOD(A1;19);30)<3);7)+1


=7*TRONQUE((MOD(MOD(A1;19)*19-6;30)+365,25*A1-
693881)/7)-SI


(OU(A150+{4;31;99;126});7)-6


TE(A1;3;28)+MOD(24-MOD(A1;19)*10,63;29)-MOD(TRONQUE
(A1*5/4)+MOD(24-MOD(A1;19)*10,63;29)+1;7)


TE(A1;3;29,56+0,979*MOD(204-11*MOD(A1;19);30)-JOURSEM
(DATE(A1;3;28,56+0,979*MOD(204-11*MOD(A1;19);30))))


TE(A1;3;28+MOD(204-11*MOD(A1;19);30))-MOD(DATE
(A1;3;6+MOD(204-11*MOD(A1;19);30));7)-SI(OU
(A154;A181;A1 49;A1 76);7)


=TRONQUE(365,25*A1-693894)+SI(OU
(A154;A181;A1 49;A1 76);;7)+MOD(24-11*MOD
(A1;19);30)-MOD(A1+TRONQUE(A1/4)+MOD(24-11*MOD
(A1;19);30)


+1;7)


TE(A1;4;MOD(24-11*MOD(A1;19);30)-MOD(1+ENT(A1*5/4)
+MOD


(24-11*MOD(A1;19);30)-(MOD(24-11*MOD(A1;19);30)>27);7)-
(MOD


(24-11*MOD(A1;19);30)>27)-3)


TE(A1;3;28)+MOD(24-11*MOD(A1;19);30)-(MOD(24-11*MOD
(A1;19);30)>27)-MOD(ENT(5*A1/4)+1+MOD(24-11*MOD
(A1;19);30)-


(MOD(24-11*MOD(A1;19);30)>27);7)


TE(A1;3;28)+MOD(24+19*MOD(A1;19);30)-(MOD(24+19*MOD
(A1;19);30)>27)-MOD(ENT(A1+A1/4)+MOD(24+19*MOD
(A1;19);30)-


(MOD(24+19*MOD(A1;19);30)>27)+1;7)


toutes ces formules sont disponibles sur Excelabo.net
fichier gd-feries.zip ?
@+
.






Avatar
manu l.
Bonjour à tous,

En complément le cite ci-dessous propose le calcul avec différents
algorithmes de différentes dates :

http://www.dioceserimouski.com/ch/paquescalc2.html

Faites votre choix.

Meilleures salutations.

--
manu l.

"Modeste" a écrit dans le message de
news:034a01c392f6$4c6b33d0$
Bonjour Charles,
;-)))
oui hélas et faute d'avoir vérifié, ce n'est pas la seule
erreur....
1986,1989,1997,2005,2008,2016,2024,2027,2035,2043,2046,2054
2062,2065,2073
J'avais surtout proposé cette formule pour son aspect
curieux et toutefois précisé :
ne demande SURTOUT pas comment on arrive à ce résultat
:-)


pour etre exhaustif a ce sujet et coherents sur la plage
1979/2078 :

=PLANCHER(JOUR(MINUTE(A1/38)/2+56)&"/5/"&A1;7)-34

la formule la plus courte 49 caractères !!!!

=FRANC(("4/"&A1)/7+MOD(19*MOD(A1;19)-7;30)*14%;)*7-6


=PLANCHER(DATE(A1;3;MOD(18,37*MOD(A1;19)-6;29));7)+29


=TRONQUE(DATE(A1;3;MOD(349*MOD(A1/19;1)-6;29))/7)*7+29


=7*TRONQUE(DATE(A1;3;MOD(18,37*MOD(A1;19)-6;29))/7)+29


)+7*TRONQUE(DATE(A1;3;MOD(19*MOD(A1;19)-6;30)*96%)/7)


=TRONQUE(DATE(A1;4;MOD(19*MOD(A1;19)-6;30)*96%-3)/7)*7+1


=ENT(PLANCHER("3/5/"&A1;29,5311)/7-(MOD(A1;95)))*7-6


=PLAFOND(("17/4/"&A1)-TRONQUE(MOD(11*MOD(A1;19)+5;30)-
1,5);7)+1


=PLAFOND(DATE(A1;4;20)-MOD(6+11*MOD(A1;19);30)-(MOD
(6+11*MOD(A1;19);30)<3);7)+1


=7*TRONQUE((MOD(MOD(A1;19)*19-6;30)+365,25*A1-693881)/7)-SI
(OU(A150+{4;31;99;126});7)-6


ÚTE(A1;3;28)+MOD(24-MOD(A1;19)*10,63;29)-MOD(TRONQUE
(A1*5/4)+MOD(24-MOD(A1;19)*10,63;29)+1;7)


ÚTE(A1;3;29,56+0,979*MOD(204-11*MOD(A1;19);30)-JOURSEM
(DATE(A1;3;28,56+0,979*MOD(204-11*MOD(A1;19);30))))


ÚTE(A1;3;28+MOD(204-11*MOD(A1;19);30))-MOD(DATE
(A1;3;6+MOD(204-11*MOD(A1;19);30));7)-SI(OU
(A154;A181;A1 49;A1 76);7)


=TRONQUE(365,25*A1-693894)+SI(OU
(A154;A181;A1 49;A1 76);;7)+MOD(24-11*MOD
(A1;19);30)-MOD(A1+TRONQUE(A1/4)+MOD(24-11*MOD(A1;19);30)
+1;7)


ÚTE(A1;4;MOD(24-11*MOD(A1;19);30)-MOD(1+ENT(A1*5/4)+MOD
(24-11*MOD(A1;19);30)-(MOD(24-11*MOD(A1;19);30)>27);7)-(MOD
(24-11*MOD(A1;19);30)>27)-3)


ÚTE(A1;3;28)+MOD(24-11*MOD(A1;19);30)-(MOD(24-11*MOD
(A1;19);30)>27)-MOD(ENT(5*A1/4)+1+MOD(24-11*MOD(A1;19);30)-
(MOD(24-11*MOD(A1;19);30)>27);7)


ÚTE(A1;3;28)+MOD(24+19*MOD(A1;19);30)-(MOD(24+19*MOD
(A1;19);30)>27)-MOD(ENT(A1+A1/4)+MOD(24+19*MOD(A1;19);30)-
(MOD(24+19*MOD(A1;19);30)>27)+1;7)


toutes ces formules sont disponibles sur Excelabo.net
fichier gd-feries.zip ?
@+

Avatar
C'est ma cousine ! ;-)
Bonjour Modeste :-)


;-)))


C'est la faute à Netscape. Et moi qui faisais de la pub pour cette merdouille 5
minutes avant. :-(((

c'est en effet chez www.herber.de que j'ai récupéré cette
compilation que j'ai religieusement gardé dessous mon
coude.


Tu as très bien fait, car apparemment il l'a supprimé de son site. Dommage !

mais comme je ne pratique en aucune façon la langue de
Goethe ???,
j'ai bien eu quelques difficultes en en comprendre toutes
les subtilités.
notament cette curieuse formule
de "" dans laquelle je subodore un
probleme de calcul d'epacte ????
c'est me semble-t-il la seule qui fournisse des résultats
erronés


Ah bon ? Je pensais qu'Hans Herber avait consciencieusement tout vérifié.

Amicalement,

Croquignol

Avatar
Croquignol

notament cette curieuse formule
de "" dans laquelle je subodore un
probleme de calcul d'epacte ????
c'est me semble-t-il la seule qui fournisse des résultats
erronés


OK, vu. La formule correcte est :

=TRONQUE(DATE(A12;7;-CODE(STXT("NYdQJT_LWbOZeR]KU`";MOD(A12;19)+1;1)))/7)*7+8

Il faut remplacer les majuscules en positions 3, 11 et 14 de la chaîne par des
minuscules (D, B et E par d, b et e). Sans doute une petite erreur de manip de
H. Herber quand il avait construit son classeur eformula.

Amicalement,

Croq

Avatar
Croquignol
Oups, petite bourde en nettoyant le message de Norbert. Voilà le texte exact :

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. My exact formula was the german version of the 'currency' type:

=DM((TAG(MINUTE(A1/38)/2+55)&".4."&A1)/7;)*7-6

Your 'franc'-formula is the translation into french excel terms and should work
with a french excel ( excel 95 and above ) for the years from 1900 to 2078.

The other formula also works, if you have an english excel.

The formulas were the result of an international contest for the shortest german
easter sunday formula. The contest was intiated by the german excel expert Hans
W. Herber ( see www.herber.de ). The first 20 formulas are enclosed in
eformula.zip .

The formulas should work for the years 1900 to 2078, which is the range of years
that Excel 95 can handle.

One could also give an english formula. My formula would translate to
=DOLLAR((DAY(MINUTE(A1/38)/2+55)&".4."&A1)/7,)*7-6
But this is 5 characters longer than the also working
=FLOOR(DAY(MINUTE(A1/38)/2+56)&"/5/"&A1,7)-34 and so I published the latter
formula.
Note: for american date formats they do not work; day and month have to be
changed in order to work properly!

The first term is always a function that rounds or truncates to integer. In
german excel the DM-function is the shortest way, FLOOR would translate to
UNTERGRENZE. There is no way to compute an integer division like in Visual Basic
with the backslash; a function has to be used.

2. Explanation of the formulas

Here I will describe the FLOOR formula, the way to the currency formula is
similar:

Easter Sunday is defined to be the first sunday after the first full moon in
spring.

Let 'b' be the number of days after the start of spring on 21st of march, then
the date of the first full moon evaluates from Úte(y,3,21+b) or as a literal
=(21+b)&"/3/"&y or =(b-10)&"/4/"&y with Y = year.

A date in excel is internally represented by an integer ( with 1/1/1900 = 1 ).

So an integer division by 7 after adding 6 to the day-field yields the weeks
since 1.jan 1900.
After multiplying with 7 and adding 1 you have the easter sunday (date(y,3,21+b+6)7) * 7 + 1 or [backslash int div not supported in functions]
= floor(date(y,3,27+b),7) + 1 or
= floor(date(y,4,b-4),7) + 1 or
= floor(date(y,4,b+31),7) - 34 or
= floor(date(y,5,b+1),7) - 34 or as literal
= floor((b+1)&"/5/"&Y,7) - 34
equivalent is
= dollar((b&"/4/"&Y)/7) * 7 - 6

There are several methods for calculating 'b'. One of them is the Carter
formula, which gives correct results in the mentioned range:

b = mod(19*mod(y,19)-6,30)
if b > 27 : b = b - 1

After some modulo arithmetics you receive for 'b'

mod(19*(mod(y,19)-6,30)
mod(19*19*(mod(y/19,1)-6,30)
mod(361*(mod(y/19,1)-6,30)
~
mod(360*(mod(y/19,1)-6,30)
mod(360*y/19-6,30)
~
day(mod(360*y/19,30)+55)

and for 'b+1'

day(mod(360*y/19,30)+56)

The day function is used to handle the case differentiation for b > 27.
It would be to lengthy to do it with the if-function.
(The formula calculates b% where it should be 26; this doesn't matter in the
given range of years 1900 - 2078 ; but does not work for 2079 !)

After replacing the modulo 30 calculation by the minute-function, which computes
modulo 60, you get the final result in literal date form as
=floor(day(minute(y/38)/2+56)&"/5/"&y,7)-34

The other floor-functions mentioned above would be more lengthy, because the
day-function the way it is used only gives correct results if the additive term
is 55 or 56. An example is

=floor((day(minute(y/38)/2+55)-4)&"/4/"&y,7)+1 or
=floor(date(y,4,day(minute(y/38)/2+55)-4),7)+1

which in both cases has three characters more.

Norbert Hetterich

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~





Salut Modeste,

Pour compléter, une explication de la 1ère formule par son auteur, Norbert
Hetterich:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. My exact formula was the german version of the 'currency' type:

=DM((TAG(MINUTE(A1/38)/2+55)&".4."&A1)/7;)*7-6

Your 'franc'-formula is the translation into french excel terms and should work
with a french excel ( excel 95 and above ) for the years from 1900 to 2078.

The other formula also works, if you have an english excel.

The formulas were the result of an international contest for the shortest german
easter sunday formula. The contest was intiated by the german excel expert Hans
W. Herber ( see www.herber.de ). The first 20 formulas are enclosed in
eformula.zip .

The formulas should work for the years 1900 to 2078, which is the range of years
that Excel 95 can handle.

One could also give an english formula. My formula would translate to
=DOLLAR((DAY(MINUTE(A1/38)/2+55)&".4."&A1)/7,)*7-6
But this is 5 characters longer than the also working
=FLOOR(DAY(MINUTE(A1/38)/2+56)&"/5/"&A1,7)-34 and so I published the latter
formula.
Note: for american date formats they do not work; day and month have to be
changed in order to work properly!

The first term is always a function that rounds or truncates to integer. In
german excel the DM-function is the shortest way, FLOOR would translate to
UNTERGRENZE. There is no way to compute an integer division like in Visual Basic
with the backslash; a function has to be used.

2. Explanation of the formulas

Here I will describe the FLOOR formula, the way to the currency formula is
similar:

Easter Sunday is defined to be the first sunday after the first full moon in
spring.

Let 'b' be the number of days after the start of spring on 21st of march, then
the date of the first full moon evaluates from Úte(y,3,21+b) or as a literal
=(21+b)&"/3/"&y or =(b-10)&"/4/"&y with Y = year.

A date in excel is internally represented by an integer ( with 1/1/1900 = 1 ).

So an integer division by 7 after adding 6 to the day-field yields the weeks
since 1.jan 1900.
After multiplying with 7 and adding 1 you have the easter sunday > (date(y,3,21+b+6)7) * 7 + 1 or [backslash int div not supported in functions]
= floor(date(y,3,27+b),7) + 1 or
= floor(date(y,4,b-4),7) + 1 or
= floor(date(y,4,b+31),7) - 34 or
= floor(date(y,5,b+1),7) - 34 or as literal
= floor((b+1)&"/5/"&Y,7) - 34
equivalent is
= dollar((b&"/4/"&Y)/7) * 7 - 6

There are several methods for calculating 'b'. One of them is the Carter
formula, which gives correct results in the mentioned range:

b = mod(19*mod(y,19)-6,30)
if b 27 : b = b - 1

After some modulo arithmetics you receive for 'b'

mod(19*(mod(y,19)-6,30)
mod(19*19*(mod(y/19,1)-6,30)
mod(361*(mod(y/19,1)-6,30)
~

mod(360*(mod(y/19,1)-6,30)
mod(360*y/19-6,30)
~

day(mod(360*y/19,30)+55)

and for 'b+1'

day(mod(360*y/19,30)+56)

The day function is used to handle the case differentiation for b 27.
It would be to lengthy to do it with the if-function.
(The formula calculates b% where it should be 26; this doesn't matter in the
given range of years 1900 - 2078 ; but does not work for 2079 !)

After replacing the modulo 30 calculation by the minute-function, which computes
modulo 60, you get the final result in literal date form as
=floor(day(minute(y/38)/2+56)&"/5/"&y,7)-34

The other floor-functions mentioned above would be more lengthy, because the
day-function the way it is used only gives correct results if the additive term
is 55 or 56. An example is

=floor((day(minute(y/38)/2+55)-4)&"/4/"&y,7)+1 or
=floor(date(y,4,day(minute(y/38)/2+55)-4),7)+1

which in both cases has three characters more.

Norbert Hetterich

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Amicalement,

Croquignol


Bonjour Charles,
;-)))
oui hélas et faute d'avoir vérifié, ce n'est pas la seule
erreur....
1986,1989,1997,2005,2008,2016,2024,2027,2035,2043,2046,2054
2062,2065,2073
J'avais surtout proposé cette formule pour son aspect
curieux et toutefois précisé :
ne demande SURTOUT pas comment on arrive à ce résultat
:-)


pour etre exhaustif a ce sujet et coherents sur la plage
1979/2078 :

=PLANCHER(JOUR(MINUTE(A1/38)/2+56)&"/5/"&A1;7)-34

la formule la plus courte 49 caractères !!!!

=FRANC(("4/"&A1)/7+MOD(19*MOD(A1;19)-7;30)*14%;)*7-6


=PLANCHER(DATE(A1;3;MOD(18,37*MOD(A1;19)-6;29));7)+29


=TRONQUE(DATE(A1;3;MOD(349*MOD(A1/19;1)-6;29))/7)*7+29


=7*TRONQUE(DATE(A1;3;MOD(18,37*MOD(A1;19)-6;29))/7)+29


)+7*TRONQUE(DATE(A1;3;MOD(19*MOD(A1;19)-6;30)*96%)/7)


=TRONQUE(DATE(A1;4;MOD(19*MOD(A1;19)-6;30)*96%-3)/7)*7+1


=ENT(PLANCHER("3/5/"&A1;29,5311)/7-(MOD(A1;95)))*7-6


=PLAFOND(("17/4/"&A1)-TRONQUE(MOD(11*MOD(A1;19)+5;30)-
1,5);7)+1


=PLAFOND(DATE(A1;4;20)-MOD(6+11*MOD(A1;19);30)-(MOD
(6+11*MOD(A1;19);30)<3);7)+1


=7*TRONQUE((MOD(MOD(A1;19)*19-6;30)+365,25*A1-693881)/7)-SI
(OU(A150+{4;31;99;126});7)-6


ÚTE(A1;3;28)+MOD(24-MOD(A1;19)*10,63;29)-MOD(TRONQUE
(A1*5/4)+MOD(24-MOD(A1;19)*10,63;29)+1;7)


ÚTE(A1;3;29,56+0,979*MOD(204-11*MOD(A1;19);30)-JOURSEM
(DATE(A1;3;28,56+0,979*MOD(204-11*MOD(A1;19);30))))


ÚTE(A1;3;28+MOD(204-11*MOD(A1;19);30))-MOD(DATE
(A1;3;6+MOD(204-11*MOD(A1;19);30));7)-SI(OU
(A154;A181;A1 49;A1 76);7)


=TRONQUE(365,25*A1-693894)+SI(OU
(A154;A181;A1 49;A1 76);;7)+MOD(24-11*MOD
(A1;19);30)-MOD(A1+TRONQUE(A1/4)+MOD(24-11*MOD(A1;19);30)
+1;7)


ÚTE(A1;4;MOD(24-11*MOD(A1;19);30)-MOD(1+ENT(A1*5/4)+MOD
(24-11*MOD(A1;19);30)-(MOD(24-11*MOD(A1;19);30)>27);7)-(MOD
(24-11*MOD(A1;19);30)>27)-3)


ÚTE(A1;3;28)+MOD(24-11*MOD(A1;19);30)-(MOD(24-11*MOD
(A1;19);30)>27)-MOD(ENT(5*A1/4)+1+MOD(24-11*MOD(A1;19);30)-
(MOD(24-11*MOD(A1;19);30)>27);7)


ÚTE(A1;3;28)+MOD(24+19*MOD(A1;19);30)-(MOD(24+19*MOD
(A1;19);30)>27)-MOD(ENT(A1+A1/4)+MOD(24+19*MOD(A1;19);30)-
(MOD(24+19*MOD(A1;19);30)>27)+1;7)


toutes ces formules sont disponibles sur Excelabo.net
fichier gd-feries.zip ?
@+





Avatar
Misange
Bon ben si j'ai le courage de traduire tout cela, je le mettrai en ligne sur
excelabo (avec l'origine !) car quand même c'est une sacré rigolade ces
formules et ce serait vraiment dommage que ce concours se perde.
Merci à vous deux pour ces différentes précisions.
--
Misange migrateuse http://www.excelabo.net
==Disciplus a migré chez excelabo !======= mail : http://cerbermail.com/?k5Q8Dh2mta




"Croquignol" a écrit dans le message de news:



notament cette curieuse formule
de "" dans laquelle je subodore un
probleme de calcul d'epacte ????
c'est me semble-t-il la seule qui fournisse des résultats
erronés


OK, vu. La formule correcte est :


=TRONQUE(DATE(A12;7;-CODE(STXT("NYdQJT_LWbOZeR]KU`";MOD(A12;19)+1;1)))/7)*7

+8

Il faut remplacer les majuscules en positions 3, 11 et 14 de la chaîne par
des

minuscules (D, B et E par d, b et e). Sans doute une petite erreur de
manip de

H. Herber quand il avait construit son classeur eformula.

Amicalement,

Croq



Avatar
Daniel.M
Salut Modeste,

notament cette curieuse formule
de "" dans laquelle je subodore un
probleme de calcul d'epacte ????
c'est me semble-t-il la seule qui fournisse des résultats
erronés


Les formules fournissent TOUTES des résultats erronés à un moment donné ou un
autre puisque l'algo de calcul de Pâques nécessiterait une très longue formule
pour être calculé exactement.

En passant, il existe une fonction VBA qui donne toujours les bons résultats
(pour les dates modernes, i.e post 1900) et c'est la fonction EASTER(). Elle est
disponible dans un classeur de Frédéric Sigonneau (qu'il a lui-même récupéré de
Laurent, auteur original inconnu).

Pour revenir aux formules, la stratégie générale consiste souvent à approximer
(à la façon d'une droite de régression) le mercredi midi de la semaine de Pâques
(à partir du début de l'année). Ainsi, on 'espère' gommer les petites déviations
lorsqu'on divise par 7 (pour trouver la semaine).

AMA, celui qui a le mieux réussi est Gerhard Somitsch. On peut tester son algo
et voir qu'il récupère les bons dimanches de Pâques jusqu'en 2200 (calendrier
1900/1904 compatible et indépendant du sytème de représentation des dates).
Après 2200, son algo produit plusieurs erreurs (5.8% de résultats inexacts
pendant le 24e siècle), ce qui indique clairement qu'il a poussé sa régression
exactement de 1900 jusqu'en 2200 (et pas plus loin).
C'est un peu plus long mais c'est plus que du bonbon.

ÚTE(A_;3;29,56+0,979*MOD(204-11*MOD(A_;19);30)-
JOURSEM(DATE(A_;3;28,56+0,979*MOD(204-11*MOD(A_;19);30))))


Pour le calendrier 1900 uniquement, j'aime aussi beaucoup la formule de Thomas
Jansen. Elle fonctionne jusqu'en 2200 sans exception, est indépendante de la
représentation des dates (pas besoin de l'adapter) et est à peine 10 caractères
plus longue que celle de Norbert Hetterich (la plus courte).
=FRANC((DATE(A_;4;1))/7+MOD(19*MOD(A_;19)-7;30)*14%;)*7-6

Bien à vous,

Daniel M.

Avatar
Match
Merci à tous et toutes pour ces multiples "lumières à ma lanterne" de Pâques
ou d'Halloween.
Vos réponses me ramène à la vie et sont aussi "du bonbon" !

Charles
Avatar
gee-dee-
;-)))
merci Daniel, merci Ribouldingue,
je ne m'etonne même plus ....
qui corrige, qui améliore, qui adapte, qui explique ....
cela fait chaud au coeur de cotoyer un bande d'illuminés de cet accabit !

après tout ça, les petits problemes de spams peuvent paraitre bien
futiles....
;-)))
Modeste
@+
Avatar
Frédéric Sigonneau
Bonsoir Daniel (et tout' la gang de cette ficelle :),


Les formules fournissent TOUTES des résultats erronés à un moment donné ou un
autre puisque l'algo de calcul de Pâques nécessiterait une très longue formule
pour être calculé exactement.


Je suis en retard de quelques métros mais ta remarque, frappée au coin du bon
sens, et quelques recherches, m'ont amené sur le site de l'Institut de Mécanique
Céleste et de Calcul des Ephémerides (http://www.imcce.fr/), où il est
benoîtement expliqué que les formules de calcul de la date du dimanche de
Pâques sont certes des exercices passionnants (et on y trouve des détails
abondants sur le sujet), mais qu'on peut parfaitement s'en passer dans la mesure
où les dates du jour de Pâques sont connues et publiées ("en dur", en quelque
sorte)...

Ça m'a paru en effet un bon moyen de s'assurer de n'avoir *aucun* résultat
erroné :-)
Tout au moins de 1583 à 3000, plage des années pour lesquelles la date du jour
de Pâques est disponible sur leur site à partir de cette page :

http://www.imcce.fr/Granpub/Promenade/pages4/442.html#datesdimpaq

Il a fallu faire un peu de mise en forme pour rendre les données exploitables
dans Excel. J'en ai tiré deux fichiers texte, avec les dates avant 1900 et
depuis 1900, chaque ligne des fichiers contenant une date au format aaaa;mm;jj.
Et une macro complémentaire qui, à partir du listing des dates, renvoie (par
l'intermédiaire d'une fonction perso) la date du dimanche de Pâques, soit comme
une date (à partir de 1900) soit comme une chaine de texte au format date courte
du sytème (dates avant 1900).
Le tout dans un fichier zippé (avec deux mots d'explication dans un LisezMoi) de
27 Ko à cette adresse :

http://perso.wanadoo.fr/frederic.sigonneau/exemples/DatesDimanchePaques.zip

Voilà. C'est juste une autre approche possible :-)

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

1 2 3