Vous êtes sur la page 1sur 117

I.N.S.E.

A 2007 - 2008

Environnement de
Dveloppement graphique

(Visual Basic)

Tlchargement cours + exemples :


Adresse: insea2eme@yahoo.fr
Mot de passe: insea2008 Khalid EL HACHEMI
Sommaire

Introduction
Notion dobjet
Prsentation de Visual Basic
Syntaxe de base
Contrles et Proprits
Evnements et Mthodes
Fonctions prdfinies
Fonctions et Procdures utilisateur
Transmission des paramtres
Sommaire

Types de donnes utilisateur


Manipulation des Dates
Les botes de message et la fonction InputBox
Formatage de donnes (Fonction Format)
Contrles avancs (menus et menus
contextuels les grilles)
Gestion des erreur (Lobjet Err)
Accs aux bases de donnes
S1

Introduction

La programmation

Problme

Analyse Algorithme

Traduction Programme

Excution Rsultat
Notion dobjet
Objet:Super-variable(groupe de variables de diffrents types)
Les variables sont dsignes par un nom = Proprits

Exemple 1 : lobjet Voiture


Proprits: couleur, marque, modle,
carburant, puissance fiscale, vitesse
Maxi, prix.

Syntaxe : objet proprit


Voiture.couleur = rouge
Voiture.marque = Peugeot
p = Voiture.puissanceFiscale
Notion dobjet

Exemple 2 : lobjet Etudiant


Proprits: nom, classe, adresse, situation familiale,
ge, taille, budget, situation/justice.

utilisation :

Etudiant.ge = 23
Etudiant.Budget = Etudiant.Budget + 100
n = Etudiant.nom
Notion dobjet
Mthodes = fonctions de lobjet

Exemple : Voiture
Acclrer, ralentir, avancer, reculer, sarrter.

Syntaxe : objet Mthode()


Voiture.acclrer()
Voiture.reculer(10 m)
Voiture.changerCouleur(bleu)
Voiture.couleur = bleu
Notion dobjet

Exemple 2 : Mthode de lobjet : Etudiant


Russir, Redoubler, Tricher, sabsenter,
prparerExamen, AugmenterBudget.

Syntaxe : objet Mthode()


Etudiant.Russir()
Etudiant.Sabsenter(2)
Etudiant.AugmenterBudget(100)
Etudiant.Budget = Etudiant.Budget + 100
Prsentation de visual basic

Sauvegarde: fichier projet .vbp


Feuilles .frm
Prsentation de visual basic
Syntaxe de base

Variables:

Noms de variables:
1-Pas de longueur maximale
2-Commence par un caractre: 12xy
3-Pas despace: date_de_naissance date de naissance
4-Pas de sensibilit la casse (toto=Toto=ToTO)
Syntaxe de base
Variables:
Types:
Boolean : True False
Byte : 0 255
Integer : -32 768 32 767
Long : -2 2 milliards
Single : rels avec 6 chiffres dcimaux (x=10/3; 3,333333)
Double : rels avec 14 chiffres dcimaux
String : chanes de caractres
Date : Date et heure
Variant : entier, rel, chane, boolen,
Objet : objets VB (Contrles, feuilles,..)
Syntaxe de base

Dclaration des Variables:


Dclaration optionnelle (! Mmoire vive)

Porte des Variables:


1-Niveau Procdure : Dim NomVariable As Type
2-Niveau Form : Dim NomVariable as Type
3-Niveau Projet (module) : Public NomVariable As Type

Exemple: Dim i As integer, Public b As boolen


Syntaxe de base
Variables indices (Tableaux):Dclaration obligatoire!!
1- Taille connue lavance : Dim MonTableau(n) As Integer
Dim MonTableau(11) As Integer (indices : de 0 11 => 12 lments)
2- Tableau dynamique : Dim MonTableau( ) As Integer
3- Mes propres indices : Dim MonTableau(2 to 5) As Integer
4- Taille fixe ultrieurement : Redim MonTableau(10)
Prserver les valeurs existantes :
Redim Preserve MonTableau(11)

Les Matrices (mmes rgles que les tableaux!)


Dim Mat(2,3) As Integer
Syntaxe de base

Oprateurs

Oprateurs numrique : + - * /
Oprateurs boolens : And Or Xor Not
Oprateur caractre : & (concatnation)

\ : Division entire
^ : puissance
Mod : reste de la division entire
Syntaxe de base
Lalternative
(si..sinon..) If (Conditions) Then
Liste dinstructions
If (Conditions) Then
Liste dinstructions Elseif (Conditions) Then
End If Liste dinstructions
Elseif (Conditions) Then
If (Conditions) Then
Liste dinstructions Liste dinstructions
Else
Liste dinstructions
End If
Else
Liste dinstructions
End If
Syntaxe de base
Select case :
Select case x
case 0
instructions
case 1 to 6

case else
instructions
End Select
Syntaxe de base
Les Boucles
For x = a to b Step c Fin prmature (Exit For)
Liste dinstructions
For i = 1 to 10
Next x If t(i) = c then
Trouv = true
Exemple : Exit For
For i = 1 to 10 End if

s=s+i Next i
Next i
S2

Syntaxe de base
Les Boucles (test avant excution)

While (Conditions) Do While (condition de continuit)


Liste dinstructions instructions
Wend Loop

Do Until (condition darrt)


instructions
Loop
Syntaxe de base (complment)
Les Boucles (test aps excution)

Do
instructions
Loop While (condition de continuit)

Do
instructions
Loop Until (condition darrt) Exemple
Contrles et Proprits
Le contrle Form
Proprits Signification
BackColor Dfinit la couleur d' arrire plan
BorderStyle Dfinit le style de la bordure d' un objet
Caption Dfinit le texte dans la barre de titre de la feuille
Dtermine si les boutons du menu systme en haut droite
ControlBox
dans la barre de titre de la feuille sont affichs.

Dtermine si l' objet peut rpondre aux vnements, c'est


Enabled
dire s'il est utilisable.
Font Dfinit une police, un style et une taille de caractre
ForeColor Dfinit la couleur de premier plan
Height Dfinit la hauteur de l' objet partir du haut
Icon Indique l' icne qui est affiche quand la feuille est rduite
Contrles et Proprits
Le contrle Form Exemple

Proprits Signification
Left Indique la position horizontale gauche l' excution de la feuille
MaxButton Dfinit si une feuille contient un bouton "Agrandissement"
MidiChild Dfinit si une feuille est considre comme feuille enfant MIDI
MinButton Dfinit si une feuille contient un bouton "Rduction"
MouseIcon Dfinit une icne de souris personnalise
MousePointer Dfinit le type de pointeur de souris
Picture Dfinit un graphisme utiliser
tag Permet de stocker des informations supplmentaires
Top Dtermine la position verticale de l' objet excution
Width Indique la largeur de l' objet
Contrles et Proprits
Contrles visuels standards
Contrles et Proprits

Exemples :
textBox
textBox (calculette)

AutresExemples
Principales Proprits
Proprit Description
permet d'identifier un contrle dans le code. VB attribue des nom par dfaut
Name exemple: Label1, Label2,, Text1,.
Etiquette qui accompagne un objet (Label, CommandButton, OptionButton,
Caption CheckBox, Frame

couleur de fond d'un contrle


BackColor Remarque: pour dfinir une couleur on utilise la fonction RGB(rouge, vert, bleu)
ForeColor Couleur du text d'un contrle
Height hauteur d'un contrle en twip (Twentieth of a Point) = 1cm/567
Width largeur
Top distance en twip qui spare le bord sup du contrle du bord sup de la feuille
Left - - - - - - - - - - - - - - - - - - - - - - - - - gauche du contrle du bord gauche - - - -
Alignement Alignement du text dans un contrle: 0 = gauche, 1 = droite, 2 = centre
permet d'autoriser un contrle ragir ou non un vnement,
Enabled ( = true -->ragit) Exemple
Principales Proprits
Proprit Description
Visible permet de rendre un contrle visible ou non
Text dtermine le contenu d'une zone de texte pour : textBox et ComboBox
MaxLength dtermine la longuer maximale d'un texte dans un TextBox
PassWordChar dtermine le caractre masque des caractres taps dans un TextBox :*****
Locked permet de verrouiller une zone de texte quand elle prend la valeur true
TabIndex dtermine l'ordre de tabulation d'un contrle dans la feuille (0, 1, 2,..)
dtermine si un contle Label est automatiquement redimentionn pour
AutoSize afficher la totalit de son contenu
Value dtermine la valeur d'un contrle (true, false | 0,1,2 )
Min Valeur minimale pour un une barre de dfilement
Max Valeur maximale pour un une barre de dfilement
dtermine le pas de deplacement de l'assenseur lorsqu'on clique sur les
SmallChange flches
dtermine le pas de deplacement de l'assenseur lorsqu'on clique sur sur
LargeChange une zone de la barre
Principales Proprits
Proprit Description
dtermine la taille des caractres : Label, TextBox, CommandButton,
FontSize OptionButton, Frame, CheckBox
FontBold Caractres en gras si true
FontName nom de la police de caractres d'un text
UnderLine Soulignement si true
FontStrike barr si true
FontItalic caractres en italique si true
mode de selection de lments d'une liste ( 0 = 1 seul, 1 = plusieurs lments,
MultiSelect 2 = plusieurs blocs d'lments)
ListCount nombre total d'lmnts dans une liste
SelCount nombre d'lments selectionns dans une liste
ListIndex position de l'lment slctionn ( -1 si aucun)
Selected renvoi true si un lment est slectionn ( List1.Selected(2) )
List Contenu d'un lment de la liste spcifi par sa position (List1,List (10) )
Sorted parmet le remplissage d'lment avec tri automatique (ordre croissant) exemple
Principales Proprits
Proprit Description

Rows nombre total de lignes dans une grille

Cols nombre total de colonnes dans une grille

FixedRows nombre de lignes fixes dans une grille

FixedCols nombre de colonnes fixes dans une grille

Row position de la ligne slectionne l'excution

Col position de la colonne slectionne l'excution

TextMatrix contenu d'une case de la grille (grille1.TextMatrix(num ligne, num colonne)


nombre de millisecondes entre les appels un vnement Timer du contrle
Interval Timer exemple
vnements & Mthodes associes

Evnement = Action produite par lutilisateur (click, survol .) ou


par le systme (Timer) au moment de lexcution sur un contrle

Evnement 1 Procdure 1

Contrle Evnement 2 Procduret 2

Evnement i Procdure i

Syntaxe : Private Sub Objet_vnement([arguments])


exemple : Private Sub Command1_Click( )
Private Sub Check1_GotFocus(Index As Integer)
S3

Principaux vnements

1- Click
Se produit lorsque lutilisateur appuie puis relche le bouton gauche de la
souris (ou entre si le contrle a le focus)
Private Sub Objet_Click( [Index As Integer])
2- DblClick
Se produit lorsque lutilisateur ralise un double click
Private Sub Objet_DblClick( [Index As Integer])
3- GotFocus
Se produit lorsquun contrle reoit le focus (click ou tabulation ou par
code : Objet.SetFocus)

Private Sub Objet_GotFocus( [Index As Integer])


Principaux vnements

4- LostFocus >>>
Se produit lorsquun contrle perd le focus
Private Sub Objet_LostFocus( [Index As Integer])
5-KeyPress >>>
Se produit lorsque lutilisateur appuie et relche une touche du clavier
Private Sub Objet_KeyPress( [Index As Integer], KeyAscii As Integer)
Codes : 0 : 48 | 9 : 57 | A : 65 | Z : 90 | a : 97 | z : 122 | entrer : 13 >>>
6- Change
Se produit lorsque le contenu dun contrle change

Private Sub Objet_Change( [Index as Integer])


Principaux vnements

7- Timer
Se produit chaque fois que la priode de temps fixe par la proprit
interval dun contrle Timer sest coule
Private Sub Objet_Timer( [Index As Integer])

8- Autres vnements lis la souris

MouseDown
MouseUp
MouseMove >>>
Mthodes associes

Mthode = sous programme propre au contrle qui, en sexcutant,


permet deffectuer une action donne
Utilisation : Objet.Mthode [Liste darguments]

Quelques mthodes :
1- SetFocus : envoi le focus un contrle qui peut le recevoir (Enabled = True
et Visible = True) appel : Objet.SetFocus

2- AddItem : ajoute un lment dans un contrle List ou ComboBox


Appel : List1.addItem element

3- RemoveItem : supprime un lment dune liste, llment est spcifi par sa


position Appel : List1.RemoveItem position
Mthodes associes

Quelques mthodes :

4- Clear : supprime tous les lment dune liste >>>


appel : List1.Clear

5- Move : deplace un contrle vers de nouvelles coordonnes (gauche, haut)


Appel : Objet.Move 100, 500 >>>
Fonctions Prdfinies
Fonction : sous programme qui reoit un ensemble de donnes
dentre, effectue un traitement et qui renvoie un et un seul
rsultat

Donnes dentre : Arguments


Rsultat calcul : retourn par le nom de la fonction

Fonctions prdfinies : offertes par Visual Basic


(mathmatique, chanes, boolennes, conversion, fichiers )
1- Fonctions Numriques
Fonction Description Type rsultat exemple

Abs(x) Valeur absolue numrique a=Abs(-3,4) 3,4

Sqr(x) Racine carre numrique a=Sqrt(25) 5

Fix(x) Partie entire entier a=Fix(3,62) 3


a=FIx(-3,21)-3
Int(x) Plus grand entier < x entier a=Int(3,62) 3
a=Int(-3,21)-4
a=Sgn(3) 1
Sgn(x) Signe de x entier a=Sgn(0) 0
a=Sgn(-3)-1
Rnd Nombre alatoire rel x=Rnd ?
[0, 1[
1- Fonctions Numriques
Gnrer un nombre entier alatoire entre a et b:

X = Fix ( Rnd * (b a + 1) + a )

Changer la valeur de dpart Randomize Timer >>>

Exercice : Loto
2- Fonctions chanes
Fonction Description Type exemple
rsultat
Len(ch) Longueur de ch entier a=Len(Insea) 5

Asc(ch) Code Ascii du 1er entier a=Asc(Insea) 73


caractre de ch
Chr(x) Caractre dont le code string a=Chr(103) g
Ascii = x

Ucase(ch) conversion en string


majuscules

Lcase(ch) Conversion en string


miniscules

Space(x) Chane forme de x string a=Space(3)


espaces
2- Fonctions chanes
Fonction Description Type exemple
rsultat
Ltrim(ch) limine les espace de string Ltrim( salut) salut
gauche
Rtrim(ch) limine les espace de string Rtrim(Insea ) Insea
droite
Trim(ch) limine les espace de string Trim ( Insea ) Insea
gauche et de droite
String(n,c) Chane forme de n fois string String(3, A) AAA
le caractre c
Left(ch,n) Chane forme de n string Left(insea,2) in
caractres de gauche
Right(ch,n) Chane forme de n string Right(insea,3) sea
caractres de gauche
Mid(ch,p,n) Chane forme de n string Mid(abcdef,4,2) de
caractres partir de p
3- Fonctions de conversion
Fonction Description Type exemple
rsultat
Str(x) Convertit x en chane string Str(123) 123

Val(ch) Convertit ch en entier entier Val(123) 123

CSng(ch) Convertit ch en rel rel CSng(103,41) 103,41


CSng(2,5e3 ) 2500
DateValue(ch) Convertit ch en date date DateValue(05/02/1976)
05/02/1976
CVDate(ch) Convertit ch en date CVDate(14/02/2006 3:40:00)
moment (date et heure) 14/02/2006 3:40:00
Date Date systme date

Time Heure systme date

now Date et heure systme date


Autres Fonctions de conversion

Les fonctions ci-dessous convertissent une expression en un


type de donnes spcifique.

Syntaxe :
CBool( expression )
CByte( expression )
CDate( expression )
CDbl( expression )
CDec( expression )
CInt( expression )
CLng( expression )
CSng( expression )
CStr( expression )
CVar( expression )
S4

Oprations sur les dates


Nombre de jours qui spare deux dates:
Nbj = Date1 Date2

Dure en jours entre deux horaires


H1 = TimeValue(11:00:00)
H2 = TimeValue(17:00:00)
X = H2 H1 = 0,25

dterminer une nouvelle date partir dune ancienne date + n jours


- Quelle date seront nous aprs 20 jours?
D2 = Date + 20
Fonctions Utilisateur
Syntaxe:
[Public | Private] Function NomFonction([Liste arguments]) As Type
Instructions
NomFonction = expression
End Function

Exemple
Function Racine (N As Double) As Double
If N < 0 Then ' value l'argument.
Exit Function ' Quitte pour revenir la ' procdure appelante.
Else ' Renvoie la racine carre.
Racine = Sqr(N)
End If
End Function
Procdures Utilisateur
Syntaxe:
[Public | Private] Sub NomProcedure([Liste arguments])
Instructions
End Sub

Exemple
Private Sub Init( )
Nom.Text = ""
Prnom.Text = ""

End Sub

Appel
Call Init >>> TP
Transmission des paramtres
Deux modes de transmission :

1- Par rfrence (ByRef) Mode par dfaut

Private Sub Toto ( ByRef Y as Integer)


Private Sub Toto ( Y as Integer)

Private Function Carre(X as Double)


Carre = X * X
End Function

2- Par valeur ( ByVal )

Private Sub Dodo ( ByVal Y as Integer) >>>


Types dfinis par lutilisateur
Dclaration : (dans un module !!!)

[Private | Public] Type NomType


Var1 as type
Var2 as type
.....
End Type

Utilisation :
Public n As NomType
n.Var1 = expression
Manipulation de Date
DateAdd(m,3,31-jan-95) Valeur Description
DateDiff(d,01/01/2005,16/05/2006)
DatePart(q,Date) yyyy Anne
q Trimestre
Year(Date)
m Mois
Month(Date)
MonthName(2, true) y Jour de l'anne
WeekDay(Date) d Jour
weekdayName(3, false, VbSunday)
w Jour de la semaine
Day(Date)
ww Semaine
Hour(Time) h Heure
Minute(Time)
Second(Time) n Minute
s Seconde
>>>
MsgBox - Instruction ou fonction ?

Cette instruction trs utilise dans Visual Basic permet de poser une
question l' utilisateur au travers d' une bote de dialogue.

Syntaxe:
Variable = MsgBox("Message", Type, "Titre de la fentre")

Variable : Variable de type Entier(Integer) recevant la valeur du bouton

Message : Chane de caractres affiche comme message dans la bote


de dialogue
Type : Expression numrique qui contrle les boutons et les icnes afficher.

Titre : Expression chane affiche dans la barre de titre de la bote de


dialogue.
MsgBox (type)

Les constantes pour les boutons


Constante VB Chiffre Affichage
vbOKOnly 0 le bouton OK uniquement
vbOKCancel 1 les boutons Ok et Annuler
vbCancelRetryIgnore 2 les boutons Abandonner,
Rpter et Ignorer
vbYesNoCancel 3 les boutons Oui, Non et Annuler
vbYesNo 4 les boutons Oui et Non
vbRetryCancel 5 les boutons Rpter et Annuler
MsgBox (type)

Les constantes pour les icnes

Constante VB Chiffre Affichage


vbCritical 16 l'icne erreur critique
vbQuestion 32 l'icne question
vbExclamation 48 l'icne message d'avertissement
vbInformation 64 l'icne message dinformation

MsgBox "Erreur fatale, division par 0", vbCritical


MsgBox (type)

Les constantes pour le bouton par dfaut

Constante Chiffre Description

vbDefaultButton1 10 Le 1er bouton est le bouton par dfaut

vbDefaultButton2 256 Le 2me bouton est le bouton par dfaut

vbDefaultButton3 512 Le 3me bouton est le bouton par dfaut


MsgBox

Exemple

x = MsgBox("Echec de connexion!", vbDefaultButton2 + vbAbortRetryIgnore + _


vbInformation, "titre")
MsgBox (constantes renvoyes)

Les constantes renvoyes par MsgBox

Constante Chiffre Description


vbOk 1 OK
vbCancel 2 Annuler
vbAbort 3 Abandonner
vbRetry 4 Ressayer
vbIgnore 5 Ignorer
vbYes 6 Oui
vbNo 7 Non
La fonction : InputBox

Syntaxe
InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

X = ""

x = InputBox("quel est votre ge?", "Age", , 1000, 2000)


La fonction Format( )

Format(expression__formater, format_donn)

expression__formater :

1- chane de caractre
2- numrique
3- date
La fonction Format( )
1- chane de caractre
Caractre de
Description
Formatage
@ Un caractre apparat la position @
& Un caractre sil existe apparat la position &
< Convertit en minuscules
> Convertit en majuscules

Important !! : les @ et & sappliquent de droite gauche

Exemples:

Format("022554466", "@@@-@@-@@-@@") 022-55-44-66


Format("022554466", "&&&&-&&&-&&&") 022-554-466
Format("Intressant", ">") INTERESSANT
La fonction Format( )
1- numrique
Caractre de
Description
Formatage
0 Un chiffre apparat la position 0
# Un chiffre sil existe apparat la position #
. Point dcimal
, Sparateur de milliers

Exemples:

Format (3456.199, "# # #,# # #.00") 3 456.20


Format(3456.199, "000,000.00") 003 456.20
Format(0.199, "# #.# #") .2
Format(0.199, "#0.00") 0.20
La fonction Format( )
1- Date
Caractre de
Description
Formatage
d Affiche le jour sans zro non significatif (1 31)
dd Affiche le jour avec un zro non significatif (01 31)
ddd Affiche le jour en lettre sous sa forme abrge (lun-dim)
dddd Affiche le jour en lettre sous sa forme complte (lundi)
m 1-2-3 -..12
mm 01-02-03 - 12
mmm jan-fv- .. dc
mmmm Janvier- .dcembre
y Jour de lanne (1-366)
yy Anne avec 2 chiffres (00-99)
yyyy Anne avec 4 chiffres (100-9999)
Linstruction With

With Text1
.BackColor = vbRed
.BorderStyle = 1
.Alignment = 2
With .Font
.Bold = True
.Size = 14
End With
End With
Contrles avancs

Les menus :
Contrles avancs (les menus)

Application raliser
Contrles avancs

Les menus contextuels (PopupMenu) :

Un menu contextuel est un lment du menu


mais invisible!

Dmonstration
Gestion des erreurs

Linstruction On Error

Exemple :

Public Sub Divise()


On Error GoTo Oops
Tata = 12 / 0
Exit Sub
Oops:
Msgbox("Diviser par zro, cest pas malin !")
End Sub
Rcupration des erreurs

Lobjet Err

Cet objet, qui ntant pas un contrle, ne possde pas dexistence


graphique, est utilis par toute application pour stocker ltat des
Erreurs quelle a ventuellement provoques. On pourra, dans le
code, avoir recours diffrentes proprits de lobjet Err :

Number : dsigne le code de cette erreur, permettant didentifier


son type
Description : il s'agit d'un rapide bla-bla sur la nature de lerreur
Source : qui indique lobjet lorigine de lerreur
Rcupration des erreurs

Lobjet Err
Exemple:

Public Sub Divise()


On Error GoTo Oops
Tata = 12 / 0
Exit Sub

Oops:
Msgbox "Erreur numro: "& Err.Number & Err.Description
End Sub
Gestion des fichiers

Etape 1: Ouverture
Le systme rserve une place en mmoire pour permettre laccs au
fichier par lapplication. Elle est ralise par linstruction : Open
(si le fichier nexiste pas, elle le cre !!)

Etape 2: Traitement du fichier


Lectures ou critures de donnes. Il est possible aussi de se
positionner dans le fichier un endroit quelconque

Etape 3: Fermeture du fichier


Le systme libre la mmoire rserve. Elle est ralise par
linstruction : Close
Gestion des fichiers
Accs squentiel (ouverture)
1- En lecture seule : Input

2- En criture : Output
Attention ! : le fichier est rinitialis vide et son contenu prcdent
est perdu

3- En Mise jour (ajout): Append


Le contenu prcdent est conserv, et lcriture dans le fichier ajoute
de nouveaux enregistrement

Exemple: Open "Monfich.txt" For Input As #1


Open "Monfich.txt" For Append As #1
Gestion des fichiers
Accs squentiel

Exemple: Open "Monfich.txt" For Input As #1


Open "Monfich.txt" For Append As #500

Remarque :

De 1 255 : accs exclusif au fichier, les autres applications ne


peuvent pas y accder tant quil est ouvert

De 256 511 : fichier partag avec dautres applications


Gestion des fichiers
Accs squentiel
Lecture : Open C:\contact.txt" For Input As #1
Line Input #1, ligne

Ecriture : Open C:\contact.txt" For Append As #1


nom = txtnom
prenom = txtprenom
tel = txttel
Print #1, nom & prenom & tel
Important : un enregistrement est compos de plusieurs champs (variables
String) de taille fixe :

Dim nom As String * 20


Dim prenom As String * 20
Dim tel As String * 9
Gestion des fichiers
Lecture squentielle

Line Input #1, ligne

toto tata 111111111

fofo fifi 222222222

salah salim 333333333 EOF(1) = True

mohamed mahmoud 444444444

>>>
Gestion des fichiers
Accs Direct (Random)

Open "Monfich.txt" For Random As # 1 Len = tailleEnregistrement

Exemple : Open App.Path & "\test.txt" For Random As #1 Len = Len(contact)

Lecture : Get numFichier, numEnregistrement, variable

Exemple : Get 1, 3, contact


(retourne le 3me enregistrement et laffecte la variable contact)

Ecriture : Put numFichier, numEnregistrement, variable

Exemple : Put 1, 5, contact


Gestion des fichiers
Accs Direct (Random)
Remarque: La variable contact est une variable de type compos

Public Type enregistrement (dclaration dans un module !!)


nom As String * 20
prenom As String * 20
tel As String * 9
End Type

Ensuite : quelque part dans le code

Dim contact As enregistrement


Open App.Path & "\test.txt" For Random As #1 Len = Len(contact)
Get 1, 1, contact
txtnom = Trim(contact.nom)
txtprenom = Trim(contact.prenom)
txttel = Trim(contact.tel) >>>
Accs aux bases de
donnes
Le langage SQL

LDD : Langage de Dfinition de Donnes


cration, modification et suppression dobjets de base de donnes
(Tables, champs, contraintes )
LMD : Langage de Manipulation de Donnes
Extraction de donnes
Regroupement et synthse de donnes
Jointure des tables
Modification de donnes (mise jour et suppression)
LMD : Langage de Contrle de Donnes
Gestion des utilisateurs (connexionx, droits daccs, mots de passe)
Le langage SQL
1. Extraction de donnes
SELECT champ [, champ2]
FROM table
WHERE condition
ORDER BY champ [ASC | DESC]

Utilisation de la clause SELECT

Exemple: 1- SELECT CodeFact, DateFact, Montant * 1.2


FROM Facture
ORDER BY DateFact

2- SELECT *
FROM Facture
Le langage SQL
Utilisation de la clause WHERE

Exemple: SELECT CodeFact, DateFact, Montant * 1.2


FROM Facture
WHERE Montant > 10 000 And DateFact < # 31/12/2005 #
ORDER BY DateFact

Oprateurs: = < > <= >= <> Between a And b


And Or Xor Not
IN
Like
Le langage SQL
Utilisation de la clause WHERE
Exemple: SELECT Personnes.Nom, Personnes.Prnom
FROM Personnes
WHERE Personnes.Nom Like "c*"

* : designe 0 ou plusieurs caractres


? : Dsigne un caractre

Question : Personnes dont le nom est compos de 5 caractre ?


SELECT Personnes.Nom, Personnes.Prnom
FROM Personnes
WHERE Personnes.Nom Like "?????"

Au moins 5 caractre : Like "?????*"


Contient la lettre b : Like "*b*"
Ne contient pas la lettre b : Not Like "*b*"
Le langage SQL
limination des doublons : (DISTINCT)
SELECT Distinct Type
FROM Produit

Limitation de nombre de lignes renvoyes par une requte :

SELECT TOP 10 nomProduit


FROM Produit

Question : nom des 3 tudiants les mieux classs ainsi que leurs moyennes?
SELECT TOP 3 nom, moyenne
FROM Resultat
ORDER BY moyenne DESC

Question : nom et moyenne du dernier de la classe ?


SELECT TOP 1 nom, moyenne
FROM Resultat
ORDER BY moyenne
Le langage SQL
2. Regroupement et synthse de donnes

Fonctions dagrgation :

SUM : somme
AVG : moyenne
MIN : minimum
Max : maximum
COUNT : nombre de lignes

SELECT MAX(moyenne) ( ou MAX(DISTINCT(moyenne) ) )


FROM Resultat

SELECT COUNT(*)
FROM Employe (nombre demploys dans lentreprise)

SELECT SUM(Salaire)
FROM Employe (masse salariale)
Le langage SQL
- Regroupement avec GROUP BY
SELECT Type, MAX(Prix), MIN(Prix)
FROM Produits
GROUP BY Type
ORDER BY Type

Important : tout champ qui nest pas contenu dans une fonction dagrgation doit figurer
dans la clause GROUP BY

Question : types de produits dont le prix maximum dpasse 1000 DH?


SELECT Type, MAX(Prix)
FROM Produits
GROUP BY Type
HAVING MAX(Prix) > 1000

Important : la clause WHERE exprime des conditions sur les champs (application avant
regroupement) alors que la clause HAVING exprime des condition sur le
groupe (application aprs regroupement)
3. Jointure des tables: jointures internes

Pere Fils

numPere Nom prenom numPere prenom

1 Salmi Mohamed 1 Slimane


1 salima
2 Bahi Rida
3 Laila
3 Alami Khalil

4 Rizki Rachid

SELECT Pere.Nom, Fils.Prenom Nom prenom


FROM Pere Join Fils Salmi Slimane
On Pere.numPere = Fils.numPere Salmi salima
Alami Laila

La requte retourne uniquement les enregistrements qui respectent la condition,


on parle de Jointure interne
3. Jointure des tables: jointures externes

Question : Liste de tous les pres (nom et prenom)


ainsi que le prnom du fils pour ceux qui en ont

SELECT p.Nom, p.Prenom, f.Prenom As "Prenom fils" Nom prenom Prenom fils
FROM Pere p Left Join Fils f Salmi Mohamed Slimane
On p.numPere = f.numPere Salmi Mohamed salima
Bahi Rida NULL
Alami Khalil Laila
Rizki Rachid NULL

1- La requte retourne tous les enregistrements de la table de gauche ainsi que


les enregistrements de la table de droite qui respectent la condition

2- Lusage des alias (p, f) permet de rduire le code et le rendre plus lisible. Dans le
cas o les tables jointes possdent des noms de champs identiques, cette
recommandation devient obligatoire
3. Jointure des tables: jointures externes

Remarque : On dispose galement de jointure externes droite: Right Join.


Le principe est le mme, il suffit dinverser lordre des tables

SELECT p.Nom, p.Prenom, f.Prenom Nom prenom Prenom fils


FROM Fils f Right Join Pere p Salmi Mohamed Slimane
On p.numPere = f.numPere
Salmi Mohamed salima
Bahi Rida NULL
Alami Khalil Laila
Rizki Rachid NULL

Question: Rsultats de la requte suivante ?

Nom prenom Prenom fils


SELECT p.Nom, p.Prenom, f.Prenom
Salmi Mohamed Slimane
FROM Fils f Left Join Pere p
Salmi Mohamed salima
On p.numPere = f.numPere
Alami Khalil Laila
3. Jointure des tables: jointures externes

Employe Service

nume Nom nums nums nomService ville


1 Salmi 20 10 Rehcerche Rabat
2 Bahi 10 20 Vente Knitra

3 Alami 20 30 Achat Fs

4 Rafik

Question : noms de tous les employs aisni que le nom du service o ils travaillent ?

Nom nomService
SELECT e.Nom, s.nomService Salmi Vente
FROM Empoye e Left Join Service s Bahi Recherche
On e.nums = s.nums
Alami Vente

Rafik
3. Jointure des tables: jointures externes

Employe Service

nume Nom nums nums nomService ville


1 Salmi 20 10 Rehcerche Rabat
2 Bahi 10 20 Vente Knitra

3 Alami 20 30 Achat Fs

4 Rafik

Question : nombre demploys par service ?

nomService nbrEmploye
SELECT s.nomService, COUNT(e.nume) As "nbrEmploye" Recherche 1
FROM Service s Left Join Empoye e Vente 2
On e.nums = s.nums
Achat 0
GROUP BY s.nomService
4. Ajout de donnes: INSERT [ INTO ]

INSERT Etudiant (nom, prenom, note)


VALUES ("Carlos", "Santana", 14)

INSERT Etudiant
VALUES ( Liste valeurs dans lordre des champs de la table)

5. Modification de donnes: UPDATE


UPDATE Etudiant
SET note = note+2
WHERE Classe = 3 And Option = "Actuariat"
Remarque :
La clause WHERE est utilise de la mme manire quavec la clause SELECT
6. Suppression de donnes: DELETE

Supprimer ltudiant Carlos

DELETE Etudiant
WHERE nom = "Carlos"

Vider la table Etudiant :

DELETE Etudiant
Accs aux bases de donnes
Le contrle Data
Utilisation du contrle Data

1-Initialiser les principales proprits


DatabaseName = C:\magasin.mdb
RecordSource = Nom Table (ou requte accss)

2- Lier les diffrentes zones de texte au contrle Data


DataSource = nom du contrle Data

3- Lier la zone de texte un champ de la table


DataField = nom du champ
Utilisation du contrle Data

Les contrles pouvant tre lis un contrle Data:


Label (tiquette)
TextBox (chamm de saisie)
CheckBox (case cocher)
PictureBox (zone dimage)
ListBox (liste)
ComboBox (liste combine)

Il est galement possible dutiliser dautres contrles :


DBCombo (liste combine lie)
DBList (liste lie)
DBGrid (grille lie)
Utilisation du contrle Data
Remarque : pour travailler avec les listes, les listes combines et les grilles, il faut
les ajouter la bote outils :

Click bouton droit dans la bote outils , puis Composant

(ou bien : Menu Projet Composants,

Ou utiliser directement le raccourcis clavier : Ctrl + t )


Utilisation du contrle Data
Cocher Microsoft Data Bound Grid et List
Utilisation du contrle Data

La proprit Recordset : Cre automatiquement


Partir de la prorit RecordSource (table ou requte), elle
donne accs aux enregistrements

a- Ajout dun nouvel enregistrement:


1.Utiliser la mthode AddNew ( Data1.Recordset.AddNew )
2.Modifier le contenu des contrles lies
3.Appeler la mthode Update pour enregistrer leur contenu
( Data1.Recordset.Update )
Utilisation du contrle Data
b- Modification de lenregistrement courant :
1.Modifier le contenu des contrles lies (enregistrement courant)
2.Appeler la mthode Update

c- Suppression de lenregistrement courant :


Appeler la mthode Delete du Recordset :
Data1.Recordset.Delete
Data1.Recordset.MoveNext
pour se placer sur lenregistrement suivant

Les proprits BOF et EOF du Recordset peuvent tre utilises pour savoir si la
position courante se trouve au dbut ou la fin du Recordset
Exemple >>>
Utilisation du contrle Data

Les contrles lis Complexes :


Affichage du contenu de toute une table (ou requte) avec le
contrle DBGrid :
Utilisation du contrle Data

Le contrle DBGrid :
Pour les diffrentes manipulations denregistrements, il suffit
de mettre True les proprits correspondantes

a- Ajout dun nouvel enregistrement :


AllowAddNew = True (saisie dans la dernire ligne)

b- Modification :
AllowUpdate = True

c- Suppression : (slection dune ligne puis touche suppr)


AllowDelete = True
Exemple >>>
Utilisation du contrle Data
Les contrles lis DBList et DBCombo prsentent des
proprits complmentaires permettant un fonctionnement plus
complexe: ils autorisent la visualisation simultane de
toutes les lignes dun champ du Recordset

Proprits :

RowSource : nom du contrle Data

ListField : nom du champ de la table affich dans la liste

Exemple >>>
Utilisation du contrle Data

Aide la saisie :

Saisie trs difficile


Utilisation du contrle Data
Aide la saisie: Ralisation Exemple >>>

1- Ajouter un 2eme contrle Data


name = dataSencondaire
DatabaseName = Entreprise (la mme base)
RecordSource = Service (table lie)

2- Remplacer le TextBox par un ComboBox


RowSource = dataSecondaire (source de donnes du contrle)
ListField = nomService (champ qui contient le nom du service)

DataSource = Data1 (contrle qui est mis jour (table employ)


DataField = numService (champ devant tre mis jour)
BoundColumn = numService (lien entre les deux tables)
Utilisation du contrle Data
Les filtres (listes dpendantes) Exemple >>>

Le principe est de changer la proprit RecordSource en cours dexcution,


actualiser le contrle Data en appelant la mthode Refresh et actualiser le
2me DBCombo en appelant la mme mthode

Private Sub DBCombo1_Click(Area As Integer)


Construction de la requte
requete = "Select * FROM Ville WHERE numPays = ("
requete = requete + "SELECT numPays FROM Pays WHERE
nomPays = '" & DBCombo1.Text & "')"
Data2.RecordSource = requete
Data2.Refresh
DBCombo2.Refresh
End Sub
Accs aux donnes avec ADO
Pour pouvoir utiliser ADO dans un projet Visual Basic vous devez
rajouter la bibliothque Microsoft AtiveX Data Objects 2.0 Library

menu Projets Rfrences,


puis cocher Microsoft AtiveX Data Objects 2.0 Library

ADO propose les objets suivants :

Recordset : jeu d'enregistrements retourns lors de l'excution d'un


SELECT
Connection : connexion une source de donnes (fichier texte,
fichier Excel, ou une base de donnes)
Error : ensemble des erreurs retournes par le SGBD
Command : permet d'excuter des requtes
Parameter : permet de dfinir un paramtre d'une requte
Accs aux donnes avec ADO
1- Cration dun DSN (Data Source Name)

- Dans le panneau de configuration de windows, slectionnez outils


dadministration, puis Sources de donnes (ODBC)
- Dans ladministrateur de source de donnes ODBC, slectionnez
Sources de donnes utilisateur (le 1er onglet)
- Cliquez sur le bouton ajouter, puis slectionner Microsoft Access
Driver(*.mdb) et cliquer sur terminer
- La bote de dialogue installation ODBC Microsoft Access est
affiche. Entrez le nom de la source de donnes : Gestion entreprise
- Cliquez sur le bouton slectionner et slectionnez le fichier de votre
base de donnes, le DSN Gestion entreprise est ajout la liste,
cliquez ensuite sur ok (Dmonstration )
Accs aux donnes avec ADO
Lobjet Recordset
La proprit Fields tant la proprit par dfaut, les lignes
suivantes sont quivalentes:

rs.Fields(nomService)
rs.Fields(1) le 1er champ est dindice 0
rs (nomService)
rs.Fields(1)
rs![nomService]

Exemple>>>
Accs aux donnes avec ADO
Lobjet Recordset
Lexemple prcdent nest pas optimis. En ffet, une
connexion la base de donnes est tablie chaque fois quune
requte est gnre : lors du remplissage initial de la liste,
puis chaque slection dun lment de la liste.

Problme : temps dtablissement dune connexion peut


devenir long, surtout si la base se trouve sur une autre
machine

Solution : Etablir une connexion permanente indpendamment


des requtes en utilisant lobjet Connection
Accs aux donnes avec ADO
Lobjet Connection : (dclaration dans le volet gnral !!)

Private cn As Connection

Private Sub Form_Load()


'cration d'une connexion
Set cn = New Connection

'etablessement de la connexion
cn.Open "DSN=gestion entreprise"

'cration du Recordset
Dim rs As New Recordset
'lien avec la connexion cn
Set rs.ActiveConnection = cn ..

Exemple>>>
Accs aux donnes avec ADO
A- Ajout dun nouvel enregistrement :

dim rs As New ADODB.Recordset


rs.Open Select * from Service ,DSN=gestion entreprise,_
adOpenDynamic, adLockOptimistic
rs.AddNew
rs![numService] = 50
rs![nomService] = Ressources humaine
rs.Update

Remarque : adOpenDynamic cest pour permettre lcriture sur


la base (le mode par dfaut tant la lecture seule)
Accs aux donnes avec ADO
B- Modification de tous les enregistrements :

dim rs As New ADODB.Recordset


rs.Open Select * from Article ,DSN=gestion entreprise,_
adOpenDynamic, adLockOptimistic

dim stock as integer


Do While Not rs.EOF
stock = rs![stock]
rs![stock] = stock 10
rs.Update
rs.MoveNext
Loop
Accs aux donnes avec ADO
C- Suppression de tous les enregistrements :

dim rs As New ADODB.Recordset


rs.Open Select * from Article ,DSN=gestion entreprise,_
adOpenDynamic, adLockOptimistic

Do Until rs.EOF
rs.Delete
rs.MoveNext
Loop

Remarque : pour supprimer un enregistrement particulier il faut


ajouter un filtre dans la requte (clause WHERE)
Accs aux donnes avec ADO

Le contrle ADODC (ADO DataControl) :

Le contrle ADODC est semblable au contrle Data prsent


prcdemment

Pour lajouter au projet, il faut ajouter le composant :


Microsoft ADO Data Control 6.0 (OLEDB)
Accs aux donnes avec ADO

Le contrle ADODC :
Initialisation :
ADODC1.ConnectionString = DSN=gestion entreprise
Accs aux donnes avec ADO

Utilisation de lAssistant Feuille de donnes

Menu fichier,
puis nouvelle
feuille.
Choisissez
Assistant Feuille
de donnes

Cliquez sur Ouvrir


Accs aux donnes avec ADO

Utilisation de lAssistant Feuille de donnes


Accs aux donnes avec ADO

Utilisation de lAssistant Feuille de donnes


Accs aux donnes avec ADO

Utilisation de lAssistant Feuille de donnes


Accs aux donnes avec ADO

Utilisation de lAssistant Feuille de donnes


Accs aux donnes avec ADO

Utilisation de lAssistant Feuille de donnes


Accs aux donnes avec ADO

Utilisation de lAssistant Feuille de donnes

Rsultat :
Environnement de
Dveloppement graphique

(Visual Basic)

FIN
Tlchargement cours + exemples + TP :
Adresse: etudiants3eme@yahoo.fr
Mot de passe: insea2006