Procédures de fonction (Visual Basic)

Une procédure Function est une série d’instructions Visual Basic placées entre les instructions Function et End Function. La procédure Function effectue une tâche, puis retourne le contrôle au code appelant. Lorsqu’elle retourne le contrôle, elle retourne également une valeur au code appelant.

Chaque fois que la procédure est appelée, ses instructions s’exécutent, en commençant par la première instruction exécutable après l’instruction Function et se terminant par la première instruction End Function, Exit Functionou Return rencontrée.

Vous pouvez définir une procédure Function dans un module, une classe ou une structure. C’est Public par défaut, ce qui veut dire que vous pouvez l’appeler n'importe quel endroit de votre application ayant accès au module, à la classe ou à la structure dans laquelle vous l'avez défini.

Une procédure Function peut prendre des arguments, tels que des constantes, des variables ou des expressions, qui sont passées à celle-ci par le code appelant.

Syntaxe de déclaration

La syntaxe de déclaration d’une procédure Function est la suivante :

[Modifiers] Function FunctionName [(ParameterList)] As ReturnType
    [Statements]
End Function

Les modificateurs peuvent spécifier le niveau d’accès et les informations concernant la surcharge, la substitution, le partage et le shadowing. Pour plus d’informations, consultez Déclaration de fonction.

Vous déclarez chaque paramètre de la même façon que pour les sous-procédures.

Type de données

Chaque procédure Function a un type de données, tout comme chaque variable. Ce type de données est spécifié par la clause As de l’instruction Function et détermine le type de données de la valeur que la fonction retourne au code appelant. Les exemples de déclarations suivants illustrent ceci.

Function Yesterday() As Date
End Function

Function FindSqrt(radicand As Single) As Single
End Function

Pour plus d’informations, consultez « Parties » dans Instruction de fonction.

Retourner des valeurs

La valeur qu’une procédure Function renvoie au code appelant est appelée sa valeur de retour. La procédure retourne cette valeur selon l’une des deux manières suivantes :

  • Elle utilise l’instruction Return pour spécifier la valeur de retour et retourne immédiatement le contrôle au programme appelant. L'exemple suivant illustre ce comportement.

    Function FunctionName [(ParameterList)] As ReturnType
        ' The following statement immediately transfers control back
        ' to the calling code and returns the value of Expression.
        Return Expression
    End Function
    
  • Elle affecte une valeur à son propre nom de fonction dans une ou plusieurs instructions de la procédure. Le contrôle ne retourne pas au programme appelant tant qu’une instruction Exit Function ou End Function n’est pas exécutée. L'exemple suivant illustre ce comportement.

    Function FunctionName [(ParameterList)] As ReturnType
        ' The following statement does not transfer control back to the calling code.
        FunctionName = Expression
        ' When control returns to the calling code, Expression is the return value.
    End Function
    

L'avantage d'assigner la valeur de retour au nom de la fonction est que le contrôle ne retournera pas la procédure tant qu'il ne rencontre pas une instruction Exit Function ou End Function. Cela vous permet d’affecter une valeur préliminaire et de l’ajuster ultérieurement si nécessaire.

Pour plus d’informations sur le retour de valeurs, consultez Instruction de fonction. Pour plus d’informations sur le retour de tableaux, consultez Tableaux.

Syntaxe appelante

Vous invoquez une procédure Function en incluant son nom et ses arguments à droite d'une instruction d'affectation ou dans une expression. Vous devez fournir des valeurs pour tous les arguments qui ne sont pas facultatifs, et vous devez placer la liste d’arguments entre parenthèses. Si aucun argument n’est fourni, vous pouvez éventuellement omettre les parenthèses.

La syntaxe d’un appel à une procédure Function est la suivante.

lvalue=nomfonction[(listeargument)]

If ((nomfonction[(listeargument)] / 3) <=expression) Then

Lorsque vous appelez une procédure Function, vous n’avez pas besoin d’utiliser sa valeur de retour. Si ce n’est pas le cas, toutes les actions de la fonction sont effectuées, mais la valeur de retour est ignorée. MsgBox est souvent appelé de cette façon.

Illustration de la déclaration et de l’appel

La procédure Function suivante calcule le côté le plus long, ou hypoténuse, d’un triangle droit, en fonction des valeurs des deux autres côtés.

Function Hypotenuse(side1 As Double, side2 As Double) As Double
    Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function

L’exemple suivant montre un appel classique à hypotenuse.

Dim testLength, testHypotenuse As Double
testHypotenuse = Hypotenuse(testLength, 10.7)

Voir aussi