Calcul dates calendrier épagomène

max_gan Messages postés 8 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -

Bonjour,

J'ai cherché partout, mais je n'arrive pas à savoir comment je peux gérer des calculs comportant des dates d'un calendrier épagomène sur Excel.

Par calendrier épagomène, j'entends un calendrier de 12 mois de 30 jours chacun, plus un 13ème mois fictif comportant les jours surnuméraires, dits épagomènes.

C'est le cas de certains calendriers grecs ou égyptiens par exemple.

Windows / Edge 104.0.1293.70

4 réponses

  1. Arthur-92
     

    Bonjour,

    En une première approche j'affecterais un numéro à chaque jour du calendrier grégorien, pour 2022, de 1 à 365.
    Les jours du calendrier épagomène porteraient les même numéros. J'ai baptisé les mois de ce calendrier Mois Un, Mois Deux, Mois Trois etc. jusqu à Mois Treize.
    Pour le calcul, voir tableau ci joint fait pour Janvier, Février, Mars, (fait en vitesse, mais c'est l'idée...)
    Avec ce numéro, on cherche la date correspondante en grégorien ou en épagomène.
    Pour automatiser ce tableau, on pourrait appliquer des formules RechercheV() ou Index, je cherche...
    Cordialement.

    https://cjoint.com/c/LIcklnSeafW

     PS: mon correcteur d'orthographe ne connaît pas "épagomène" (moi non plus jusqu'à ce jour) et propose à la place "épagneul" !!

    0
    1. Arthur-92
       

      Suite :
      On suppose que les 2 années démarrent le même jour.
      Si vous pouvez y puiser quelques idées.
      https://cjoint.com/c/LIclVjGcO4W

      0
    2. max_gan Messages postés 8 Statut Membre
       

      Je vous remercie pour votre réponse.

      J'avais déjà pensé à reproduire un calendrier épagomène pour la conversion des dates.

      La difficulté majeure survient lorsque je souhaite appliquer des calculs comprenant des proratas entre différentes dates de façon automatisée.

      Exemple : [Montant] - arrondi.inf ([Montant] * [Taux] * (([Date1] - [Date2] + 1) / 365) ; 3)

                      [Date1] = 03/EE/-705 soit 29/12/-705

                      [Date2] = 21/12/-705 soit 17/12/-705

      Je pense que je vais devoir systématiquement traduire les dates épa en dates grégo pour pouvoir faire les calculs.

      J'essayais juste de trouver une solution pour éviter d'avoir à rajouter des colonnes partout.

      0
    3. max_gan Messages postés 8 Statut Membre
       

      PS : Le calendrier révolutionnaire français fonctionne sur le même principe, les jours restants y sont sobrement appelés "jours complémentaires" mais le terme exact est "jours épagomènes".

      0
  2. Arthur-92
     

    "J'essayais juste de trouver une solution pour éviter d'avoir à rajouter des colonnes partout."
    Vous ne l'aviez pas indiqué dans votre demande initiale...

    0
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     

    Bonsoir

    une possibilité par fonction personnalisée à mettre dans un module de l'éditeur VBA

    S'utilse ensuite comme n'importe quelle fonction Excel selon la syntaxe = datedifepago(jour1;mois1;annee1;jour2;mois2;annee2)

    dans laquelle on ne rentre que des nombres

    Function datedifepago(j1 As Integer, m1 As Integer, y1 As Integer, j2 As Integer, m2 As Integer, y2 As Integer)
    If y1 = y2 Then 'si même année
    nj = 30 - j1 + j2 + (m2 - m1 - 1) * 30
    Else 'sinon
    nj = 30 - j1 + (12 - m1) * 30 + j2 + (m2 - 1) * 30 + (y2 - y1) * 365
    End If
    bis = Int(nj / 1460) ' jour(s) à rajouter tous les 4 ans
    datedifepago = nj + bis
    End Function

    Cdlmnt

    Via


    0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     

    Bonjour à tous

    deux petites fonctions personnalisées pour passer d'un calendrier à l'autre

    https://www.cjoint.com/c/LIcqU3kNlYB

    Cdlmnt

    Attention. Lien modifié

    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       

      Pour la différence de deux dates (en jours)

      Public Function ddif_epag(d1epag As String, d2epag As String) As Long
      Dim d1greg As Date, d2greg As Date
      d1greg = epag_to_greg(d1epag)
      d2greg = epag_to_greg(d2epag)
      ddif_epag = Abs(d2greg - d1greg)
      End Function

      Pour ajouter/enlever des jours

      Public Function jplus_epag(depag As String, nbj As Long) As String
      jplus_epag = greg_to_epag(epag_to_greg(depag) + nbj)
      End Function

      Cdlmnt

      0