Vous êtes sur la page 1sur 44

MINISTERE DE LENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE

DIRECTION GENERALE DES TUDES TECHNOLOGIQUES

INSTITUT SUPERIEUR

DES

TUDES TECHNOLOGIQUES - JENDOUBA

DE PARTEMENT TECHNOLOGIES DE LINFORMATIQUE

SUPPORT DES TRAVAUX PRATIQUES

ATELIER PROGRAMMATION
EVENEMENTIELLE
VERSION 2.0

ENSEIGNANTS :
MOHAMED SLITI
HAITHEM MEZNI
MANEL ZOGHLAMI

Anne universitaire 2014/2015

Fiche Matire
Objectifs gnral
Cet atelier vise faire acqurir lapprenant la capacit de programmer des applications
interface graphique accdant des bases de donnes.

Objectifs Spcifiques
Connatre et manipuler l'environnement de dveloppement Visual Studio/ VB.net
Concevoir une interface graphique en VB.Net.
Programmer une application simple en VB.Net.

Interagir avec une base de donnes en VB.Net.

Pr-requis
Algorithmique, programmation, base de donnes.

Public cible
Profil :

Sciences et technologies en Technologies de linformatique

Spcialits :

Dveloppement des Systmes dInformation (DSI)


Rseaux et services informatique (RSI)

Niveau :
Semestre :

2
2

Droulement
Dure :

15 semaines

Volume horaire :

3 heures TP/semaine

Evaluation

Un examen de TP

Exercices supplmentaires domicile

Moyens et Outils Pdagogiques

Expos informel

Tableau

Vido projecteur

Fascicule de TP

Outils utilis : Microsoft Visuel Basic 2010 Express

Atelier Programmation Evnementielle

Table des Matires


TP N 0 : Prsentation de lEnvironnement de Dveloppement ............................................... 2
TP N 1 : Premire interface VB........ 7
Correction TP N1 .. .......................................................................................... 9
TP N 2 : Types de donnes... ............... . .12
Correction TP N 2........................................................................................... 14
TP N 3 : Structures conditionnelles.....16
C15orrection TP N 3 .. ................................................................................... 20
TP N 4 : Structures itratives..... ......... 24
Correction TP N 4 .. ....................................................................................... 27
TP N 5 : Accs aux bases de donnes..... 29
Correction TP N 5 .. ....................................................................................... 32
Exercices supplmentaires.. ............................................................................ 37

Atelier Programmation Evnementielle

TP N 0 Prsentation de
lEnvironnement de Dveloppement
Objectifs :

Dcouvrir lEnvironnement de Dveloppement (IDE).

Explorer quelques proprits de contrles et conventions de programmation en


VB.NET.

Apprendre les tapes de cration et de programmation dune application VB.NET


simple.

Volume horaire :
3 heures
Contenu du TP
Dans ce TP, la sance se droule comme suit :

Prsentation de la fentre principale de lenvironnement Microsoft Visual Basic 2010


Express.

Prsentation de la boite outils.

Prsentation de la fentre proprits

Prsentation de la fentre de lditeur de code

Prsentation dautres fentres (exemple : explorateur de projets, explorateur dobjets,


etc.).

Atelier Programmation Evnementielle

LEnvironnement de Dveloppement de VB.NET


Nous allons opter pour l'utilisation de l'environnement gratuit: Microsoft Visual Basic 2010
Express. (On peut aussi utiliser Microsoft Visual Studio).

Fentre principale :
partir de cette fentre, ltudiant commence dcouvrir les diffrents composants, leurs
rles et les diffrentes fonctionnalits offertes par loutil Visual Basic 2008 Express.

Ltudiant sera aussi capable de manipuler la barre doutils afin de crer son propre projet
VB. Ltudiant apprendra comment cre ou ouvrir un projet, ajouter des fentres, excuter ou
dboguer un programme, etc.

Boite outils :
Cette fentre est parmi les composants de base qui seront exploits dans les sances de TP
puisquelle permettra ltudiant de manipuler les contrles offerts (boutons de commandes,
zones de texte, etc.).
Dans cette partie, ltudiant sera capable de :

Atelier Programmation Evnementielle

Enumrer les contrles les plus utiliss et le rle de chaque contrle.


Connaitre les diffrentes conventions dutilisation (exemple : prfixes).
Apprendre les tapes suivre pour ajouter un contrle une fentre.

Remarque : lutilisation des prfixes est facultative, mais elle est prfrable pour distinguer
entre les types des diffrents contrles (exemple : dans le cas o deux contrles portent le
mm nom). Voici un des exemples de prfixes :

Atelier Programmation Evnementielle

Fentre Proprits :
partir de cette fentre, ltudiant commence dcouvrir les principales proprits de
quelques composants, et les proprits communes.

Atelier Programmation Evnementielle

Fentre de code :
Dans cette fentre, ltudiant commence crire son premier code simple afin de programmer
les contrles quil a utiliss.

Atelier Programmation Evnementielle

TP N 1 Premire application VB
Objectifs :
Concevoir des interfaces simples en VB.NET.
Dfinir les proprits des objets en VB.NET.
Ecrire un programme minimal en VB.NET.
Compiler et excuter un programme en VB.NET.

Volume horaire :
3 heures

Atelier Programmation Evnementielle

TP N 1 Premire application VB
Exercice 1 :
Lobjectif du de cet exercice est de construire tape par tape un programme VB qui permet
de calculer et afficher la somme, le produit et la division de deux entiers saisis par
lutilisateur.
1. Concevoir linterface VB.
2. Dresser un tableau contenant les contrles, leurs rles et leurs proprits.
3. Programmer le bouton Calculer pour quil effectue la somme, le produit et la division.

Exercice 2:
Nous allons concevoir une application qui permet de permuter deux entiers x et y.
Lapplication devra avoir lapparence suivante :

1. Donner les proprits de chaque contrle utilis.


2. Programmer le bouton Permuter pour quil dclenche la permutation des deux entiers
x et y.
3. Modifier linterface de lapplication et le code de la procdure btnPermuter_Click
pour quon puisse afficher le rsultat de la permutation sans modifier le contenu des
champs de saisi, en utilisant :
a. Le contrle Label
b. La fonction prdfinie de VB.NET : MsgBox. (Syntaxe : MsgBox Message)

Atelier Programmation Evnementielle

Correction TP N 1
Exercice 1:
1.

2.
Contrle

Rle

Proprits

Label

Demander lutilisateur de saisir a

Text = Donnez a

Label

Demander lutilisateur de saisir b

Text = Donnez b

Textbox

Zone de saisie de a

Textbox

Zone de saisie de b

Button
Label

Calculer la somme, le produit et la


division
Afficher la somme de a et b

Label

Afficher le produit de a et b

Label

Afficher la division de a par b

Fentre

Fentre de lapplication

Name = txta
Text = vide
Name = txtb
Text = vide
Name = btnCalculer
Text = Calculer
Name = lblSomme
Text = vide
Name = lblProduit
Text = vide
Name = lblDivision
Text = vide
Name = frmCalcul
Text = Calcul

Atelier Programmation Evnementielle

3.
Public Class Form1
Private Sub btnCalcul_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnCalcul.Click
Dim a, b, s, p As Integer
Dim d As Double
a = txta.Text
b = txtb.Text
s = a + b
p = a * b
d = a / b
lblSomme.Text = "Somme = " & s
lblProduit.Text = "Produit = " & p
lblDivision.Text = "Division = " & d
End Sub
End Class

Exercice 2:
1.
Contrle
Label

Rle

Textbox

Demander lutilisateur de saisir


x
Demander lutilisateur de saisir
y
Zone de saisie de x

Textbox

Zone de saisie de y

Button

Permuter x et y

Label

Proprit
s
Text= Donnez la valeur de x
Text = Donnez la valeur de y
Name = txtX
Text = vide
Name = txtY
Text = vide
Name = btnPermuter
Text = Permuter

2.
Public Class Form1
Private Sub btnPermuter_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnPermuter.Click
Dim x, y, tmp As Integer
x = txtX.Text
y = txtY.Text
tmp = x
x= y
y = tmp
txtX.Text = x
txty.Text = y
End Sub
End Class

Atelier Programmation Evnementielle

3.
a.
Public Class Form1
Private Sub btnPermuter_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnPermuter.Click
Dim x, y, tmp As Integer
x = txtX.Text
y = txtY.Text
tmp = x
x= y
y = tmp
lblx.Text = "X = " & x
lbly.Text = "Y = " & y
End Sub
End Class

b.
Public Class Form1
Private Sub btnPermuter_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnPermuter.Click
Dim x, y, tmp As Integer
x = txtX.Text
y = txtY.Text
tmp = x
x= y
y = tmp
MsgBox(" X = " & x & " Y = " & y)
End Sub
End Class

10

Atelier Programmation Evnementielle

TP N 2 Types de donnes
Objectifs :
Dclarer correctement des constantes et des variables en VB.NET
Connaitre les diffrents types de donnes en VB.NET
Faire la diffrence entre une variable globale et variable locale en VB.NET.
Manipuler les diffrentes fonctions prdfinies pour chaque type de donnes en
VB.NET.
Volume horaire :
6 heures

11

Atelier Programmation Evnementielle

TP N 2 Types de donnes
Exercice 1 :
On veut concevoir une application qui permet dterminer le jour de naissance et calculer lge
dune personne selon les coordonnes entres par lutilisateur. Il sagit de crer un programme
qui permet de raliser les tapes suivantes :

Inciter lutilisateur saisir son nom et son prnom et les stocker dans des variables.
Lui demander sa date de naissance.

Mmoriser les jours de la semaine dans une structure de donnes compose afin de les
utiliser pour dterminer le jour de naissance de lutilisateur.
Calculer lge.
Gnrer le message suivant :
[Nom & Prnom] " Votre jour de naissance est le " [JourNaissance] " et vous avez " [age]
"ans"
1. Donnez linterface de lapplication et dressez le tableau des proprits des contrles
utiliss.
2. Donnez le code ncessaire pour raliser ces tapes.

Exercice 2:
Lobjectif de cet exercice est de crer une application VB qui permet de lire un entier n (de 4
chiffres) et afficher le produit et la somme de ses chiffres. Linterface raliser est la suivante:

Programmez le bouton Calculer pour pouvoir calculer la somme et le produit des


chiffres de lentier n.

12

Atelier Programmation Evnementielle

Correction TP N 2
Exercice 1:

1.

Contrle

Rle

Label

Demander lutilisateur de saisir son nom

Label

Demander lutilisateur de saisir son prnom

Textbox

Zone de saisie du nom

Textbox

Zone de saisie du prnom

Label
Textbox

Demander lutilisateur de saisir sa date de


Naissance
Zone de saisie de la date de naissance

Button

Dterminer lge et le jour de naissance

Proprits
Text = Donnez votre
nom :
Text = Donnez votre
prnom :
Name = txtNom
Text = vide
Name = txtPrnom
Text = vide
Text = Donnez votre date
de naissance :
Name = txtDate
Text = vide
Name = btnage
Text = Age

13

Atelier Programmation Evnementielle

2.
Public Class Form1
Private Sub btnage_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnage.Click
Dim nom, prenom, nameJour As String
Dim jour, age As Integer
Dim Dnaissance As Date
Dim T() As String = {"dimanche", "lundi", "mardi", "mercredi", "jeudi",
"vendredi", "samedi"}
nom = txtNom.Text
prenom = txtPrenom.Text
Dnaissance = CDate(txtDate.Text)
jour = Weekday(Dnaissance)
nameJour = T(jour - 1)
age = Year(Now) - Year(Dnaissance)
MsgBox(nom & "
" & prenom & " Votre jour de naissance est le " &
nameJour & " et vous avez " & age & " ans", MsgBoxStyle.Information, "Date de
Naissance")
End Sub
End Class

Exercice 2:
Public Class Form1
Private Sub btnCalculer_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnCalculer.Click
Dim nbr, m, c, d, u, somme, produit As Integer
nbr = txtnbr.Text
m = nbr \ 1000
c = (nbr Mod 1000) \ 100
d = ((nbr Mod 1000) Mod 100) \ 10
u = nbr Mod 10
somme = m + c + d + u
produit = m * d * u * c
lblproduit.Text = produit
lblsomme.Text = somme
End Sub
End Class

14

Atelier Programmation Evnementielle

TP N 3 Structures conditionnelles
Objectifs :
Utiliser les structures de contrles conditionnelles dans un code VB.NET.
Volume horaire :
6 heures

15

Atelier Programmation Evnementielle

TP N 3 Structures conditionnelles
Exercice 1:
Lobjectif de cette application est deffectuer une opration arithmtique selon le type
dopration choisi partir de la liste droulante. Lapplication a lapparence suivante :

1.

Donner, sous forme dun tableau, les diffrents contrles utiliss et leurs proprits.

2.

Ajouter la procdure Form_Load( ) les lignes ncessaires au remplissage du contrle


ComboBox. Utilis pour cela :
a. La mthode Items.Add pour ajout un texte au ComboBox.
b. La proprit SelectedIndex pour initialiser le texte du contrle ComboBox au
premier Choix

3.

Programmer le bouton Calculer pour vrifier si les valeurs de a et b sont numriques et


affiche le rsultat de lopration dans une boite de dialogue.

Exercice 2: Jeu porte-bonheur


Le principe du jeu consiste trouver le numro porte-bonheur pour une personne aprs avoir
choisir loption qui correspond son tat civil et saisir sa date de naissance.
Principe du calcul du numro :

Cas dune personne clibataire : mois+jour+3

Cas dune personne mari : mois+jour+2

Cas dune personne divorc : mois+jour+1

16

Atelier Programmation Evnementielle

Ecrire la procdure btnrechercher_click() qui permet de calculer et dafficher dans une boite
de dialogue le numro porte-bonheur partir des informations saisies.
Remarque :
La fonction DatePart() : Retourne une partie spcifique de la date spcifie. Elle peut tre le
jour, le mois, etc.
Exemple :
Dim dA As Date= Today()
nJour =DatePart("d", dA) 'Retourne le jour du mois (entre 1 et 31)
nMois =DatePart("m", dA) 'Retourne le mois (entre 1 et 12)

Exercice 3 :
Soit lapplication suivante :

17

Atelier Programmation Evnementielle

1.

Donner, sous forme dun tableau, les diffrents composants graphiques de linterface cidessus et leurs proprits.

2.

Ajouter la procdure Form_Load( ) les lignes ncessaires au remplissage du contrle


ComboBox au moment de chargement de la fentre avec : priphriques dentres,
priphriques de sorties et priphriques dE/S.

3.

Programmer le bouton Ajouter pour ajouter un priphrique la liste correspondante au


type choisi. Suite chaque ajout, le nombre dlment de la liste est mis jour et le
champ de saisie est initialis.

4.

Programmer le bouton Retirer priphrique pour retirer dune liste le priphrique dont
le nom est saisi par l'utilisateur.

5.

Programmer le bouton Vider qui permet de vider la liste de priphriques dont le type est
choisie par lutilisateur.

18

Atelier Programmation Evnementielle

Correction TP N 3
Exercice 1:
1.
Contrle
Label
Label
Textbox
Textbox
Label
comboBox
Bouton

Rle
Demander lutilisateur de saisir a
Demander lutilisateur de saisir b
Zone de saisie de a
Zone de saisie de b
Demander lutilisateur de choisir
une opration
Lister les oprations
Dterminer le rsultat selon le type
dopration

Proprits
Text = Donnez a
Text = Donnez b
Name = txta ; Text = vide
Name = txtb ; Text = vide
Text = Choisissez une
Opration :
Name = cmbopration
Name = btncalculer
Text = Calculer

Public Class frmopration

2.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles MyBase.Load
cmbopration.Items.Add("Addition")
cmbopration.Items.Add("Soustraction")
cmbopration.Items.Add("Multiplication")
cmbopration.Items.Add("Division")
cmbopration.Items.Add("Division entire")
cmbopration.Items.Add("reste de la division")
cmbopration.SelectedIndex = 0
End Sub

3.

Private Sub btncalculer_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btncalculer.Click
If Not IsNumeric(txta.Text) Or Not IsNumeric(txtb.Text) Then
MsgBox("paramtres incorrectes", MsgBoxStyle.Exclamation, "erreur")
Exit Sub
End If
Dim op As String
Dim a, b As Integer
Dim res As Double
op = cmbopration.Text
a = CInt(txta.Text)
b = CInt(txtb.Text)
Select Case op
Case "Addition"
res = a + b
MsgBox(a & "+" & b & "=" & res, MsgBoxStyle.Information, "Rsultat")
Case "Soustraction"
res = a - b

19

Atelier Programmation Evnementielle

MsgBox(a & "-" & b &


Case "Multiplication"
res = a * b
MsgBox(a & "*" & b &
Case "Division"
res = a / b
MsgBox(a & "/" & b &
Case "Division entire"
res = a \ b
MsgBox(a & "\" & b &
Case Else
res = a Mod b
MsgBox(a & "mod" & b
End Select
End Sub
End Class

"=" & res, MsgBoxStyle.Information, "Rsultat")

"=" & res, MsgBoxStyle.Information, "Rsultat")

"=" & res, MsgBoxStyle.Information, "Rsultat")

"=" & res, MsgBoxStyle.Information, "Rsultat")

& "=" & res, MsgBoxStyle.Information, "Rsultat")

Exercice 2:
Public Class Form1
Private Sub cmdrechercher_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdrechercher.Click
Dim d As Date
Dim j, num, m, nb As Integer
If txtdate.Text = "" Then
MsgBox("veuillez saisir correctement votre date de naissance",
MsgBoxStyle.Exclamation, "erreur")
txtdate.Text = ""
Exit Sub
End If
d = CDate(txtdate.Text)
j = DatePart("d", d)
m = DatePart("m", d)
If optcelib.Checked = True Then num = 3
If optmari.Checked = True Then num = 2
If optdivorc.Checked = True Then num = 1
nb = j + m + num
MsgBox("votre numro porte bonheur est:" & nb, MsgBoxStyle.Information, "jeu")
txtdate.Text = ""
End Sub
End Class

Exercice 3:
Public Class Form2

2.

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles MyBase.Load
cmbtype.Items.Add("priphrique d'entre")
cmbtype.Items.Add("priphrique de sortie")
cmbtype.Items.Add("priphrique d'E/S")
cmbtype.SelectedIndex = 0
End Sub

20

Atelier Programmation Evnementielle

3.

Private Sub btnajouter_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btnajouter.Click
If txtp.Text = "" Then
MsgBox("veuillez saisir un priphrique", MsgBoxStyle.Exclamation,
"erreur")
Exit Sub
End If
If cmbtype.Text = "priphrique d'entre" Then
lste.Items.Add(txtp.Text)
txtp.Text = ""
lblnbe.Text = CStr(lste.Items.Count)
Else
If cmbtype.Text = "priphrique de sortie" Then
lsts.Items.Add(txtp.Text)
txtp.Text = ""
lblnbs.Text = CStr(lsts.Items.Count)
Else
lstes.Items.Add(txtp.Text)
txtp.Text = ""
lblnbes.Text = CStr(lstes.Items.Count)
End If
End If
End Sub

4.

Private Sub btnretirer_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btnretirer.Click
If cmbtype.Text = "priphrique d'entre" Then
lste.Items.Remove(txtp.Text)
txtp.Text = ""
lblnbe.Text = CStr(lste.Items.Count)
Else
If cmbtype.Text = "priphrique de sortie" Then
lsts.Items.Remove(txtp.Text)
txtp.Text = ""
lblnbs.Text = CStr(lsts.Items.Count)
Else
lstes.Items.Remove(txtp.Text)
txtp.Text = ""
lblnbes.Text = CStr(lstes.Items.Count)
End If
End If
End Sub

5.

Private Sub btnvider_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btnvider.Click
If cmbtype.Text = "priphrique d'entre" Then
lste.Items.Clear()
lblnbe.Text = "pas de priphrique"
Else
If cmbtype.Text = "priphrique de sortie" Then

21

Atelier Programmation Evnementielle

lsts.Items.Clear()
lblnbs.Text = "pas de priphrique"
Else
lstes.Items.Clear()
lblnbes.Text = "pas de priphrique"
End If
End If
End Sub
End Class

22

Atelier Programmation Evnementielle

TP N 4 Structures itratives
Objectifs :
Utiliser les structures de contrles itratives dans un code VB.NET.
Volume horaire :
6 heures

23

Atelier Programmation Evnementielle

TP N 4 Structures itratives
Exercice 1:
On se propose de crer une application qui permet de dterminer le nombre de mots dans une
phrase. Ajouter les lignes de code ncessaires au bouton de commande.

Exercice 2:
On souhaite concevoir une application qui permet de saisir chaque fois un entier et de
linsrer dans un contrle ListBox. Chaque insertion doit tre contrle : il sagit dinsrer
lentier dans une position bien dtermine pour garder lordre croissant des lments de la
liste.

1. Donner, sous forme dun tableau, les diffrents contrles utiliss et leurs proprits.

24

Atelier Programmation Evnementielle

2. Programmer le bouton Insrer pour quil permet de raliser les tapes suivantes :
-

Vrifier si lutilisateur a saisi un nombre entier.

Dterminer la position dinsertion de cet entier.

Insrer le nombre entier dans la zone de liste. Utiliser pour cela la syntaxe
suivante :
NomListBox.Items.Insert(Position dinsertion, texte)

Initialiser le champ de saisi.

Exercice 3
On dsire crer une application qui permet de grer et consulter les notes des tudiants.
Linterface ci-dessous permet dajouter les notes des tudiants. Elle dispose aussi de trois
boutons doptions permettant lenseignant de filtrer les notes selon plusieurs critres :

Le premier bouton doption permet de parcourir le tableau TabNotes (tableau de notes)


et afficher dans lobjet ListBox les notes suprieures 10.

Le deuxime bouton doption permet dafficher toutes les notes.

Le troisime bouton doption permet de parcourir le tableau et affiche dans lobjet


ListBox les meilleures notes (notes suprieures 17).

1. Dclarer le tableau TabNotes


2. Programmez le bouton Ajouter qui permet dajouter une note dans lobjet ListBox et dans
le tableau TabNotes. Une note doit tre comprise entre 0 et 20.
3. Ecrire le code de la procdure vnementielle optSuperieure10_CheckedChanged qui,
suite la slection du premier bouton doption, effectue le filtrage ncessaire.

25

Atelier Programmation Evnementielle

Correction TP N 4
Exercice 1:
Public Class Form1
Private Sub btnCalculer_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnCalculer.Click
Dim phr As String
Dim car As Char
Dim nbr_espaces, i As Integer
nbr_espaces = 0
phr = Trim(txtPhrase.Text)
For i = 1 To Len(phr)
car = Mid(phr, i, 1)
If car = " " Then
nbr_espaces = nbr_espaces + 1
End If
Next
MsgBox("Cette phrase contient " & nbr_espaces + 1 & " mot(s)",
MsgBoxStyle.Information, "Nombre de mots")
End Sub
End Class

Exercice 2:
6.
Contrle
Label
TextBox
ListBox
Bouton

Proprits
Text = Donnez lentier
insrer
Name = txta ; Text = vide
Name = lstNombres
Name = btninsrer
Text = Insrer

7.
Public Class frminsertion
Private Sub btninsrer_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btninsrer.Click
If Not IsNumeric(txtNombre.Text) Or txtNombre.Text = " " Or
CInt(txtNombre.Text) Mod 1 <> 0 Then
MsgBox("veuillez saisir un entier", MsgBoxStyle.Exclamation, "Insertion
controle")
txtNombre.Text = " "
txtNombre.Focus()
Exit Sub
End If
Dim NBR, POS, NbrList As Integer
NBR = txtNombre.Text

26

Atelier Programmation Evnementielle

NbrList = lstNombres.Items.Count
POS = 0
Do While POS <= NbrList - 1
If NBR < lstNombres.Items.Item(POS) Then
Exit Do
Else
POS = POS + 1
End If
Loop
lstNombres.Items.Insert(POS, NBR)
txtNombre.Text = " "
txtNombre.Focus()
End Sub
End Class

Exercice 3
1.
Dim TabNotes(30) As Double

2.
Private Sub cmdAjouter_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdAjouter.Click
If Not IsNumeric(txtNote.Text) Or Val(txtNote.Text) < 0 Or
Val(txtNote.Text)
> 20 Then
MsgBox("Note incorrecte")
Exit Sub
End If
nbNotes = nbNotes + 1
TabNotes(nbNotes - 1) = Val(txtNote.Text)
lstNotes.Items.Add(txtNote.Text)
txtNote.Clear()
End Sub

3.
Private Sub optSup10_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles optSup10.CheckedChanged
lstNotes.Items.Clear()
For i = 0 To nbNotes - 1
If TabNotes(i) >= 10 Then lstNotes.Items.Add(TabNotes(i))
Next
End Sub

27

Atelier Programmation Evnementielle

TP N 5 Accs aux Bases de Donnes


(VB.NET Microsoft Office Access 2007)

Objectifs :
Utiliser SGBD Access 2007 pour accder aux donnes en VB.NET.

Intgrer des requtes SQL dans un programme VB.NET.

Utiliser SQL pour la slection et la mise jour des donnes dans un programme
VB.NET.
Assimiler les deux modes daccs aux bases de donnes : Mode connect et Mode
dconnect.
Volume horaire :
12 heures

28

Atelier Programmation Evnementielle

TP N 5 Accs aux Bases de Donnes


(VB.NET Microsoft Office Access 2007)

Partie 1 : Accs au donnes en mode connect


Enonc :
On dsire dvelopper une application qui permet de grer les films. Les
enregistres

dans

la

base

Film.mdb

contenant

la

table

Donnes sont
suivante:

film

(titre,Genre,Anne,Budget).
Linterface de lapplication est la suivante :

1.

Donner les diffrents composants de cette interface et citer leurs proprits.

2.

Dclarer la variable de connexion Cn et la variable de commande Cmd.

3.

Ecrire la procdure frmGestionFilm_Load() qui permet, au dmarrage de lapplication,


de se connecter la base de donnes Film.mdb et dinitialiser lobjet Cmd et de
remplir le contrle ComboBox avec les genres de film

suivantes: Action, Comdie,

Drame, Horreur et Science fiction.


4.

Programmer les diffrents boutons de linterface.

29

Atelier Programmation Evnementielle

Partie2 : Accs au donnes en mode non connect


Enonc :
On dsire

dvelopper

une application

permettant d'ajouter, modifier, supprimer et

rechercher un film (en utilisant le mode dconnect). Lors du chargement du formulaire, on


doit charger l'objet DataSet.
Linterface de lapplication est la suivante :

30

Atelier Programmation Evnementielle

Correction TP N 5
Partie 1 : Accs au donnes en mode connect
'Il faut importer les NameSpaces ncessaires
Imports System.Data.OleDb
Public Class frmGestionFilm

2.
Dim cn As OleDbConnection
Dim cmd As OleDbCommand
Dim rd As OleDbDataReader

3.
Private Sub frmGestionFilm_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Il faut crer un objet connection
'Il faut donner les paramtres Provider= et Data source=
'Dans le cas d'une base Access le provider (le moteur
'utiliser est le moteur OLEDB Jet 4.
cn = New OleDbConnection("provider=microsoft.jet.oleDb.4.0; data
source=C:\Users\hp\Desktop\qqqqq\1er niveau\cours vb\BDfilm1.mdb")
'Il faut ouvrir la connexion:
cn.Open()
'Il faut crer un objet Command:
cmd = cn.CreateCommand()
'Inisialisation du ComboBox:
cmbgenre.Items.Add("Action")
cmbgenre.Items.Add("Comdie")
cmbgenre.Items.Add("Drame")
cmbgenre.Items.Add("Horreur")
cmbgenre.Items.Add("Science Fiction")
cmbgenre.SelectedIndex = -1
End Sub

5.
Private Sub cmdajouter_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdajouter.Click
cmd.CommandText = "insert into film values('" & Txttitre.Text & "','" &
cmbgenre.SelectedItem.ToString & "','" & txtanne.Text & "'," & txtbudget.Text
& ")"
Dim Res As Integer = cmd.ExecuteNonQuery()
If (Res = 0) Then
MsgBox("Echec d'ajout", MsgBoxStyle.Information, "Ajouter film")
Else
MsgBox(" film ajout avec succs", MsgBoxStyle.Information, "Ajouter
film")
End If
Call initialiser()
End Sub

31

Atelier Programmation Evnementielle

Private Sub cmdmodifier_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles cmdmodifier.Click
cmd.CommandText = " Update film Set genre='" & cmbgenre.SelectedItem.ToString
& "', anne='" & txtanne.Text & "',budget=" & txtbudget.Text & " where
titre='" & Txttitre.Text & "';"
Dim Res As Integer = cmd.ExecuteNonQuery()
If (Res = 0) Then
MsgBox("la modification chouer", MsgBoxStyle.Information, "Modifier
film")
Else
MsgBox("modification effectue avec succs", MsgBoxStyle.Information,
"Modifier film")
End If
Call Initialiser()
End Sub
Private Sub cmdsupprimer_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdsupprimer.Click
cmd.CommandText = "delete from film where titre='" & Txttitre.Text & "';"
Dim Res As Integer = cmd.ExecuteNonQuery()
If (Res = 0) Then
MsgBox(" la supression chouer", MsgBoxStyle.Information, "supprimer
film")
Else
MsgBox("suppression effectue avec succs", MsgBoxStyle.Information,
"Supprimer film")
End If
Call Initialiser()
End Sub

Private Sub cmdrechercher_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles cmdrechercher.Click
cmd.CommandText = "SELECT * FROM film WHERE titre ='" + Txttitre.Text + "';"
rd = cmd.ExecuteReader
If rd.Read Then
txtanne.Text = rd.GetValue(0)
cmbgenre.SelectedItem = rd.GetValue(1)
txtbudget.Text = rd.GetValue(3)
Else
MsgBox("Film inexistant.", MsgBoxStyle.Exclamation, "Films")
End If
rd.Close()
End Sub
Private Sub Initialiser()
Txttitre.Clear()
cmbGenre.SelectedIndex = -1
txtanne.Clear()
txtbudget.Clear()
End Sub
End Class

32

Atelier Programmation Evnementielle

Partie2 : Accs au donnes en mode non connect


Imports System.Data.OleDb
Public Class frmFilms
Private FilmConnection As OleDbConnection
' Dclaration Film Commande
Private Cmd As OleDbCommand
' Dclaration Film DataAdapter
Private FilmDataAdapter As OleDbDataAdapter
' Dclaration Film DataSet
Private FilmDataSet As New DataSet()
' Dclaration Film DataTable
Private FilmDataTable As DataTable
' Dclaration Film DataRow (ligne)
Private FilmDataRow As DataRow
Private CmdBuilder As OleDbCommandBuilder
Private numFilm As Int32
Private Sub frmFilms_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Instanciation d'un Film Connexion
FilmConnection = New OleDbConnection()
'Donner la proprit ConnectionString les paramtres de connexion
FilmConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source= E:\Enseignement\Programmation
evennementielle\Projets\TP_Accs_aux_Donnes\BDFilms.mdb;"
'Ouvrir la connexion
FilmConnection.Open()
'Instancer un Film Commande
Cmd = New OleDbCommand("SELECT * FROM Film;")
'Instancer un Film Adapter
FilmDataAdapter = New OleDbDataAdapter(Cmd)
'initialiser l'Film Command
Cmd.Connection() = FilmConnection
'Avec l'aide de la proprit Fill du DataAdapter charger le DataSet
FilmDataAdapter.Fill(FilmDataSet, "Film")
'Mettre dans un Film DataTable une table du DataSet
FilmDataTable = FilmDataSet.Tables("Film")
End Sub
Private Sub cmdAjouter_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdAjouter.Click
FilmDataRow = FilmDataSet.Tables("Film").NewRow()
FilmDataRow("Titre") = txtTitre.Text
FilmDataRow("Gentre") = cmbGenre.SelectedItem.ToString
FilmDataRow("Anne") = Int32.Parse(txtAnne.Text)
FilmDataRow("Dure") = Int32.Parse(txtDure.Text)
FilmDataRow("Budget") = Double.Parse(txtBudget.Text)
FilmDataSet.Tables("Film").Rows.Add(FilmDataRow)
'Pour modifier les valeurs changes dans le DataAdapter
CmdBuilder = New OleDbCommandBuilder(FilmDataAdapter)
'Mise jour
FilmDataAdapter.Update(FilmDataSet, "Film")
'On vide le DataSet et on le 'recharge' de nouveau.
FilmDataSet.Clear()
FilmDataAdapter.Fill(FilmDataSet, "Film")
FilmDataTable = FilmDataSet.Tables("Film")
MsgBox("Film ajout.", MsgBoxStyle.Information, "Films")

33

Atelier Programmation Evnementielle

Call Initialiser()
End Sub
Private Sub cmdModifier_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdModifier.Click
'Extraire l'enregistrement courant
FilmDataRow = FilmDataSet.Tables("Film").Rows(numFilm)
'Modifier les valeurs des champs en rcuprant le contenu
FilmDataRow("Titre") = txtTitre.Text
FilmDataRow("Gentre") = cmbGenre.SelectedItem.ToString
FilmDataRow("Anne") = Int32.Parse(txtAnne.Text)
FilmDataRow("Dure") = Int32.Parse(txtDure.Text)
FilmDataRow("Budget") = Double.Parse(txtBudget.Text)
'Pour modifier les valeurs changes dans le DataAdapter
CmdBuilder = New OleDbCommandBuilder(FilmDataAdapter)
'Mise jour
FilmDataAdapter.Update(FilmDataSet, "Film")
'On vide le DataSet et on le 'recharge' de nouveau.
FilmDataSet.Clear()
FilmDataAdapter.Fill(FilmDataSet, "Film")
FilmDataTable = FilmDataSet.Tables("Film")
MsgBox("Film modifi.", MsgBoxStyle.Information, "Films")
Call Initialiser()
cmdModifier.Enabled = False
cmdSupprimer.Enabled = False
End Sub
Private Sub Initialiser()
txtTitre.Clear()
cmbGenre.SelectedIndex = -1
txtAnne.Clear()
txtDure.Clear()
txtBudget.Clear()
txtTitre.Focus()
End Sub
Private Sub cmdSupprimer_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdSupprimer.Click
FilmDataSet.Tables("Film").Rows(numFilm).Delete()
CmdBuilder = New OleDbCommandBuilder(FilmDataAdapter)
FilmDataAdapter.Update(FilmDataSet, "Film")
FilmDataSet.Clear()
FilmDataAdapter.Fill(FilmDataSet, "Film")
FilmDataTable = FilmDataSet.Tables("Film")
MsgBox("Film supprim.", MsgBoxStyle.Information, "Films")
Call Initialiser()
cmdModifier.Enabled = False
cmdSupprimer.Enabled = False
End Sub

Private Sub txtTitre_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles txtTitre.KeyPress
Dim Touche As Integer
Touche = Microsoft.VisualBasic.Asc(e.KeyChar)
If Touche = Keys.Enter Then
Dim i As Integer
For i = 0 To FilmDataTable.Rows.Count - 1
If FilmDataTable.Rows(i).Item("Titre") = txtTitre.Text Then
numFilm = i

34

Atelier Programmation Evnementielle

Exit For
End If
Next
If i < FilmDataTable.Rows.Count Then
txtAnne.Text = FilmDataTable.Rows(numFilm).Item("Anne")
cmbGenre.SelectedItem = FilmDataTable.Rows(numFilm).Item("Gentre")
txtDure.Text = FilmDataTable.Rows(numFilm).Item("Dure")
txtBudget.Text = FilmDataTable.Rows(numFilm).Item("Budget")
cmdModifier.Enabled = True
cmdSupprimer.Enabled = True
Else
MsgBox("Film inexistant.", MsgBoxStyle.Exclamation, "Films")
End If
Exit Sub
End If
If Touche = Keys.Escape Then
Call Initialiser()
cmdModifier.Enabled = False
cmdSupprimer.Enabled = False
End If
End Sub
End Class

35

Atelier Programmation Evnementielle

Exercices supplmentaires

36

Atelier Programmation Evnementielle

Exercice 1
Linterface ci-dessous permet de rsoudre une quation de second degr: f(x)=0, sachant que
f(x)=ax+bx+c et tels que a, b et c sont des entiers, avec a non nul.

Dveloppez la procdure vnementielle cmdResoudre_click qui permet d'afficher les


solutions selon les cas suivant :
Pour =b-4ac

Si >0 alors x1= (-b+ )/2a et x2 = (-b- )/2a

Si =0 alors x= -b/2a

Si <0 alors pas de solution

Exercice 2
Linterface ci-dessous permet de grer les tudiants inscrits un ensemble de formations.
4

5
1

8
2

7
3

37

Atelier Programmation Evnementielle

1. Donner, sous forme dun tableau, les diffrents composants graphiques spcifis par les
flches (numrots de 1 8) et

leurs proprits en respectant les conventions de

nommage.
Composant
Numro

Proprits
Type

1
2
..

2. Dvelopper la procdure Form_Load() qui permet au moment de chargement de la fentre


de remplir le contrle ComboBox avec les formations suivantes: Java, VB.Net et SQL.
3. Dvelopper la procdure lie au bouton Ajouter permettant d'ajouter un tudiant la liste
correspondante la formation choisie. Suite chaque nouvelle inscription, le nombre
dtudiants par formation doit tre mis jour (le nombre est affich dans l'interface sous
chaque liste).
4. Programmer le bouton Retirer inscription pour retirer dune formation l'tudiant dont le
nom est saisi par l'utilisateur.
5. Programmer le bouton Annuler formation qui permet dannuler une formation dont le
nom est slectionn par l'utilisateur. Annuler une formation revient vider la liste
concerne.
6. Programmer le bouton Chercher formation permettant dafficher la formation dun
tudiant dont le nom est saisi par lutilisateur. (2.5)
On donne: nomListe.Items.Item(i) retourne l'item d'indice i

Exercice 3
1. Donner une boucle en VB.NET permettant de demander un nombre infrieur 10 jusqu'
ce que l'utilisateur saisisse la bonne valeur.
2. Donner le code VB.NET associ au clique sur le bouton "Connexion" et permettant
d'ouvrir une autre fentre nomme "form2" si le mot de passe et l'identifiant sont gaux
au mot "iset".

38

Atelier Programmation Evnementielle

3. Donnez au moins une mthode pour que le mot de passe saisi par un utilisateur saffiche
sous forme dtoiles (*).

Exercice 4
Linterface ci-dessous permet au bibliothcaire de grer les emprunts effectus par les
tudiants de lISET de Jendouba. Les donnes demprunts sont enregistres dans la base
Biblio.mdb contenant les tables suivantes :
Etudiant (CIN, NCE, Nom, Prnom, Adresse, CodeGroupe)
Livre (ISBN, CodeL, Titre, Anne, Editeur, nbExemplaires)
Emprunt (NCE, CodeL, DateEmprunt, DateRetour)

Le bouton Vrifier permet au bibliothcaire de vrifier si ltudiant dsirant emprunter


un nouveau livre a rendu tous les livres quil a dj emprunts. Sil existe un livre non
rendu, le bibliothcaire ne peut pas passer lemprunt (boutons Disponibilit et
Enregistrer emprunt dsactivs).

39

Atelier Programmation Evnementielle

Le bouton Disponibilit permet (aprs avoir saisi le code du livre) de vrifier si le livre
emprunter est disponible. Si le nombre dexemplaires disponibles est diffrent de 0,
le bouton Enregistrer emprunt sera activ pour enregistrer lopration.
Le bouton Enregistrer emprunt permet denregistrer lopration demprunt et de
mettre jour le nombre dexemplaires disponibles.
Le bouton Rendre livre permet (aprs avoir saisi le numro de la carte dtudiant et le
code du livre) de rcuprer un livre dj emprunt (c'est--dire ajouter la date de
retour) et de mettre jour le nombre dexemplaires disponibles.
Questions :
1. Donner les diffrents composants de cette interface et citer leurs proprits.
2. Dclarer la variable de connexion Cn et la variable de commande Cmd.
3. Ecrire la procdure frmGestionEmprunts_Load qui permet, au dmarrage de
lapplication, de se connecter la base de donnes Biblio.mdb et dinitialiser
lobjet Cmd.
4. Programmer les diffrents boutons de linterface.
Remarque : Utiliser les objets OleDbCommand et OleDbDataReader pour manipuler la base
de donnes Biblio.mdb .

40