1. Livres & vidéos
  2. Macros et langage VBA
  3. Procédures, fonctions et macros
Extrait - Macros et langage VBA Découvrez la programmation sous Excel (3e édition)
Extraits du livre
Macros et langage VBA Découvrez la programmation sous Excel (3e édition)
2 avis
Revenir à la page d'achat du livre

Procédures, fonctions et macros

Objectifs du chapitre

Avant d’aller plus loin dans cet ouvrage, vous devez avoir quelques notions de vocabulaire pour comprendre de quoi il sera question dans les chapitres suivants. Ce chapitre vise à vous permettre de vous y retrouver, et savoir de quoi il est question plus facilement.

En programmation VBA, vous pourrez utiliser plusieurs mots pour définir les programmes que vous rédigerez. Vous verrez pêle-mêle les mots procédure, fonction et macro concernant le nom de vos programmes. Vous y lirez également la notion de portée et enfin seront abordés les paramètres, des données fournies en entrée de vos programmes.

 Par la suite, dans cet ouvrage, les termes seront utilisés avec plus de précision, délaissant le terme programme.

Procédures, fonctions et macros

Les programmes que vous créez passeront par deux types de blocs d’instructions, les procédures ou les fonctions. Le nom macro est celui qui est entré dans le vocabulaire des développeurs. Vous découvrirez ce qui se cache derrière ce mot.

Les procédures

Les procédures que vous avez pu voir dans les chapitres précédents sont des blocs d’instructions qui pourront s’exécuter, par exemple lorsque vous colorez une cellule en jaune. Les procédures ne retournent aucune valeur, contrairement aux fonctions. Ce paragraphe va vous permettre de savoir comment les déclarer et les utiliser.

Déclaration d’une procédure

De la même façon que pour une variable, vous devez déclarer une procédure avant de pouvoir l’utiliser. Elles sont définies par le mot-clé Sub et se terminent par l’instruction End Sub.

Entre ces deux lignes, vous coderez vos instructions qui seront exécutées lorsque la procédure sera appelée depuis un autre endroit du classeur.

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

[Private ou Public] Sub NomDeVotreProcedure([param_1 
As TypeDeParametre],...) 
   Instructions 
End Sub 

Le nom de la procédure doit respecter la nomenclature de nommage (voir chapitre Les variables, les constantes), et être le plus explicite possible pour rendre son usage le plus facile, comme dans l’exemple suivant....

Public ou Private, tout est question de portée

Avant les termes Sub et Function, vous pouvez voir apparaître les mots-clés Public ou Private. L’usage du mot-clé permet de définir la portée de la variable, constante, fonction ou procédure sur l’ensemble de votre application.

Dans les sections suivantes, dans un effort de lisibilité, le terme variable sera utilisé, mais les informations sont identiques pour les constantes. De la même façon, le terme procédure sera utilisé, mais les informations correspondantes sont également vraies pour les fonctions.

La notion de portée

Lorsque vous déclarez et utilisez des variables dans un classeur, la question de l’accessibilité de ces variables dans l’ensemble du classeur se pose. Selon la façon dont vous définissez vos variables, elles seront accessibles seulement depuis certains points de l’ensemble de votre code.

Portée des variables

Pour les variables que vous utilisez, il existe trois niveaux d’accès possibles en VBA :

  • Au niveau de la procédure : lorsque les variables sont déclarées à l’intérieur d’une procédure, elles ne sont utilisables que par les instructions de la procédure. Les variables n’existent pas « en dehors » des procédures dans lesquelles...

Les paramètres

Lorsque vous déclarez une procédure ou une fonction, elle peut nécessiter des informations qui lui seront utiles (par exemple pour calculer l’âge d’une personne, il faut sa date de naissance). Ces informations sont donc appelées des paramètres ; cette section vous apporte les informations dont vous avez besoin pour les comprendre et les maîtriser.

Syntaxe générale

Les paramètres apparaissent lors de la déclaration d’une procédure ou d’une fonction (et pas une macro qui, par définition, n’a pas de paramètre).

La syntaxe générale des paramètres est la suivante :

Sub ExempleDeProcedure ([ByRef ou ByVal] NomParametre1  
As TypeDuParametre1, NomParametre2 As TypeDuParametre2) 
   Instructions 
End Sub 

Exemple 11 : déclaration d’une procédure et de ses paramètres.

Les paramètres sont déclarés à l’intérieur des parenthèses qui suivent le nom de la procédure ou la fonction. Dans le cas où plusieurs paramètres sont nécessaires, ils sont séparés par une virgule.

Le nom des paramètres suit la même nomenclature que celle des variables. Ils peuvent être précédés des mots-clés ByRef ou ByVal, évoqués dans le paragraphe suivant.

Lorsque le paramètre est déclaré de la façon suivante dans une procédure :

Sub ExempleProcedure (ByVal NomDuParametre As TypeDuParametre) 
   Instructions 
End Sub 

Exemple 12 : déclaration d’un paramètre obligatoire

Il est obligatoire pour le code qui appelle la fonction ou procédure de fournir une valeur à ce paramètre. Si par exemple vous souhaitez créer une fonction qui retourne l’âge d’un individu et que le paramètre fourni doit être la date de naissance, cette information est primordiale pour effectuer votre calcul.

Si jamais vous vous trompez dans le nombre de paramètres passés à votre fonction ou procédure, qu’il y en ait trop ou pas assez, un message d’erreur vous l’indiquant apparaitra.
images/07SOB01N3.png

Différences entre ByRef ou ByVal

Lorsque les paramètres sont...

Exercices

Écriture de macros

Macro privée

 Écrivez une macro MacroPrivee, de portée privée.

Cette macro affichera à l’utilisateur la valeur 42.

 Exécutez la macro MacroPrivee (42).

Macro publique

 Écrivez une macro MacroPublique, de portée publique.

Cette macro fera appel à la macro MacroPrivee créée précédemment.

 Exécutez la macro MacroPublique (42).

Écriture de procédures

 Écrivez une procédure AfficheDouble de portée publique, qui prend en paramètre une valeur numérique entier long, nommée Valeur.

Cette procédure affichera le double de la valeur passée en paramètre.

 Créez une macro ProcedureAffichage qui exécutera la procédure AfficheDouble, en lui passant la valeur 20.

 Exécutez la macro ProcedureAffichage (40).

Partage de variables publiques

 Créez une variable de type Date, nommée DatePartagee de portée publique.

 Cette déclaration de variable sera placée en haut du module.

 Écrivez une procédure, nommée PeriodeExamensDateDebut de portée publique qui prendra en paramètre une date nommée DateDebut.

Cette procédure mettra à jour la variable DatePartagee en lui affectant la valeur de DateDebut...