begin process at 2008 07 18 20:10:31
1 212 565 membres
418 nouveaux aujourd'hui
14 164 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCULER LES FÊTES MOBILES


Information sur la source

Catégorie :Date & Heure Classé sous : date, pâques, pentecôte Niveau : Débutant Date de création : 06/04/2007 Date de mise à jour : 14/04/2007 16:14:26 Vu : 7 804

Note :
Aucune note

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note


Description

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

  • '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
'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..
14 avril 2007 16:14:26 :
suite a la remarque de Pasquet78 j'ai enlevé le mois de juillet
  • signaler à un administrateur
    Commentaire de Platon le 06/04/2007 14:20:32

    Bonjour, savez-vous qu'il y a plusieurs sorte de calcul pour la date de pâques, car cette fête détermine toutes les dates de fêtes mobiles pour le calendrier Grégorien, il y a à ma connaissance quatre méthodes : Delambre, Gauss, Lilius/Clavius et Oudin/Tondering, j'ai testé les 4 et à chaque on retrouve les mêmes dates. De plus pour créer un calendrier perpétuel, on peut utiliser la méthode de Moret, voir La source que j'ai déposée http://www.vbfrance.com/codes/MAGNIFICAT_5249.aspx

  • signaler à un administrateur
    Commentaire de meudon le 07/04/2007 12:08:41

    Bonjour,

    Tout est dit (aussi), et plus encore dans :

    http://olravet.fr/telechargement.php

  • signaler à un administrateur
    Commentaire de lermite222 le 08/04/2007 11:00:53

    Bonjour et merci de vos commentaires, le but en mettant cette petite fonction sur le site n’était pas de donner une leçon de VB mais de pouvoir l’incérer facilement dans un programme plus complet et traitant de données ACTUELLES, sans devoir faire de recherche sur la formule à appliquer. A titre d’information j’ai choisi la formule de Beirne, celle de Gauss présentant quelques erreurs, l’algorithme  de Lilis/Clavius donne la « vraie fête de Pâques » or la Pâques que nous connaissons ne correspond pas toujours à la Pâques lunaire quand à  l’algorithme   de Oudin/Tonfering, il a simplifié la formule de Gauss mais n’est valable que pour le 2ém millénaire. Quand a Moret il ne concerne pas la date de Pâques mais le nom des jours calendriers (pour les dates ACTUELLES, VB donne suffisamment de fonctions pour trouver tout ce que l’ont veux). Je comprend l’énervement de Platon , aussi un petit historique explicatif s’avère nécessaire : J’ai commencé à programmé en 1977 (basic interprété, 4K de Ram), et depuis j’ai souvent cherché la formule pour calculer la fête de Pâques et je  ne l’ai trouver que ce mois de janvier lorsque j’ai enfin eu accès à internet sur GPRS/3G.
    Voilà les quelques circonstances qui m’ont incité a soumettre cette fonction sur le site.
    Cordialement, Louis

  • signaler à un administrateur
    Commentaire de laverdanny le 09/04/2007 16:41:23

    En principe, Pâques est le premier dimanche qui suit la première lune pleine après le 21 mars....
    la question est donc : a-t-on un moyen fiable de connaitre les phases lunaires ?

  • signaler à un administrateur
    Commentaire de meudon le 09/04/2007 18:26:51

    oui !!

    Voir le fichier d'aide de Calendes :

    http://olravet.fr/AideCalendes/Paques.htm
    et les sites référencés en fin d'aide
    les extraits de logiciel y sont !!

    et les phases de la Lune calculées avec une très grande précision sur :

    http://olravet.fr/telechargement.php

    avec : Position et Phases de la Lune

    http://olravet.fr/Lune.zip

    Un must en la matière !!!

  • signaler à un administrateur
    Commentaire de BruNews le 09/04/2007 19:39:02 administrateur CS

    http://brunews.com/brunews/download/Agendat.zip
    Un expert en Paques saurait-il me dire si mon calendrier va bon pour ce jour ?
    Merci d'avance.

  • signaler à un administrateur
    Commentaire de meudon le 09/04/2007 20:39:13

    Salut BruNews

    Super l'appli Agendat et pratique

    Si je peux me permettre ce trait d'humour : il ne manque que la date du beaujolais nouveau !!!!

    A+

  • signaler à un administrateur
    Commentaire de pasquet78 le 12/04/2007 03:33:33

    Bonjour,
    J’aime bien lire des programme sobre comme le tien, je ne reviendrai pas sur les méthodes de calcul des dates de Pâques, bien qu’ayant un avis sur le sujet.
    Je ne ferai qu’une petite remarque sur les lignes que tu as postées, tu inclus la possibilité d’utiliser le mois de juillet alors qu’à aucun moment ce mois là servira. Pour être clair, Pâques est le dimanche qui suit la première lune de printemps, donc, au pire il tombera le 25 avril (21 mars + 1 lunaison de 29 jours + les 6 jours possibles pour arriver à un dimanche). A ceci, j’ajoute les 63 jours (et non 60) pour arriver à la fête-Dieu, et j’arrive au 28 Juin maximum.
    Une autre petite remarque, tu écris que VB donne suffisamment de fonctions pour trouver tout ce que l’ont veux, tu as raison lorsque les calculs s’adresse à une certaine période, mais j’émets des réserves pour d’autres ou les calculs sont faux.
    Cordialement, Gérard

  • signaler à un administrateur
    Commentaire de lermite222 le 14/04/2007 16:10:26

    réponse à Pasquet78
    Tu à raison sur les deux postes,
    pour le mois de juillet (Hi) j'aurais pu m'arrèter à juin.
    Pour les fonctions VB, c'est exact, mais dans mon optique c'était pour traiter des dates dans une appli actuelle donc dans des dates qui concernent notre génération et peut être une ou deux suivantes, je ne crois pas qu'après cela nos programmes serront encore d'actualités.
    cordialement
    louis

  • signaler à un administrateur
    Commentaire de kakidtuile le 28/05/2007 13:40:08

    bonjour
    j'ai coller copier le code mais il y a que la date de paques qui ressort, je debute en programme, puovez vous mettre le code en entier pour que je le comprendre
    je vous remerci

  • signaler à un administrateur
    Commentaire de pasquet78 le 01/06/2007 06:13:02

    KAKIDTUILE, c’a ne fonctionne pas parce que LERMITE222 est peu être un petit cachotier.
    Il a pourtant écrit, sans bien préciser, qu’il fallait mettre une Form (Form1) avec 3 labels (Label1, Label2 et Label3) et un TextBox (Text1). Tu ajoutes aussi un module (Module_Paques) auquel tu inclus les lignes de 1 à 58 et tu mets les lignes 58  à 93 dans Form1.
    Et tu verras que le programme fonctionne bien.
    Avec l’habitude, ces petits détails ne t’échapperont plus.
    Cordialement.
    Gérard.

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS