Chapitre I
Introduction à la programmation événementielle
avec le VB.net
1. Généralités :
La programmation avec le langage VB.net est une programmation très semblable, dans son
principe, à la programmation avec d’autres langages. On obéit toujours au principe de l’analyse
puis codage.
Lors de la programmation d’un logiciel en VB, les étapes suivantes sont très importantes à
suivre :
o Spécification des besoins des futurs utilisateurs. (compréhension du problème à résoudre)
o Spécifications fonctionnelles : comment satisfaire aux besoins.
o Conception générale : division du logiciel en programmes.
o Conception détaillée : algorithme le plus adapté pour chaque programme.
o Assemblage des différents programmes.
o Codage à l'aide du langage le plus adapté.
o Validation et qualification.
La conception est beaucoup plus importante que le codage qui peut être sous-traité dans le cas de
gros logiciels.
2. Principes :
La programmation avec le langage VB.net se base sur 2 choses : la notion de l’orienté objets et
sur la programmation événementielle, pour exploiter via certains de ces objets, l'interface
graphique de Windows.
.
a. Orienté objets
On manipule des objets: ensembles groupés de variables et de méthodes.
• Un objet regroupe un ensemble de variables qui peuvent être de différents types. Et dans
ce cas, on ne parlera pas des "variables" d'un objet, ni des ses "caractéristiques", mais de
ses propriétés (ou encore, de ses attributs).
• Tous les objets possédant les mêmes caractéristiques et avec lesquels on peut faire les
même choses, forment un groupe qu'on appelle une classe.
• Les langages objet, permettent, en plus des traditionnels variables, tableaux et structures,
de gérer et de manipuler des objets (donc des classes). C'est-à-dire ils permettent
notamment :de créer des classes, en définissant leurs caractéristiques et leurs actions,
de fabriquer des objets à partir de ces classes, de manipuler les caractéristiques
individuelles de chacun de ces objets, et de leur faire accomplir les actions dont leur
classe est capable.
Exemple :
On peut déclarer plusieurs instances d’une même classe
Fichier PDF, DOCX, MP3
Voiture Clio, Carera, Fiesta
Etudiant A1,A2,A3
1
Université de Monastir
Ecole d’Ingénieurs de Monastir
b. La programmation événementielle
La programmation événementielle est fondée sur les événements, ses réactions aux
événements peuvent se produire soit par le système, soit par des événements provoqués par
l’utilisateur.
Exemple : l’événement click avec la souris sur le bouton OK engendre la validation d’un choix.
4. Structure générale
La structure générale du logiciel Visual Basic .net est représentée dans la figure suivante :
Comme on le voit sur la première figure, l’interface VB.net contient 4 zones :
A gauche : la barre des outils contenant les composants ou contrôles servant à peupler la
feuille (FORM) à programmer.
En haut : barre des menus donnant accès à différentes fonctionnalités du logiciel.
A droite : cette partie est constituée de 3 zones :
o Fenêtre explorateur des projets : ajout / suppression de feuille et/ou de modules.
o Fenêtre propriétés : contenant les propriétés du composant sélectionné.
o Fenêtre représentation des feuilles : sert à positionner les feuilles à l’exécution.
Au milieu : c’est la feuille à programmer (FORM), cette feuille représente l’interface de
l’application à développer.
En visual Basic :
Les objets manipulés sont appelés des contrôles (bouton de commande, boîte de dialogue,
zone de texte, zone d'image, etc.
L'interface utilisateur créée est fenêtrée. Une fenêtre est appelée une feuille (Form). Une
feuille est elle-même un contrôle. Au lancement, la feuille qui apparaît est dite feuille de
démarrage.
2
Université de Monastir
Ecole d’Ingénieurs de Monastir
Chaque contrôle peut réagir à des événements qui lancent des suites d'instructions codées
en BASIC.
Des modules généraux de code BASIC peuvent porter sur tout le programme. Ces
modules sont réutilisables.
Explorateur
de solution
Formulaire
(Base de Properties
l’application) window (F4)
Toolbox :Boite à
outils 18
(Ctrl+Alt+x)
Conseil N° 1 :
N'utiliser que des lettres et des chiffres (exclure . - / _ "espace" etc.)
Mettre en Majuscules les initiales des différents mots
Préfixer selon la nomenclature suivante :
Une Form est préfixée par frm
Un Button est préfixé par bt
Un Label est préfixé par lbl
Une Image est préfixée par img
Une TextBox est préfixée par txt etc.
6. Contrôles et propriétés
3
Université de Monastir
Ecole d’Ingénieurs de Monastir
Un objet (contrôle) peut posséder un grand nombre de propriétés par exemple sur sa forme, sa
couleur, sa position dans la feuille, sa visibilité, etc.
La plus importante est la propriété Name qui donne un nom au contrôle. Ce nom permet de
référencer le contrôle.
7. Contrôles et événements
Le syntaxe d’une procédure générale est :
Sub Nomprocedure()
Instruction 1
Instruction 2
……………
End Sub
Exemple :
Sub cmdQuitter_Click()
Unload Me
End
End Sub
4
Université de Monastir
Ecole d’Ingénieurs de Monastir
On remarque la présence du mot Private, ceci est dû au fait que cette procédure est privée à
une FORM donnée.
instructions
End Sub
Remarque :
Les objets réagissent à divers événements : Click, MouseUp, MouseDown, Change etc.
Pour implanter le code (suite d'instructions produisant des actions pré-définies) lié à un
événement il suffit d'opérer un double-clic sur l'objet qui déclenche cet événement.
8. Contrôles et Méthodes :
En plus des propriétés, un objet peut aussi accomplir des actions à travers les
méthodes.
5
Université de Monastir
Ecole d’Ingénieurs de Monastir
Une méthode permet à un objet de réaliser une tache particulière. Move et SetFocus sont des
exemples de méthodes.
N.B.
Ne pas oublier d'arrêter un programme sinon toute correction est impossible (notamment pour
un programme qui boucle…).
6
Université de Monastir
Ecole d’Ingénieurs de Monastir
1. Notion de variable
Elles sont nécessaires pour stocker (conserver) une valeur dynamique et réutilisable.
C'est en fait une simple zone mémoire qui porte un nom choisi par le programmeur pour
faciliter sa programmation. Le nom de la variable correspond à une adresse mémoire.
Le langage Basic utilise plusieurs types de données dont les plus utilisés sont le type String
(chaîne de caractères), le type Integer (entier relatif) et le type Single (décimal).
Noms de variables:
1-Pas de longueur maximale
2-Commence par un caractère: 12xy
3-Pas d’espace: date_de_naissance date de naissance
4-Pas de sensibilité à la casse (toto=Toto=ToTO)
Visual Basic crée automatiquement une variable qui porte ce nom. Il est donc possible de
l'utiliser comme elle était déclarée explicitement. Bien que la déclaration implicite de
variables soit pratique, elle peut engendrer des erreurs difficiles à identifier dans le code si un
nom de variable est mal orthographié. Supposons, par exemple, la fonction suivante :
Function racine(num)
TempVal = Abs(num)
racine = Sqr(TemVal)
7
Université de Monastir
Ecole d’Ingénieurs de Monastir
End Function
Ici, la variable TempVal ayant été mal orthographiée à la dernière ligne, cette fonction aura
toujours zéro pour résultat. Quand Visual Basic rencontre un nouveau nom, il ne peut
savoir si vous avez réellement déclaré une nouvelle variable implicite ou si vous avez mal
orthographié un nom de variable existant. Il crée donc une nouvelle variable portant ce
nom.
Pour remédier à ce problème, on peut forcer VB à vérifier la déclaration de toutes les
variables par : Menu Outils - Options - onglet Editeur - choisir : "Déclaration des variables
obligatoire".
Déclarations explicites :
La déclaration d’une variable d’une façon explicite fait appel à la commande Dim.
Syntaxe :
Dim <NomVariable> As <Type>
Pour la lisibilité du code on peut les commenter après une apostrophe ( ‘ )
Exemples :
Dim Taux As Single „ Taux de la TVA
Dim Réponse As String „ Mot proposé par le joueur
Si l’on veut une programmation cohérente il faut les déclarer avec leurs types.
Pour éviter tout problème il est préférable d’initialiser les variables déclarées.
Exemples : Compteur = 0
Taux = 20,6
b. Déclaration des constantes
c. Les types
8
Université de Monastir
Ecole d’Ingénieurs de Monastir
+/- 79 228 162 514 264 337 593 543 950 335 sans chiffre
décimal
10 octets + (2 * nbr.
String de 0 à environ 230 caractères caractères de la CStr
chaîne)
4 octets
Object référence à un objet -
+ objet
37
9
Université de Monastir
Ecole d’Ingénieurs de Monastir
Si une variable est déclarée au début de la procédure qui la manipule (Dim ou Private) elle
n’est alors valide que pour cette procédure. L'existence et la valeur de la variable disparaissent
avec l'instruction End Sub.
Toute référence à cette variable en dehors de cette procédure provoquera une erreur de
compilation.
Si une variable est déclarée dans la section des déclarations d’un module elle est valide dans
toutes les procédures du module.
Une variable peut aussi être déclarée Public ou Global et sera alors valide pour toute
l’application.
Exemple :
Global MotInitial As String „ premier mot à traiter
e. les Opérateurs
1. Opérateurs arithmétiques
Opérateurs numérique : + - * /
Opérateurs booléens : And Or Xor Not
Opérateur caractère : & (concaténation)
\ : Division entière
^ : puissance
Mod : reste de la division entière
2. Opérateurs
a. Opérateurs de concaténation
L'opérateur & permet de concaténer (réunir) deux chaînes. L'opérateur + peut être aussi utilisé
pour concaténer deux chaines de caractères. (pas pour 1e chaine et une autre chose, entier par
exemple)
Exemple : MsgBox "le périmètre est de " & Circonference & "mètres"
Notez que la variable concaténée « Circonference » est une valeur numérique et qu'il y a une
conversion implicite vers le type String.
b. Opérateurs logiques : And, Or, Xor, Not
c. Opérateur test d’égalité et affectation : =
3. Les tableaux de données
Les tableaux sont comme les variables soit locales, soit globales et obéissent aux mêmes
règles. Dans VB, il existe deux types de tableaux : les tableaux de taille fixe et les tableaux
dynamiques.
Déclaration d’un tableau de taille fixe
10
Université de Monastir
Ecole d’Ingénieurs de Monastir
11
Université de Monastir
Ecole d’Ingénieurs de Monastir
1. Introduction :
Comme dans le cas du langage Pascal, VB .NET permet l’utilisation des procédures et des
fonctions avec ou sans paramètres. Rappelez vous que la grande différence entre la procédure
et la fonction est que cette dernière retourne une valeur lorsqu’elle est appelée.
Lors de l’appel de la procédure, un paramètre peut être transmis soit par valeur, soit par
référence (variable).
2. Procédure (Transmission par valeur : ByVal)
Pour transmettre un paramètre par valeur, celui-ci doit être obligatoirement précédé par le mot
réservé ByVal. Sinon, il est considéré de passer par référence.
Syntaxe
Private Sub NomProcédure( ByVal argument As Type, … )
Instruction1
Instruction2
…
End Sub
Exemple
Private Sub Affectation( ByVal valeur1,valeur2 As integer)
Dim Chaîne As String
Chaîne = "La somme de " & valeur1 & " et " & valeur2 & " = "
valeur1 = valeur1 + valeur2
Chaîne = Chaîne & valeur1
MsgBox (Chaîne)
End Sub
L’appel de la procédure se fait soit en inscrivant call suivi du nom de la procédure, et des
paramètres à lui transmettre, soit en écrivant uniquement le nom de la procédure, suivi des
paramètres à lui transmettre.
Dim X As integer
Dim Y As integer
Call Affectation (X, Y) ‘ avec les parenthèses
MsgBox (" Et X = " & X & " n'a pas changé ")
3. Procédure (Transmission par référence : ByRef)
12
Université de Monastir
Ecole d’Ingénieurs de Monastir
Si ByVal n’est pas précisé ou si le paramètre est précédé par le mot réservé ByRef, la variable
est transmise par référence (c'est-à-dire transmise en tant que variable). Ainsi, toute
modification de la variable locale correspondante dans la procédure se répercute sur la
variable utilisée lors de l’appel. VB suppose que la transmission se fait par référence si le mot
réservé ByVal est omis.
Exemple
Private Sub Transvase ( valeur1 As Integer, valeur2 As Integer )
Dim variable As Integer
variable = valeur1
valeur1 = valeur2
valeur2 = variable
End Sub
L’appel suivant transvase le contenu de X dans Y et inversement.
Exemple
Dim X As Integer, Y As Integer
X = 100
Y = 200
MsgBox (" X = " & X & " et Y = " & Y)
Transvase(X, Y)
MsgBox (" Alors que maintenant X = " & X & " et Y = "& Y &)
4. Procédures événementielles
Dans Visual Basic, lorsqu'un objet reconnaît qu'un événement s'est produit, il appelle
automatiquement la procédure d'événement dont le nom correspond à l'événement. Comme le
nom associe les objets et le code, on dit que les procédures d'événement sont attachées aux
feuilles et aux contrôles.
Syntaxe :
13
Université de Monastir
Ecole d’Ingénieurs de Monastir
Remarque :
Bien qu’on peut construire les procédures d’évènement de toutes pièces (écriture
directe de leurs noms, définition des paramètres…) il est préférable d'utiliser les
procédures de code fournies par Visual Basic, car elles incluent automatiquement le
nom correct des procédures.
Il est aussi conseillé de définir la propriété Name des contrôles avant de commencer à
écrire les procédures d'événement qui leur sont associées. Si on modifiez le nom d'un
contrôle après lui avoir associé une procédure, on devra également modifier le nom de
la procédure afin qu'elle corresponde au nouveau nom du contrôle.
Principaux Événements
a- Click
Se produit lorsque l’utilisateur appuie puis relâche le bouton gauche de la souris (ou entrée si
le contrôle a le focus)
b- DblClick
c- GotFocus
d-KeyPress >>>
e- Change
14
Université de Monastir
Ecole d’Ingénieurs de Monastir
5. Fonction
Lors de la déclaration d'une fonction, la valeur qui doit être retournée par celle-ci doit être
affectée au nom de la fonction. La déclaration de la fonction se termine par les mots réservés
”End function”.
Syntaxe
Private function NomFonction( Argument As Type, … ) As Type
Instruction1
Instruction2
…
NomFonction = RésultatDeLaFonction
End function
Exemple
Private function Somme( valeur1 As Integer, valeur2 As Integer ) As integer
Somme = Valeur1 + valeur2
End function
L’appel suivant retourne la somme de X et Y et affecte le résultat à la variable Z.
Exemple
Dim X As Integer, Y As Integer, Z As Integer
X = 10
Y = 20
Z = somme(X, Y)
15
Université de Monastir
Ecole d’Ingénieurs de Monastir
Exemple
Private Sub Init(vec)
Dim i As Integer
For i = 1 To 10
vec(i) = 0
Next
End Sub
L’appel de la procédure avec un vecteur comme argument se fait comme pour toute variable.
Exemple
Dim vecteur(10) As Integer
Call Init(vecteur)
6. Portée des variables, procédures et fonctions
Une application VB peut être composée d’un ou de plusieurs formulaires et d’un ou de
plusieurs modules. Dans chaque module ou formulaire, des variables, des procédures et/ou
des fonctions peuvent être déclarées. Dans chaque procédure et fonction, des variables locales
peuvent être déclarées.
Une fonction ou une procédure peut être déclarée soit Privée (Private), soit Publique (Public).
Le sens de Privé ou Public se comprend par rapport au formulaire ou au module dans
lesquelles elles sont déclarées.
Se pose alors le problème de la portée des variables, des fonctions et des procédures.
Si une variable est déclarée au début de la procédure (fonction) qui la manipule (Dim ou
Private), elle n’est alors valide que pour cette procédure (fonction). L'existence et la valeur de
la variable disparaissent avec l'instruction End Sub (End Function). Toute référence à cette
variable en dehors de cette procédure (fonction) provoquera une erreur de compilation. Si une
variable est déclarée dans la section des déclarations d’un module (formulaire), elle est valide
dans toutes les procédures (fonctions) du module (formulaire).
Une variable peut aussi être déclarée Public ou Global et sera alors valide pour toute
l’application.
Exemple :
Global MotInitial As String ‘ premier mot à traiter
7. Quelques fonctions globales
Les deux tableaux suivant résument quelques fonctions mathématiques et quelques fonctions
pour la manipulation des chaînes de caractères.
16
Université de Monastir
Ecole d’Ingénieurs de Monastir
8. Interruption de séquences
Pour interrompre l’exécution d’une séquence d’instructions (dans une fonction, procédure ou
boucle For), on utilise l’instruction Exit. Le tableau suivant résume son utilisation.
Dans Visual Basic, il est important de faire la distinction entre les deux types de procédures
Sub, à savoir les procédures générales et les procédures d'événement.
17
Université de Monastir
Ecole d’Ingénieurs de Monastir
Chapitre 4 Les structures conditionnelles
18
Université de Monastir
Ecole d’Ingénieurs de Monastir
End If
Au-delà de 3 possibilités on a besoin d'une autre structure qui peut gérer plusieurs cas.
4. Structure Select … Case …
C’est une extension du If … Then … Else … Elle permet une programmation plus claire en
évitant une trop grande imbrication de If successifs.
Syntaxe :
Select Case Expression
Case ListeValeurs1
[Instructions1]
Case ListeValeurs2
[Instructions2]
[Case Else
Instructions]
End Select
ListeValeurs peut être :
- une suite de valeurs : 1, 3, 5, 7, 9
- une fourchette : 0 To 9
- une plage : Is >= 10
19
Université de Monastir
Ecole d’Ingénieurs de Monastir
Une seule Expression (ou une simple variable) est testée au début puis est comparée avec les
listes de valeurs. A la première concordance les instructions correspondantes sont exécutées
puis le programme sort de la structure. Si aucune concordance n’est trouvée les instructions
placées après le Else sont exécutées.
Exemple :
Select Case CodeASCIICaractère
Case 65, 69, 73, 79, 85
MsgBox(" C‟est une voyelle ")
Case 66 To 90
MsgBox(" C‟est une consonne ")
Case Else
MsgBox(" Ce n‟est pas une lettre ")
End Select
5. Structure Iif
C'est exactement la fonction IF d'EXCEL.
Syntaxe :
IIf (Condition, ValeurSiVrai, ValeurSiFaux)
Exemple :
Dim Note As Single
Dim Réponse As String
Note = InputBox (" Tapez votre note ")
Réponse = IIf (Note >= 10, " Admis ", " Ajourné ")
MsgBox (Réponse)
Il existe d’autres outils décisionnels (Switch, With, Choose ...) qui ne sont pas nécessaires
pour un module de niveau 1.
20
Université de Monastir
Tableau récapitulatif
Ecole d’Ingénieurs de Monastir
des structures conditionnelles
Si Condition IF Condition
Alors THEN
Traitement 1 Traitement 1
Finsi ENDIF
Si Condition IF Condition
Alors THEN
Traitement 1 Traitement 1
Sinon ELSE
Traitement 2 Traitement 2
Finsi ENDIF
Si Condition 1 IF Condition 1
Alors THEN
Traitement 1 Traitement 1
Sinon ELSEIF Condition 2
Si Condition 2 THEN
Alors Traitement 2
Traitement 2 ELSE
Sinon Traitement 3
Traitement 3 ENDIF
Finsi
Finsi
Si Condition 1 IF Condition 1
Alors THEN
Traitement 1 Traitement 1
Sinon ELSE
Si Condition 2 IF Condition 2
Alors THEN
Traitement 2 Traitement 2
Sinon ELSE
Traitement 3 Traitement 3
Finsi ENDIF
Finsi ENDIF
21
Université de Monastir
Ecole d’Ingénieurs de Monastir
9. Introduction :
Nous pouvons simplifier la programmation des tâches en divisant les programmes en
plusieurs éléments logiques de plus petite taille. C'est en combinant ces éléments, appelés
procédures, qu’on peut améliorer et élargir les possibilités offertes par Visual Basic.
L'utilisation de procédures lors de la programmation présente deux avantages :
Grâce à elles, nous pouvons diviser les programmes en différentes unités logiques discrètes,
qu’on pourrait déboguer individuellement, plus facilement que la totalité d'un programme
entier dépourvu de procédures.
Les procédures utilisées dans un programme peuvent être reprises dans d'autres programmes,
moyennant peu ou pas de modifications.
Visual Basic comporte plusieurs types de procédures :
Les procédures Sub ne renvoient pas de valeur.
Les procédures Function renvoient une valeur.
Les procédures Property peuvent renvoyer ou affecter des valeurs, et définir des
références à des objets.
1. Procédures Sub :
Ces procédures ne renvoient pas de valeurs à la procédure appelante. Une procédure Sub est
un bloc de code qui est exécuté en réponse à un événement. La syntaxe d'une procédure Sub
est la suivante :
[Private|Public][Static] Sub Nom_proc (arguments)
Instructions
End Sub
L’appel de la procédure se fait soit en inscrivant call suivi du nom de la procédure, et
des paramètres à lui transmettre, soit en écrivant uniquement le nom de la procédure,
suivi des paramètres à lui transmettre.
Chaque fois que la procédure est appelée, les statements comprises entre Sub et End
Sub sont exécutées.
Pour transmettre un paramètre par valeur, celui-ci doit être obligatoirement précédé
par le mot réservé ByVal. Sinon, il est considéré de passer par référence.
Par défaut, les procédures Sub sont des procédures Public dans tous les modules, ce
qui signifie qu'elles peuvent être appelées à partir de n'importe quel endroit de
l'application.
22
Université de Monastir
Ecole d’Ingénieurs de Monastir
Dans Visual Basic, il est important de faire la distinction entre les deux types de procédures
Sub, à savoir les procédures générales et les procédures d'événement.
a) Procédures générales
Une procédure générale indique à l'application la façon de mener à bien une tâche
particulière. Une fois qu'une procédure générale est définie, elle doit être invoquée
spécifiquement par l'application. Une procédure d'événement, au contraire, reste inactive
jusqu'au moment où elle est appelée pour réagir à des événements provoqués par
l'utilisateur ou déclenchés par le système.
Une des raisons de l'utilisation des procédures générales réside dans le fait que différentes
procédures d'événement peuvent requérir les mêmes actions. La meilleure stratégie de
programmation consiste alors à placer les instructions communes dans une procédure distincte
(une procédure générale), elle-même appelée par les procédures d'événement. Cela évitera de
dupliquer le code et simplifiera la gestion de l’application.
Exemple 1 :
Sub Proc_Sub_Gen()
LblResult.text = resultat
End Sub
Exemple 2 :
Private Sub Affectation( ByVal valeur1,valeur2 As integer)
Dim Chaîne As String
23
Université de Monastir
Ecole d’Ingénieurs de Monastir
Chaîne = "La somme de " & valeur1 & " et " & valeur2 & " = "
valeur1 = valeur1 + valeur2
Chaîne = Chaîne & valeur1
MsgBox (Chaîne)
End Sub
Remarques :
Si ByVal n’est pas précisé ou si le paramètre est précédé par le mot réservé ByRef, la variable
est transmise par référence (c'est-à-dire transmise en tant que variable). Ainsi, toute
modification de la variable locale correspondante dans la procédure se répercute sur la
variable utilisée lors de l’appel. VB suppose que la transmission se fait par référence si le mot
réservé ByVal est omis.
b) Procédures d'événement
Dans Visual Basic, lorsqu'un objet reconnaît qu'un événement s'est produit, il appelle
automatiquement la procédure d'événement dont le nom correspond à l'événement. Comme le
nom associe les objets et le code, on dit que les procédures d'événement sont attachées aux
feuilles et aux contrôles.
Remarque :
Bien qu’on peut construire les procédures d’évènement de toutes pièces (écriture
directe de leurs noms, définition des paramètres…) il est préférable d'utiliser les
procédures de code fournies par Visual Basic, car elles incluent automatiquement le
nom correct des procédures.
Il est aussi conseillé de définir la propriété Name des contrôles avant de commencer à
écrire les procédures d'événement qui leur sont associées. Si on modifiez le nom d'un
contrôle après lui avoir associé une procédure, on devra également modifier le nom de
la procédure afin qu'elle corresponde au nouveau nom du contrôle.
Principaux Événements
24
Université de Monastir
Ecole d’Ingénieurs de Monastir
a- Click
Se produit lorsque l’utilisateur appuie puis relâche le bouton gauche de la souris (ou entrée si
le contrôle a le focus)
b- DblClick
c- GotFocus
d-KeyPress >>>
e- Change
2. Procédures Fonction :
25
Université de Monastir
Ecole d’Ingénieurs de Monastir
Lors de la déclaration d'une fonction, la valeur qui doit être retournée par celle-ci doit
être affectée au nom de la fonction ou en utilisant l’instruction Return. La déclaration
de la fonction se termine par les mots réservés ”End function”.
Instructions
End Function
À l'instar d'une procédure Sub, une procédure Fonction est une procédure distincte capable de
prendre des arguments, d'exécuter une série d'instructions et de modifier la valeur de ses
arguments. Contrairement à une procédure Sub, une procédure Fonction peut renvoyer une
valeur à la procédure appelante. Trois éléments de syntaxe distinguent les procédures Sub des
procédures Fonction :
D'une manière générale, une fonction est appelée en plaçant le nom de la procédure de
fonction ainsi que ses arguments à droite d'une instruction ou d'une expression plus
longue (returnvalue = function()).
Tout comme les variables, les procédures Fonction possèdent des types de données qui
déterminent le type de valeur qu'elles renvoient. (En l'absence de clause As, il s'agit
par défaut du type Variant.)
Pour qu'une valeur soit renvoyée, vous devez l'affecter à Nom_Procedure. Lorsque la
procédure Fonction renvoie une valeur, celle-ci peut être utilisée au sein d'une
expression plus longue.
Par exemple, vous pouvez écrire une fonction qui permet le calcul de l'hypoténuse d'un
triangle rectangle à partir des deux autres côtés :
26
Université de Monastir
Ecole d’Ingénieurs de Monastir
Pour appeler une procédure Fonction, procédez comme pour n'importe quelle fonction
intégrée dans Visual Basic :
Remarque : L’appel d’une procédure Sub ou procédure fonction peut se faire en utilisant
l’instruction call ou directement en plaçant le nom de la procédure.
27
Université de Monastir
Ecole d’Ingénieurs de Monastir
End Sub
2. Les modules :
Si on a besoin d’une même procédure dans plusieurs feuilles d’un même projet, on peut
l’écrire dans les deux feuilles ou la décrire dans un module et elle sera vue par toutes les
feuilles de l’application. Ce module est ajouté de la même façon qu’on ajoute une nouvelle
feueille.
Les tableaux suivant résument les fonctions de types de données, les fonctions mathématiques
et quelques fonctions pour la manipulation des chaînes de caractères, les fonctions de
traitement des dates et de l’heure et les fonctions de traitement des fichiers et des répertoires.
28
Université de Monastir
Ecole d’Ingénieurs de Monastir
29
Université de Monastir
Ecole d’Ingénieurs de Monastir
30
Université de Monastir
Ecole d’Ingénieurs de Monastir
31
Université de Monastir
Ecole d’Ingénieurs de Monastir
32
Université de Monastir
Ecole d’Ingénieurs de Monastir
33
Université de Monastir
Ecole d’Ingénieurs de Monastir
d'autres termes, VB.NET doit savoir quelle procédure doit être déclenchée quand un évènement
survient sur l’objet créé.
Pour cela, il faut commencer par écrire une procédure qui contient les instructions à faire en cas
d’occurrence de l’évènement sur le contrôle :
Private Sub BouttonClique(sender As Object, e As EventArgs)
Msgbox("je suis un nouveau bouton")
End Sub
Pour être évènementielle, cette procédure doit être liée à l’évènement en question (par exemple
BtnTest.click) mais surtout à l’objet à manipuler (BtnTest).
Pour cela on utilisera l’instruction AddHandler qui sera écrite comme suit:
AddHandler BtnTest.Click, AddressOf BouttonClique
AddHandler permet d’affecter une procédure à un évènement.
AdressOf permet de désigner la procédure à utiliser en cas d’évènement.
De cette façon le bouton « BtnTest » a été ajouté rien qu’avec du code, aussi nous lui avons
attribué une procédure qui sera exécuté s’il est cliqué. Voici le code complet :
Public Class FrmTest
Dim BtnTest As New Button
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles
MyBase.Load
End Sub
34
Université de Monastir
Ecole d’Ingénieurs de Monastir
Noter bien:
- le mot clé « Handles » permet d'associer un événement à une procédure au moment de la
conception.
- le mot clé « Addhandler » permet d'associer un événement à une procédure au moment de
l'exécution.
Remarque :
L’instanciation d’un nouvel objet est faite en dehors de toute procédure pour que l’objet
soit vu par tous les sous programmes (objet global).
Le paramétrage ainsi que l’attribution des évènements (les instructions AddHandler
faisant les correspondances des différents évènements aux différents objets) se fait dans la
procédure Form_Load pour que ce soit exécuté au démarrage de l’application.
Une procédure attribuée à un évènement d’un objet peut être réattribué à un autre objet
et/ou un autre évènement.
4. Utilisation des paramètres « sender » et « e »:
Si on déclare deux boutons BtnTest1 et BtnTest2, on devra paramétrer les deux boutons comme
fait ci-dessus. On utilisera la même procédure « BouttonClique » pour l’évènement « click ».
Dans ce cas, à moins qu’on veuille faire les mêmes instructions lors du clic sur les deux boutons,
ce qui est illogique, il faut faire la différence entre l’objet qui a initié l’évènement. Ceci peut être
fait en testant sur le paramètre « Sender » de la procédure qui représente l’objet qui a initié
l’évènement en utilisant l’opérateur de comparaison d’objet « IS ». Ainsi on écrit ce code :
Private Sub BouttonClique(sender As Object,e As EventArgs)
If sender Is BtnTest1 Then
MsgBox("Je suis le premier bouton")
ElseIf sender Is BtnTest2 Then
MsgBox("Je suis le deuxième bouton")
End If
End Sub
En ce qui concerne le deuxième paramètre « e », c’est un objet qui contient les arguments de
l’évènement.
Exemple : pour un textbox, les évènements suivant sont relatifs à la touche appuyée :
KeyDown : survient quand on appuie sur la touche.
KeyPress : quand la touche est enfoncée.
KeyUp : quand on relâche la touche.
35
Université de Monastir
Ecole d’Ingénieurs de Monastir
End Sub
End Class
36
Université de Monastir
Ecole d’Ingénieurs de Monastir
37
Université de Monastir
Ecole d’Ingénieurs de Monastir
1. Introduction
La gestion d’erreur représente une partie importante à réaliser lors de la programmation d’un
logiciel. Une application qui ne contient pas de gestion d’erreur crashera obligatoirement.
Il y existe plusieurs types d'erreurs : de syntaxe, d'exécution, de logique, de manipulation etc...
2. Les erreurs de syntaxe
On peut aussi les nommer 'les erreurs du compilateur', elles se produisent lorsque le compilateur
rencontre un code non reconnaissable, erreur de saisie ou méconnaissance du langage. Comme
les erreurs du compilateur empêchent un programme de s'exécuter, il faut être averti de ces
erreurs avant de tenter d'exécuter un programme, car elles surviennent en mode conception quand
on tape le code.
Les erreurs les plus communes sont:
Utilisation d'un mauvais nom de variable (La déclaration obligatoire des variables évite
cela)
Erreur dans la portée d'une variable.
Erreur dans le passage de paramètres (Attention au By Val et By Ref)
Erreur dans la conception de l'algorithme.
Exemple: la Propriété Text d'un label mal orthographiée:
38
Université de Monastir
Ecole d’Ingénieurs de Monastir
• Soit une erreur de l'utilisateur (Ex : On demande de taper un chiffre, l’utilisateur tape une lettre
ou rien puis valide.)
Normalement, lorsqu’une erreur survient, l’exécution du code s’interrompt. Les instructions de
gestion d’erreurs (comme : Try Catch Finally, On Error Resume ) intrinsèques à Visual Basic
permettent de désactiver ce comportement et de passer outre les instructions soulevant des
erreurs. Nous allons voir maintenant plus en détail chaque instruction de gestion d’erreurs.
39
Université de Monastir
Ecole d’Ingénieurs de Monastir
Il est possible d'utiliser Catch pour récupérer l'objet 'Exception' qui est généré par l'erreur.
Exemple : Catch ex As Exception
L’objet Exception à des propriétés:
Message qui contient le descriptif de l'erreur
Source qui contient l'objet qui a provoqué l'erreur
Exemple 1:
Public Sub Exempledivision()
Dim x As Integer = 5
Dim y As Integer = 0
Try
x = x \ y ' division par zero.
MessageBox.Show("end of Try block")
Catch ex As Exception
MessageBox.Show(ex.Message) ' affiche le message de l’exception.
y = Val(Inputbox("donner une autre valeur de y"))
Finally
MessageBox.Show("fin du programme")
End Try
End Sub
Exemple 2:
On ouvre un fichier par StreamReader, comment intercepter les exceptions suivantes :
Répertoire non valide, Fichier non valide, Autre.
Try
sr= New StreamerReader (NomFichier)
Catch ex As DirectoryNotFoundException ‘Répertoire non valide
MsgBox("Répertoire invalide")
Catch ex As FileNotFoundException ‘Fichier non valide
MsgBox("Fichier invalide")
Catch ex As Exception ‘Catch intercepte toutes les autres exceptions
MsgBox(ex.Message)
End Try Try
Remarque: Exit Try permet de sortir prématurément. Quitte <Instructions>
[Exit Try]
immédiatement le bloc Try ou Catch dans lequel il est. L'exécution Catch <DéfinitionErreur>
<Instructions>
continue avec le bloc Finally s'il y en a un, ou avec l'instruction qui suit [Finally]
<Instructions>
End Try. End Try
40
Université de Monastir
Ecole d’Ingénieurs de Monastir
L’objet Err représente l’erreur produite par la dernière instruction exécutée et vous permet d’en
connaître la source, le numéro, la description, etc. En testant adéquatement l’objet Err à l’aide
d’une simple structure if, il est possible de savoir si l’instruction précédemment exécutée a
générée une erreur ou non.
• On peut lire le numéro de l'erreur qui s'est produite, ce numéro est dans Err.Number.
• Err.Description contient le texte décrivant l'erreur.
• Err.Source donne le nom de l'objet ou de l'application qui a crée l'erreur.
Exemple :
On Error GoTo RoutineErreur 'Si une erreur se produit se rendre à 'RoutineErreur'
Dim x As Integer = 33
Dim y As Integer = 0
Dim z As Integer
z = x / y ' Crée une division par 0 !!
RoutineErreur : ' La Routine d'erreur est ici (remarquer ':' indiquant une etiquette).
Select Case Err.Number ' On regarde le numéro de l'erreur.
Case 6 ' Cas : Division par zéro interdite
y = 1 ' corrige l'erreur.
Case Else
' autres erreurs....
End Select
Resume ' Retour à la ligne qui a provoqué l'erreur.
L’instruction On Error Resume
Cette instruction permet au code de faire fit d’une erreur et de recommencer l’exécution de
instruction ayant générée l’erreur jusqu’à ce que le problème soit réglé. l’instruction On Error
Resume précisera à Visual Basic de ne pas en tenir compte et de ré-exécuter l’instruction.
L’instruction On Error Resume Next
Cette instruction précisera à Visual Basic que si une instruction 'plante', la sauter et passer à
l'instruction suivante.
On Error Resume Next
Exemple: On veut effacer un fichier :
Kill (MonFichier)
L’instruction On Error Goto 0
Cette instruction permet d’annuler tout traitement des erreurs. Ainsi, si une erreur survient après
cette instruction, le code sera interrompu et un message d’erreur sera affiché à l’utilisateur.
l’instruction On Error Goto 0 ramène le comportement initial de Visual Basic.
41