Tout savoir sur les procédure SUB en VBA [#06 FORMATION EXCEL VBA COMPLETE]

Ce tutoriel est une sous partie du chapitre dédié à la découverte des variables en VBA. En effet, dans ce chapitre, sorti vendredi dernier, et que je vous invite vivement à consulter en cliquant sur ce lien, nous avions abordé les différents types de variables (string, integer, double, variant,…). Nous avions alors vu l’importance de bien déclarer le type à affecter à ces variables en fonction de leur destination, sans toutefois mesurer l’impact réel sur les temps d’exécution de nos applications. C’est justement ce que nous allons faire dans cet article, au travers de la mise en place d’un outil de benchmarking.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

 

 

Tutoriel Vidéo

Pour suivre cet article dans les meilleures conditions, je vous invite à télécharger le fichier en suivant le lien disponible ci-dessous :

 

 

1. Qu’est-ce qu’une procédure

Le langage VBA est un langage de développement dit procédurale. C’est-à-dire que le code va être saisi au sein de procédures (que l’on peut tout aussi bien retrouver sous les appellations de fonctions ou encore de routine) dans lesquelles nous saisissons des ensembles de commandes qui vont être exécutées les unes à la suite des autres.

Décomposer ainsi le code en procédures et sous-procédures va permettre une réutilisation simple de morceaux de codes afin d’optimiser le développement de grosses applications dont certains traitements sont répétitifs.

En VBA il existe deux types de procédures :

  • Les procédures Sub, que nous allons découvrir dans ce chapitre,
  • Les procédures Function, que nous aborderons la semaine prochaine et qui ont pour particularité de pouvoir renvoyer un résultat (que connaissent tous les utilisateurs d’Excel au travers des formules EXCEL : SOMME(), NB(),…)

D’une manière générale, lorsque nous parlons de « Procédure » sans préciser de quel type de procédure il est question, nous sous-entendons « Procédure de type Sub ». Nous utiliserons le terme « Fonction » pour les « Procédures de type Function ».

 

2. Créons notre première procédure Sub

Une procédure doit être délimité par un début et une fin, afin que tout ce qui se trouve entre ces deux bornes soit exécuté en suivant l’ordre de lecture logique.

Le début de la procédure est matérialisé par le mot-clé Sub, suivi du nom de la procédure.

Et la procédure prend fin avec le mot clé End Sub.

Voici un exemple de procédure :

 

Sub maPremiereProcedure()
     MsgBox "Ceci est ma première
 procédure ! :)"
End Sub

 

Ici, nous avons une des procédures les plus simples que nous pouvons avoir à développement. Si nous analysons ces trois lignes :

  • Sub maPremiereProcedure() : Nous créons une nouvelle procédure du nom de maPremiereProcedure. Le mot clé Sub permet de créer la procédure dans la mémoire de la machine sur laquelle nous allons l’executer, puis nous spécifions le nom grâce auquel nous allons ensuite simplement pouvoir l’appeler (maPremiereProcedure), nous reviendrons ensuite sur la dénomination des procédures. Enfin, la ligne se termine par des parenthèses ouverte et fermée. Ici il n’y a rien de saisie à l’intérieur, mais nous verrons par la suite qu’il est possible de passer des paramètres directement à l’intérieur de ces parenthèse, ce qui aura pour effet de générer des variables à utiliser dans la procédure avec des valeurs spécifiques (comme les paramètre que nous utilisons dans les formules EXCEL : SOMME(A1:D5)),
  • MsgBox "Ceci est ma première procédure ! :)" : La procédure se contente d’exécuter une seule instruction : nous affichons un simple message à l’utilisateur
  • End Sub : Marque la fin de la procédure

 

3. Comment lancer une procédure ?

Ensuite, la méthode la plus simple pour appeler une procédure consiste à saisir simplement son nom :

 

Sub maSecondeProcedure()
     maPremiereProcedure
End Sub

 

L’instruction Call permet également d’appeler une procédure, mais nécessite que les argurments éventuels soient saisis entre parenthèses (voir la partie 5 de ce chapitre) :

 

Sub maSecondeProcedureBis()
     afficherUnMessageErreur "Veuillez remplir la
 cellule C8"
     Call afficherUnMessageErreur("Veuillez remplir la
 cellule C8")
End Sub

 

Il existe de nombreux autres moyens pour appeler une procédure. Nous verrons chacun d’entre eux dans un prochain chapitre bonus, alors pensez à vous abonner pour être directement informé lors de sa sortie !

 

4. Comment nommer une procédure ?

La détermination du nom d’une procédure est primordiale pour créer un bon développement en VBA, comme dans n’importe quel autre langage de programmation.

C’est en effet grâce à son nom que la procédure va être appelée et identifiée.

Je vous renvoie sur le chapitre dédié aux variables en VBA dans lequel nous avions vu dans le détail comment bien nommer une variable, sachant que les règles applicables sont bien sûr identiques.

Pour rappel le but recherché est d’identifier une procédure rapidement, et sans ambiguïté.

Il peut donc intéressant d’utiliser des noms qui décrivent précisément la nature de la procédure (succession de mots, comme dans l’exemple précédent : maPremiereProcedure), en mélangeant minuscules et majuscules (les majuscules permettent de contrôler la bonne utilisation des noms, car Excel corrige automatiquement).

Mais comme nous l’avions vu dans ce précédent chapitre, chacun est libre d’utiliser ses propres méthodes, l’essentiel étant de s’y retrouver simplement avec ces propres repères.

En revanche il existe un certain nombre de règles qui s’impose par le langage VBA :

  • Il est impossible d’utiliser des points et des espaces,
  • Il est impossible d’utiliser les opérateurs mathématiques : */-+^
  • Il est impossible d’utiliser les caractères réservés : &, $, @, #, et %
  • Le premier caractère est forcément une lettre (minuscule ou majuscule),
  • La limitation est de 255 caractères
  • Il est impossible d’utiliser des mots réservés dans le cadre du langage VBA (Sub, For, Next, Function, Date, Time,…). Ces mots réservés sont nombreux, et le fait de coder en français peut aider à limiter le risque d’utiliser un terme interdit. Une autre solution est d’utiliser systématiquement un suffixe dans les noms de procédure : obtenirDate, myFunction,…

 

5. Utiliser les arguments

Comme nous l’avons déjà abordé plus tôt, une procédure peut demander des arguments.

Cela permet de déclarer des variables, avec des valeurs précises, car comme nous l’avons également déjà abordé, les variables déclarées dans des procédures ne sont pas visibles au-delà de cette procédure.

Pour ajouter des arguments à une procédure, il suffit de saisir leur nom entre parenthèses, au moment de la déclaration de la procédure :

 

Sub afficherUnMessageErreur(message)
     MsgBox "Attention : "  &
 message & " !!"
End Sub

 

Ensuite, il est possible d’appeler la procédure en saisissant à la suite la valeur de cet argument :

 

Sub maDivision()
     a = 10
     b = 0
     If b = 0 then
        afficherUnMessageErreur "Division par zéro
 impossible"
    Else
        c = a / b
    End If
End Sub

 

Enfin, sachez qu’il est possible de forcer le typage d’un argument, d’utiliser plusieurs arguments, de rendre la saisie d’arguments optionnelle,… Nous ferons le tour du sujet dans le prochain chapitre de la formation à sortir la semaine prochaine dans lequel nous découvrirons les procédures Function.

 

6. La portée des procédures

Par défaut une procédure à une portée étendue, c’est-à-dire que celle-ci peut être exécutée dans d’autres modules que celui dans lequel elle est saisi.

Pour changer ce comportement, il est nécessaire d’utiliser un mot-clé juste avant la déclaration de celle-ci :

  • Public Sub maProcedure : Dans ce cas de figure, la procédure est accessible depuis n’importe quel autre module, mais également directement depuis la feuille de calcul,
  • Private Sub maProcedure : Ici la procédure ne peut être appelée que depuis une procédure insérée directement dans le module en cours

Par défaut une procédure a une portée Public, c’est-à-dire que si le terme est omis, celui-ci est sous-entendu.

 



Articles qui pourraient vous intéresser

Comment modifier l'affichage d'une date (format date) sur Excel

Comment évaluer une formule sur Excel : le déroulement pas à pas

Les tableaux croisés dynamiques, c’est facile !

Tout savoir sur les procédure SUB en VBA [#06 FORMATION EXCEL VBA COMPLETE]

Commentaires

Il n'y a aucun commentaire...

Poster un commentaire

Pseudo
Commentaire

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.