3.5 Fonctions de date et heure

LOC – 13/05/2018 – 1

Plan de la fiche

1. Avant de commencer

2. Détail des fonctions

2.1 Fonctions retournant une valeur interne

Aujourdhui(), Maintenant()

Date(), Temps()

Dateval(), Tempsval()

Fin.mois()

Mois.decaler()

Serie.jour.ouvre()

Serie.jour.ouvre.intl()

Dimanchedepaques()

2.2 Calculs sur les dates retournant un nombre

Datedif()

Annee(), Mois(), Jour()

Heure(), Minute(), Seconde()

Jours(), Jours360(), Joursem()

Fraction.annee()

No.semaine.iso()

No.semaine.OOO()

No.semaine()

Nb.jours.ouvres.intl()

Présentation

Cette fiche présente en détail les fonctions et les calculs de dates, et par extension, de temps (heures, minutes, secondes).

1. Avant de commencer

Une date, sous LibreOffice Calc, est un concept complexe.

Une valeur interne

En valeur interne, une date est un nombre entier de jours écoulés depuis le jour zéro, le 30/12/1899 par défaut. Ce jour zéro peut être modifié dans les options ; mais attention, c’est un paramétrage au niveau du système tableur qui s’applique à tous les classeurs. Il est donc fortement recommandé de ne pas modifier cette option à la légère.

De plus, avec sa valeur décimale éventuelle, la valeur interne intègre aussi le calcul du temps, les heures, minutes et secondes.

Des composants

Une date comme un temps sont composés d’éléments : jour, mois, année, heure, minute, seconde. J’appelle ces éléments, des composants.

Une chaîne de caractères

Une date peut être exprimée comme une chaîne de caractères respectant un format utilisant une combinaison quelconque de composants et de séparateurs (/ – : .). J’utilise personnellement le format JJ/MM/AAAA. Pour les temps, le format habituel est : HH:MM:SS.

Certains formats permettent aux chaînes de caractères correspondantes d’être reconnues comme des dates. Ces formats sont déclarés au niveau de LibreOffice, Outils, Options, Paramètres linguistiques, Langues, Motifs d’acceptation des dates : D/M/Y, D.M.Y, D-M-Y (D = jour, M = mois, Y = Année). Cela signifie qu’une cellule contenant une chaîne de caractère comme “12/06/2018” pourra être reconnue dans une formule comme un date, si le paramètre en question doit être une date.

Un nombre

Un nombre peut être reconnu comme une date. Il s’agit alors de la valeur interne de la date.

Rappel important : les formats

Dans une cellule de type Date, la valeur enregistrée est toujours la valeur interne. C’est le format de la cellule qui conditionne le visible.

Les codes composants utilisés dans ces formats dépendent de la langue du classeur. En français :

AA ou AAAA : l’année sur 2 ou 4 chiffres (ou avec Y en anglais) ;

M ou MM ou MMM ou MMMM : (exemple pour septembre) le mois sur 1 ou 2 chiffres (M) : (9) ; sur 2 chiffres (MM) : (09) ; avec un intitulé abrégé (MMM) : (Sept.) ; avec un intitulé complet (MMMM) : (Septembre) ;

J ou JJ : quantième jour (1 à 31) sur 1 ou 2 chiffres (8), ou 2 chiffres (08) ;

NN ou NNN : intitulé du jour (Lundi à Dimanche) abrégé (NN) : (Lun.) ; complet (NNN) : (Lundi).

H ou HH : heures de 0 à 23 sur un ou deux chiffres, ou 2 chiffres ;

M ou MM : minutes de 0 à 59 sur un ou deux chiffres, ou 2 chiffres ;

S ou SS : secondes de 0 à 59 sur un ou deux chiffres, ou 2 chiffres.

Vocabulaire propre à cette fiche

J’appelle valeur interne : la date et le temps exprimés avec leur valeur interne, un nombre entier de jours écoulés depuis le jour zéro, complété de décimales pour préciser le temps.

J’appelle date, temps ou date-temps : l’information sous forme explicite, généralement visible avec un format reconnu comme format standard de date par le système LibreOffice ou le format de la cellule.

J’appelle composant : l’année, le mois, le jour, l’heure, la minute ou la seconde entrant dans la composition d’une date-temps ; les composants sont des nombres entiers; ils sont séparés par des séparateurs (/ – : .).

2. Détails des fonctions

Je distingue les fonctions retournant une valeur interne, c’est-à-dire une date ou un temps, reconnu comme étant de type Date et heure et les fonctions retournant un nombre, c’est-à-dire de type Nombre. Beaucoup de confusions perturbent les utilisateurs de ses fonctions. Séparer leur résultat par type d’information permet d’y voir plus clair.

2.1 Fonctions retournant une valeur interne

Aujourdhui(), Maintenant()

Ces fonctions sont analogues et n’ont pas de paramètres.

Aujourd’hui() donne la valeur interne de la date système en nombre entier de jours écoulés depuis le jour zéro.

Maintenant() donne la valeur interne de la date-temps système en nombre entier de jours, les décimales précisant le temps.

Date (Année; Mois; Jour)

Renvoie une valeur interne en fonction des paramètres.

Année doit être exprimée entre 1583 et 9957, ou 0 et 99 (la correspondance avec des années à 4 chiffres est précisée dans les paramètres système (Outils, Options, LibreOffice, Général,Années (deux chiffres)Interpréter comme années entre ♪ …).

Si pour Mois et Jour, les valeurs indiquées sont irréelles, les composants indiqués sont recalculés avec leurs premières valeurs réelles suivantes.

Exemple : Date(2015;14;35) = 06/03/2016.

Temps (Heure; Minute; Seconde)

Renvoie une valeur interne de temps à partir des composants exprimés en entiers.

Exemple : Temps(12;30;10) = 0,520949074074074 (si la cellule est formatée en Nombre), ou = 12:30:10 si la cellule est formatée en Heure.

Dateval (“expression”)

Renvoie une valeur interne à partir d’une chaîne de caractères.

La chaîne de caractères doit exprimer une date dans un format strict reconnu par LibreOffice (voir ci-dessus, § 1. Avant de commencer). Cette chaîne doit être mise entre guillemets doubles.

Expression ne peut être qu’une chaîne de caractères ; si Expression est une référence de cellule, une erreur 502 : Erreur de paramètres est sortie.

Exemple : Dateval(“31/12/2018”) = 43465.

Tempsval (« Expression »)

Retourne une valeur interne de temps à partir d’un temps Exprimé en chaîne de caractères.

Exemple : Tempsval(“16:00:00”) = 0.66667.

Fin.mois (Date-départ; nombre-de-mois)

Retourne la valeur interne d’une date de fin de mois, calculée à partir de la Date-départ à laquelle est ajouté le Nombre-de-mois. Nombre-de-mois peut être négatif, nul ou positif. Date-départ peut être une référence de cellule de type Date ou une constante numérique (valeur interne) ou de type Date (entre guillemets doubles).

Exemple avec A1 = 25/05/2018 :

Fin.mois(A1; 0) = 31/05/2018 ;

Fin.mois(A1; -1) = 30/04/2018

Mois.decaler (Date-départ; Nombre-de-mois)

Renvoie la valeur interne d’une date calculée en ajoutant Nombre-de-mois à Date-départ. Le calcul ne tient pas compte des jours. Nombre-de-mois peut être négatif.

Exemple : avec A2 = 31/12/2016, dans une cellule Date formatée JJ/MM/AAAA,

Mois.decaler(A2; -10) = 29/02/2016.

Notons, effectivement que les jours sont exclus du calcul.

La date résultante retient le quantième jour de Date-départ, éventuellement adapté à la fin de mois comme dans l’exemple. 

Serie.jour.ouvre (Date-départ; Nombre-jours-ouvrés; Liste-jours-fériés)

Retourne la valeur interne d’une date calculée à partir d’une Date-départ, un nombre de jours ouvrés et une liste de jours fériés.

Date-départ est une valeur interne ordinaire éventuellement interprétée à partir d’une constante de type Date.

Nombre-de-jours-ouvrés est un nombre entier.

Liste-de-jours-fériés est une zone de cellules contenant chacune une valeur interne de date de jours fériés.

Il faut comprendre la formule ainsi : voici la date du n-ième jour ouvré en partant de Date-départ et en tenant compte des jours fériés indiqués dans la Liste-de-jours-fériés. Sont aussi considérés comme jours fériés, les samedis et dimanches.

Exemple avec : A1 = lun. 30/04/2018 ; A2 = 15 ; A3 = mar. 01/05/2018 ; A4 = mar. 08/05/2018.

Série.jour.ouvre(A1; A2; A3:A4) = mer. 23/05/2018.

Voir aussi Serie.jour.ouvre.intl().

Serie.jour.ouvre.intl (Date-départ; Nb-jours-ouvrés; [Def-WE; Liste-jours-fériés])

Retourne une valeur interne de date calculée à partir d’une Date-départ, et un Nombre-jours-fériés, compte-tenu d’une définition des jours ouvrés dans la semaine ou de la Définition des WE et d’une Liste de jours fériés.

Def-WE peut prendre deux formes : un code ou une chaîne de caractères.

Les codes possibles précisent le ou les jours composant le WE : 1 (par défaut si omis) = samedi et dimanche, 2 = Dimanche et lundi ; 3 = Lundi et mardi ; 4 = Mardi et mercredi ; 5 = Mercredi et jeudi ; 6 = Jeudi et vendredi ; 7 = Vendredi et samedi. 11 = Dimanche seul, 12 = lundi seul, etc.

La chaîne de caractères a 7 caractères, 0 (zéro) ou 1, un pour chaque jour en commençant par Lundi. 0 = jour travaillé, 1 = jour de WE. Exemple : “0000011” fait référence à une semaine travaillée du lundi au vendredi. Elle est exprimée entre guillemets doubles.

Liste-jours-fériés est une suite de cellules contenant chacune la valeur interne d’une date de jours fériés.

Exemple avec A1 = 01/01/2018, A2 = 41, A3 = 01/01/2018, A4 = 14/02/2018,

Serie.jour.ouvre.intl(A1; A2; “0000011”;A3:A4) = 28/02/2018 (41 = 8 semaines de 5 jours ouvrés, moins 2 jours fériés, plus 3 jours dans la dernière semaine).

Cette fonction a un corollaire donnant un nombre de jours ouvrés entre deux dates : Nb.jours.ouvres.intl().

Dimanchedepaques(Année)

Retourne une valeur interne correspondant à la date du dimanche de Pâques de l’Année.

Exemple : Dimanchedepaques(2018) = 01/04/2018.

2.2 Calculs sur les dates retournant un nombre

 Datedif (Date-début; Date-fin; Param-calcul)

Retourne une différence entre deux dates. Date-fin doit être supérieur ou égal à Date-debut.

La différence égale simplement : Date-fin moins Date-debut.

Param-calcul précise la nature de la différence :

« d » : nombre entier de jours;

« m » : nombre entier de mois;

« y » : nombre entier d’années;

« md » : nombre positif entier de jours en éliminant les années et les mois ; le calcul est fait uniquement sur les composants Jours. Si Jour de Date-fin est plus petit que celui de Date-début, le système lui ajoute 30 avant de sortir la différence.

« yd » : nombre positif entier de jours en éliminant les années ; le calcul est fait comme avec le paramètre “d” en considérant que les années sont identiques, ou en ajoutant 1 à Année de Date-fin si Mois de Date-fin est inférieur à Mois de Date-début.

« ym » : nombre positif entier de mois en ne calculant la différence que sur les numéros de mois. Les Jours ne sont pas pris en compte. Si Mois de Date-fin est inférieur à celui de Date-début, 12 lui est ajouté pour obtenir une différence positive.

Annee (Valeur-interne), Mois (Valeur-interne), Jour (Valeur-interne)

À partir d’une valeur interne de date (variable ou constante, numérique ou chaîne de caractères reconnue comme date), retourne l’année (nombre), le mois (nombre de 1à 12) ou le jour (nombre de 1 à 31).

Exemples : avec une date de départ par défaut = 30/12/1899,

Annee(1) = 1899; Annee(2) = 1900; Annee(43465) = 2018.

avec A2 = 12/05/2018 : Mois(A2) = 5.

Jour(A2) = 12.

Heure (Valeur-interne), Minute(Valeur-interne), Seconde(Valeur-interne)

Retourne l’heure (de 0 à 23), la minute (de 0 à 59) ou la seconde (de 0 à 59) à partir d’une valeur interne décimale.

Jours (Date-départ; Date-arrivée)

Retourne la différence en nombre entier de jours entre une Date-départ et une Date-arrivée. Si Date-arrivée est postérieure à Date-départ, le nombre de jours sera négatif.

Exemple avec A1 = 01/01/2018 et A2 = 31/01/2018 :

Jours(A1;A2) = -30

Voir aussi Jours360().

Jours360 (Date-début; Date-fin; [Type-calcul])

Retourne un nombre entier de jours écoulés depuis Date-début jusqu’à Date-fin dans le cadre de l’année financière, comportant 12 mois de 30 jours.

Type-de calcul : =1 si méthode américaine (NASD) par défaut si omis ; =2 si méthode européenne.

Voir aussi Jours().

Joursem (Date; Type-calcul)

Retourne le numéro du jour de Date dans la semaine en fonction du Type-calcul.

Date est une valeur interne. Type de calcul peut prendre les valeurs :

1 (par défaut si omis) : retourne 1 pour Dim. 7 pour Sam.

2 : 1 pour Lundi, 7 pour Dimanche

3 : 0 pour Lundi, 6 pour Dimanche

11 : 1 pour Lundi, 7 pour Dimanche ; 12 : 1 pour Mardi, 7 pour Lundi ; 13 : 1 pour Mercredi, 7 pour Mardi, etc.

Exemple : Joursem(01/04/2018;2) = 7

Fraction.annee(Date-départ; Date-fin; [Type-de-calcul])

Retourne un nombre décimal (fraction) indiquant la part de l’intervalle Date-départ – Date-fin dans une année entière.

Type-de-calcul précise :

= 0 (par défaut si absent) : méthode américaine (NASD), 12 mois de 30 jours) ;

= 1 : nombre exact de jours dans les mois et l’année ;

= 2 : nombre exact de jours dans les mois, année de 360 jours ;

= 3 : nombre exact de jours dans les mois, année de 365 jours ;

= 4 : méthode européenne, 12 mois de 30 jours.

Exemple avec A1 = 01/02/2018 ; A2 = 31/03/2018 ;

Type de calcul = 0 : Fraction.annee(A1; A2; 0) = 0.166667

Type de calcul = 1 : Fraction.annee(A1; A2; 1) = 0.158904.

No.semaine.iso (Valeur-interne)

Retourne le numéro de semaine d’une valeur interne suivant la norme ISO. Selon la norme ISO, une semaine commence le lundi et la première semaine de l’année est celle qui contient le 4 janvier.

Exemples :

avec A2 = dim. 3 Jan. 2016 : No.semaine.iso(A2) donne 53 ;

avec A2 = lun. 4 jan. 2016 : No.semaine.iso(A2) donne 1.

No.semaine.OOO(Valeur-interne)

Obsolète. Pour l’interopérabilité avec les versions LibreOffice antérieures à 5.1.0, identique à No.semaine.iso.

No.semaine(Valeur-interne, [Param])

Avec Param = 21 ou = 150 (voir ci-après), cette formule est identique à No.semaine.iso. (Système 2 de numérotation des semaines)

Sinon, cette formule utilise le système 1 pour numéroter les semaines. La semaine contenant le 1er janvier est la première semaine de l’année, et le premier jour de la semaine est variable. Param permet de préciser de premier jour selon sa valeur :

=1 ou =17 : dimanche,

=2 ou =11 : lundi,

=12 : mardi, =13 : mercredi, =14 : jeudi, =15 : vendredi, =16 : samedi.

=21 ou 150 : lundi suivant le système 2.

Si Param est omis, il est pris pour =1.

Nb.jours.ouvres.intl(Date-début; Date-fin; [Def-WE; Liste-jours-fériés])

Retourne un nombre de jours ouvrés entre une Date-début et Date-fin en tenant compte de la Définition des WE et d’une Liste-de-jours-fériés.

Date-début est le premier jour possible de jour ouvré ; Date-fin est le dernier jour possible.

Def-WE peut prendre deux formes : un code ou une chaîne de caractères.

Les codes possibles précisent le ou les jours composant le WE : 1 (par défaut si omis) = samedi et dimanche, 2 = Dimanche et lundi ; 3 = Lundi et mardi ; 4 = Mardi et mercredi ; 5 = Mercredi et jeudi ; 6 = Jeudi et vendredi ; 7 = Vendredi et samedi. 11 = Dimanche seul, 12 = lundi seul, etc.

La chaîne de caractère a 7 caractères, 0 (zéro) ou 1, un pour chaque jour en commençant par Lundi. 0 = jour ouvré, 1 = jour de WE – non ouvré. Exemple : “0000011” fait référence à une semaine travaillée du lundi au vendredi.

Liste-jours-fériés est une suite de cellules contenant chacune la valeur interne d’une date de jours fériés.

Exemple avec A1 = 01/01/2018, A2 = 28/02/2018, A3 = 01/01/2018, A4 = 14/02/2018,

Nb.jours.ouvres.intl(A1; a2; “0000011”;A3:A4) = 41 (8 semaines de 5 jours ouvrés, moins 2 jours fériés, plus 3 jours dans la dernière semaine).

Cette fonction a un corollaire donnant une date au bout d’un certain nombre de jours ouvrés : Serie.jour.ouvre.intl().

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *