Fonctions personnalisées 1
Accès direct : page 1, page 2, page 3, page 4,
Vrai débutant(e) ? Un conseil, commencez par la macro Loto.
Créer une fonction personnalisée, c'est relativement simple. Commençons par un exemple facile : le calcul de la surface d'un cercle en fonction d'un rayon connu.
Ouvrons un nouveau classeur, puis via Outils, Macro, Gérer les macros, OpenOffice.org Basic, ouvrez un nouveau module, nommé Module1 par défaut puis OK
Comme dans les macros, accents et espaces sont interdits dans les variables. Dans le Module écrivons cette fonction simple :
SurfaceCercle001
Même si ça peut vous étonner, vous venez de créer une nouvelle fonction dans Calc. Pour le vérifier, revenez dans Calc et, dans n'importe quelle cellule, entrez par exemple : = SurfaceCercle(12), vous obtiendrez en retour 452,39 (suivant format d'affichage).
Remarque la fonction est automatiquement affichée en majuscules dans Calc . Ainsi vous pouvez lire = SURFACECERCLE(12)
Cependant en regardant de plus près, il faudrait pour être plus sérieux déclarer les formats de variables. La méthode change un peu par rapport à une macro traditionnelle. On peut toujours placer des Dim à l'intérieur de la fonction, pour des calculs internes par exemple, mais de plus on déclare les variables entrées et sorties dans Function comme suit :
SurfaceCercle002
Ceci est équivalent à :
Dim SurfaceCercle As Double
Dim Rayon As Double
Dans une macro.
C'est le moment de faire un test simple. Dans SurfaceCercle002 nous avons déclaré nos variables comme Double. Testez avec des variables comme Long, puis faites des tests dans Calc. Les résultats vont varier sensiblement.
Revenons un instant dans Calc. Tout comme les autres fonctions vous allez pouvoir écrire, par exemple :
= SURFACECERCLE(A1)
qui retourne la surface du cercle dont le rayon est dans la cellule A1
Poursuivons avec le périmètre du rectangle :
PerimetreRectangle
Dans Calc =PERIMETRERECTANGLE(10; 5) retourne 30
Pour tester le bon fonctionnement d'une fonction depuis le Basic, il suffit de créer une macro (pas une fonction !) qui va appeler cette macro. Par exemple :
TestPerimetreRectangle
En ligne 4, l'écriture est importante. Si vous vous contentez d'écrire :
Retour = PerimetreRectangle
Une erreur Runtime Error BASIC. L'argument n'est pas facultatif, va être générée en ligne 2 de la fonction PerimetreRectangle
Autre exemple de fonction avec la conversion des degrés Fahrenheit en degrés Celsius. Il suffit de connaître la formule pour créer la fonction Celsius.
STOP Voici la formule : Celsius = ( Fahrenheit - 32 ) * 5/9, essayez de l'appliquer.
Celsius
Vous avez réussi ? Bien sûr.
Le nom Celsius n'est pas vraiment explicite. Il aurait fallu donner un nom plus causant comme FahrenheitEnCelsuis. Revers de la médaille, le risque de fautes à l'écriture dans Calc. Il convient donc de bien réfléchir au nom de fonction.
Précision Cette fonction est rigoureusement identique à =CONVERT_ADD(A1; "F"; "C") si la valeur à convertir est en A1.
Tout fonctionne ? C'est parfait ! Mais vous avez sans doute remarqué un problème. Ces superbes fonctions ne fonctionnent qu'avec le classeur à laquelle elles sont attachées. Comment faire pour que ces fonctions soient accessibles par tous les classeurs ? C'est simple !
Donnez un nom causant au module. Ce n'est pas indispensable, mais ça peut aider. |
Voici une des méthodes possibles. Depuis l'EDI (Environnement de Développement Intégré), on fait Outils, Macros, Gérer les macros, OpenOffice.org Basic |
Dans la boite de dialogue Gestion des macros de OpenOffice.org Basic, ouvrez l'onglet Modules. En dépliant Sans nom 1 (le nom de votre classeur par défaut) et Standard, vous arrivez au module ModuleMesFonctions |
Dépliez Mes macros, Standard. Sur l'image ci-contre des modules qui logiquement n'apparaissent pas sur votre machine. Ce sont des modules pour mes propres tests. |
Sélectionnez ModuleMesFonctions, maintenez le clic gauche enfoncé, puis déplacez vous vers le haut. Le curseur change de forme et un trait fin horizontal suit approximativement le curseur pour désigner l'emplacement futur du module. Relâchez le clic gauche et le module vient de changer de place. Il se trouve maintenant disponible pour tous les classeurs Calc. |
Votre module a été déplacé, il n'existe donc plus dans le classeur d'origine. Nous aurions pu faire la copie en maintenant la touche Ctrl enfoncée en plus du clic gauche pendant le déplacement. L'icône de déplacement se serait alors transformé en icône de copie . Vous avez sans doute également remarqué que si vous étiez hors zone de copie l'icône devenait |
Vous le constatez : il est très simple de créer des fonctions personnalisées. Il convient donc d'être très prudent avec des fonctions qui par exemple peuvent manipuler, déplacer ou même supprimer des fichiers. Les tests poussés seront nécessaires, de même qu'on doit être prudent avec des fichiers contenant des macros d'origine douteuse.
Ce site n'est plus mis à jour. Merci aux nombreux visiteurs depuis 2003. Consultez le Wiki LibreOffice. |
|||||
Le tableur Calc par l'exemple : christianwtd@free.fr
|
. | Site optimisé pour Firefox |
Dernière modification : 29/08/2010 à 18h47
Compteur de visite temps réel LERAPIDE |
Compteur non certifié |