Les modules sont utiles pour regrouper du code indépendamment de toute feuille. Vous vous demandez sans doute à quoi cela peut servir puisque notre but est justement d’écrire du code lié aux contrôles des feuilles.
Par exemple, si vous développez du code pour gérer des comptes bancaires (un type Compte et des sous-programmes pour ouvrir, approvisionner et fermer un compte), il est intéressant de tout regrouper dans un module qui pourra être utilisé dans n’importe quel programme manipulant des comptes bancaires.
En fait, vous aurez compris que le module permet de regrouper du code utilisé dans plusieurs feuilles (voire dans plusieurs projets).
Comment utiliser un module dans une application ? Il suffit de l’ajouter dans le projet grâce à la commande Projet/Ajouter un module. Vous aurez deux onglets permettant d’en créer un nouveau ou de faire référence à un module déjà existant.
Pour fixer les idées, j’ai ajouté un nouveau module à mon application. Voici ce qui se passe alors :
1
Dit autrement, l’algorithmique ne s’est pas encore adaptée à l’événementiel.
Le code associé à notre feuille est toujours là.
Le projet s’est doté d’une rubrique Modules dans laquelle trône notre nouveau module.
Le module est un objet ne possédant qu’une propriété, son nom.
Voici la fenêtre du module que nous venons d’ajouter. On voit bien que c’est un module car la zone de liste des objets ne contient rien, ni contrôle ni feuille. (Notez Option Explicit suite à notre précédent paramétrage !)
Le bouton Objet est désactivé puisqu’un module n’est associé à aucune feuille.
3984 TG 48
Il faut bien comprendre que le code associé à une feuille n’est pas différent de celui que l’on trouve dans un module (enfin, procédures événementielles mises à part).
En fait, le code du module est stocké dans un fichier séparé d’extension .bas (pour BASic), tandis que le code lié à la feuille est directement stocké dans le fichier de cette dernière à la suite de la description de ses contrôles.
Pour preuve, voici le fichier Form1.frm décrivant notre feuille :
01 VERSION 5.00
02 Begin VB.Form Form1
03 Caption = "Form1" 04 ClientHeight = 1860 05 ClientLeft = 60 06 ClientTop = 345 07 ClientWidth = 4725 08 LinkTopic = "Form1" 09 ScaleHeight = 1860 10 ScaleWidth = 4725
11 StartUpPosition = 3 'Windows Default
12 Begin VB.TextBox Arrivée
13 Height = 315 14 Left = 1695 15 TabIndex = 2 16 Top = 930 17 Width = 2610 18 End
19 Begin VB.CommandButton Exécution
20 Caption = "Exécuter" 21 Height = 345 22 Left = 375 23 TabIndex = 1 24 Top = 915 25 Width = 1110 26 End
27 Begin VB.TextBox Départ
28 Height = 300 29 Left = 345 30 TabIndex = 0 31 Top = 240 32 Width = 1740 33 End 34 End
35 Attribute VB_Name = "Form1"
36 Attribute VB_GlobalNameSpace = False
37 Attribute VB_Creatable = False
38 Attribute VB_PredeclaredId = True
39 Attribute VB_Exposed = False
40 Option Explicit
41 42
43 Private Sub Exécution_Click()
44 If Départ.Text = "" Then
45 Arrivée.Text = "l'autre zone de texte est vide"
46 Else
47 Arrivée.Text = "l'autre zone de texte est remplie"
48 End If
49 End Sub
Expliquons un peu ces lignes :
– lignes 2 à 34, nous décrivons l’objet Form1, constitué de : – ses propriétés classiques (lignes 3 à 11) ;
– un objet zone de texte appelé Arrivée (lignes 12 à 18) ; – un objet bouton appelé Exécution (lignes 19 à 26) ; – un objet zone de texte appelé Départ (lignes 27 à 33) ; – lignes 35 à 39, il y a des choses pas très claires ;
3984 TG 49
– lignes 43 à 49, il y a notre procédure événementielle liée au bouton Exécution défini plus haut.
Cette démonstration n’avait d’autre objet que vous prouver que le code lié à une feuille est indissociable de la feuille elle-même puisque les deux constituent un seul fichier. Attention, il n’est pas question de modifier directement ce fichier, il n’est pas fait pour cela. Pour travailler sur la feuille et son code, ouvrez le fichier sous VB.
2 C 2. Rôle
VB exploite la notion de module, que vous fassiez de la programmation événementielle ou console. Un module, c’est quoi ? C’est un concept simple et intuitif que l’on retrouve sous une forme plus ou moins proche dans tous les langages de développement (fichiers inclus, librairies, unités…).
Je tourne autour du pot… Un module est tout simplement un ensemble de types, de variables et de sous-programmes (procédures et fonctions). En fait, c’est l’équivalent d’un programme, à la grosse différence près que le module ne possède pas forcément de programme principal. (Concrètement, un module sera un fichier source sur votre disque, tout comme un programme.)
L’intérêt d’un module, c’est d’être utilisé par un programme. Cela permet la réutilisabilité du code : si vous vous spécialisez dans la conception d’activités bancaires, vous aurez toujours besoin du type
Compte et des sous-programmes ouverture, fermeture, crédit et débit.
La solution la moins efficace consiste à réécrire (ou ajouter par copier/coller) ces type et sous- programmes dans chaque programme que vous allez écrire. Cette solution n’est pas terrible car si vous souhaitez modifier le type Compte ou la procédure ouverture, vous devrez modifier chacun des programmes déjà écrits.
Le bonne idée, c’est de mettre les sous-programmes et le type Compte dans un module appelé
banque (ou n’importe quel autre nom intuitif). Chacun des projets en ayant besoin fera référence à
ce module. C’est alors comme si son contenu était inclus dans le programme.
Vous commencez sans doute à mieux cerner l’intérêt des modules : vous pouvez vous écrire (ou acheter) des modules variés : un gérant les graphiques, un autre les sons, la souris, les calculs scientifiques et financiers… En fonction des programmes que vous écrirez, vous utiliserez un ou plusieurs de ces modules. Tout ce passe comme si vous vous dotiez d’extensions de VB.