Macros

From The Document Foundation Wiki
< Macros‎ | Calc
Jump to: navigation, search

Comment entrer une date dans une cellule ?

Une date est un nombre de jours depuis la date origine[1]

On pourrait donc être tenté d'utiliser la propriété .Value d'une cellule pour entrer une date par programme. Toutefois :

  • cela impose de savoir qu'au 21/04/2012 (par exemple), correspond le nombre 41020 avec la date origine par défaut,
  • une date entrée ainsi par programme ne serait pas formatée par défaut au format date.

Utiliser la propriété .String de la cellule ne convient pas davantage car la date serait traitée comme un texte.

La solution est de recourir à la propriété .FormulaLocal qui nous permet d'entrer la date au format local, c'est-à-dire au format utilisé dans le tableur dans la langue de l'utilisateur (ne fonctionnera donc pas dans un contexte international).

L'exemple ci-dessous entre la date 21/04/2012 dans la cellule A1 :

Option Explicit

Sub LibOExemplesDate

dim LibOClasseur as object
dim LibOFeuille as object
dim LibOCellule as object

LibOClasseur = thiscomponent 
LibOFeuille = LibOClasseur.sheets.getByName("Feuille1")
LibOCellule = LibOFeuille.getCellRangeByName("A1")

LibOCellule.formulaLocal = "21/04/2012"

End Sub


La propriété .FormulaLocal permet également d'entrer une formule dans la langue de l'utilisateur. Par exemple :

LibOCellule.formulaLocal = "=AUJOURDHUI()"


Pour lire une date contenue dans une cellule, nous utiliserons les différentes propriétés en fonction du besoin. Le tableau ci-dessous résume les cas de figure lorsque la cellule contient la date 21/04/2012 ou la formule AUJOURDHUI()[2] 


Propriétés / Valeurs retournées
Propriétés Contenu de la cellule
21/04/2012 =AUJOURDHUI()[2]
.String 21/04/2012 21/04/2012
.Value 41020 41020
.Formula 41020 = TODAY()
.FormulaLocal 21/04/2012 =AUJOURDHUI()


Notes :

  1. La date origine est définie par Outils ▸ Options ▸ LibreOffice Calc ▸ Calcul ▸ Date
  2. 2.0 2.1 Le résultat dans le tableau est donné pour la date du jour 21/04/2012, date de création de cette FAQ ; adapter cette valeur à la date courante.