Utilisation de modules

Leçons de programmation Visual Basic

Il est parfois utile de programmer des fonctions, procédures effectuant des commandes, sans être appelées par un évènement tel qu'un clic, un mouvement de souris... mais par le programme lui-même, ces fonctions peuvent alors être stockées dans le code d'une feuille ou dans un module, ce qui est plus approprié.

Prenons l'exemple d'une fonction qui pour deux variables contenant le nom et prénom d'une personne renvoie l'identité de la personne avec les majuscules nécessaires. On utilise pour cela les fonctions Ucase$, Lcase$ et StrConv.

NB : Question de vocabulaire : une procédure se contente d'exécuter des opérations et ne renvoie pas de résultat à l'inverse d'une fonction qui peut renvoyer un résultat.

• La fonction qui renvoie l'identité nécessite deux variables de type String () en argument contenant les noms et prénom de la personne à identifier. La valeur qu'elle renverra sera de type string (). Voici alors le code de déclaration avec les couleurs correspondantes aux explications :

Public Function Majuscules(Nom As String, Prenom As String) As String

• On la déclare alors publique pour qu'elle puisse être utilisée n'importe où (i.e. depuis n'importe quel module ou feuille).

Voici donc l'aspect de cette fonction :

Public Function Majuscules(Nom As String, Prenom As String) As String
'Ucase$ convertit en majuscules.
'StrConv, plus complet, permet de mettre seulement la première lettre en majuscules

Majuscules = strConv(Prenom, vbProperCase) & " " & UCase$(Nom)

End Function

Fonctionnement de StrConv :

Le premier argument (String) est la chaîne de caractères à convertir. Le second argument (Conversion), est un entier précisant de quelle manière on doit transformer la chaîne de caractères :

Constante Valeur Effet
vbUpperCase 1 MAJUSCULES
vbLowerCase 2 minuscules
vbProperCase 3 Première Lettre
vbUnicode 64 convertit en unicode
vbFromUnicode 128 convertit depuis unicode

Unicode :
Norme de caractères ISO (International Standards Organization). Unicode utilise un schéma de codage 16 bits (2 octets) autorisant 65 536 espaces caractères distincts. Unicode comprend des représentations pour les signes de ponctuation, les symboles mathématiques et les symboles dingbats, et un espace libre important est réservé aux ajouts futurs.

Pour placer cette fonction dans un module, il faut ajouter un module dans le projet en cours en choisissant Projet/Ajouter un module et en optant pour Module (pas Complément). Alors on se retrouve avec un module nommé Module1. Renommons-le ModuleA en sélectionnant "Nom" dans sa page de propriétés (comme on le ferait pour un label).

Tapez la fonction dans le module.

Maintenant, on va pouvoir utiliser la fonction dans un programme simple : Il convertira le texte d'une zone de texte (Text1) vers une autre en majuscules (Text2), au clic sur un bouton (Command1) :

Après avoir créé la feuille correspondante, double-cliquez sur le bouton Command1 pour lui affecter une procédure Command1_Click. Pour appeler la fonction du module créé avant, il faut taper le nom du module, . , et le nom de la fonction : ModuleA.Majuscules

Ceci "correspond" à une variable (dans la façon de l'utiliser en assignation) car c'est une fonction :
elle renvoie un résultat. On peut donc écrire :

Private Sub Command1_Click()
Text3.Text = ModuleA.Majuscules(Text1.Text, Text2.Text)
End Sub

On a ici affecté le contenu de Text1 à la variable Nom de la fonction Majuscules(), celui de Text2 à Prenom. Elle a renvoyé la variable Majuscules contenant le résultat, qui sera donc stocké dans le contrôle Text3.


L'utilisation d'un module permet aussi de programmer sans utiliser de feuilles : par exemple pour créer un programme s'exécutant discrètement, à l'abri des yeux de l'utilisateur. Pour cela, il faut dans un module créer une procédure Sub Main(), qui sera exécutée au lancement du programme :

Sub Main()

Clipboard.Clear
End

End Sub

Définissez ensuite cette procédure comme procédure de démarrage : dans le menu "Projet/Propriétés de...", puis dans "objet de démarrage", choisissez Sub Main. Ce programme efface le presse-papiers de manière invisible par rapport à l'utilisateur grâce à la commande Clear de Clipboard. Clipboard est une variable globale de VB qui permet d'effectuer des opérations sur le presse-papiers windows.