XL 2019 Calculer dimanche de pâques puis insertion du 29 février

Scorp0211

XLDnaute Nouveau
Bonjour à tous,
Je cherche le moyen de calculer la date du dimanche de Pâques dans un classeur Excel (version 2019).
J'ai 3 contraintes :
1) le classeur Excel doit servir dans un contexte professionnel. Il se compose de 17 feuilles au total. l'objectif est de réunir 4 tableaux Excel (très simples, qui se remplissent "à la main) dans des classeurs distincts (donc 4) en 1 seul classeur automatisé. Les feuilles 1 et 2 sont là pour gérer la création du projet. La feuille 3 sera LA FEUILLE principale dans laquelle seront saisis les données de notre activité. Toutes les autres feuilles seront remplies à partir de la feuille 3 par simple clic sur des boutons de MàJ spécifiques à des situations lorsque celles-ci se présenteront. À partir de la feuille 7 (et toutes les autres qui sont identiques à la 7 - copie de macro avec juste changement du nom), il y a un tableau qui représente un calendrier de l'année de janvier à décembre avec TOUS les jours de CHAQUE mois, les samedi et dimanche étant colorés en jaune, ainsi que les jour fériés fixes. Tout ceci créé instantanément par macro. (Je butte sur le dimanche de Pâque)

2) Il m'est interdit de modifier la structure de base du tableau : j'ai les dates (JJ.MM.AAAA) en colonne B, et les noms de jours de la semaine en abrégé (LU, MA, ME, JE, VE, SA et DI) en colonne A. le dernier jour d'un mois et le 1er jours du mois suivant sont séparés par 2 lignes ayant des fonctions particulières que je n'ai pas le droit de supprimer.

3) Les jours fériés fixes ET non-fixes DOIVENT être mis en évidence, et calculés avec précision, puis le 29 février doit lui aussi être inséré une fois tous les 4 ans : c'est à dire que je dois créer un paragraphe dans la macro qui insère le 29/02 lorsque certaines année sont saisie. Il y a une cellule de référence qui contient l'année d'exploitation.

L'objectif : calculer le dimanche de pâques efficacement, puis trouver le lundi qui le suit pour colorer la ligne comme un samedi ou dimanche, puis faire la même chose pour l'ascension, puis le lundi de pentecôte. Puis insérer le 29/02 en faisant attention à ce que tous les week-end, les jours fériés fixes ET non-fixes soient décalés en conséquences.

Voilà déjà 3 semaines que je cherche un peu partout sur le net : tuto sur Youtube, ChatGPT, divers sites et forums... j'ai trouvé des trucs intéressants comme la méthode de Gauss, ou le cycle métonique, mais à chaque fois que je m'approche un peu de quelque chose de bien, j'ai systématiquement des "erreurs 13 ou 1004" que je n'arrive pas à résoudre. et ça commence à me taper sur le système.

Un petit coup de main, svp !
Je fournirai la macro concernée à la demande.
 

Scorp0211

XLDnaute Nouveau
Merci à tous !

J'ai créé un tableau sur ma feuille "LISTE REF" (feuille 2),... (c'est justement la fonction de cette feuille) avec la formule de TooFatBoy : "=ARRONDI(DATE(A1;4;MOD(234-11*MOD(A1;19);30))/7;0)*7-5"
où j'ai remplacé A1 par D2, et où D2 est une fenêtre déroulante avec les années de 2024 à 2060 (pour test).
J'ai encore quelques petits détail à régler, mais ça devrait rentrer dans l'ordre.
La phase suivante sera d'écrire une macro qui reprendra la valeur des cellules de la 2e colonne de ce tableau pour les 3 jours fériés non-fixes et colorer les lignes des dates correspondantes dans la feuille "GRILLES".
Encore une fois : Merci pour la formule.
Et merci à tous pour les réponses apportées.

Vgendron, content de te retrouver : nous nous sommes "cyber-rencontrés" ici il y a environ 2 ans. J'ai tenté plusieurs fois de te recontacter, mais je ne sais pas si tu as reçu mes messages. je ne sais pas trop comment je m'y suis pris, du coup, je ne suis même pas sûr que tu les ais reçu.

Je reviens vers vous quand j'ai réglé ça, pour traiter la question de ce pu%#n d'enf£~§@ré de sal#µ¤per£§ de 29/02 qui me casse les -biiiiiiip-... et vu l'heure qu'il est, ça sera pour demain !

À pluch' tout le monde !
 

patricktoulon

XLDnaute Barbatruc
bonjour
une fonction vba utilisable en formule
VB:
Function chocolat(arg, an&) As Date
    arg = Trim(LCase(arg))
    paques = CDate(((Round(DateSerial(an, 4, (234 - 11 * (an Mod 19)) Mod 30) / 7, 0) * 7) - 6))
    Select Case CStr(arg)
        Case "paques": chocolat = paques
        Case "lundipaques": chocolat = paques + 1
        Case "ascension": chocolat = paques + 39
        Case "pentecote": chocolat = paques + 49
        Case "lundipentecote": chocolat = paques + 50
        Case "vendredi saint": chocolat = paques - 2
        Case Else: chocolat = 0
    End Select
End Function
1733780126855.png

1733780941184.png
 

Efgé

XLDnaute Barbatruc
Bonjour à tous
Une proposition :
Toute l'année bissextile ou non.
Saut de deux lignes après chaque mois.
Ligne jaune pour les W.E et férié.
Colonne A les jour type Lun., Mar. etc.
Colonne B la date jj/mm/aaaa

Msgbox de la durée du code à la fin (chez moi +/- 30 secondes)

Cordialement
 

Pièces jointes

  • Test.xlsm
    24.9 KB · Affichages: 3

Discussions similaires

Réponses
8
Affichages
489