Sub, instruction

Déclare le nom, les arguments et le code d'une procédureSub.

Syntaxe

[ Private | Public | Friend ] [ Static ] Subnom [ (arglist) ]
[ statements ]
[ Exit Sub ]
[ statements ]
End Sub

La syntaxe de l'instruction Sub présente les éléments suivants :

Élément Description
Public Facultatif. Indique que la procédure Sub est accessible à toutes les autres procédures de tous les modules. Si vous l'utilisez dans un module qui contient une instruction Option Private, la procédure n'est pas disponible en dehors du projet.
Private Facultatif. Indique que la procédure Sub n'est accessible qu'aux autres procédures du module dans lequel elle est déclarée.
Friend Facultatif. Utilisé uniquement dans un module de classe. Indique que la procédure Sub est visible dans le projet, mais pas pour le contrôleur d'une instance d'un objet.
Static Facultatif. Indique que les variables locales de la procédure Sub sont préservées entre des appels. L'attribut Static n'affecte pas les variables déclarées en dehors de la procédure Sub, même si elles sont utilisées dans la procédure.
name Obligatoire. Nom de la procédure Sub qui respecte les conventions standard d'affectation de noms aux variables.
arglist Facultatif. Liste de variables représentant des arguments transmis à la procédure Sub lorsqu'elle est appelée. Plusieurs variables sont séparées par des virgules.
statements Facultatif. Tout groupe d'instructions à exécuter dans la procédure Sub.

La syntaxe et les éléments de l'argument arglist sont les suivants :

[ Optional ] [ ByVal | ByRef ] [ ParamArray ] varname [ ( ) ] [ Astype ] [ =defaultvalue ]

Élément Description
Facultatif Facultatif. Mot clé indiquant qu'un argument n'est pas obligatoire. Si utilisé, tous les arguments suivants dans arglist doivent également être facultatifs et déclarés à l’aide du mot clé facultatif. Facultatif ne peut pas être utilisé pour un argument si ParamArray est utilisé.
ByVal Facultatif. Indique que l’argument est transféré par valeur.
ByRef Facultatif. Indique que l’argument est transféré par référence. ByRef est la valeur par défaut dans Visual Basic.
ParamArray Facultatif. Utilisé uniquement comme le dernier argument dans arglist pour indiquer que l'argument final est un tableauoptionnel d'éléments Variant. Le mot clé ParamArray vous permet de transmettre un nombre arbitraire d'arguments. ParamArray ne peut pas être utilisé avec ByVal, ByRef ou Optional.
varname Obligatoire. Nom de la variable représentant l'argument qui respecte les conventions standard d'affectation de noms de variables.
type Facultatif. Type de données de l’argument passé à la procédure ; peut être octets, booléenne, entier, long, devise, unique, double, décimal (pas pris en charge actuellement) date, chaîne (longueur variable uniquement), objet, variante, ou un type d’objet spécifique. Si le paramètre n’est pas Optional, un type défini par l’utilisateur peut également être spécifié.
defaultvalue Facultatif. Toute constante ou expression constante. Valide pour les paramètres Optional uniquement. Si le type est un objet, une valeur par défaut explicite peut seulement être rien.

Remarques

S’il n’est pas explicitement spécifié à l’aide de Public, Private ou Friend, les procédures Sub sont publiques par défaut.

Si statique n’est pas utilisé, la valeur de variables locales n’est pas conservée entre les appels.

Le mot cléFriend peut être utilisé uniquement dans les modules de classe. Toutefois, les procédures Friend sont accessibles aux procédures de tout module d'un projet. Une procédure Friend n'apparaît pas dans la bibliothèque de types de sa classe parente, et une procédure Friend ne peut pas être à liaison tardive.

Les sous procédures peuvent être récursives ; cela signifie qu'elles peuvent s'appeler elles-mêmes pour effectuer une tâche donnée. Toutefois, la récursivité peut entraîner le dépassement de la pile. Le mot clé Static n’est généralement pas utilisé avec les sous procédures récursives .

Tous le code exécutable doit figurer dans des procédures. Vous ne pouvez pas définir de procédure Sub à l'intérieur d'une autre procédure Sub, Function ou Property.

Les mots clés de l'instruction Exit Sub peuvent provoquer l'arrêt immédiat d'une procédure Sub. L'exécution du programme se poursuit avec l'instruction suivant l'instruction ayant appelé la procédure Sub. Plusieurs instructions Exit Sub peuvent apparaître à tout endroit d'une procédure Sub.

Comme une procédure Function, une procédure Sub est une procédure distincte qui accepte des arguments, exécute plusieurs instructions et modifie la valeur de ses arguments. Toutefois, contrairement à une procédure Function qui renvoie une valeur, une procédure Sub ne peut pas être utilisée dans une expression.

Vous appelez une sous procédure en vous servant du nom de la procédure suivi de la liste d'arguments. Consultez l’instruction Appel pour obtenir des informations spécifiques sur la façon d’appeler des sous procédures.

Les variables utilisées dans des procédures Sub appartiennent à deux catégories : celles qui sont explicitement déclarées dans la procédure et celles qui ne le sont pas. Les variables explicitement déclarées dans une procédure (à l'aide de Dim ou un équivalent) sont toujours locales. Les variables utilisées mais pas explicitement déclarées dans une procédure sont également locales, sauf si elles sont déclarées explicitement au niveau supérieur en dehors de la procédure.

Une procédure peut utiliser une variable qui n'est pas explicitement déclarée dans la procédure, mais un conflit d'attribution de nom peut se produire si avez défini un élément qui porte le même nom au niveau du module. Si votre procédure se rapporte à une variable non déclarée qui porte le même nom qu'une autre procédure, constante ou variable, nous supposons que votre procédure se rapporte à ce nom au niveau du module. Pour éviter ce type de conflit, déclarez explicitement les variables. Utilisez une instruction Option Explicit pour forcer la déclaration explicite des variables.

Remarque

Vous ne pouvez pas utiliser GoSub, GoTo ou Return pour accéder à une procédure Sub ou la quitter.

Exemple

Cet exemple utilise l'instruction Sub pour définir le nom, les arguments et le code qui constituent le corps d'une procédure Sub.

' Sub procedure definition. 
' Sub procedure with two arguments. 
Sub SubComputeArea(Length, TheWidth) 

   Dim Area As Double ' Declare local variable. 

   If Length = 0 Or TheWidth = 0 Then 
      ' If either argument = 0. 
      Exit Sub ' Exit Sub immediately. 
   End If 
   
   Area = Length * TheWidth ' Calculate area of rectangle. 
   Debug.Print Area ' Print Area to Debug window. 

End Sub

Voir aussi

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.