Paramètres facultatifs (Visual Basic)Optional Parameters (Visual Basic)

Vous pouvez spécifier qu’un paramètre de procédure est facultatif et qu’il n’est pas nécessaire de fournir un argument lorsque la procédure est appelée.You can specify that a procedure parameter is optional and no argument has to be supplied for it when the procedure is called. Paramètres facultatifs sont indiquées par le Optional mot clé dans la définition de procédure.Optional parameters are indicated by the Optional keyword in the procedure definition. Les règles suivantes s'appliquent :The following rules apply:

  • Chaque paramètre facultatif dans la définition de la procédure doit spécifier une valeur par défaut.Every optional parameter in the procedure definition must specify a default value.

  • La valeur par défaut d'un paramètre facultatif doit être une expression constante.The default value for an optional parameter must be a constant expression.

  • Tous les paramètres qui suivent un paramètre facultatif dans la définition de la procédure doivent également être facultatifs.Every parameter following an optional parameter in the procedure definition must also be optional.

La syntaxe suivante montre une déclaration de procédure comprenant un paramètre facultatif :The following syntax shows a procedure declaration with an optional parameter:

Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)  

Appel de procédures à l'aide de paramètres facultatifsCalling Procedures with Optional Parameters

Lorsque vous appelez une procédure à l'aide d'un paramètre facultatif, vous pouvez choisir de fournir l'argument ou non.When you call a procedure with an optional parameter, you can choose whether to supply the argument. Dans le cas contraire, la procédure utilise la valeur par défaut déclarée pour ce paramètre.If you do not, the procedure uses the default value declared for that parameter.

Pour omettre un ou plusieurs arguments facultatifs dans la liste des arguments, utilisez des virgules successives afin de marquer leurs positions.When you omit one or more optional arguments in the argument list, you use successive commas to mark their positions. L'exemple d'appel suivant fournit le premier et le quatrième argument, mais pas le deuxième ni le troisième :The following example call supplies the first and fourth arguments but not the second or third:

Sub name(argument 1, , , argument 4)  

L'exemple suivant effectue plusieurs appels à la fonction MsgBox.The following example makes several calls to the MsgBox function. MsgBox comporte un paramètre obligatoire et deux paramètres facultatifs.MsgBox has one required parameter and two optional parameters.

Le premier appel à MsgBox fournit les trois arguments dans l'ordre dans lequel MsgBox les définit.The first call to MsgBox supplies all three arguments in the order that MsgBox defines them. Le deuxième appel fournit uniquement l'argument requis.The second call supplies only the required argument. Le troisième et le quatrième appel fournissent le premier et le troisième argument.The third and fourth calls supply the first and third arguments. Le troisième appel le fait par position et le quatrième appel le fait par nom.The third call does this by position, and the fourth call does it by name.

MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")

Détermination de la présence d’un argument facultatifDetermining Whether an Optional Argument Is Present

Une procédure ne peut pas détecter au moment de l'exécution si un argument donné a été omis ou si le code appelant a explicitement fourni la valeur par défaut.A procedure cannot detect at run time whether a given argument has been omitted or the calling code has explicitly supplied the default value. Pour établir cette distinction, vous pouvez définir une valeur improbable comme valeur par défaut.If you need to make this distinction, you can set an unlikely value as the default. La procédure suivante définit le paramètre facultatif officeet sa valeur par défaut, les tests QJZ, pour voir s’il a été omis dans l’appel :The following procedure defines the optional parameter office, and tests for its default value, QJZ, to see if it has been omitted in the call:

Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
    If office = "QJZ" Then
        Debug.WriteLine("office not supplied -- using Headquarters")
        office = "Headquarters"
    End If
    ' Insert code to notify headquarters or specified office.
End Sub

Si le paramètre facultatif est un type référence tel que String, vous pouvez utiliser Nothing comme valeur par défaut, à condition qu'il ne s'agisse pas d'une valeur attendue pour l'argument.If the optional parameter is a reference type such as a String, you can use Nothing as the default value, provided this is not an expected value for the argument.

Paramètres facultatifs et surchargeOptional Parameters and Overloading

La surcharge est une autre méthode permettant de définir une procédure à l'aide de paramètres facultatifs.Another way to define a procedure with optional parameters is to use overloading. Si vous disposez d'un seul paramètre facultatif, vous pouvez définir deux versions surchargées de la procédure, l'une avec le paramètre et l'autre sans.If you have one optional parameter, you can define two overloaded versions of the procedure, one accepting the parameter and one without it. Cette approche se complique au fur et à mesure que le nombre de paramètres facultatifs augmente.This approach becomes more complicated as the number of optional parameters increases. Cependant, vous avez l’avantage de savoir avec certitude si le programme appelant a fourni chaque argument facultatif.However, its advantage is that you can be absolutely sure whether the calling program supplied each optional argument.

Voir aussiSee Also

ProcéduresProcedures
Paramètres et arguments d’une procédureProcedure Parameters and Arguments
Passage d’un argument par valeur et par référencePassing Arguments by Value and by Reference
Passage des arguments par position et par nomPassing Arguments by Position and by Name
tableaux de paramètresParameter Arrays
Surcharge de procédureProcedure Overloading
OptionalOptional
ParamArrayParamArray