You are on page 1of 13

1/13

ATELIERS
Visual Basic
2/13
Atelier 1 : Rappels de Visual Basic


l'issue de cet atelier, vous serez en mesure d'effectuer les tches suivantes :
- crer des feuilles et des contrles ;
- crire du code dans des procdures vnementielles ;
- rcuprer et traiter une erreur d'excution ;
- limiter les entres dans un contrle TextBox ;
- compiler une application excutable.

Le rsultat final de l'atelier sera le suivant :




Phase 1 : Cration de feuilles


1. Crer la feuille principale ( voir ci-dessus ) du projet Atelier1 laide des contrles
appropris.
2. l'aide du Crateur de menus de Visual Basic, ajoutez des menus la feuille. Le menu
Fichier prsentera une option ( Quitter ), le menu ? prsentera une option ( A propos de ).
Enregistrez le projet.
3. Crez la feuille propos de, comme illustr ci-dessous.


L'image situe dans l'angle suprieur gauche reprsente un contrle Image.
4. Enregistrez le projet.
3/13
Phase 2 : Ajout de code


1. Dans l'vnement KeyUp de la zone de texte Celsius, convertissez le nombre tap en degrs
Fahrenheit et placez le nombre converti dans la zone de texte Fahrenheit.
La formule de conversion est : Fahrenheit = (Celsius * 9/5) + 32
2. Dans l'vnement KeyUp de la zone de texte Fahrenheit, convertissez le nombre tap en
degrs Celsius et placez le nombre converti dans la zone de texte Celsius.
3. Testez l'application. Que se passe-t-il lorsque vous tapez du texte dans l'une des zones de
texte ?
4. Dans la procdure vnementielle KeyUp du contrle TextBox Celsius, ajoutez une
instruction On Error Goto pour activer la gestion d'erreurs. Si une erreur 13 est identifie (Type
incompatible), affectez la valeur Impossible de convertir la proprit Text de la zone de texte
txtFarhenheit.
5. Testez l'application.
6. l'aide de la proprit MaxLength de la zone de texte Nom utilisateur, limitez 15 le
nombre de caractres qui peuvent tre taps.
7. Dans l'vnement KeyPress de la zone de texte Nom utilisateur, convertissez en majuscules
tous les caractres taps dans la zone de texte.
8. Enregistrez le projet et testez l'application.


Phase 3 : Gestion des menus


1. Dans l'vnement Click de la commande de menu Quitter, dchargez (Unload) la feuille et
arrtez (End) l'application.
2. Dans l'vnement Click de la commande de menu propos de, affichez (Show) la bote de
dialogue propos de comme feuille modale.
3. Grer l'vnement Click du bouton OK de la feuille propos de.
4. Enregistrez le projet et testez l'application.


Phase 5 : Cration d'un fichier excutable


1. Dans le menu Fichier, cliquez sur Crer <Projet>.exe.
2. Nommez l'application Convert.exe, et enregistrez-la dans votre rpertoire.
3. Compiler lapplication.
4. l'aide de l'Explorateur Windows, naviguez jusqu' votre rpertoire et lancez Convert.

4/13
SOLUTIONS

Private Sub mnuFileExit_Click()
Unload Me
End
End Sub

Private Sub mnuHelpAbout_Click()
frmAbout.Show vbModal vbModal : la feuille nautorise que les entres clavier pour les 3 champs et les menus
End Sub

Private Sub cmdOK_Click()
Unload Me
End Sub

Private Sub txtCelsius_KeyUp(KeyCode As Integer, Shift As Integer)
On Error GoTo TraitErreur
txtFahrenheit.Text = (txtCelsius.Text * 9 / 5) + 32
Exit Sub
TraitErreur:
If Err.Number = 13 Then ' Erreur de type
txtFahrenheit.Text = "Impossible de convertir"
Else
Err.Raise Err.Number On provoque un plantage
End If
End Sub

5/13
ATELIER 2 : UTILISATION DU CONTROLE DATA

Dans cet atelier, vous allez utiliser le contrle Data pour crer une feuille de saisie de donnes.
l'issue de cet atelier, vous serez en mesure d'effectuer les tches suivantes :

utiliser l'Assistant Feuilles de donnes pour crer une feuille Principale/secondaire;
manipuler une base de donnes l'aide du contrle Data et des contrles dpendants;
utiliser le contrle DBGrid pour afficher et modifier des donnes;
utiliser le contrle DBCombo pour la saisie de donnes.


Dans cet atelier, vous allez utiliser la base de donnes Comptoir.mdb dont voici le pseudo schma
relationnel :



6/13
PHASE 1 : CREATION D'UNE FEUILLE DE SAISIE DE DONNEES

Dans cette phase, vous allez utiliser l'Assistant Feuilles de donnes pour crer une feuille de saisie
de donnes Principale/secondaire partir des tables Commandes et Dtails commandes de la base
de donnes Comptoir.mdb.

Crez la feuille Commandes
1. Crez un nouveau projet EXE standard.
2. A l'aide du gestionnaire de complments, chargez l'Assistant Feuilles de donnes.
La commande Assistant Feuilles de donnes doit maintenant s'afficher dans le menu Complments.
3. Dans le menu Complments, cliquez sur Assistant Feuilles de donnes.
4. Slectionnez les options de l'Assistant Feuilles de donnes comme indiqu dans le tableau ci-
aprs.

Option Valeur

Format de la base de donnes Access
Nom de la base de donnes dfinir
Prsentation des feuilles Principale/secondaire
Source d'enregistrements principale Table Commandes
Champs principaux N commande, Code client, N employ, Date
commande, N messager
Source d'enregistrements
secondaire
Table Dtails commandes
Champs secondaires Tous les champs de la table Dtails commandes
Champ reliant la feuille principale
et secondaire
N commande
Contrles disponibles Tous
Nom de la feuille frmCommandes

5. Excutez l'application.
Examinez la feuille cre par l'Assistant Feuilles de donnes
1. Quittez l'application et examinez les proprits et les vnements suivants de la feuille.
a. Les proprits DatabaseName et RecordSource du contrle Data.
b. Les procdures vnementielles du contrle Data, en particulier l'vnement Reposition qui
garantit la synchronisation des enregistrements principaux/secondaires.
c. Les proprits DataSource et DataField de chaque zone de texte.
d. La procdure vnementielle Click de chaque bouton de commande.
e. La proprit DataSource du contrle DBGrid.
2. Enregistrez la feuille sous le nom Commandes.frm et enregistrez le projet sous le nom
Commandes.vbp

7/13
PHASE 2 : UTILISATION DU CONTROLE DBCOMBO

Dans cette phase, vous allez amliorer la feuille Commandes en remplaant la zone de texte
N employ par un contrle DBCombo. L'utilisateur pourra ainsi slectionner un employ par son
nom sans connatre son numro.

Ajoutez un contrle Data
1. Ouvrez la feuille Commandes.
2. Ajoutez un nouveau contrle Data la feuille et attribuez les valeurs adquates aux proprits
DatabaseName et RecordSource.
3. Cachez le contrle Data ( le contrle Data est masqu car il n'est utilis que pour fournir des
informations la liste modifiable dpendante ).

Ajoutez un contrle DBCombo
1. Dans la feuille Commandes, remplacez la zone de texte N employ par une liste modifiable
dpendante.
Avant d'utiliser le contrle dans la feuille, vous devez l'ajouter la bote outils.
2. Dfinissez les proprit RowSource, ListField, DataSource, DataField et BoundColumn de
la liste modifiable dpendante afin que les donnes correctes soient renvoyes la table
Commandes.
3. Testez l'application.

PHASE 3 : UTILISATION DE L'EVENEMENT VALIDATE

Dans cette phase, vous allez utiliser l'vnement Validate du contrle Data pour confirmer les
modifications apportes la table Commandes.

1. Modifiez l'vnement Validate du contrle Data de la table Commandes.
2. Si des modifications ont t apportes l'enregistrement courant, utilisez une bote de message
pour demander l'utilisateur s'il veut enregistrer les modifications.
3. Si l'utilisateur rpond Non, annulez les modifications l'aide de l'argument save.
4. Excutez l'application.

8/13
ATELIER 3 : UTILISATION DES DAO

Au cours de cet atelier, vous allez crer et tester des feuilles qui utilisent des objets d'accs aux
donnes (DAO).

l'issue de cet atelier, vous serez en mesure d'effectuer les tches suivantes :
ouvrir une base de donnes l'aide des objets DAO ;
naviguer dans un jeu d'enregistrements et le manipuler l'aide des objets DAO ;
retrouver des informations dans une table ;
crer un jeu d'enregistrements partir d'une requte ;
utiliser une requte avec paramtres.


PHASE 1 : MANIPULATION D'UN JEU D'ENREGISTREMENTS

Dans cette phase, vous allez utiliser des objets d'accs aux donnes (DAO) pour ouvrir une base de
donnes et crer un jeu d'enregistrements.
Crez une feuille Catgories
1. Crez un nouveau projet EXE standard dans Visual Basic.
2. Choisissez le nom frmCategories pour la feuille par dfaut.
3. Ajoutez des contrles la feuille, comme indiqu sur l'illustration qui suit.


Remarque tant donn que les informations d'identification ne sont pas modifies par
l'utilisateur, le champ Code catgorie est un contrle Label.

Ouvrez une base de donnes et crez un jeu d'enregistrements
1. Dans la feuille frmCategories, dclarez deux variables de niveau module : dbCurrent ( pour
rcuprer le nom de la base de donnes ) et , recCategories ( le jeu denregistrement ).
2. Dfinissez une rfrence la bibliothque d'objets Microsoft DAO 3.5.
9/13
3. Dans la procdure vnementielle Load de la feuille Catgories vous devez :
a. Ouvrir le fichier Comptoir.mdb et enregistrer l'objet de base de donnes rsultant dans la
variable dbCurrent.
b. Crer un jeu d'enregistrements l'aide de la table Catgories de la base de donnes
Comptoir.mdb et stocker l'objet rsultant dans la variable recCategories.
c. Se positionner sur le premier enregistrement du jeu d'enregistrements ( utiliser la mthode
Fields des objets RecordSet pour laffichage )
d. Activater des boutons de commande Ajouter, Modifier, Supprimer, Rechercher,
Prcdent, et Suivant.
e. Dsactiver les zones de texte.
f. Dsactiver les boutons Enregistrer et Annuler.
4. Dans la procdure vnementielle Unload, fermez la base de donnes. En dduire le code du
bouton Fermer.
5. Testez l'application.

crivez le code correspondant aux diffrents boutons.
1. Ajoutez le code voulu pour activer les boutons de commande Prcdent et Suivant ( pensez
au dbut et la fin du jeu d'enregistrements). Pendant qu'un utilisateur navigue dans la feuille
Catgories, dsactivez les zones de texte, ainsi que les boutons Enregistrer et Annuler, afin
que des modifications ne puissent tre apportes aux donnes que si l'utilisateur slectionne le
bouton Modifier ou Ajouter.
2. Pour effacer les champs de texte et passer en mode Ajout, crivez le code voulu pour le
bouton Ajouter.Lorsqu'un utilisateur slectionne le bouton Ajouter ou Modifier, activez les
zones de texte, ainsi que les boutons Enregistrer et Annuler. Dsactivez tous les autres boutons
sur la feuille.
3. Pour passer en mode dition, crivez le code voulu pour le bouton Modifier.
4. Pour rpercuter les modifications apportes aux zones de texte dans le jeu d'enregistrements et
mettre ce dernier jour, crivez le code correspondant au bouton Enregistrer.
5. Pour annuler la mise jour en attente et mettre les champs jour partir de l'enregistrement
en cours dans le jeu d'enregistrements, crivez le code correspondant au bouton Annuler.
6. Pour supprimer l'enregistrement en cours, crivez le code correspondant au bouton
Supprimer. Placez-vous sur l'enregistrement suivant et procdez l'extraction des champs.
Grez les erreurs des aux violations dintgrit rfrentielle.
7. Testez lapplication

crivez le code correspondant au bouton Rechercher
1. Utilisez la fonction InputBox pour inviter les utilisateurs spcifier une chane qui reprsente
une partie du champ Description.
2. partir de la chane spcifie, crez une chane SQL afin de slectionner les enregistrements
correspondants dans la table Catgories. Crez un jeu d'enregistrements bas sur la requte
SQL, et affectez les rsultats la variable recCategories. Ceci active les autres boutons dans
le nouveau jeu d'enregistrements. Si aucun enregistrement n'est trouv
(recCategories.RecordCount = 0), affichez un message pour l'indiquer. Dans le cas contraire,
affichez le premier enregistrement dans le nouveau jeu d'enregistrements.
3. Testez lapplication : tapez fruits l'invite ( deux enregistrements dont la description contient
le texte fruits doivent normalement s'afficher ).
10/13


PHASE 3 : UTILISATION DUNE REQUETE

Dans cette phase, vous allez renvoyer des informations contenues dans la base de donnes
Comptoir.mdb l'aide d'une requte existante.

Demandez les dix produits les plus chers
1. Crez une nouvelle feuille.
2. La requte Les dix produits les plus chers prsente dans la base de donnes Comptoir.mdb
renvoie les dix produits les plus chers. Dans la procdure vnementielle Form_Load de la
nouvelle feuille, crez un jeu d'enregistrements bas sur cette requte, et affichez les rsultats
dans un contrle DBGrid.
3. Testez lapplication.

11/13
SOLUTIONS

Gnral

Dim DbCurrent As Database
Dim RecCategories As Recordset

Private Sub Init_Ajout_Modif()
NomCateg.Enabled = True
NomCateg.SetFocus
DesCateg.Enabled = True
BtnModifier.Enabled = False
BtnAjouter.Enabled = False
BtnEnregistrer.Enabled = True
BtnAnnuler.Enabled = True
BtnRechercher.Enabled = False
BtnSupprimer.Enabled = False
End Sub

Private Sub Initialisation()
'
' Les boutons
'
BtnModifier.Enabled = True
BtnAjouter.Enabled = True
BtnEnregistrer.Enabled = False
BtnAnnuler.Enabled = False
BtnSupprimer.Enabled = True
BtnRechercher.Enabled = True
'
' Les zones de texte
'
NomCateg.Enabled = False
DesCateg.Enabled = False
End Sub

Private Sub RemplitChamps()
CodeCateg.Caption = RecCategories.Fields("Code Catgorie")
NomCateg.Text = RecCategories.Fields("Nom de catgorie")
DesCateg.Text = RecCategories.Fields("Description")
End Sub
12/13

Procdures lies aux objets

Private Sub Form_Load()
Set DbCurrent = OpenDatabase("D:\mvb5\labs\comptoir.mdb")
Set RecCategories = DbCurrent.OpenRecordset("Catgories")
RecCategories.MoveFirst
RemplitChamps
Initialisation
End Sub

Private Sub BtnPrecedent_Click()
RecCategories.MovePrevious
If RecCategories.BOF Then
Beep
MsgBox ("Premier enregistrement ! ")
RecCategories.MoveFirst
Else
RemplitChamps
End If
Initialisation
End Sub

Private Sub BtnSuivant_Click()
RecCategories.MoveNext
If RecCategories.EOF Then
Beep
MsgBox ("Dernier enregistrement ! ")
RecCategories.MovePrevious
Else
RemplitChamps
End If
Initialisation
End Sub

Private Sub BtnAjouter_Click()
Set RecCategories = DbCurrent.OpenRecordset("Catgories")
' Le Set prcdent permet de s'assurer que l'on travaille sur la table entire
' et non sur une partie de la table ( aprs une recherche fructueuse en particulier )
RecCategories.AddNew
CodeCateg.Caption = RecCategories.Fields("Code Catgorie")
NomCateg.Text = ""
DesCateg.Text = ""
Init_Ajout_Modif
End Sub

Private Sub BtnModifier_Click()
Init_Ajout_Modif
RecCategories.Edit
End Sub
Private Sub BtnAnnuler_Click()
RecCategories.CancelUpdate
RemplitChamps
Initialisation
End Sub
Private Sub BtnFermer_Click()
DbCurrent.Close
Unload Me
End Sub

13/13
Private Sub BtnEnregistrer_Click()
RecCategories.Fields("Nom de catgorie") = NomCateg.Text
RecCategories.Fields("Description") = DesCateg.Text
RecCategories.Update
RecCategories.Bookmark = RecCategories.LastModified
Initialisation
End Sub

Private Sub BtnRechercher_Click()
Dim Chaine, ReqSql As String
Chaine = InputBox("Texte rechercher dans la description : ")
ReqSql = "Select * From Catgories Where Description like " & "'*" & Chaine & "*'"
Set RecCategories = DbCurrent.OpenRecordset(ReqSql)
If RecCategories.RecordCount = 0 Then
MsgBox ("Aucun enregistrement trouv...")
Set RecCategories = DbCurrent.OpenRecordset("Catgories")
Else
RecCategories.MoveFirst
RemplitChamps
End If
End Sub

Private Sub BtnSupprimer_Click()
On Error GoTo TraitErreur
RecCategories.Delete
RecCategories.MoveNext
If RecCategories.EOF Then
RecCategories.MovePrevious
End If
RemplitChamps
Exit Sub
TraitErreur:
If Err.Number = 3200 Then
MsgBox ("Violation des rgles d'intgrits rfrentielles")
Else
MsgBox ("Ca plante grave ...")
End If
End Sub

You might also like