Composants Milesian VBA pour Excel

Outils avancés de gestion de calendriers pour les feuilles de calcul Excel
Version M2022-08-28

Identification

Fonctions

Fonctions de calculs calendaires en langage VBA pour Excel

·        Toutes fonctions calendaires de base pour la gestion du calendrier milésien compatible avec la gestion des dates Excel.

·        Jour de semaine avec une option supplémentaire.

·        Calcul de délai entre dates et de report de dates compatible avec la gestion de dates Excel.

·        Calcul de phases de lune moyenne.

·        Prise en charge de dates antérieures à 1900.

·        Prise en charge de l’option « Calendrier depuis 1904 ».

·        Analyse d’une chaîne de caractères représentant une date milésienne ou grégorienne et conversion en objet de date Excel.

Environnement et codage

Version présente M2022-08-28.

Code source rédigé en anglais.

Auteur : Louis-Aimé de Fouquières, © 2017-2022 (www.calendriermilesien.org).

Fonctionne sur Excel version 2007 et supérieure sans sensibilité de langage.

Fonctionnement testé sur version Mac OS d'Excel gérant le VBA (à partir de 2011).

Utilisé régulièrement sur les versions Excel Office 365.

Scellé par un certificat autosigné valable jusqu’au 31/12/2024, attribué au concepteur du calendrier milésien (vous pouvez vérifier son nom).

Versions

M2022-08-29

·        Une seule version du complément : Milesian.xlam, qui comprend les deux modules de l’ancien Milesian Premium.xlam. Ceci correspond à l’ajout du module DateParse comprenant la fonction DATE_PARSE au complément Milesian.xlam.

M2021-01-21

·        Renommé DATE_SHIFT en DATE_ADD

·        Résultat de MILESIAN_YEAR_BASE est la date précédant le 1 1m à 0 h UTC (et non 7 h 30)

M2020-12-01

·        Ajout de la fonction GREGORIAN_EPACT

·        Modification de la fonction MILESIAN_EPACT

M2020-02-08

·        Correction des formules de certaines dates dans fichier de démonstration Jours remarquables

·        Section Versions et scories dans fichier de présentation

·        Aucune modification des programmes depuis M2019-06-27

M2019-06-27

·        Contrôle propriétés d’objet Date pour assurer une bonne conversion même en Date1904

·        Masquage des fonctions utilitaires

·        Addition fonctions MILESIAN_EPACT et MILESIAN_DOOMSDAY

·        Résultat de YEAR_BASE est date précédant 1 1m à 7:30 UTC

·        Groupement des fonctions de calculs lunaires dans un même module

Licence

Libre utilisation et transmission sans coût, sous réserve de citation de l’auteur pour la version de base.

Transformation et adaptation soumises à autorisation expresse de l'auteur.

Aucune garantie de conformité à des objectifs commerciaux ou autres.

Contenu du répertoire

·        Le présent fichier documentaire en HTLM

·        Un fichier Excel avec macros Milesian

·        Un fichier Excel ordinaire, pour démonstration : Jours remarquables

Mise en oeuvre

Installation

1.      Décompressez dans un répertoire de travail le dossier compressé Excel Milesian fourni ou téléchargé.

2.      Ouvrez avec Excel Office 365, ou version 2007 ou supérieure (sous Microsoft Windows), ou version 2011 ou supérieure (sous MacOS) le fichier Milesian fourni.

3.      Le cas échéant, autorisez l’usage des macros. Le code VBA est signé avec une signature privée (sans autorité de certification) valable jusqu’au 31/12/2024.

4.      Sauvegardez en format Complément Excel (Ne pas sauvegarder en Compléments Excel 97-2003). Sous Windows, il n’y a pas lieu de modifier le dossier de vos Add-Ins proposé. Sous MacOS, choisissez de préférence le dossier Applications.

5.      Pour rendre disponibles les fonctions sur n'importe quelle feuille Excel ordinaire, vous devez activer le complément Excel (voir infra Utilisation comme complément Excel).

6.      Si vous souhaitez créer des feuilles Excel avec prise en charge des macros comportant les fonctions, vous pouvez sauvegarder la feuille Milesian en format Modèle Excel avec prise en charge des macros.

Utilisation comme complément Excel

1.      Sur Excel 2013 ou 2016, Menu Fichier, ligne Options. Sur d’autres versions, le premier élément du menu donne accès aux Options.

2.      Parmi les Options Excel, choisissez la ligne Compléments.

3.      En variante, utilisez l’onglet Développeur sur lequel se trouve un article Compléments Excel. Vous devrez préalablement activer l’onglet Développeur avec l’option Personnaliser le ruban.

4.      Choisissez à droite la ligne du bas "Gérer : Compléments Excel".

5.      La première fois, vous ne verrez pas Milesian. Cliquez "parcourir" et dans le répertoire de vos Add-Ins (sous Windows) ou dans le répertoire Applications (sous MacOS), sélectionnez Milesian.

6.      Sur la liste des Add-Ins, Milesian doit être coché pour que les fonctions soient disponibles.

Une fois le complément Excel activé, les fonctions sont accessibles à partir de toute feuille Excel. Vous pouvez les tester immédiatement avec le fichier Jours remarquables. Vous devrez au préalable modifier la source des liaisons comme on vous le proposera à l’ouverture du fichier. Remplacez par le fichier Milesian qui se trouve sur votre système de fichiers. Si vous n’y parvenez pas, vous pouvez aller à l’une des cellules de calcul, sélectionner le préfixe devant l’une des fonctions (jusqu’au signe « ! ») puis rechercher et remplacer cette chaîne par la chaîne vide dans toute la feuille.

Si vous partagez la feuille utilisant les fonctions, les autres utilisateurs qui n’en disposent pas verront apparaître les résultats de ces fonctions selon la dernière valeur calculée. Toute tentative de modification d’une des cellules résultat ou paramètre résultera en une indication d'erreur #NOM!.

Un utilisateur ne disposant pas des fonctions ou n’ayant pas activé le complément Excel pourra choisir de supprimer les liens avec le complément Excel non disponible. Dans ce cas, les expressions utilisant ces fonctions sont remplacées par les dernières valeurs calculées.

Utilisation en feuilles avec macros

L’intérêt d’utiliser une feuille avec macros est que les fonctions seront incluses dans le fichier sous forme d’un module VBA. Vous pourrez les échanger avec d’autres utilisateurs qui acceptent l’usage des macros.

Créez un nouveau fichier sur le modèle Milesian et sauvegardez-le en format Feuille Excel avec macros.

Vous pouvez également copier les modules dans une autre feuille Excel avec macros. Attention toutefois à respecter le droit d'auteur : maintenez la référence à l’auteur.

Si vous utilisez la feuille avec macros, et particulièrement si vous projetez de modifier les fonctions, il est recommandé de décocher le complément Excel Milesian via les Options ou via l’onglet Développeur. Sinon les fonctions seront référencées en double, et il n’est pas facile d’anticiper quelle version de la fonction de même nom Excel utilisera par défaut.

Accès aux fonctions

Vous accédez à la liste des fonctions importées en cliquant le bouton fonction de la barre de saisie.

·        Sélectionnez la catégorie Personnalisées.

·        Les fonctions apparaissent, avec une description succincte en anglais, qui comprend la description des paramètres non triviaux.

·        Si vous choisissez une fonction, une fenêtre apparaît, vous permettant de compléter chaque paramètre.

Si les fonctions apparaissent en double, c’est que vous utilisez simultanément les compléments Excel et les fonctions qui sont dans une feuille macro, ou peut-être utilisez-vous le complément Milesian Premium désormais déprécié. Décochez le complément Excel Milesian ou Milesian Premium via les Options ou l’onglet Développeur.

Les fonctions sont sensibles à l'option Calendrier depuis 1904 compatible avec les anciennes versions d'Excel sur MacOS. Cette option est affectée à une feuille en entier, et est modifiable à tout moment.

L’essentiel pour utiliser les fonctions

Les fonctions sont succinctement documentées dans Excel, voir ci-dessus Accès aux fonctions.

Types de données

Les fonctions manipulent des éléments des types ci-après :

·        des éléments du calendrier milésien : année (par son numéro, de 100 à 9999), mois (par son numéro 1 à 12), jour (1 à 31),

·        numéro de jour de semaine (0 à 6 ou 1 à 7),

·        numéro de phase de lune (0 à 3),

·        des « expressions de dates » en paramètre d’entrée, c’est-à-dire tout élément pouvant désigner une date sous Excel :

o   une chaîne de caractère présentant une date selon le calendrier grégorien et grégorien proleptique uniquement, du 1/1/100 au 31/12/9999, avec ou sans indication de l’heure sous la forme hh:mm:ss ;

o   une cellule contenant une date affichée selon un des formats de date d’Excel ;

o   une fonction ayant pour résultat une valeur de date, comme les fonctions standard DATE ou DATEVAL (attention à leur domaine de validité !) ;

o   un simple nombre décimal auquel on peut affecter un format date pour lire une date sous Excel. Attention, certains nombres ne peuvent représenter une date ;

·        une chaîne de caractère représentant une date en calendrier milésien, dont les mois sont notés 1m à 12m, les jours du mois 1 à 31, les années comme les années du calendrier grégorien ;

·        en résultat :  un objet date, c’est-à-dire un objet informatique qui peut être passé à une autre fonction en tant que date, ou peut être affiché en tant que date.

Vous pouvez utiliser directement ces fonctions pour faire des conversions de dates, des sélections par mois milésien, des calculs de phase de lune selon une lune moyenne (lune de cycle uniforme), planifier des dates d’événements (voir exemples sur la feuille Jours remarquables), analyser des chroniques…

Plage d’utilisation et affichage

Notez que vous pouvez utiliser des dates antérieures au 1er janvier 1900. Excel interprète correctement toute expression de date à partir du 1/1/100 comme une date du calendrier grégorien proleptique. Une telle expression de date est correctement interprétée par les fonctions milésiennes, notamment MILESIAN_DISPLAY. Mais une cellule affectée d’un format de date comportant une valeur de date correspondant à une date antérieure au 20e siècle affiche une chaîne « ### » de la taille de la cellule :

·        sans l’option Calendrier depuis 1904,

o   les dates du 1/1/1900 au 29/2/1900 sont fausses, car 1900 n’était pas bissextile ;

o   la date affichée 0/1/1900 correspond au 30 décembre 1899 ;

o   toute valeur antérieure est affichée en une série de dièses : « ### »

o   toute valeur antérieure au 1/1/100 est affichée #VALEUR !

·        avec l’option Calendrier depuis 1904

o   les dates antérieures au 1/1/1904 sont fantaisistes et affichées avec un signe « - »

o   toute valeur antérieure au 3/1/104 est affichée #VALEUR !

Vous pouvez vous convaincre que le 1/1/1900 affiché par Excel est faux en le formatant avec le jour de semaine : Excel affiche « dimanche », or cette date était un lundi.

Notez que les fonctions standard DATE, DATEVAL, ANNEE, MOIS, JOUR etc. donnent sans prévenir des informations fausses antérieurement au 1/3/1900. En revanche, les fonctions milésiennes donnent toujours un résultat exact, mais en calendrier milésien ou en valeur date.

Avec l’option Calendrier depuis 1904, Les fonctions milésiennes ne peuvent être appelées à partir de routine VBA que sous réserve de précautions particulières, voir infra.

Notez que les dates grégoriennes ne sont pas les dates historiques ! le calendrier grégorien n’a été promulgué qu’en 1582 à Rome, en 1752 en Grande-Bretagne.

Éléments techniques

Expression de date, effecteur de format, et objet Date

Une expression de date est tout contenu interprétable comme une date, y compris une chaîne de caractères qui respecte un format d’affichage de date au sens large, c’est-à-dire date stricte avec ou sans heure, ou heure sans date.

L’effecteur de format, appliqué à une cellule, donne une information sur la valeur que porte la cellule. L’effecteur de format peut indiquer que la cellule contient un texte, mais si ce texte est une expression de date valable, cette expression pourra être directement convertie par une fonction utilisant un objet Date. L’effecteur de format peut aussi indiquer que la cellule contient une valeur numérique qui doit être interprétée comme une date. Modifier le format d’une telle cellule passée comme argument d’une fonction peut conduire à des résultats différents de la fonction, selon la manière dont sont déclarés les paramètres. La valeur numérique d’une cellule correspondant à une même date dépend de l’option Calendrier1904 de la feuille.

Un objet Date est une variable ou expression VBA représentant une date, au sens étendu : date avec heure, ou date à 0 heure. Les notions de fuseau horaire et d’heure d’été ne sont pas gérées. Un objet Date est manipulable dans une expression numérique. Les valeurs numériques entières d’un objet date correspondent aux dates à 0 h. La valeur 0 correspond à la date 30 décembre 1899 à 0 h du calendrier grégorien, soit le 10 1m 1900 00:00. La valeur numérique de l’objet Date est la même, pour une même date, quelle que soit l’option Calendrier1904 de la feuille.

Le domaine de représentation des dates s’étend du 1/1/100 du calendrier grégorien au 31/12/9999. Le 1er janvier 100 grégorien est le 3 janvier 100 du calendrier julien, en vigueur à cette époque dans l’empire romain jusqu’en 1582 à Rome. Les expressions de dates reconnues par Excel sont dans tous les cas des dates du calendrier grégorien, y compris avant 1582. Ces dates peuvent ne pas correspondre avec les dates historiques, qui sont toutes du calendrier julien en Europe avant 1582.

La saisie d’une expression de date située dans le domaine de conversion de dates pour le classeur Excel provoque la conversion immédiate de cette expression en une valeur numérique correspondant à cette date. En changeant le format de la cellule on peut afficher la valeur numérique plutôt que la date.

Le domaine de conversion est plus étroit que le domaine de représentation. Selon la valeur de l’option Calendrier1904 affectée à la feuille, il s’arrête au 1/1/1900 ou au 1/1/1904.

L’utilisateur d’Excel peut saisir dans une cellule une expression de date située en dehors du domaine de conversion. Dans ce cas, la chaîne de caractères n’est pas immédiatement convertie, mais stockée telle que saisie. Elle peut être convertie silencieusement en valeur numérique (selon la valeur de Calendrier1904) puis en objet Date.

Comme pour un nombre, l’utilisateur d’Excel peut interdire la conversion implicite d’une expression de date située dans le domaine de conversion, en la faisant précéder de l’apostrophe ou en forçant le format de cellule à Texte.

Une expression de date passée en argument d’une fonction peut être implicitement convertie en une valeur d’objet Date, dès lors que la date représentée est dans le domaine de représentation.

Option Calendrier depuis 1904

Cette option est attachée au classeur. Elle indique l’origine du compteur numérique représentant les dates : 1900 ou 1904. L’option par défaut des feuilles d’Excel sous MacOS était 1904. Mais comme les feuilles pouvaient déjà s’échanger entre les mondes Mac et Windows, l’option peut être à tout moment modifiée par l’utilisateur (Options avancées).

Quand on change l’option sur une feuille, toutes les dates définies par la valeur numérique d’une cellule sont affichées avec un décalage de 4 ans. En revanche, les expressions de dates stockées sous forme de chaînes de caractères ne sont évidemment pas modifiées.

Fonctionnement avec l’option Calendrier à partir de 1900.

La valeur numérique Excel correspondant à une date est la même que la valeur de l’objet Date. La valeur 0 correspond au 30/12/1899 à 0 h.

Le domaine de conversion commence à la date réelle 31/12/1899. Cette date est saisie avec la chaîne 1/1/1900 ou un équivalent. Toutes les dates des deux premiers mois de 1900 sont converties à la valeur numériques correspondant à la date antérieure d’un jour. On peut facilement vérifier ce point en affichant la date du 1er janvier 1900 avec le jour de semaine : Excel affiche dimanche. Or le 1er janvier 1900, année non bissextile, était un lundi.

Les dates à partir du 1/3/1900, sont converties correctement. La dernière date du domaine de conversion est le 31/12/9999.

En revanche une expression de date (chaîne de caractères) représentant une date de janvier ou février 1900 sera, elle, correctement convertie en objet Date. L’expression « 29/02/1900 » provoque une erreur.

Une valeur négative mais comprise dans le domaine de représentation dans une cellule à laquelle on attribue un format de date est affichée sous forme de dièses ####. Entre 0 et 1 la date affichée est 00/01/1900. De telles valeurs, bien qu’on ne puisse en voir la représentation, sont manipulables par les fonctions VBA en tant qu’objets Date.

Quand une chaîne de caractères est passée comme paramètre de type Date à une fonction VBA, Excel tente d’y reconnaître une expression de date et, en cas de succès, passe comme paramètre effectif le nombre correspondant à la date représentée. Si l’expression de date à convertir ne comprend aucune indication d’heure, la valeur passée est entière, ce qui correspond à 0h.

Si l’expression de date comprend une indication d’heure non nulle, Excel la convertit de manière suivante :

·        Si la date est égale ou postérieure au 30/12/1899, l’heure du jour est convertie en fraction de jour, et cette fraction est ajoutée à la valeur entière correspondant au jour.

·        Si la date est antérieure au 30/12/1899 (la date de valeur 0), l’heure convertie en fraction de jour est retranchée à la valeur entière correspondant au jour.

En revanche, si vous ajoutez sans précaution une expression d’heure à un objet Date, l’opération sera traitée comme une simple opération arithmétique, et si la date initiale est antérieure 30/12/1899, l’objet Date résultant ne répondra pas à votre attente.

Cette convention rend problématiques les calculs de différence de date, ou les constructions de dates fondées sur l’ajout de valeurs numériques.

Les fonctions DATE_ADD et DURATION tiennent compte de l’implémentation particulière de l’heure dans une date négative, et donnent les résultats correspondant aux attentes de bon sens.

La fonction DATE_PARSE effectue la conversion de toute expression de date, milésienne ou grégorienne, avec ou sans heure, avant ou après le 30/12/1899, en tenant compte de la convention décrite ci-dessus, c’est-à-dire en retranchant la partie décimale correspondant à l’heure quand le compteur de date, nombre entier calculé à partir de l’expression de date, est négatif.

Fonctionnement avec l’option Calendrier depuis 1904

Avec cette option, une expression de date est convertie en un compteur de jours relativement au 1/1/1904 à 0 h. Si l’on change le format de cellule contenant une date, c’est ce compteur qui apparaît. Mais l’objet Date manipulé sous VBA est toujours le nombre de jours relativement au 30/12/1899. Sous VBA, le type de donnée (fonction IsDate) permet de distinguer les deux représentations. Par ailleurs Excel tient compte du fait que la cellule est ou non formatée en tant que date pour convertir ou non le contenu, soit quand il passe un paramètre de fonction, soit en cas de conversion de type. La date du 1/1/1904 est par exception représentée par la valeur 0, en étant du type date. 

Une date dont le compteur de jours (depuis 1904) est négatif est affichée avec une valeur fantaisiste précédée du signe « - ». Toutefois les fonctions milésiennes traitent correctement les valeurs de ces cellules.

Les dates antérieures au 3/1/104 obtenues par calcul sont rejetées, car le compteur MacOS dépasse la valeur plancher autorisée.

Il existe une ambiguïté sur les fonctions dont les paramètres ou le résultat sont des valeurs de date. Les paramètres de fonctions invoquées dans une cellule sont généralement passés en tant que compteur depuis 1904. Les paramètres des mêmes fonctions invoquées dans une autre routine sont passés en tant que données de type Date (sous-entendu : compteur depuis 1900). Le résultat de fonction, passé à une autre fonction, peut subir le même genre de différence de traitement.

Autre ambiguïté, une valeur d’objet Date affectée à une variable numérique dans une routine VBA risque d’être d’autorité diminuée de 1462, comme s’il s’agissait de la conversion de la valeur de date en la valeur de compteur depuis 1904. Une simple affectation sous-tend une soustraction.

La présente version présente un compromis permettant les calculs simples les plus courants. Les restitutions en milésien sont conformes aux expressions de dates. Toutefois, pour toutes les raisons évoquées ici, il est recommandé d’éviter les appels de fonction en cascade avec l’option Calendrier1904.

Conseils généraux pour des travaux impliquant de nombreuses dates.

1. La limite basse pour les dates Excel, le 1/1/100 (grégorien), est absolue. Aucun objet Date ne peut être affecté d'une date antérieure.

Si vous avez des travaux sur l'Antiquité, préférez LibreOffice ou équivalents, dont le domaine de représentation s’étend entre les années -32767 (du calendrier julien) et +32767 (du calendrier grégorien). Les présentes fonctions sont également disponibles pour ces environnements. La représentation des dates sous LibreOffice est à la fois plus simple et plus robuste que sous Excel.

2. Si vous collectez des fichiers de dates, forcez le type "Texte" pour les cellules accueillant ces dates, ce qui vous garantit une forte compatibilité, et préférez les fonctions milésiennes pour afficher ces dates, vous n’aurez aucune erreur.

3. Si vous devez faire des calculs sur des heures dans une journée, privilégiez la représentation par concaténation du jour et de l’heure ; vous pouvez aussi utiliser la fonction DATE_ADD fournie.

4. Pour faire des calculs de durée, surtout si vous utilisez des dates antérieures au domaine de conversion, utilisez la fonction DURATION fournie.

5. Méfiez-vous des résultats donnés par les fonctions standard d’Excel, surtout en Calendrier 1900 :

·        DATE donne, sans prévenir, des résultats faux avant le 1/3/1900, y compris si l’on indique des années antérieures à 1900.

·        ANNEE, MOIS etc. donnent des résultats faux sur les deux premiers mois de 1900.

6. N’utilisez l’option Calendrier depuis 1904 que pour des calculs simples. Aucune garantie ne peut être donnée pour des calculs en cascade avec cette option.

Détail des fonctions

Les fonctions sont ici données par ordre alphabétique.

DATE_ADD

Date après un délai donné, ou avant si le délai est négatif.

Paramètres :

Origin : la date de référence, origine du délai.

TimeShift : délai ajouté ou retranché à la date, en jours décimaux.

DATE_PARSE

Objet ou valeur date selon la convention Microsoft, correspondant à une expression de date grégorienne ou milésienne, avec ou sans heure.

Paramètres : MyCell, chaîne de caractères.

Observations spécifiques sur cette fonction

Cette fonction démontre qu’un même analyseur peut décoder des dates milésiennes et grégoriennes et les distinguer.

L’objet obtenu en retour de cette fonction est un compteur sous-jacent d’une date éventuellement sensible à la convention « calendrier 1904 ». Le résultat doit être mis dans une cellule formatée en date.

La chaîne peut comprendre une date et une heure. L'heure est selon le canevas h:m ou h:m:s, et est séparée de la date par un ou plusieurs espaces.

La date peut être grégorienne, mais aussi milésienne en notation internationale (mois numérique ou semi-numérique). Elle est considérée comme milésienne :

·        si elle commence par M, exemple : M2015-07-01, et dans ce cas l'ordre est année, mois, jour (le jour étant optionnel),

·        ou si elle contient un mois milésien en notation internationale, par exemple 1/1m/2000 ou 30 12m 2016.

Les notations suivantes sont rejetées :

·        15/01m/1950, car 01m n'est pas un mois milésien, il faut indiquer 1m.

·        M2015-7m-0 : cette notation est redondante.

Les séparateurs entre éléments de date sont soit l'espace, soit "/", ".", ou "-". Le même séparateur doit être utilisé. Il peut y avoir plusieurs espaces là où un seul est nécessaire. Une éventuelle virgule suivie d’un espace (notation à l’américaine) est ignorée. Mais non pas un point collé au quantième à la manière allemande ou scandinave, qui provoquera une erreur.

L'année est toujours codée avec au moins trois caractères, et peut comprendre un signe moins. C'est par ces caractéristiques qu'on la reconnaît.

La notation des années est relative : il y a une année 0, précédée d'années négatives. C'est la notation des astronomes, différente de la notation rétrograde des historiens. Cette remarque est toutefois inefficiente avec Excel, puisque la datation commence à l’année 100.

Il faut spécifier au moins deux éléments de dates, dont le mois.

Si l'année n'est pas spécifiée (pas d'élément de plus de deux caractères), l'année courante du calendrier utilisé est choisie ; par exemple, si nous sommes le 31/12/2015 (10 1m 2016), la chaîne 21/03 donnera 21/03/2015, alors que la chaîne 30/4m donnera 30/4m/2016.

Si le quantième du mois (jour du mois) n'est pas spécifié, le quantième 1 est choisi.

Si l'on doit traiter des séries de dates susceptibles de comprendre les deux premiers mois de l'année 1900, il est indispensable d'appliquer le format "Texte" aux cellules recevant ces séries pour éviter les erreurs Excel.

DAYOFWEEK_Ext

Entier, 0 à 6 ou 1 à 7, représentant le jour de semaine.

Cette fonction donne un résultat pour toute valeur de l'objet Date, non pas uniquement au-delà de 1900 ou 1904.

Paramètres :

·        TheDate, date dont on cherche le jour de semaine.

·        DispType, option de représentation :

o   0 ou défaut : 0 à 6, 0 pour dimanche (option la plus simple, recommandée par les mathématiciens dont John Conway pour la méthode des jours-pivots)

o   1, correspondant à l’option par défaut d’Excel : 1 à 7, 1 pour dimanche

o   2 : 1 à 7, 1 pour lundi (comme Excel)

o   3 : 0 à 6, 0 pour lundi (comme Excel)

o   11 à 17 : 1 à 7, 11 : 1 pour lundi, 12 : 1 pour mardi, etc. (comme Excel)

DURATION

Durée écoulée entre deux dates, en jours décimaux qu’Excel peut représenter en heures, minutes et secondes par formatage.

Paramètres

·        Begin_date : date de début

·        End_date : date de fin

Si la date de fin précède la date de début, la durée prend une valeur négative.

EASTER_SUNDAY

Objet Date, dimanche de Pâques (comput grégorien) de l’année en paramètre.

Paramètre : Year, l’année dont on cherche Pâques (>1582).

GREGORIAN_EPACT

L’épacte grégorienne, c’est-à-dire l’âge de la lune la veille du 1er janvier, calculée selon la convention du calendrier grégorien en vue du calcul de la date de Pâques. C’est un nombre entier entre 0 et 29, qui correspond à l’âge de la lune dite « ecclésiastique » la veille du 1er janvier d’une année théorique julienne, année dont la durée est uniformément de 365,25 jours. Ce résultat peut s’écarter d’un ou deux jours de la lune vraie. Par convention, l’épacte grégorienne est aussi l’âge de lune la veille du 1er mars, que l’année soit ou non bissextile. Le calcul est possible pour toute année autorisée par Excel, soit de 100 à 10000. Attention, le comput ecclésiastique grégorien n’a été promulgué qu’en 1582.

Paramètres : Year, l’année dont on chercher l’épacte.

JULIAN_EPOCH_COUNT

Nombre, jour julien avec partie décimale correspondant à la date.

Paramètre : TheDate, date et heure dont on cherche le jour julien. Rappel : une valeur entière du jour julien correspond à midi UTC.

JULIAN_EPOCH_DATE

Objet Date, correspondant au jour julien donné en paramètre.

Paramètre : Julian_Count, le jour julien, nombre décimal correspond à une date et une heure.

MILESIAN_DATE

Objet Date (entre 1/1/100 et 31/12/9999), correspondant à une date milésienne dont les composants sont donnés en paramètres. L'affichage par Excel des deux premiers mois de 1900 en grégorien est erroné, alors que la date est cohérente. La date est entière, l'heure est 00h.

Paramètres :

·        Year : Année milésienne (de 100 à 9999, comptée dans l'ère commune)

·        Month : numéro du mois (1 à 12)

·        DayInMonth : Quantième dans le mois (1-31)

Si le triplet ne correspond pas à une date milésienne valide, la fonction retourne une erreur.

MILESIAN_DAY

Quantième dans le mois milésien d'un objet Date (1-31)

Paramètres : TheDate : objet Date, qui peut être une date et heure : seule la date est considérée

MILESIAN_DISPLAY

Une chaîne de caractères exprimant la date milésienne d'un objet Date.

Paramètres :

·        TheDate : objet Date, qui peut être une date et heure, et même une simple expression de date.

·        Wtime (optionnel) : Booléen, VRAI par défaut. Si VRAI, l'heure (partie décimale de la date) est également affichée.

MILESIAN_DOOMSDAY

Entier, 0 à 6 ou 1 à 7, indiquant le jour de semaine clé, « clavedi » ou encore « doomsday » pour l’année.

C’est le jour de semaine où tombent tous les jours-pivots d’une année milésienne ou grégorienne. Connaître ce jour permet de trouver mentalement le jour de la semaine de n’importe quelle date milésienne ou grégorienne dans l’année.

Ce jour de semaine est donné selon les mêmes convention que DAYOFWEEK_Ext

Paramètres :

·        Year, l’année dont on cherche le clavedi ou « doomsday ».

·        DispType, option de représentation :

o   0 ou défaut : 0 à 6, 0 pour dimanche (option la plus simple, recommandée par les mathématiciens dont John Conway pour la méthode des jours-pivots)

o   1, correspondant à l’option par défaut d’Excel : 1 à 7, 1 pour dimanche

o   2 : 1 à 7, 1 pour lundi (comme Excel)

o   3 : 0 à 6, 0 pour lundi (comme Excel)

o   11 à 17 : 1 à 7, 11 : 1 pour lundi, 12 : 1 pour mardi, etc. (comme Excel)

MILESIAN_EPACT

L’épacte milésienne selon le comput ecclésiastique grégorien, c’est-à-dire l’âge de la lune ecclésiastique la veille du 1er 1m. C’est par convention l’épacte grégorienne diminuée de 11 modulo 30, quelle que soit l’année. Cette épacte est moins précise, mais plus robuste que l’épacte milésienne demi-entière définie dans L’Heure milésienne. Elle peut être calculée mentalement.

Paramètres : Year, l’année dont on chercher l’épacte.

MILESIAN_IS_LONG_YEAR

Booléen, indique si l'année milésienne est abondante. Une année milésienne abondante est une année qui précède une année bissextile.

Paramètre : Year, année dont on cherche à déterminer le type.

MILESIAN_MONTH

Numéro de mois milésien d'un objet Date (1 à 12)

Paramètres : TheDate : objet Date, qui peut être une date et heure : seule la date est considérée

MILESIAN_MONTH_SHIFT

Date de même quantième, n mois milésiens avant ou après une date donnée. Même principe de fonctionnement que MOIS.DECALER. Le jour 31 peut devenir 30 si le mois cible n'a que 30 jours.

Paramètres :

·        TheDate : date de départ

·        MonthShift : nombre de mois de décalage vers le futur (+) ou le passé (-)

MILESIAN_MONTH_END

Date de fin de mois milésien, n mois milésiens avant ou après une date donnée. Même principe de fonctionnement que la fonction FIN.MOIS (qui cherche une fin de mois grégorien).

Paramètres :

·        TheDate : date de départ

·        MonthShift : nombre de mois de décalage vers le futur (+) ou le passé (-)

MILESIAN_YEAR

Année milésienne d'un objet Date.

Paramètres : TheDate : objet Date, qui peut être une date et heure : seule la date est considérée.

MILESIAN_YEAR_BASE

Objet Date correspondant à la base d'une année milésienne c'est à dire le jour précédent le 1 1m de l'année à 0 h. Permet notamment de chercher les chiffres clés : le clavedi ou dies illa, jour de semaine de ce jour, ainsi que le quantième d’un jour dans une année, par simple différence avec ce jour.

Paramètres : Year : l'année dont on cherche la base.

MOON_PHASE_LAST et MOON_PHASE_NEXT

Calcul de la dernière ou respectivement de la prochaine phase de lune. Marge d'erreur de 6 heures pour +/- 3000 ans à partir de l'an 2000 (en réalité on ne peut calculer avant l'an 100). La lune représentée est moyenne et non corrigée : le mouvement représenté est celui d’une lune fictive moyenne animée d’un mouvement circulaire et uniforme, synchrone avec la lune réelle mais sans ses variations de mouvement. De plus il n’y a pas de correction du ralentissement de la rotation de la Terre. La nouvelle lune moyenne de référence est la première lune moyenne de l'an 2000.

Paramètres :

·        FromDate : jour auquel on se réfère ;

·        MoonPhase (=0 si non présent) : 0=nouvelle lune, 1=premier quartier, 2=pleine lune, 3=dernier quartier, erreur pour toute autre valeur.

Exemples

Le classeur « Jours remarquables » comprend des exemples de calculs des jours de fêtes et de congés fixes et mobiles de chaque année. Ils utilisent les fonctions du présent module et les fonctions classiques de date d’Excel. Ces calculs ne sont possibles qu’à partir de 1901 (ou 1905 avec l’option Calendrier 1904). Un avertissement est indiqué en haut de page.

Avant d’ouvrir ce fichier, il faut charger le complément Excel Milesian, autoriser les macros et éventuellement modifier les liens.

Informations, commentaires, propositions d'amélioration, signalement d'erreurs :

www.calendriermilesien.org, ou louis-aime@calendriermilesien.org