Contenu
Index 🔎︎

# Utilisation des procédures et des fonctions

Cette rubrique décrit l'utilisation de base des procédures et des fonctions de LibreOffice Basic.

Lors de la création d'un nouveau module, LibreOffice Basic insère automatiquement une procédure SUB appelée "Main". Ce nom par défaut n'a strictement aucune relation avec l'ordre ou le point de départ d'un projet LibreOffice Basic. Vous pouvez donc renommer cette procédure SUB en toute sécurité.

Certaines restrictions s'appliquent aux noms des subs des variables publiques et des fonctions. Vous ne devez pas utiliser le même nom que l'un des modules de la même bibliothèque.

Les procédures (SUB) et les fonctions (FUNCTION) vous aident à conserver une présentation structurée en décomposant un programme en parties logiques.

L'un des avantages des procédures et des fonctions est qu'une fois que vous avez développé un code de programme contenant des composants de tâche, vous pouvez l'utiliser dans un autre projet.

## Transmission de variables aux procédures(SUB) et aux fonctions (FUNCTION)

Des variables peuvent être transmises aux procédures et aux fonctions. Les éléments SUB ou FUNCTION doivent être déclarés pour accepter des paramètres :

    Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
    Code de programme
    End Sub

L'élément SUB est appelé à l'aide de la syntaxe suivante :

    SubName(Value1, Value2,...)

Les paramètres transmis à l'élément SUB doivent correspondre à ceux spécifiés dans la déclaration de SUB.

Le même processus doit s'appliquer aux fonctions (FUNCTION) pour que celles-ci puissent renvoyer un résultat. Ce résultat peut être défini juste avant d'avoir atteint la fin de la fonction en assignant le nom de la fonction et un paramètre à la valeur à renvoyer par la fonction :

    Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
    Code de programme
    NomDeLaFonction=Resultat
    End Function

FONCTION est appelée à l'aide de la syntaxe suivante :

    Variable=NomDeLaFonction(Paramètre1, Paramètre2,...)

Pour appeler une procédure ou une fonction, vous pouvez également utiliser le nom complet suivant :
Library.Module.Macro()
. Par exemple, pour appeler la macro Autotexte depuis la bibliothèque Trucs et astuces, utilisez la commande suivante :
Gimmicks.AutoText.Main()

## Transmission de paramètres par valeur ou par référence

Les paramètres peuvent être transmis à un élément SUB ou FUNCTION par référence ou par valeur. Sauf indication contraire, les paramètres sont toujours transmis par référence. Cela signifie qu'une procédure ou une fonction reçoit un paramètre et peut lire et modifier sa valeur.

Si vous souhaitez transmettre un paramètre par valeur, insérez le mot-clé "ByVal" avant le paramètre lorsque vous appelez SUB ou FUNCTION, par exemple :

    Result = Function(ByVal Parameter)

Dans ce cas, le contenu d'origine du paramètre n'est pas modifié par la fonction, car elle ne reçoit que la valeur et non pas le paramètre en lui-même.

## Portée des variables

Une variable définie dans un élément SUB ou FUNCTION reste valide uniquement jusqu'à la fermeture de la procédure. L'on se réfère à ce type de variable comme variable "locale". Cependant, dans bien des cas, une variable doit rester valide dans toutes les procédures, dans tous les modules de toutes les bibliothèques, ou après la fermeture d'un SUB ou FUNCTION.

### Déclaration de variables en dehors d'un élément SUB ou FUNCTION

    Global VarName As TYPENAME

La variable est valide tant que la session LibreOffice est ouverte.

    Public VarName As TYPENAME

La variable est valide dans tous les modules.

    Private VarName As TYPENAME

La variable est valide dans ce module.

    Dim VarName As TYPENAME

La variable est valide dans ce module.

### Exemple pour les variables privées

Force les variables privées à être privées à travers les modules en paramétrant CompatibilityMode(true).

    ' ***** Module1 *****
    Private myText As String
    Sub initMyText
        monTexte = "Bonjour"
        Print "In module1 : ", monTexte
    End Sub

    ' ***** Module2 *****
    'Option Explicit
    Sub demoBug
        CompatibilityMode( true )
        initMyText
        ' Now renvoie une chaîne vide
        ' (ou affiche une erreur pour Option Explicit)
        Print "Now in module2 : ", monTexte
    End Sub

### Enregistrement du contenu d'une variable après la fermeture d'un élément SUB ou FUNCTION

    Static VarName As TYPENAME

La variable conserve sa valeur jusqu'à la prochaine ouverture d'une instruction Function ou de Sub. La déclaration doit exister à l'intérieur d'un élément SUB ou FUNCTION.

## Spécification du type de valeur de retour de FUNCTION

Insérez, comme pour les variables, un caractère de déclaration de type après le nom de la fonction, ou le type indiqué par "As" et le mot-clé approprié à la fin de la liste des paramètres pour définir le type de la valeur de retour de la fonction, par exemple :

    Function WordCount(WordText As String) As Integer