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
Jessy SEMPERE
Bonjour

voilà, ça devrait te convenir :
**********************************************
Public Function fPaques(wAn%) As Date
'Pâques est le dimanche qui suit le quatorzième jour de la
'Lune qui tombe le 21 mars ou immédiatement après

Dim wA%, wB%, wC%, wD%, wE%, wF%, wG%, wH%
Dim wI%, wJ%, wK%, wL%, wM%, wN%, wP%

wA = wAn Mod 19 'Calcul du rang de l'année dans le cycle lunaire qui a 19
ans
wB = wAn 100 'Calcul du siècle
wC = wAn Mod 100 'Calcul du rang de l'année dans le siècle
wD = wB 4
wE = wB Mod 4
wF = (wB + 8) 25
wG = (wB - wF + 1) 3
wH = (19 * wA + wB - wD - wG + 15) Mod 30
wI = wC 4
wK = wC Mod 4
wL = (32 + 2 * wE + 2 * wI - wH - wK) Mod 7
wM = (wA + 11 * wH + 22 * wL) 451
wN = (wH + wL - 7 * wM + 114) 31 'détermine le mois
wP = (wH + wL - 7 * wM + 114) Mod 31 'détermine le jour

fPaques = DateSerial(wAn, wN, wP + 1)

'** A titre d'info :************'
'** dtVenSaint = fPaques - 2****'
'** dtLunPaq = fPaques + 1******'
'** dtAscension = fPaques + 39**'
'** dtDimPent = fPaques + 49****'
'** dtLunPent = fPaques + 50****'

End Function
**********************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"JC" a écrit dans le message news:

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




Avatar
Misange
Bonjour
Une des formules qui marche (celle ci est de Laurent Longre)
Pâques =PLANCHER(JOUR(MINUTE(A1/38)/2+56)&"/5/"&A1;7)-34
maintenant ne demande SURTOUT pas comment on arrive à ce résultat :-)
D'autres calculs à partir de là ici :
http://www.excelabo.net/xl/calendriers.htm#joursfériésmobiles

--
Misange migrateuse http://www.excelabo.net
==Disciplus a migré chez excelabo !======= mail : http://cerbermail.com/?k5Q8Dh2mta




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

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




Avatar
Jacky
Bonjour Joe
Une parmis d'autre avec la date du jour donnée sur ce forum.
=PLANCHER(JOUR(MINUTE(ANNEE(AUJOURDHUI())/38)/2+56)&"/5/"&ANNEE(AUJOURDHUI()
);7)-34
Salutation
JJ

"JC" a écrit dans le message news:

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




Avatar
manu l.
Bonjour Joe,

tiré de mon classeur de fonctions personnalisées :

Public Function PAQUES(année As Variant) As String
Dim lAnnee As Long
Dim retour As Long
Dim jour As String

lAnnee = CLng(année)

If lAnnee >= 1 Then
retour = calculerPaques(lAnnee)

If retour > 31 Then
jour = CStr(retour - 31) & ".04." & CStr(année)
Else
jour = CStr(retour) & ".03." & CStr(année)
End If
Else
jour = ""
End If

PAQUES = jour
End Function

Private Function calculerPaques(annee As Long) As Long
Dim m As Long
Dim n As Long

m = (19 * (annee Mod 19) + 24) Mod 30
n = (2 * (annee Mod 4) + 4 * (annee Mod 7) + 6 * m + 5) Mod 7
calculerPaques = m + n + 22
End Function

Une fois installé dans un module, ça peut être utilisé dans une cellule
comme n'importe quelle fonction Excel. Par exemple : =PAQUES(2003)

Meilleures salutations.

--
manu l.

"JC" a écrit dans le message de
news:
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




Avatar
Modeste
Bonjour,
misange à dit :
ne demande SURTOUT pas comment on arrive à ce résultat :-)


tant qu'a en remettre une couche :
de Prasad DV India
formule qui marche et qui m'a toujours etonné :
l'année en A1
=TRONQUE(DATE(A1;7;-CODE(STXT("NYDQJT_LWBOZER]KU`";MOD
(A1;19)+1;1)))/7)*7+8

@+

Avatar
Match
Bonjour à tous,

la formule

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

renvoie le 1 mai

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

renvoie aussi le 1 mai
date qui est peu possible

la macro suivante

Public Function PAQUES(année As Variant) As String
Dim lAnnee As Long
Dim retour As Long
Dim jour As String

lAnnee = CLng(année)

If lAnnee >= 1 Then
retour = calculerPaques(lAnnee)

If retour > 31 Then
jour = CStr(retour - 31) & ".04." & CStr(année)
Else
jour = CStr(retour) & ".03." & CStr(année)
End If
Else
jour = ""
End If

PAQUES = jour
End Function

Private Function calculerPaques(annee As Long) As Long
Dim m As Long
Dim n As Long

m = (19 * (annee Mod 19) + 24) Mod 30
n = (2 * (annee Mod 4) + 4 * (annee Mod 7) + 6 * m + 5) Mod 7
calculerPaques = m + n + 22
End Function


renvoie le 27 mars

que croire ??

Charles


"Modeste" a écrit dans le message de
news:038f01c39275$bd1c18f0$
Bonjour,
misange à dit :
ne demande SURTOUT pas comment on arrive à ce résultat :-)


tant qu'a en remettre une couche :
de Prasad DV India
formule qui marche et qui m'a toujours etonné :
l'année en A1
=TRONQUE(DATE(A1;7;-CODE(STXT("NYDQJT_LWBOZER]KU`";MOD
(A1;19)+1;1)))/7)*7+8

@+

Avatar
Match
Pour l'année 2005 (pardon pour l'oubli)


"Match" a écrit dans le message de
news:
Bonjour à tous,

la formule


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


renvoie le 1 mai


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


renvoie aussi le 1 mai
date qui est peu possible

la macro suivante

Public Function PAQUES(année As Variant) As String
Dim lAnnee As Long
Dim retour As Long
Dim jour As String

lAnnee = CLng(année)

If lAnnee >= 1 Then
retour = calculerPaques(lAnnee)

If retour > 31 Then
jour = CStr(retour - 31) & ".04." & CStr(année)
Else
jour = CStr(retour) & ".03." & CStr(année)
End If
Else
jour = ""
End If

PAQUES = jour
End Function

Private Function calculerPaques(annee As Long) As Long
Dim m As Long
Dim n As Long

m = (19 * (annee Mod 19) + 24) Mod 30
n = (2 * (annee Mod 4) + 4 * (annee Mod 7) + 6 * m + 5) Mod 7
calculerPaques = m + n + 22
End Function


renvoie le 27 mars

que croire ??

Charles


"Modeste" a écrit dans le message de
news:038f01c39275$bd1c18f0$
Bonjour,
misange à dit :
ne demande SURTOUT pas comment on arrive à ce résultat :-)


tant qu'a en remettre une couche :
de Prasad DV India
formule qui marche et qui m'a toujours etonné :
l'année en A1
=TRONQUE(DATE(A1;7;-CODE(STXT("NYDQJT_LWBOZER]KU`";MOD
(A1;19)+1;1)))/7)*7+8

@+






Avatar
JC
Merci à tous pour votre aide, c'est génial...
Bonne journée
Joe


"Match" a écrit dans le message news:
#
Pour l'année 2005 (pardon pour l'oubli)


"Match" a écrit dans le message de
news:
Bonjour à tous,

la formule




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


renvoie le 1 mai




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


renvoie aussi le 1 mai
date qui est peu possible

la macro suivante

Public Function PAQUES(année As Variant) As String
Dim lAnnee As Long
Dim retour As Long
Dim jour As String

lAnnee = CLng(année)

If lAnnee >= 1 Then
retour = calculerPaques(lAnnee)

If retour > 31 Then
jour = CStr(retour - 31) & ".04." & CStr(année)
Else
jour = CStr(retour) & ".03." & CStr(année)
End If
Else
jour = ""
End If

PAQUES = jour
End Function

Private Function calculerPaques(annee As Long) As Long
Dim m As Long
Dim n As Long

m = (19 * (annee Mod 19) + 24) Mod 30
n = (2 * (annee Mod 4) + 4 * (annee Mod 7) + 6 * m + 5) Mod 7
calculerPaques = m + n + 22
End Function


renvoie le 27 mars

que croire ??

Charles


"Modeste" a écrit dans le message de
news:038f01c39275$bd1c18f0$
Bonjour,
misange à dit :
ne demande SURTOUT pas comment on arrive à ce résultat :-)


tant qu'a en remettre une couche :
de Prasad DV India
formule qui marche et qui m'a toujours etonné :
l'année en A1
=TRONQUE(DATE(A1;7;-CODE(STXT("NYDQJT_LWBOZER]KU`";MOD
(A1;19)+1;1)))/7)*7+8

@+










Avatar
Modeste
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
Croquignol
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 ?
@+



1 2 3