Ont à tous étés confronter, lorsqu'ont émule un quelconque calendrier avec les jours fériés, à la date de Pâques et des suivantes, ce petit programme vous donne les dates de la fête de Pâques, l'ascention, la pentecôte et d'autre qui sont tributaires de Pâques de 1900 à 2099
Source / Exemple :
'modulename = Module_Paques
'valable de 1900 à 2099
'La fonction retourne la date de Pâques dans les deux premier signes et le mois dans les
'deux suivant ex: 2803 pour le 28 mars
'an est l'année à calculer
'Vendredi saint -3
'jeudi de l'Ascension (jeudi de la sixième semaine après
'Pâques, soit le 39e jours après Pâques)
'Pentecôte +50
'Fête-Dieu (jeudi qui suit la Trinité, soit le 60e jour après Pâques)
Option Explicit
Type ERGpaques
J_Paques As Integer 'jour
M_Paques As Integer 'mois
J_ascension As Integer
M_ascension As Integer
J_pentecote As Integer
M_pentecote As Integer
'si trinité et/ou fête-dieu, ajouter ces variables
'et les traités dans la fonction
End Type
Public DTpaq As ERGpaques
'Les données sont aussi renvoyées dans la variable type DTpaq.
Function CalculerPaques(an As Integer) As String
Dim n As Integer
Dim a As Integer, b As Single, c As Integer
Dim e As Single, x As Single, y As Single
Dim u As Single, d As Integer, P As Integer
Dim PA$, DA As Long, DAT As Date
Dim v As Integer
n = an - 1900: a = n - (Fix((n / 19)) * 19)
b = Fix(((a * 7) + 1) / 19): u = (11 * a) - b + 4
c = ((11 * a) - b + 4) - (Int(u / 29) * 29)
d = Int(n / 4): u = n - c + d + 31
y = Int(u / 7) * 7
e = u - y
P = 25 - c - e
If P > 0 Then
PA$ = "0" & P: DTpaq.J_Paques = P: DTpaq.M_Paques = 4
PA$ = Right$(PA$, 2): PA$ = PA$ & "04"
Else
DTpaq.J_Paques = (31 + P): DTpaq.M_Paques = 3
PA$ = "0" & (31 + P): PA$ = Right$(PA$, 2)
PA$ = PA$ & "03"
End If
CalculerPaques = PA$
'calculer ascention
DA = DateSerial(an, DTpaq.M_Paques, DTpaq.J_Paques) + 39
DAT = DA: DTpaq.J_ascension = Day(DAT): DTpaq.M_ascension = Month(DAT)
'calculer la Pentecôte
DA = DateSerial(an, DTpaq.M_Paques, DTpaq.J_Paques) + 50
DAT = DA: DTpaq.J_pentecote = Day(DAT): DTpaq.M_pentecote = Month(DAT)
End Function
'forme de test de la fonction
'FormeName=Form_Paques
' mettre 3 label - Label1, label2 et label3
' mettre un textbox - Text1
Option Explicit
Dim Mois(6) As String
Private Sub Form_Load()
Mois(3) = "Mars"
Mois(4) = "Avril"
Mois(5) = "Mai"
Mois(6) = "Juin"
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim a$, j As Integer, m As Integer
Dim b As Integer
If KeyCode = 13 Then ' (ENTER)
b = Val(Text1.Text)
If b < 1900 Or b > 2099 Then
Text1.Text = ""
Beep
Exit Sub
End If
a$ = CalculerPaques(b)
Text1.Text = ""
Label1.Caption = "La date de Pâques en " & b & " est le " & DTpaq.J_Paques & " " & Mois(DTpaq.M_Paques)
Label2.Caption = "L'Ascension le " & DTpaq.J_ascension & " " & Mois(DTpaq.M_ascension)
Label3.Caption = "La Pentecôte le " & DTpaq.J_pentecote & " " & Mois(DTpaq.M_pentecote)
Text1.SetFocus
End If
End Sub
Conclusion :
la fonction n'est pas compliquée, il fallait juste trouver les repères.Celà dit, il est possible de renvoyer toute les dates dans la fonction. Un peu de modif..
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.