Vous êtes sur la page 1sur 8

1

Partie2_chapitre8
Créer des modules et des procédures
A la fin de ce chapitre vous saurez :

 Employer des techniques de programmation structurées et créer des modules


contenant des variables publiques et des définitions de procédure
 Vous entraîner à utiliser des variables publiques de portée globale
 Augmenter l’efficacité de la programmation en créant des fonctions et des
procédures Sub définies par l’utilisateur
 Maîtriser la syntaxe destinée à invoquer et à utiliser des procédures définies
par l’utilisateur
 Passer des arguments à des procédures par valeur et par référence

Et les modules ?
Il s’agit de zones distinctes d’un programmes qui contiennent des variables
globales ou publiques et des procédures Function et Sub, qui vous feront
gagner du temps et que vous pourrez réutiliser dans d’autres projets.
Au fur et à mesure que vos programmes s’allongeront, plusieurs formulaires et
procédures événementielles utiliseront sans doute des variables et des
routines similaires. Par défaut les variables sont locales à une procédure
événementielle, elles ne peuvent pas lues ou modifiées qu’au sein de la
procédure événementielle dans laquelle elles ont été créées.
Un module est un fichier spécial qui porte l’extension .vb et contient des
déclarations de variables et des procédures que l’on peut utiliser partout dans
le programme.

Créer et enregistrer un module


 Créer un nouveau projet Module de test
 Dans le menu projet cliquer sur la commande ajouter un nouvel élément
 Sélectionner le modèle Module, le nom par défaut Module1.Vb s’affiche
dans la zone de texte Nom
 Cliquer sur le bouton ajouter, le module1 est ajouté dans votre projet
 Dans la propriété File Name, changer le nom du fichier par Fonction
Math.vb et appuyer sur entrée

Travailler avec des variables publiques

Document préparé par Majda Mazri-janv2014


2

 Ouvrir le projet Bandit manchot


 Créer un label rectangulaire en dessous de l’étiquette Bandit
Manchot(Font : arial Bold Italic 12 points, ForeColor : Vert(sous l’onglet
personnaliser), Name :LblWins , Text : Gans :0, TextAlign :MiddleCenter
 Dans le menu Projet, Ajouter un nouveau module
 Entre les instructions Module Module1 et End Module, taper
 Public Gains as Short
 Appuyer sur entrée
 Dans l’explorateur de solutions, cliquer sur form1.vb, cliquer sur le bouton
concepteur de vues, puis double cliquer sur le bouton Lancer
 Taper les instructions suivantes en dessous de l’instruction Beep():
 Gains=Gains+1
 LblWins.Text="Gains : " & Gains
 Tester le programme

Créer des procédures


Et les procédures?
Les procédures permettent de grouper un ensemble d’instructions liées
pour accomplir une tâche. Visual Studio comprend 2 types de procédures :
 Les procédures Function sont appelées d’après leurs noms à partir
de procédures événementielles ou d’autres procédures, souvent
utilisées pour accomplir des calculs, les procédures Function
peuvent recevoir des arguments et retournent toujours une valeur
dans le nom de la fonction.
 Les procédures Sub sont appelées d’après leurs noms à partir de
procédures événementielles ou d’autres procédures. Elles peuvent
recevoir des arguments et également repasser des valeurs
modifiées dans une liste d’arguments. Toutes fois, contrairement
aux fonctions, les procédures Sub ne retournent pas de valeurs
associés à leurs nom de procédure Sub particulier. Ces procédures
servent habituellement à recevoir ou à traiter des entrées afficher
des sorties ou définir des propriétés.
Il est possible de définir des procédures Function Et Sub dans le code d’un
formulaire mais pour de nombreux utilisateurs, il est plus utile de créer des
procédures dans un module car elles ont alors une portée s’étendant à
l’ensemble du projet.
Imaginez, par exemple, un programme contenant trois mécanisme pour
imprimer une image sur des formulaires différents : une commande de menu

Document préparé par Majda Mazri-janv2014


3

appelée Imprimer, un bouton de barre d’outils appelé Imprimer et l’icône


d’une imprimante à utiliser par glisser déposer. Vous pouvez placer les mêmes
instructions d’impression dans chacune des trois procédures événementielles
ou bien gérer les requêtes d’impression depuis les trois sources grâce à une
procédure placée dans un module.

Avantages de procédures généralistes


 Elles permettent d’associer un groupe d’instructions souvent utilisées à
un nom familier
 Elles éliminent les répétitions, vous pouvez définir une procédure une
fois et l’exécuter dans votre programme plusieurs fois
 Les programmes sont plus lisibles. Un programme divisé en une
collection de petites parties est plus facile à isoler et à comprendre
qu’un programme composé d’une seule grande partie.
 Elles simplifient le développement du programme. Les programmes
séparés en unités logiques sont plus simple à concevoir, à rédiger et à
déboguer
 On peut les réutiliser dans d’autres projets et solutions

Développer les fonctions


Et les Fonctions?

Une procédure fonction est un groupe d’instructions situé entre une instruction
Function et une instruction End Function. Les instructions de la fonction
accomplissent le travail utile-traitement de texte, gestion des entrées ou calcul d’une
valeur numérique. Dans un programme vous exécutez ou appelez une fonction en
plaçant le nom de la fonction dans une instruction accompagnée de tous les
arguments nécessaires.

Les arguments sont des données que l’on utilise pour faire fonctionner les fonctions.
Ils doivent être placés entre parenthèse et séparés par des virgules. L’exploitation
d’une procédure Function revient exactement au même qu’une fonction intégrée ou
d’une méthode comme Int, Rnd ou FromFile.

Par défaut les fonctions déclarées dans des modules sont publiques. Par conséquent,
on peut les utiliser dans n’importe quelle procédure événementielle d’un projet.

Document préparé par Majda Mazri-janv2014


4

Syntaxe d’une fonction

Function Nomfonction([Argument]) As Type


Instructions de la fonction
[Valeur retournée]
End Function

Les fonctions retournent toujours une valeur à la procédure appelante dans le nom
de la fonction(Nomfonction), c’est pourquoi la dernière instruction d’une fonction est
souvent une instruction d’assignation qui placera le calcul final de la fonction dans
NomFonction.

Par exemple :

Function TotalImpot(Byval Prix As Single) As Single ’Le mot clé ByVal sert pour
indiquer qu’une copie de données est passée à la fonction via l’argument Prix, mais
tout changement apporté à l’argument prix ne sera pas renvoyée à la routine appelée
TotalImpot

Dim ImpotNational, Impotlocal As Single


ImpotNational=Prix*0.05 ‘l’imposition nationale est de 5%
ImpotLocal=Prix*0.015 ‘l’imposition locale est de 15%
TotalImpot= ImpotNational+ ImpotLocal
End Function

On peut ajouter Return

Function TotalImpot(Byval Prix As Single) As Single ’Le mot clé ByVal sert pour
indiquer qu’une copie de données est passée à la fonction via l’argument Prix, mais
tout changement apporté à l’argument prix ne sera pas renvoyée à la routine appelée
TotalImpot

Dim ImpotNational, Impotlocal As Single


ImpotNational=Prix*0.05 ‘l’imposition nationale est de 5%
ImpotLocal=Prix*0.015 ‘l’imposition locale est de 15%
Return ImpotNational+ ImpotLocal
End Function

Appeler une fonction

Pour appeler la fonction TotalImpot dans une procédure événementielle, utiliser une
instruction semblable à :

Document préparé par Majda Mazri-janv2014


5

LbLImpots.Text=TotalImpot(500)

Ou

Dim PrixTotal, PrixVente As Single


PrixVente=500
PrixTotal=PrixVente+TotalImpot(PrixVente)

Créer une fonction pour calculer le taux de la réussite


 Ouvrir le projet Bandit Manchot
 Utiliser le contrôle label pour créer un nouvel objet étiquette en dessus de
l’étiquette Gains(Font : Arial Bold Italic 12 points, ForeColor : Rouge(Sous
l’onglet personnaliser, Name : LblRate, Text : 0.0%, TextAlign :
MiddleCenter)
 Cliquer sur le module Module1.vb qui s’affichera dans l’éditeur de code
 Taper en dessous de l’instruction Public Gains As Short : Public lancement
As short
 Insérer une ligne vierge puis taper la déclaration de la fonction suivante :

Function TauxReussite(ByVal Reussite As Short, ByVal Tentatives As


Short)As string
Dim Percent As Single
Percent=Réussite/Tentatives
Return format(Percent, “0.0%”)
End Function

 Afficher de nouveau le formulaire Form1, puis double cliquez sur le bouton


Lancer pour faire apparaitre la procédure événementielle Button1_Click
 En dessous de la quatrième ligne de la procédure événementielle
(Label3.Text=CStr(Int(Rnd()*10)))
Lancement=Lancement +1
 Entre l’instruction End If et End Sub taper instruction suivante
LblRate.Text=TauxReussite(Gains, Lancements)
 Supprimer la fonction Randomize de Form1_Load
 Tester le programme

Développer les Procédures Sub


Une procédure Sub ressemble à une procédure fonction, à la différence prés qu’elle
ne retourne pas de valeur associée à son nom. Les procédures Sub servent
généralement à obtenir des entrées de l’utilisateur, à afficher ou imprimer des

Document préparé par Majda Mazri-janv2014


6

informations ou à manipuler plusieurs propriétés associées à une condition. ces


procédures permettent également de traiter et de mettre à jour des variables reçues
dans une liste d’arguments pendant un appel de procédure, et de repasser une ou
plusieurs de ces valeurs au programme appelant.

Syntaxe de la procédure Sub


Sub Nomprocedure([Arguments])
Instructions de la procédure
End Sub
Dans l’appel de la procédure Sub, le nombre et le type d’arguments envoyés à la
procédure doivent correspondre au nombre et au type d’arguments de la déclaration
de la procédure Sub, et l’ensemble du groupe doit être placé entre parenthèse. Si es
variables sont passées à une procédure Sub sont modifiées pendant la procédure, les
variables mises à jour ne sont pas repassées au programme sauf si la procédure a
défini les arguments en utilisant le mot clé ByRef.
Par défaut, les procédures Sub Déclarées dans un module sont publiques. Elles
peuvent donc être appelées par n’importe quelle procédure événementielle dans un
projet.
Par exemple :
Sub VeuxAnniversaire(ByVal Personne As String)
Dim Msg As String
If personne <> "" then
Msg="Joyeux anniversaire "& Personne & "!"
Else
Msg="Nom non spécifié "
End If
MsgBox(Msg, , "Meilleurs voeux"
End Sub
Appeler une Procédure

VoeuxAnniversaire("Robert")

Ou
Dim NouveauNom As String
Do
NouveauNom=InputBox("Taper un nom", "liste Anniversaire")
VoeuxAnniverasaire(NouveauNom)
Loop Until NouveauNom=""

Exploiter une procédure Sub pour gérer des saisies utilisateur


Créer une procédure Sub de zone de texte
 Créer un nouveau projet MaSubTextBox
 Sur le formulaire ajouter 2 Textbox cote à cote au milieu du formulaire

Document préparé par Majda Mazri-janv2014


7

 Ajouter le contrôle Label pour créer 2 étiquettes au dessus de la zone de texte


 Utiliser le contrôle Button pour créer 3 boutons un sous chaque zone de texte
et un en haut du formulaire
 Définir les propriétés des objets du formulaire
Objet Propriété Valeur
TextBox1 Multiline True
Name TxtSales
ReadOnly True
ScrollBars Vertical
TabStop False
TextBox2 Multiline True
Name TxtMkt
ReadOnly True
ScrollBars Vertical
TabStop False
Label1 Font Bold
Name lblSales
Text "Ventes"
Label2 Font Bold
Name lblMkt
Text "Marketing"
Button1 Name btnSale
Text "Ajouter Nom"
Button2 Name BtnMkt
Text "Ajouter Nom"
Button3 Name BtnQUIT
Text "Quitter"
Form1 Text " Assigner les équipes de
service »
 Dans le menu projet cliquer sur la commande ajouter un élément, sélectionner
le modèle Module puis cliquer sur ajouter
 Taper la procédure AjouterNom suivante entre les instructions Module1 et
End Module
 Sub AjouterNom(ByVal Equipe As String, ByRef ReturnString AS String)
 Dim Invite, Nm, WrapCharacter As String
 Invite=”Entrer un employé” & Equipe & ""
 Nm=InputBox(Invite, "BoiteEntrée")
 WrapCharacter=Chr(13)+chr(10)
 ReturnString=NM & Wrapcharacter
 End Sub
 Afficher de nouveau le formulaire, puis double cliquer sur le premier Bouton
Ajouter Nom sur le formulaire.
 taper les instructions suivantes dans la procédure événementielle

Document préparé par Majda Mazri-janv2014


8

btnSales_Click
Dim PoisitionVente As String= ""
AjouterNom("Ventes", PositionVentes)
TxtSales.Text=txtSales.Text & PositionVentes
 Dans l’éditeur de code cliquer sur la flèche Nom de la classe située juste sous
l’onglet Form1.cb et cliquer sur btnMkt dans la liste, cliquer ensuite sur la
flèche Nom de la méthode, puis cliquer sur l’événement Click.
 Taper les instructions suivantes dans la procédure événementielle
Dim MktPosition AS String=" "
AjouterNom("Marketing", MktPosition)
txtMkt.Text=txtMkt.Text & MktPosition
 Cliquer sur la flèche Nom de la classe et cliquer sur l’objet btnQuit dans la liste.
Cliquer ensuite sur la flèche Nom de la méthode, puis cliquer sur l’événement
Click, la procédure événementielle btnQuit_Click s’affiche dans l’éditeur de
code
 Taper End dans la procédure événementielle btnQuit_Click
 Tester le programme

Passer des arguments par valeur et par référence

Exemple :
Sub CoutPlusInteret(ByRef Cout As Single, ByRef Total As Single)
Cout=Cout*1.05 ‘Ajouter 5% au cout…
Total=Int(Cout) ‘ arrondi à l’entier
End Sub

Dim Prix, TotalPrix As Single


Prix=100
TotalPrix=0
CoutplusInteret(Prix, TotalPrix)
MsgBox(Prix & " à 5% d’interet est " & TotalPrix)

Document préparé par Majda Mazri-janv2014

Vous aimerez peut-être aussi