Yaisse !
C’est nettement plus élégant que mon énumération d’expressions conditionnelles !
Sans doute faut-il encore ajouter (pour la compréhension de ceux qui découvrent le langage) que la technique pour arriver à cette fin utilise, chez
Dude, l’appel aux fonctions du tableur
Calc. La technique est intéressante mais il faut encore comprendre que les fonctions du tableur appelées sont exprimées dans le code de
Dude en anglais et qu’elles ont leur équivalent dans le tableur
en français (On trouvera
ici et
là des compléments pour la traduction). «
getEoMonth » se dit donc « FIN.MOIS » et «
DAY » se traduit par « JOUR ». Donc, pour plus de compréhension à la lecture des lignes de code de
Dude, on pourra prendre le tableur
Calc et considérer :
- Soit trois cellules : A1, B1 et C1.
- En A1, saisir une date quelconque.
- Formater le type de la cellule B1 en date : Format -> Cellule -> Onglet Nombre -> Catégorie Date
et saisir la formule : « =FIN.MOIS(A1; 0) » ; l’équivalent du code de Dude est :
Code : Tout sélectionner
FA.callFunction("com.sun.star.sheet.addin.Analysis.getEoMonth", array(oDate, 0))
- en C1 saisir la formule : « =JOUR(B1) » ; l’équivalent du code de Dude est :
Ceci pouvant servir en dehors de toute programmation par macro...
[Edit du 27/12/09]
Dans un
post tout récent,
gerard24 me fait connaître la fonction JOURSDANSMOIS qui se traduit en anglais GETDAYSINMONTH. Après une petite recherche sur le Web pour en connaitre l’accès, les quatre lignes de code de
Dude peuvent donc se réduire à deux soit :
Code : Tout sélectionner
FA = createunoservice("com.sun.star.sheet.FunctionAccess")
nbJours = FA.callFunction("com.sun.star.sheet.addin.DateFunctions.getDaysInMonth", array("1/" & mois & "/" & annee))