0% ont trouvé ce document utile (0 vote)
47 vues29 pages

INTRO VBNET Henri

Ce document présente une introduction au développement en Visual Basic .NET, en abordant la programmation événementielle, les structures de base, les types de données, et les contrôles d'interface. Il explique comment concevoir des applications en utilisant des formulaires, des procédures et des fonctions, ainsi que les structures de contrôle pour gérer les événements. Enfin, il décrit les principaux contrôles disponibles dans l'environnement Visual Basic, tels que les boutons, les zones de texte et les étiquettes.

Transféré par

Ashley James Williams
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
47 vues29 pages

INTRO VBNET Henri

Ce document présente une introduction au développement en Visual Basic .NET, en abordant la programmation événementielle, les structures de base, les types de données, et les contrôles d'interface. Il explique comment concevoir des applications en utilisant des formulaires, des procédures et des fonctions, ainsi que les structures de contrôle pour gérer les événements. Enfin, il décrit les principaux contrôles disponibles dans l'environnement Visual Basic, tels que les boutons, les zones de texte et les étiquettes.

Transféré par

Ashley James Williams
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

H. TSOUNGUI Introduction à VB.

NET 1

INTRODUCTION AU DEVELOPPEMENT EN VISUAL BASIC

H. TSOUNGUI, ISTV, 2017


v. 24.01.17

1. Démarche en programmation évènementielle

MS Visual Basic est un outil de développement rapide d’applications (RAD :


Rapid Applications Development). Sa démarche est particulière :
– concevoir les interfaces (formulaires, grilles, etc), c-a-d dessiner les objets et
préciser les propriétés et méthodes à utiliser pour chacun
– prévoir les événements (click sur un objet comme un bouton, perte du focus,etc)
- gérer les événements dans le code (appliquer les structures de contrôle)
- tester et contrôler la bonne exécution des actions (débuggage)
Un exemple
Développer une application basée sur la programmation évènementielle qui
calcule le périmètre d’un rectangle, un carré ou un disque ainsi que la
superficie (surface) de la figure choisie.

2. Les notions de base de la programmation « classique »

-Structure d’une procedure (sous-programme)

Sub MaProcedure()
‘Déclarations locales
Dim I as integer
Dim v(5) as string

… instructions diverses
‘appel d’autre procedure/fonction
S = Surface(x)

… instructions diverses
...
End Sub
H. TSOUNGUI Introduction à VB.NET 2

-Structure d’une fonction et valeur de retour Private Function multiplication(ByVal x As Integer, ByVal y As Integer) As
Integer
C’est en quelque sorte une procédure qui retourne une valeur. Voici un Dim p As Integer
exemple : p=x*y
Private Function SuperficieCercle( Rayon as Single) As Single Return p ' Retour du résultat dans la variable "locale" p
Return 3.14*Rayon*Rayon End Function
End Function
Utilisation dans un autre sous-programme (routine) Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
Dim ret as single ‘ valeur de retour Me.Close()
Dim rayon as single End Sub
Rayon = inputbox(« Donnez le rayon »)
Ret = SuperficieCercle( Rayon) Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
Msgbox(« Superficie : « & str(ret)) System.EventArgs) Handles Button2.Click
Dim var1 As Integer : Dim var2 As Integer : Dim k As Integer
Exemples de procédures et fonctions var1 = Val(txtvar1.Text) : var2 = Val(txtvar2.Text)

Public Class frmprocfonc k = multiplication(var1, var2) ' Appel de la procédure multiplication


' Définition de la procédure addition 'Affichage du résultat de la multiplication
Private Sub addition(ByVal x As Integer, ByVal y As Integer) lblresult2.Text = k.ToString ' au lieu de lblresult2.text = str(k)
Dim s As Integer End Sub
s=x+y
' Pas de variable pour renvoyer le résultat s End Class
(mais c’est possible dans une variable globale)

lblResult1.Text = Str(s) -Types de données (variables et constantes)


Me.Show()
End Sub -Constantes : données pour lesquelles on fixe une valeur ne pouvant être modifiée.
Déclaration : CONST pi as Integer = 3.14159
Utilisation dans une autre procedure(appel) -Variables : leurs valeurs peuvent être modifiées au cours du programme.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click 3.Les variables (déclaration, types et portées)
'Procédure ADDITION de deux valeurs * la déclaration de toutes les variables est obligatoire (voir options de projets).
Dim var1 As Integer : Dim var2 As Integer
var1 = Val(txtvar1.Text) : var2 = Val(txtvar2.Text) Les types de variables
addition(var1, var2) ' Appel de la procédure On peut aussi utiliser call
addition(var1,var2) Tableau récapitulatif des possibilités offertes par VB.Net :
End Sub
H. TSOUNGUI Introduction à VB.NET 3

Type Plage des valeurs Taille conserve donc sa valeur qu'à l'intérieur de cette procédure, et pour une
seule exécution de cette procédure.
Short -32 768 à 32 767 2 octets
Integer - 2 147 483 648 à 2 147 483 647 4 octets Sub Maprocedure()
-9 223 372 036 854 775 808 à Dim toto as Integer ‘cette variable est strictement locale
Long
-9 223 372 036 854 775 807 à
8 octets … instructions …
… instructions …
-3,4028235E+38 à -1,401298E-45 pour les valeurs négatives End Sub
Single 4 octets
1,401298E-45 à 3,4028235E+38 pour les valeurs positives
-1,79769313486231570E+308 à -4,94065645841246544E-  Niveau Form : la variable est créée dès que la Form est utilisée. Elle reste
324 accessible par toutes les procédures contenues dans cette Form et
pour les valeurs négatives conserve sa valeur tant que la Form est active en mémoire vive. Dans ce
Double 8 octets
-4,94065645841246544E-324 à - cas, il faut déclarer la variable n'importe où en-dehors d'une procédure de
1,79769313486231570E+308 la Form .
pour les valeurs positives
+/- 79 228 162 514 264 337 593 543 950 335 sans chiffre Dim toto as Integer
décimal Sub MaProcedure()
Decimal 12 octets ...
+/- 7,922 816 251 426 433 759 354 395 033 5
avec 28 positions à droite de la virgule End Sub

Byte 0 à 255 1 octets Sub MonAutreProcedure()


Boolean True / False 2 octets ...
End Sub
String de 0 à environ 230 caractères
Char 1 caractère 2 octets  Niveau projet : la variable est accessible à toutes les procédures du projet,
Date 01/01/1 à 31/12/9999 8 octets quel que soit la Form, la classe ou la structure dans laquelle se trouvent
lesdites procédures. Pour ce faire, la déclaration doit être faite dans un
4 octets module, en employant le mot-clé Public.
Object référence à un objet
+ objet
Public toto as Integer
On verra plus tard qu'il existe en réalité une pléthore d'autres types
Public TABLO(5,4) As String
Portée des variables(visibilité)
On distingue trois niveaux de portée pour les variables : procédure, form et projet

 Niveau procédure : la variable est créée à chaque exécution de cette


procédure, puis détruite à chaque fois que la procédure se termine. Elle ne
H. TSOUNGUI Introduction à VB.NET 4

4. STRUCTURES DE CONTROLE Case condition-2


instructions
Les tests …
La forme universelle du test est la suivante : Case Else ‘ Autrement
SI condition-booléenne instructions
ALORS End Select
Instructions …
SINON Les structures répétitives et itératives (boucles)
Instructions
FIN-SI TANT QUE

IF expression_booléenne THEN WHILE expression_booléenne


instructions_si_vrai instructions
[ELSE WEND (ou END WHILE)
instructions_si_faux]
ENDIF
POUR
Autre expression des tests conditionnels
FOR variable = valeur_initiale TO valeur_finale [step pas]
If expression_booléenne Then instructions
instructions_si_vrai NEXT variable
Elseif expression_booléenne Then
instructions_si_vrai
Elseif expression_booléenne Then Exemple d’imbrication de boucles FOR - NEXT
instructions_si_vrai
Elseif expression_booléenne Then FOR variable-i = valeur_initiale to valeur_finale [step pas]
instructions_si_vrai instructions
etc. FOR variable-j = valeur_initiale to valeur_finale [step pas]
Endif instructions
NEXT variable-j
Les sélections avec SELECT CASE
NEXT variable-i
Quand on a un nombre important de tests à faire, il faut éviter les IF … ELSEIF …
ENDIF en utilisant à la place, le commutateur SELECT CASE : JUSQUA

Select Case Valeur DO [LOOP]



Case condition-1 ou valeur1 …
Instructions (si le test est vrai) UNTIL condition booléenne
H. TSOUNGUI Introduction à VB.NET 5

5. Les Premiers Contrôles (Boîte à outils de contrôles) Visible : propriété booléenne qui gère, comme son nom l’indique, le caractère
visible ou non de la Form (et partant, des autres contrôles qu’elle contient)
Le contrôle Form(formulaire) Procédure événementielles : à chaque objet créé peuvent correspondre autant de
procédures que d’événements possibles survenant sur cet objet.
C’est le contrôle de base, absolument universel, en Visual Basic est la feuille, ou
formulaire, en anglais, Form. Cet objet est incontournable ; on ne peut créer et
utiliser d’autres objets que si ceux-ci font partie d’une Form. A l’ouverture de Ex : évènement sur un objet comme par ex. un click sur un bouton de commande
Visual Basic, on vous propose d’ailleurs par défaut un objet Form. Private Sub NomObjet_Evenement()

End Sub

Private signifie que la procédure n’est utilisable (visible) que pour la Form
considérée (et pas pour d’autres objets situés sur d’autres Form).

Evènement CLICK sur le bouton « FORMULAIRE »

Nous allons examiner deux propriétés dont il est essentiel de comprendre la


signification.
Name : il s’agit du nom de l’objet tel qu’il est géré par l’application. Cela
correspond en quelque sorte à un nom de variable (sauf que ce n’est pas une
variable, c’est un objet !). Prendre l’habitude de bien nommer les objets form de
manière significative : frmMenu pour le formulaire Menu, txtNomClient pour le
champ textBox devant contenir le nom d’un client.
Ex : frmMenu, frmSuppression

Text : utile pour professionnaliser une application, lui donner un look fini.
Dans le code, on ne désigne donc jamais un objet par sa propriété Text, mais par Ex : Private Sub btnFERMER_Click()
son Name. Me.close
End Sub
H. TSOUNGUI Introduction à VB.NET 6

Le contrôle CommandButton (Bouton de Commande) Dim Rep As String : Dim laquestion, Titre_fenetre As String
laquestion = "Quel âge avez-vous ?"
Il s’agit du bouton type OK, Annuler, mais dont le texte apparent (en Anglais, Titre_fenetre = "Une petite question"
propriété Text) et le rôle dans une application peuvent varier à l’infini. L’action Rep = InputBox(laquestion, Titre_fenetre)
que VB considère comme étant la plus commune pour les boutons de commande
est le Click (en Français, clic). Ce code attendra que le bouton OK (ou Annuler) soit cliqué, et stockera alors le
Quelques propriétés intéressantes de la classe CommandButton : contenu de la zone de saisie dans la variable Rep.
Name : bien sûr !
Text : « FERMER » qui permet évidemment de fermer l’objet Form … La fonction MsgBox
Visible : rend l’objet visible. La fonction jumelle d'Inputbox, vouée à un usage un peu différent, est la fonction
Enabled : cette propriété, booléenne, est comme on le verra est très commune à MsgBox. Elle déclenche l'apparition d'une boîte SANS zone de saisie, mais dotée
d’autres objets et permet de les rendre accessibles (activés). Elle permet (valeur d'un jeu de boutons, et éventuellement d'une illustration standard sous forme
True) à un contrôle d’être actif. d’icône Point d’interrogation, exclammation, etc.

Le contrôle Listbox (Boîte de liste simple)


Dim rep1 As String = "" : Dim rep2, rep4 As Integer : Dim rep3
Très utile pour afficher des infos appelés Items sous forme de liste As Integer
déroulante. Utilisation : listBox1.Items.Add(infos) rep1 = InputBox("Cas 1 : Donnez une valeur")
MsgBox(" Vous avez choisi " & rep1.ToString)
6. Fonctions d'interface rep2 = MsgBox("Cas 2 : Nom du client ", vbOKCancel)
MsgBox(" Vous avez cliqué le bouton " & rep2.ToString)
La fonction InputBox
rep3 = MessageBox.Show("Cas 3 : Nom du client ", "
La première de ces deux fonctions est celle qui nous permet de faire apparaître une
Saisie client", MessageBoxButtons.OKCancel,
petite boîte de saisie tout ce qu'il y a de plus ordinaire, comportant une zone dans
MessageBoxIcon.Question)
laquelle l'utilisateur pourra entrer une valeur :
MsgBox(" Vous avez choisi le bouton " & rep3.ToString)

rep4 = MsgBox("Cas 4 : Votre réponse 4 ")


MsgBox("Vous avez tapé " & rep4.ToString,
MsgBoxStyle.Information, " Titre fenetre")

C’est une fonction, dont les deux arguments de type String correspondent
respectivement à l'invite ("Quel âge avez-vous ?") et au titre ("Une petite
question") de la boîte de saisie. Cette fonction renverra toujours une valeur de type
String. Code à écrire :
H. TSOUNGUI Introduction à VB.NET 7

La Zone de Texte (TextBox)

Ces zones (de la classe "TextBox" pour VB) peuvent servir à saisir une
information. Il s’agit du seul contrôle permettant une saisie au clavier par
l’utilisateur. En Visual Basic, il n’y a donc plus à proprement parler d’instruction
Lire. A la place de cette instruction, on est contraint de passer par de telles zones.

La seule chose vraiment importante à savoir est que toute information contenue
dans une zone de texte est obligatoirement de type… texte ! (autrement dit, cela
inclut le cas où il s’agit d’un nombre, L’emploi de fonctions de conversion
s’avèrera fréquemment indispensable
Là, on retrouve comme arguments l'invite ("Missile thermonucléaire...") et le titre
VAL(chaîne) pour convertir une chaîne en nombre
("Dernière vérification"). Mais entre ces deux paramètres, on doit fournir un
STR(numérique) pour convertir un nombre en chaîne.
argument d'un genre un peu spécial, le rôle de cet argument est double : il doit
On peut également utiliser les nombreuses fonctions de conversion prédéfinies
indiquer d'une part quel est le jeu de boutons souhaité, parmi les six disponibles
CSng, CStr, CDec, CInt, etc.
("Abandonner, Réessayer, Ignorer", "OK", "OK, Annuler", "Réessayer,
Annuler", "Oui, Non", "Oui, Non, Annuler"). Il doit également stipuler quelle
illustration (icône) viendra éventuellement égayer votre boîte à messages, parmi
les quatre possibles (Critical, Exclamation, Information, Question). Mais nous
les laisserons de côté provisoirement. Ce qui compte, c'est de comprendre
comment ça marche.

Le Label (Etiquette)
Un Label est un contrôle "inerte", qui sert à afficher un texte sur une Form.
Propriétés intéressantes des zones de texte
Ce qu’il faut comprendre avec les Labels, c’est qu’ils ne peuvent jamais servir à Multiline : autorise ou non l’écriture sur plusieurs lignes
effectuer une saisie par l’utilisateur. Scrollbars : fait figurer dans la TextBox une barre de défilement horizontale ou
verticale (ou les deux)
H. TSOUNGUI Introduction à VB.NET 8

PasswordChar : crypte le texte entré par le caractère stipulé (généralement, on Dim Ligne As ListViewItem = New ListViewItem(New
choisit le caractère *) String() {txtNomEtud2.Text, txtPrenomEtud2.Text})
MaxLength : limite le nombre de caractères qu’il est possible de saisir dans la
zone de texte. 'Affichage des NOMS des colonnes (entêtes: columnHeads)
ListView1.GridLines = True ' On affiche la grille du
lstView
Exercice ' ListView1.View = View.Details
-Ecrire un programme VB permettant de saisir n valeurs numériques d’un lstBoxEtud.Items.Add(infos)'Affichage dans la “listBox”
tableau et de les afficher dans une liste(listbox).
-Rechercher la plus petite valeur du tableau ainsi que la plus grande. ListView1.Items.Add(Ligne)'Affichage dans la “listView”
-Calculer la somme des éléments du tableau. Me.Refresh()
-Ecrire une fonction retournant le nombre de fois qu’apparaît une valeur
End Sub
donnée dans le tableau.
ListBox , ListView, boutons radio (radio buttons) et cases à cocher
(checkboxes), Calendrier (MonthCalendar), Saisie date (DateTimePicker)

Autres contrôles

ListView permet d’afficher des données dans une liste avec grille et une meilleure
organisation des titres
Private Sub Button2_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles Button2.Click
Dim infos As String
Dim sexe As String

txtNomEtud2.Text = txtNomEtud.Text
txtPrenomEtud2.Text = txtPreomEtud.Text
'Boutons radio
If radsexeF.Checked = True Then
sexe = "F"
Else
sexe = "M"
End If
'Ce que l’on veut afficher dans la listView
infos = txtNomEtud2.Text & " - " & txtPrenomEtud2.Text
& " - " & sexe
'On le met dans la variable « ligne »
H. TSOUNGUI Introduction à VB.NET 9

stud.id = Me.txtIdetud.Text
stud.nom = Me.txtNometud.Text
stud.pren = Me.txtPrenetud.Text
stud.nais = Me.dtpNaissance.Text

'recup sexe dans le groupe des grpsexe des boutons radio


If Me.radF.Checked Then 'Me.radF.Checked = true (sélectionné)
stud.sexe = "F"
MsgBox("Vous êtes une fille")
Else 'Me.radF.Checked = false (non sélectionné)
stud.sexe = "M"
MsgBox("Vous êtes un garçon")
End If
'Affichage des infos dans la listBox du formulaire principal
frmGestEtud.lstetudiants.Items.Add(stud.id & " - " & stud.nom & " - " &
stud.pren & " - " & stud.nais & " - " & stud.sexe)

'recup activités dans le groupe grpactivites des cases à cocher


If Me.chkCinema.Checked Then (Cinema sélectionné)
stud.activ1= "Cinéma"
End Sub
Déclaration de structure dans le module « Modetu »
Module Modetu
Public Structure etu
Public id As String ' identifiant étudiant
Public nom As String ' nom
Public pren As String ' prénom
Public nais As Date ' date de naissance
Public sexe As Char ' sexe
End Structure

End Module

Code de la procédure CREER (étudiant)

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


System.EventArgs) Handles Button3.Click
Dim stud As etu
H. TSOUNGUI Introduction à VB.NET 10

GESTION DES FICHIERS à accès direct (Random Files) With vcli


.cliNum = zclinum.Text
Les fichiers RANDOM sont des fichiers séquentiels ie des des suites de données .cliNom = zclinom.Text
bien organisées : ils sont constitués de champs et d’enregistrements. Tous les .cliPrenom = zcliprenom.Text
enregistrements ont la même taille en octets. Pour les gérer, on utilise un type .cliAdresse = zcliadresse.Text
structuré clairement défini dans un module. .cliCpostal = zclicpostal.Text
Pour manipuler un fichier, il faut d’abord l’ouvrir, on peut alors lire ses .cliVille = zcliville.Text
données, y écrire ou modifier les données, enfin il vaut mieux le fermer après .cliTelfixe = zclitelfixe.Text
l’avoir utilisé. Voici un exemple de structure d’un fichier à accès direct ou .cliTelmob = zclitelmob.Text
aléatoire : End With

'Ecriture de l'enregistrement
Champ1 Champ2 Champ3 Champ4 nenreg = nenreg + 1 ' Position d’écriture du record on
Enregistrement 1 Enregistrement 2 écrit toujours à une position donnée
Exemple de structure « client » déclaré dans un module.
FilePut(1, vcli, nenreg) ' Ecriture de
Public Structure client l’enregistrement (record)
<VBFixedString(4)> Public cliNum As String
<VBFixedString(15)> Public cliNom As String fermer_clients2()
<VBFixedString(15)> Public cliPrenom As String End Sub
<VBFixedString(25)> Public cliAdresse As String
<VBFixedString(5)> Public cliCpostal As String
<VBFixedString(20)> Public cliVille As String LECTURE d’enregistrement (lecture du fichier)
<VBFixedString(10)> Public cliTelfixe As String Private Sub ListeToolStripMenuItem_Click(ByVal sender As
<VBFixedString(10)> Public cliTelmob As String System.Object, ByVal e As System.EventArgs) Handles
End Structure ListeToolStripMenuItem.Click

CREATION d’enregistrement (écriture dans le fichier) Dim vcli As New client : Dim i As Integer : Dim
Private Sub btnSauver_Click(ByVal sender As System.Object, ligne As String
ByVal e As System.EventArgs) Handles btnSauver.Click
'Création de client ' Ouvrir le fichier en lecture/écriture
ouvrir_clients2()
Dim vcli As New client FileOpen(1, "C:\CLIENTS2.DAT", OpenMode.Random,
Dim nenreg As Integer OpenAccess.ReadWrite, OpenShare.LockWrite, Len(vcli))
nenreg = FileLen("C:\clients2.dat") \ Len(vcli) i = 1
'Nombre d’enregistrements déjà présents dans le fichier While (Not EOF(1)) 'Lecture d’un enregistrement du fichier
'Récup contenus des champs (textBoxes) pour le stockage dans FileGet(1, vcli, i) ' Lecture enregistrement (record)
la variable
' Remplissage de la structure
H. TSOUNGUI Introduction à VB.NET 11

' Variable ligne d’affichage


ligne = vcli.cliNum + " - " + vcli.cliNom + " - " +
vcli.cliPrenom + " - " + vcli.cliAdresse + " - " +
vcli.cliCpostal + " - " + vcli.cliVille + " - " +
vcli.cliTelfixe + " - " + vcli.cliTelmob
' Affichage d’une ligne d’infos d’enregistrement
frm_cli_liste.lst_clients2.Items.Add(ligne)
i = i + 1 ' On passe au suivant
End While

frm_cli_liste.Show() ' Onaffiche la liste des clients

'fermer_clients2()

FileClose(1)
End Sub

Les procédures pour ouvrir et fermer le fichier

Public Sub ouvrir_clients2()'On ouvre en lecture/écriture


Dim vcli As New client
' Ouvrir le fichier en lecture/écriture.
FileOpen(1, "C:\CLIENTS2.DAT", OpenMode.Random,
OpenAccess.ReadWrite, OpenShare.LockWrite, Len(vcli))
End Sub

Public Sub fermer_clients2()


' Fermer le fichier
FileClose(1)
End Sub
H. TSOUNGUI Introduction à VB.NET 12

ACCES A DES BASES DE DONNEES par VB.NET con.Close() ' Fermeture pour le cas où elle
serait restée ouverte
1) Base MS ACCESS con.Open() ' Ouverture connection à la BDD

Accès à une BDD MS Access par OLEdb voir_results() 'Exécuter une requete et voir
Chaîne de connection ACCESS 2007 : les enregistrements résultats
”Provider=Microsoft.ACE.OLEDB.12.0; Data
Source=C:\Users\hector\Desktop\CLASSES\DEUST1\BDD- con.Close() ' Fermeture connection à la BDD
ACCESS\marketing.accdb”
- ---------------------------------- Catch ex As Exception
MessageBox.Show(ex.ToString)
I-Cas 1 End Try
Imports System.Data.OleDb ' Bilio importées pour OLE
End Sub
' ------------------ Début de la classe -------------------- ' ---------------------------------------------------------

Public Class frmOledbase Public Sub voir_results ()


Dim dt As New DataTable ' Préparation de la table
Public con As New OleDbConnection "résultats" de la requête
Dim ds As New DataSet
' --------------------------------------------------------- ds.Tables.Add(dt)

Private Sub Fermer_Click(ByVal sender As System.Object, ' Exemples de requêtes à tester - Les en-tête de
ByVal e As System.EventArgs) Handles Button1.Click colonnes sont à modifier
Me.Close()
End Sub Dim da As New OleDbDataAdapter("select * from maitre
where mVille <>'LILLE' ;", con)
' --------------------------------------------------------- 'Dim requete As String = "select * from maitre where
mVille ='LILLE' ;"
Private Sub Executer_Click(ByVal sender As 'Dim requete As String = InputBox("Tapez votre
System.Object, ByVal e As System.EventArgs) Handles requête ")
Autre.Click 'Dim da As New OleDbDataAdapter(requete, con)
'Dim da As New OleDbDataAdapter("select * from
Try maitre;", con)
' Définition de la chaîne de connection
con.ConnectionString = da.Fill(dt) ' Remplissage du Data_adaptateur (da)
"provider=microsoft.jet.oledb.4.0 ; data
source=C:\VBdev\spa.mdb"
H. TSOUNGUI Introduction à VB.NET 13

Dim enreg As DataRow ' Exemples de requêtes à tester - Les en-tête de


lstviewOle.Items.Clear() colonnes sont à modifier
'Affichage des données dans un listview
For Each enreg In dt.Rows Dim da As New OleDbDataAdapter("select * from maitre
lstviewOle.Items.Add(enreg.Item(0)) ", con)
lstviewOle.Items(lstviewOle.Items.Count - 'Dim requete As String = "select * from maitre where
1).SubItems.Add(enreg.Item(1)) mVille ='LILLE' ;"
lstviewOle.Items(lstviewOle.Items.Count - 'Dim requete As String = InputBox("Tapez votre
1).SubItems.Add(enreg.Item(2)) requête ")
lstviewOle.Items(lstviewOle.Items.Count - 'Dim da As New OleDbDataAdapter(requete, con)
1).SubItems.Add(enreg.Item(3)) 'Dim da As New OleDbDataAdapter("select * from
lstviewOle.Items(lstviewOle.Items.Count - maitre;", con)
1).SubItems.Add(enreg.Item(4))
lstviewOle.Items(lstviewOle.Items.Count - da.Fill(dt) ' Remplissage du Data_adaptateur (da)
1).SubItems.Add(enreg.Item(5))
Next Dim enreg As DataRow
lstviewOle.Items.Clear()
End Sub 'Affichage des données dans un listview
' --------------------------------------------------------- For Each enreg In dt.Rows
lstviewOle.Items.Add(enreg.Item(0))
Private Sub Button2_Click(ByVal sender As System.Object, lstviewOle.Items(lstviewOle.Items.Count -
ByVal e As System.EventArgs) Handles btnRAZ.Click 1).SubItems.Add(enreg.Item(1))
lstviewOle.Items.Clear() lstviewOle.Items(lstviewOle.Items.Count -
End Sub 1).SubItems.Add(enreg.Item(2))
lstviewOle.Items(lstviewOle.Items.Count -
' -------- Fin de la classe -------------------------- 1).SubItems.Add(enreg.Item(3))
End Class lstviewOle.Items(lstviewOle.Items.Count -
1).SubItems.Add(enreg.Item(4))
II-Cas 2 lstviewOle.Items(lstviewOle.Items.Count -
' ------------------ Début de la classe ------------------- 1).SubItems.Add(enreg.Item(5))
Dim con As New OleDbConnection Next
Public Sub voir_results()
Dim dt As New DataTable ' Préparation de la table End Sub
"résultats" de la requête
Dim ds As New DataSet Private Sub btnExecuter_Click(ByVal sender As
ds.Tables.Add(dt) System.Object, ByVal e As System.EventArgs) Handles
btnExecuter.Click
H. TSOUNGUI Introduction à VB.NET 14

'Fin Connexion
Dim connection As New MySqlConnection(connStr)
Try
' Définition de la chaîne de connection Dim connexion As MySqlConnection = New
con.ConnectionString = MySqlConnection()
"provider=microsoft.jet.oledb.4.0 ; data Dim adaptateur As MySqlDataAdapter = New
source=C:\VBdev\spa.mdb" MySqlDataAdapter()
con.Close() ' Fermeture pour le cas où elle Dim com As MySqlCommand = New MySqlCommand
serait restée ouverte Dim requete As String
con.Open() ' Ouverture connection à la BDD 'Dim tablereacteur As New DataTable

voir_results() 'Exécuter une requete et voir 'Dim maliste As New List(Of String)
les enregistrements résultats Dim myDataTable As New DataTable

con.Close() ' Fermeture connection à la BDD Try


connexion.Open()
Catch ex As Exception requete = "SELECT * FROM salarie;"
MessageBox.Show(ex.ToString)
End Try com.Connection = connexion
End Sub com.CommandText = requete
adaptateur.SelectCommand = New
MySqlCommand(requete, connexion)
2) Base MYSQL
For i As Integer = 0 To myDataTable.Rows.Count - 1
Imports MySql.Data 'Affichage des valeurs des champs dans les
Imports MySql.Data.MySqlClient textBoxes
txtNum.Text =
Public Class frmMysqlproj myDataTable.Rows(i)("salNum").ToString
'NE PAS OUBLIER DE DEMARRER LA BASE MySQL txtNom.Text =
Private Sub Button1_Click(ByVal sender As System.Object, myDataTable.Rows(i)("salNom").ToString
ByVal e As System.EventArgs) txtSite.Text =
'Connection myDataTable.Rows(i)("salSite").ToString
' Dim connStr As String = Next
"SERVER='localhost';DATABASE='employes';UID='henri';PASSWORD
='henri'" connexion.Close()
Dim connStr As String = "Database=employes;" & "Data
Source=127.0.0.1;" & "User Id=henri;Password=henri;" & Catch ex As Exception
"Connection Timeout=20" MsgBox("erreur : " + ErrorToString())
H. TSOUNGUI Introduction à VB.NET 15

End Try 'Affichage champ "nom" dans le listBox


End Sub While (reader.Read()) 'Tant qu'il y a un
Private Sub Button2_Click(ByVal sender As System.Object, enregistrement
ByVal e As System.EventArgs) Handles Button2.Click
'Chaîne de Connexion ListBox2.Items.Add(reader.GetString("empNom"))
Dim ConnexionSql As String = "Database=voyages;" & End While
"Data Source=192.168.20.44;" & "User Id=root;
Password=pass;" & "Connection Timeout=20" reader.Close() 'Fermeture du
'Dim myDataTable As New DataTable Reader et de la connection à la base
Dim vSal As String connection.Close()
Catch ex As Exception 'Gestion
Try 'Intéressant pour gérer les d'erreurs
erreurs MessageBox.Show(ex.Message) 'Message de
vSal = txtSalarie.Text l'exception
Dim requete As String = "SELECT * FROM employe End Try
where empNum = " & "'" & txtSalarie.Text & "'" 'Requête SQL End Sub
Dim connection As New
MySqlConnection(ConnexionSql) Private Sub Button1_Click_1(ByVal sender As
Dim cmd As New MySqlCommand(requete, connection) System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
connection.Open() 'Ouverture connection Me.Close()
End Sub
Dim reader As MySqlDataReader
reader = cmd.ExecuteReader() 'Execution du Private Sub Button3_Click(ByVal sender As System.Object,
Reader, plus rapide ByVal e As System.EventArgs) Handles Button3.Click
Dim ConnexionSql As String = "Database=voyages;" &
While (reader.Read()) "Data Source=192.168.20.44;" & "User Id=root;Password=pass;"
'Les champs du dernier enreg. Les indices & "Connection Timeout=20"
commencent à 0. Dim myDataTable As New DataTable
txtNum.Text = ((reader.GetString(0)))
txtNom.Text = ((reader.GetString(1))) Dim query As String = "SELECT * FROM employe"
txtSite.Text = ((reader.GetString(2))) 'Requête SQL
Dim connection As New MySqlConnection(ConnexionSql)
'Affichage dans le comboBox Dim cmd As New MySqlCommand(query, connection)
' ComboBox1.Items.Add((reader.GetString(0)))
connection.Open()
End While
H. TSOUNGUI Introduction à VB.NET 16

Dim reader As MySqlDataReader Dim ConnexionSql As String = "Database=voyages;" &


reader = cmd.ExecuteReader() "Data Source=192.168.20.44;" & "User Id=root;Password=pass;"
'Dim i As Integer = 0 & "Connection Timeout=20"
ListBox1.Items.Clear() ' Insertion d'un enregistrement dans les agences
ListBox2.Items.Clear() Dim query As String = "insert into agence values(" &
ComboBox1.Items.Clear() "'" & txtAgCode.Text & "'" & "," & "'" & txtAgNom.Text & "'"
While reader.Read() & ")"
'Les champs à recup. Les tables commencent à 0. Dim connection As New MySqlConnection(ConnexionSql)
ListBox1.Items.Add(reader.GetString(0) & " - " _ Dim cmd As New MySqlCommand(query, connection)
& reader.GetString(1) & " - " &
reader.GetString(2) & " - " _ connection.Open()
& reader.GetString(3) & " - " &
reader.GetString(4) & " - " _ Dim reader As MySqlDataReader
& reader.GetString(5)) reader = cmd.ExecuteReader()
ComboBox1.Items.Add(reader.GetString(0) & " - " End Sub
& reader.GetString(1))
ListBox2.Items.Add(reader.GetString(1) & " - " & Private Sub Button6_Click(ByVal sender As System.Object,
(reader.GetString(4))) ByVal e As System.EventArgs) Handles Button6.Click
End While Dim ConnexionSql As String = "Database=voyages;" &
"Data Source=192.168.20.44;" & "User Id=root;Password=pass;"
reader.Close() & "Connection Timeout=20"
connection.Close() Dim myDataTable As New DataTable

End Sub Dim query As String = "SELECT * FROM agence"


'Requête SQL
Private Sub frmMysqlproj_Load(ByVal sender As Object, Dim connection As New MySqlConnection(ConnexionSql)
ByVal e As System.EventArgs) Handles Me.Load Dim cmd As New MySqlCommand(query, connection)
'Jouer un peu de musique au chargement de la feuille
connection.Open()
End Sub
Dim reader As MySqlDataReader
Private Sub Button4_Click(ByVal sender As System.Object, reader = cmd.ExecuteReader()
ByVal e As System.EventArgs) Handles Button4.Click 'Dim i As Integer = 0
ListBox1.Items.Clear() ListBox3.Items.Clear()
End Sub
While reader.Read()
Private Sub Button5_Click(ByVal sender As System.Object, 'Champs de la table Agence.
ByVal e As System.EventArgs) Handles Button5.Click ListBox3.Items.Add(reader.GetString(0) & " - " _
H. TSOUNGUI Introduction à VB.NET 17

& reader.GetString(1)) EXEMPLE PROJET


End While

reader.Close()
Gestion des candidats
connection.Close()
End Sub
End Class
H. TSOUNGUI Introduction à VB.NET 18

Module modCandidats
Public Structure candidat 'Déclaration de type 'test activites
<VBFixedString(4)> Public candNum As String Dim activ As String = ""
<VBFixedString(15)> Public candNom As String If chkBoxSport.Checked = True Then
<VBFixedString(15)> Public candPrenom As String activ = activ & "-" & "Sport"
<VBFixedString(1)> Public candSexe As String End If
<VBFixedString(10)> Public candDnaiss As String
<VBFixedString(10)> Public candDenreg As String If chkBoxCinema.Checked = True Then
<VBFixedString(50)> Public candLoisirs As String activ = activ & "-" & "Cinéma"
End Structure End If
End Module If chkBoxLecture.Checked = True Then
- --------------------------------------------------- activ = activ & "-" & "Lecture"
End If
Public Class frmMenuCandidat 'Classe principale
If chkBoxAutre.Checked = True Then
- --------------------------------------------------- activ = activ & "-" & txtAutre.Text
End If
Private Sub Button3_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button3.Click txtRActivites.Text = Mid(activ, 2, 50) ' On laisse
tomber le premier "-"
RAZ_verif()
'Transfert des infos candidat dans la fenêtre résultat Me.Refresh()
txtRNum.Text = Mid(txtNumero.Text, 1, 4)
txtRNom.Text = txtNom.Text End Sub
txtRPrenom.Text = txtPrenom.Text - ---------------------------------------------------
txtRDnaiss.Text = CDate(dtPickerDnaiss.Text) 'A Private Sub Button1_Click(ByVal sender As System.Object,
saisir au format mm/jj/aaaa ByVal e As System.EventArgs) Handles Button1.Click
'txtRDnaiss.Text = maskedDNaiss.Text Dim rep As Integer
txtRDenreg.Text = CDate(dtPickerDenreg.Text)
rep = MsgBox("Confirmez-vous la sauvegarde après
MsgBox("La date de naissance se présente ainsi : " & vérification", vbOKCancel)
txtRDenreg.Text) MsgBox("Valeur du bouton cliqué : " & rep.ToString)
If rep = 1 Then
sauver_candidat()
'tests sexe saisi Else
If radbtnF.Checked = True Then MsgBox("Sauvegarde annulée - Aurevoir ! ",
txtRSexe.Text = "F" vbExclamation)
Else End If
txtRSexe.Text = "M" End Sub
End If
H. TSOUNGUI Introduction à VB.NET 19

- ---------------------------------------------------
Private Sub sauver_candidat() Private Sub fermer_fichier_candidats()
Dim vcandidat As New candidat : Dim longueur As Integer FileClose(2)
Dim nbenreg As Integer : Dim position As Integer End Sub
- ----------------------------------------------------
ouvrir_fichier_candidats() Private Sub RAZ_verif()
txtRNum.Text = ""
longueur = Len(vcandidat) txtRNom.Text = ""
nbenreg = FileLen("C:\candidats.dat") \ Len(vcandidat) txtRPrenom.Text = ""
' nbenreg est le nombre actuel d’enregistrements txtRSexe.Text = ""
txtRDnaiss.Text = ""
'Calcul de la position d'écriture txtRDenreg.Text = ""
position = nbenreg + 1 txtRActivites.Text = ""
End Sub
'Recup champs - ----------------------------------------------------
With vcandidat Private Sub frmMenuCandidat_Load(ByVal sender As Object,
.candNum = txtRNum.Text ByVal e As System.EventArgs) Handles Me.Load
.candNom = txtRNom.Text 'RAZ des champs de vérification
.candPrenom = txtRPrenom.Text txtRNum.Text = ""
.candSexe = txtRSexe.Text txtRNom.Text = ""
.candDnaiss = txtRDnaiss.Text txtRPrenom.Text = ""
.candDenreg = txtRDenreg.Text txtRSexe.Text = ""
.candLoisirs = txtRActivites.Text txtRDnaiss.Text = ""
End With txtRDenreg.Text = ""
txtRActivites.Text = ""
'Ecriture d’un enregistrement à la fin du fichier
FilePut(2, vcandidat, position) End Sub
- ----------------------------------------------------
fermer_fichier_candidats() Private Sub Button4_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button4.Click
End Sub RAZ_verif()
- ---------------------------------------------------- End Sub
Private Sub ouvrir_fichier_candidats()
Dim longueur As Integer : Dim vcandidat As New candidat End Class
longueur = Len(vcandidat) ' Longueur d'un - ----------------------------------------------------
enregistrement en octets Private Sub Button2_Click(ByVal sender As
'Ouverture du fichier en écriture System.Object, ByVal e As System.EventArgs) Handles
FileOpen(2, "C:\candidats.dat", OpenMode.Random, Button2.Click
OpenAccess.ReadWrite, OpenShare.LockRead, longueur) Me.Close()
End Sub End Sub
H. TSOUNGUI Introduction à VB.NET 20

TRAVAUX DIRIGES Visual Basic


H. TSOUNGUI, 2016
Exo-1 Programme de calcul de TVA
Pour ce premier exercice, il vous est proposé un formulaire. Par la suite, vous
concevrez vous-mêmes vos propres interfaces.

Ce formulaire comporte des champs de saisie de valeurs (montant hors taxes, taux
de TVA) ainsi qu’un premier bouton de commande permettant de déclencher une
procédure de calcul et affichage des résultats. Deux derniers boutons permettent de
remettre à « blanc » toutes les zones de saisie ou de fermer le formulaire.
1-Ecrire le code de chacun des boutons de commande de l’interface.

Exo-2 Types de données complexes : vecteurs (tableaux à 1 dimension) -


Structures de contrôle
-Ecrire un programme VB permettant de manipuler un vecteur (tableau à une
dimension) d’entiers.
1-Déclarer le vecteur V de 5 nombres entiers
2-Saisir les 5 valeurs numériques du tableau avec InputBox
3-Afficher les valeurs saisies dans une liste (listbox).
4-Rechercher la plus petite valeur ainsi que la plus grande.
5-Calculer la somme des éléments du tableau
6-Calculer la moyenne des éléments du tableau
H. TSOUNGUI Introduction à VB.NET 21

Exo-3
- Refaire l’exo-2 en utilisant la fonction de génération des nombres aléatoires
RND() pour automatiser l’obtention des valeurs du tableau à une dimension.
- Remplir un vecteur de valeurs tirées au hasard entre 1 et 9.
- Lire une valeur à rechercher les occurrences dans le vecteur par exemple 2.
- Ecrire le code donnant le nombre de fois qu’apparaît cette valeur dans le vecteur.

Exo-4 Tableaux à plusieurs dimensions (matrices) – structures de contrôle


-Manipulation d’un tableau à plusieurs dimensions
Tableau des clients CLIENTS (4 lignes x 4 colonnes)

Numéro-client Nom-client Prénom-client Chiffre-affaires


C1 DEMON Jean 945.34
C2 MOULOUD Aziz 2304.85
C3 MARTIN David 4963.57
C4 LEROUGE Alain 3945.34
- Quand on clique sur le bouton « LIRE », il faut saisir les données dans deux
1-Déclarer dans un module un tableau CLIENTS(4,4) de chaines ; boucles imbriquées
2-Saisir les données ci-dessus par client ;
3-Afficher les données de ce tableau dans un formulaire ou une liste déroulante ; Private Sub Button1_Click(ByVal sender As System.Object,
4-Créer une interface et écrire le code permettant de rechercher un client et ByVal e As System.EventArgs) Handles Button1.Click
d’afficher ses informations. Dim i As Integer : Dim j As Integer
5-Rechercher le meilleur client et afficher ses infos (Numéro, Nom et Chiffre
'Lecture des valeurs de la matrice
d’affaires).
For i = 1 To 4
Variations sur le thème For j = 1 To 4
clients(i, j) = InputBox("Donnez la
---suite guide de résolution valeur C(" & i & "," & j & ")")
-Manipulation d’un tableau à plusieurs dimensions Next j
Tableau des clients CLIENTS (4 lignes x 4 colonnes)
Next i
1-Déclarer dans un module un tableau CLIENTS(4,4) de chaines ; 'Affichage des valeurs lues
l11.Text = clients(1, 1) : l12.Text = clients(1,
Module Modmatrice 2) : l13.Text = clients(1, 3) : l14.Text = clients(1, 4)
Public clients(4, 4) As String … … … …
End Module End Sub
2-Saisir les données ci-dessus par client ;
H. TSOUNGUI Introduction à VB.NET 22

NB : On peut aussi initialiser les éléments du tableau une


fois pour toutes avec desaffectations du genre suivant
clients(1, 1) = « C1 » : clients(1, 2) = « DEMON » :
clients(1, 2) = ...

3-Ensuite, il faut afficher les valeurs lues dans les labels qui ont pour nom 4-Créer une interface et écrire le code permettant de rechercher un client et
(propriété name L11, L12 tout en minuscules) d’afficher ses informations.

'Affichage des valeurs lues On ajoute un bouton « CHERCHER » dans le premier formulaire
l11.Text = clients(1, 1) : l12.Text = clients(1,
2)
l13.Text = clients(1, 3) : l14.Text = clients(1,
4)
… …

En cliquant dessus, le formulaire suivant s’ouvre :


H. TSOUNGUI Introduction à VB.NET 23

-La procédure est la même si on veut trouver le « plus mauvais » client.


Les mauvais clients sont ceux qui auraient un chiffre négatif …

Exo-5 Gestion simplifiée de stock de produits


De manière similaire à l’exo précédent, cet exercice propose de gérer un stock de
marchandises. Il s’agit
D’utiliser un tableau PRODUITS(Référence, Libellé, Prix-HT, Quantité-en-stock),
limité à 7 produits.
Créer les interfaces et écrire le code permettant de gérer le stock :
1-Entrée des produits
2-Sortie des produits
3-Inventaire du stock
4-Recherche d’un produit
5-Afficher la valeur du stock actuel
On écrit le code de la recherche du bouton « RECHERCHE » : 6-Saisie d’une commande et édition d’une facture

… … … … Algorithme ……. ….
Il faut parcourir les client(i,1) ‘parcours des lignes de la colonne 1 Exo-6 Jeu Loto-5 Simulation du jeu de loterie
comparer les codes, etc. Développer un programme en VB simulant une loterie à cinq nombres. Après
Si égalité entre le code client saisi et la valeur de client(i,1), avoir effectué une mise de 5 euros au plus, on propose 5 nombres compris entre 1
on a trouvé, et 10. On clique sur un bouton pour tirer au hasard cinq nombres différents dans
alors on sait que le client cherché est sur la ligne k=i ; le même intervalle. Chaque tirage diminue la mise de 1 euro.
Il suffit alors d’afficher client(k,1) pour son code, client(k,2) pour son
nom, client(k,3) son prénom et
Client (k,4) pour son chiffre d’affaires.
Fin du parcours

5-Rechercher le meilleur client et afficher ses infos (Numéro, Nom et Chiffre


d’affaires).
… … … … Algorithme ……. ….
On fixe comme meilleur client le premier de la liste ; puis on parcoure les autres
lignes à partir de i=2 dans une boucle
Pour i=2 à 4 ,
on compare le chiffre d’affaires avec le meilleur du moment
si on trouve plus grand,
on refixe le « nouveau meilleur » en prenant soin de récupérer la
position kpos = i.
Fin Pour ;
H. TSOUNGUI Introduction à VB.NET 24

Exo-8 Utilisation de types structurés - Gestion des clients


-Afficher le résultat du tirage et gérer les gains. On peut jouer tant que la mise est Description de la structure à utiliser (à déclarer dans un module) :
positive.
-Gestion des gains : Module modstruct 'Module public
*Si le joueur a trouvé 1 ou 2 nombres, il perd 1 euro de mise (gain : 0 euro). Public Structure client 'Déclaration de type
*Trois nombres trouvés, gain de 2 euros <VBFixedString(3)> Public cliNum As String
*Quatre nombres trouvés, gain de 7 euros <VBFixedString(15)> Public cliNom As String
*Cinq nombres trouvés, gain de 10 euros <VBFixedString(15)> Public cliPrenom As String
<VBFixedString(20)> Public cliAdresse As String
<VBFixedString(5)> Public cliCpostal As String
Exo-7 <VBFixedString(15)> Public cliVille As String
Utilisation des types de données complexes : vecteurs, tableaux à <VBFixedString(8)> Public cliChiffre As String
plusieurs dimensions et structures de données (records). End Structure
End Module

Affichage des données dans un contrôle listBox

Private Sub btnAfficher_Click(ByVal sender As


System.Object, ByVal e As System.EventArgs) Handles
btnAfficher.Click
'Ajout dans la liste des clients
Dim vcli As client
Dim ligne As String

With vcli
.cliNum = txtNum.Text
.cliNom = txtNom.Text
.cliPrenom = txtPrenom.Text
.cliAdresse = txtAdresse.Text
.cliCpostal = txtCpostal.Text
Reproduire le formulaire et écrire le code nécessaire pour les boutons de .cliVille = txtVille.Text
commande. .cliChiffre = txtChiffre.Text
End With
ligne = vcli.cliNum + " - " + vcli.cliNom + " - " +
vcli.cliPrenom + " - " + vcli.cliCpostal + _
" - " + vcli.cliVille + " - " + vcli.cliChiffre
lstClients.Items.Add(ligne)
End Sub
H. TSOUNGUI Introduction à VB.NET 25

Autre exemple : gestion des étudiants

Exo-10 Simulation du jeu de Jackpot version légère 1.0 (un seul joueur)

Exo-9
Ecrire un programme permettant de générer des nombres aléatoires
compris dans un intervalle choisi (entre les valeurs min et max). Utiliser
l’interface graphique ci-dessous pour afficher les nombres générés.
H. TSOUNGUI Introduction à VB.NET 26

Le jeu : on clique sur « JOUER ». Le système tire au hasard 3 nombres X, Y et Z


compris entre 1 et 9. Le premier nombre concerne la première roue, le deuxième la Gain simple (5 €)
seconde et le troisième, la troisième roue. On dispose de 3 imagesimg1, img2 et
img3.
-Si le nombre tiré est dans [1-2-3], on affiche l’image img1 pour la roue
concernée.
-Si le nombre tiré est dans [4-5-6], on affiche l’image img2 pour la roue
concernée.
-Si le nombre tiré est dans [7-8-9], on affiche l’image img3 pour la roue
concernée.
Les gains :
-si on obtient trois images différentes => on perd (gain de 0 euro)
-si on obtient seulement deux images successives identiques (img1-img1-W) ou
(W-img2-img2)
ou (img3-img3-W), W étant différente de l’image à côté => gain de 5 euros.
-si on obtient trois images identiques, deux cas peuvent se présenter
-les trois nombres générés sont différents => c’est un BANCO : gain de
10 euros.
-les trois nombres générés sont identiques => c’est un SUPER-
BANCO : gain de 20 € !
Développez ce jeu en respectant les règles proposées.
Exemples d’illustrations de situations BANCO ! (10€)
H. TSOUNGUI Introduction à VB.NET 27

Exo-11 JACK&POTES Simulation du jeu de jackpot version 2.0


SUPER-BANCO ! (à mettre à 20 €) Développer une application en Visual Basic utilisant les fichiers séquentiels à
accès direct pour stocker les gains.
Contraintes
- L’application doit permettre à au moins un joueur de tenter sa chance.
- Pour jouer, tout joueur doit miser une somme minimale. Le jeu ne
démarre que si la mise est suffisante.
- Pour gagner on doit avoir obtenu au moins deux images successives
identiques :
2 images successives identiques => gain de 10 euros
3 images identiques => gain de 50 euros (Banco)
- La génération de sons est obligatoire pour distinguer les résultats.
- Les résultats des joueurs (Nom et gain total) seront sauvés dans un fichier
séquentiel à accès direct et un bouton de commande permettra de les visualiser
dans l’ordre croissant des gains (Tri des résultats).

Exo-12 Gestion des véhicules reçus dans un garage


(extrait DS DEUST – 1)
Dans cet exercice, il vous est demandé de gérer des voitures qui entrent dans un
garage pour qu’on y effectue certains travaux. Vous devrez également gérer la
création et la suppression des clients. Vous développerez donc
-la création, la mise à jour et la suppression des véhicules
-la création et la suppression des clients
La première partie utilise le type utilisateur (structure) voiture déclaré dans le
module ModGarage ainsi que le formulaire frmVoiture ci-dessous dont les
champs de saisie sont nommés txtImmat, txtMarque, txtModèle, txtEnergie,
txtTravail1, txtTravail2, txtClient. Faire de même pour la gestion des clients.
H. TSOUNGUI Introduction à VB.NET 28

Ci-dessus, le formulaire frmGarage à améliorer avec des menus déroulants <VBFixedString(12)> Public voitEnergie As
String
<VBFixedString(60)> Public voitTravail1 As
String
<VBFixedString(60)> Public voitTravail2 As
String
<VBFixedString(4)> Public voitClient As String
End Structure
End Module

NB : cet exercice peut être fait en utilisant une petite base de données ACCESS ou
SQLServer et ADO.NET.

Formulaire frmVoiture

Les structures de données à utiliser sont décrites ci-


après.

Module Modgarage
Public Structure client
<VBFixedString(4)> Public cliNum As String
<VBFixedString(15)> Public cliNom As String
<VBFixedString(15)> Public cliPrenom As String
<VBFixedString(25)> Public cliAdresse As String
<VBFixedString(5)> Public cliCpostal As String
<VBFixedString(20)> Public cliVille As String
<VBFixedString(10)> Public cliTelfixe As String
<VBFixedString(10)> Public cliTelmob As String
End Structure

Public Structure voiture


<VBFixedString(8)> Public voitImmat As String
<VBFixedString(15)> Public voitMarque As String
<VBFixedString(10)> Public voitModele As String
H. TSOUNGUI Introduction à VB.NET 29

Exemples d’exécution du Jackpot simple

Vous aimerez peut-être aussi