Vous êtes sur la page 1sur 46

Cours sur le VBA

Cours 1 : Prsentation de l'interface de VB..................................................................................2


Cours 2 : Structure des procdures...............................................................................................4
Cours 3 : Les variables et les constantes......................................................................................5
Cours 4 : Les tableaux..................................................................................................................9
Cours 5 : Structure des conditions (tests, boucles).....................................................................11
Cours 6 : Les contrles standards...............................................................................................14
Cours 7 : Les botes de dialogues communes.............................................................................16
Cours 8 : Systme de menus.......................................................................................................19
Cours 9 : Accs aux fichiers.......................................................................................................21
Cours 10 : Le presse-papier........................................................................................................24
Cours 11 : La barre d'outils et la barre d'tat..............................................................................25
Cours 12 : Les tableurs et les graphes........................................................................................27
Cours 13 : Les applications MDI................................................................................................28
Cours 14 : Les bases de donnes................................................................................................29
Cours 15 : Le multimdia...........................................................................................................31
Cours 16 : Le langage de requte structur SQL........................................................................33
Cours 17 : L'diteur de ressources..............................................................................................39
Cours 18 : Le contrle Winsock.................................................................................................41

Cours 1 : Prsentation de l'interface de VB


Daprs http://membres.lycos.fr/allvb/
Aprs avoir lanc Visual Basic, vous devez voir apparatre l'cran une bote de dialogue
vous demandant quel genre d'application voulez-vous crer ? Choisissez "EXE
Standard" si vous voulez crer un programme. Quant aux autres types d'applications,
laissez-les de ct pour le moment. Vous verrez alors apparatre en face de vous une
fentre fragmente en plusieurs petites fentres. Au premier abord, cela doit
certainement vous effrayer de voir une multitude de mini fentres. Ne vous inquitez pas,
votre comportement est tout fait normal. N'importe quel NEWBIE aurait eu ce
comportement. Moi-mme, je l'ai t et j'ai pens au dbut que Visual Basic tait un
logiciel trop compliqu pour moi et j'ai voulu laisser tomber ce fabuleux logiciel. Mais ce
qui m'a encourag continuer utiliser Visual Basic, c'est la possibilit de crer, crer un
programme mme si ce n'est qu'une simple petite application car je sais qu'aprs je
pourrai concevoir des programmes plus labors au fur mesure que j'acquiers de
nouvelles connaissances.
Ca y est ? Vous tes dcid continuer apprendre ce langage informatique et faire
partie de la communaut des programmeurs ? Alors, allons-y ! Commenons par dcrire
toutes ces multitudes de fentres.
La partie suprieure de la fentre est form du systme de menus et d'une barre
d'outils tout comme d'autres logiciels (Office, Lotus,...).
La partie de gauche est constitue de la bote outils. (Attention, ne confondez pas
barre d'outils avec bote outils. La barre d'outils est une version simplifie du
systme de menus. Elle permet d'accder plus rapidement aux sous-commandes
du systme de menus.) Quant la bote outils, elle permet de slectionner les
contrles (ou si voulez "objets"), puis ensuite de les placer sur la partie centrale
de la fentre. Pour placer un contrle, slectionnez d'abord un contrle dans la
bote outils, puis, tracez une zone rectangulaire sur la feuille qui se trouve au
milieu. Si vous voulez ajouter de nouveaux contrles dans la bote outils,
appuyez sur le bouton droit de votre souris dans la bote outils pour faire
apparatre le menu contextuel. Appuyez sur la sous-commande "Composants"
pour faire apparatre la liste de tous les contrles mis votre disposition.
Cette feuille situe au centre, n'est autre que la future interface graphique de votre
application (appel aussi "interface utilisateur").
Enfin, la partie de droite est constitue de 3 botes de dialogue :
1. La 1re est la bote de dialogue "Projet" qui donne la liste de toutes les
feuilles qui constituent votre future application.
2. La 2me est la bote de dialogue "Proprits". Elle donne accs aux
proprits du contrle slectionn.
3. Enfin, la 3me est la bote dialogue "Prsentation des feuilles". Elle permet
de modifier la position de la feuille de travail actuellement slectionne.

Cours 2 : Structure des procdures


Une application est constitue essentiellement de l'interface utilisateur, forme elle-mme
de plusieurs contrles, et de procdures qui gnre des actions. A prsent, analysons la
structure d'une procdure.
La syntaxe d'criture d'une procdure est la suivante :
[Public / Private] [Static] Sub Nom_proc (arguments)
[Dclarations]
[Instructions]
[exit Sub]
[Instructions]
End Sub

Le mot Sub peut ou non tre prcd des options suivantes :


1. Les mots Public ou private dfinissent les limites de la procdure.
o Avec Public, la procdure peut tre appele depuis n'importe quelle
instruction de l'application.
o Avec private, la procdure ne peut tre appele qu' l'intrieur de la mme
feuille ou du mme module.
2. Vous devez dclarer en dbut de procdures vos variables et constantes si vous ne
l'avez pas fait dans la partie Gnral de la liste droulante Objet qui se trouve en
haut, gauche de l'diteur de code. Remarquez que si vous dclarez vos variables
l'intrieur de la procdure, sa porte sera limite qu' cette procdure;
3. Static signifie que toutes les variables locales dclares dans la procdure doivent
conserver leur valeur entre 2 appels.
4. Exit Sub permet de quitter la procdure avant la fin normale de celle-ci;
5. End Sub ferme la procdure.
Pour cela, prenons un simple exemple :
Private Sub Form_Load()
Dim DateNaissance
Dim Message, Titre As String
Message = "Date de naissance ?"
Titre = "Entrez votre date de naissance : "
DateNaissance = InputBox(Message, Titre)
If DateNaissance <> "" Then
DateNaissance = Format(DateNaissance, "Long Date")
MsgBox DateNaissance, vbOKOnly + vbInformation, "Vous tes n(e)
le"
End
Else
While DateNaissance = ""

MsgBox "Entrez une date", vbOKOnly + vbExclamation, "Attention!"


DateNaissance = InputBox(Message, Titre)
Wend
DateNaissance = Format(DateNaissance, "Long Date")
MsgBox DateNaissance, vbOKOnly + vbInformation, "Vous tes n(e)
le"
End
End If
End Sub
Le but de ce programme est certes inutile, vous direz-vous, puisqu'il consiste juste
demander la date de naissance quelqu'un et de l'afficher par la suite. Mais les
instructions de cette procdure renferment une partie des bases de la programmation en
VB6.
Ce n'est pas important si vous n'avez pas compris toutes les instructions de cette
procdure. Contentez-vous pour l'instant de lire cette procdure et observez simplement
de quoi peut tre compose une procdure.
A prsent, passons une analyse simplifie de cette procdure :
La 1re ligne contient des infos sur le nom de la feuille principale (Form1) du
projet, du type d'vnement qui permet de lancer cette procdure. Ici
L'vnement en question est Load, ce qui veut dire que cette procdure sera
excute au chargement de la feuille "Form1".
dans les 2mes et 3mes lignes, sont dfinis des variables limites cette procdure
uniquement.
Les lignes suivantes sont formes d'instructions servant dfinir le comportement
de la feuille ds son chargement. (Nous verrons de plus prs ces instructions dans
les cours suivants.)
La dernire ligne End Sub clt la procdure.

Cours 3 : Les variables et les constantes


1. Dfinition des variables
Les variables sont des donnes ou des valeurs qui peuvent changer l'intrieur d'une
application. C'est pourquoi, il est fort utile de les nommer par un nom, de dclarer quel
genre de variables est-ce (nombre entier, nombre dcimal, lettres...) et leur affecter,
lorsque cela est ncessaire une valeur.
La longueur maximale du nom d'une variable est de 255 caractres. Ceux-ci peuvent tre
des chiffres, des lettres ou autres symboles. Notez que ce nom doit obligatoirement
commencer par une lettre.

En effet, Visual basic classe les variables en fonction de la valeur affecte la variable.
Ainsi, une variable dclare comme du type numrique ne peut pas recevoir une valeur
chane de caractre, ainsi qu' l'inverse.
Notez que si vous ne dclarez pas une variable, Visual Basic se chargera d'affecter par
dfaut un type de variable (Variant) celle-ci. Une variable du type Variant peut aussi
bien recevoir des donnes numriques que des chanes de caractres. Tout dpend de ce
que vous avez affect cette variable.

2. Type de variables
A prsent, observons de plus prs les diffrents types de variables :
Type de donnes
Octet

Mot cl

Occupe

Limite de valeurs

Byte

1 octet

0 255

Logique

Boolean

2 octets

True(-1) ou False(0)

Entier

Integer

2 octets

-32 768 32767

Long

4 octets

-2 147 483 648 2 147 483 647

Dcimal simple Single

4 octets

Nombre rel avec 7 chiffres aprs la virgule

Dcimal double Double

8 octets

Nombre rel avec 15 chiffres aprs la virgule

Currency 8 octets

Nombre rel avec 15 chiffres avant la virgule


et 4 chiffres aprs la virgule

Date

Date

8 octets

1er janvier 100 au 31 dcembre 9999

Objet

Object

4 octets

Toute rfrence des types Object

Chane de
caractres

String

10 octets + longueur Chane de caractre dont la longueur ne doit


de chane
pas excder 2^31 caractres

Variant (avec
chiffres)

Variant

16 octets

toute valeur numrique jusqu' l'tendue d'un


double

Variant (avec
lettres)

Variant

22 octets+longueur
de chane

Mme tendue que pour un String de


longueur variable

Type

L'tendue de chaque lment est la mme


que son type de donnes

Entier long

Montaire

Dfini par
l'utilisateur

Notez que les types de variables les plus utilises sont : String, Integer, Long, Single,
Double et Currency.

3. Dclaration de variables

Pour utiliser des variables, il est normalement obligatoire de les prdfinir, soit dans la
section Dclarations de la liste droulante Objet, soit en dbut de procdure ou de
fonction. Un programme o les variables sont bien dclares rend un programme plus
facile comprendre, lire et surtout corriger en cas d'erreurs. Certes, il n'est pas
obligatoire de les dclarer mais faites-le quand mme, c'est un conseil. Si vous tes prt
dclarer une variable que vous voulez utilisez mais que vous tes un tourdi, alors,
utilisez simplement l'instruction Option Explicit ( placer dans la section Dclarations de
la liste droulante Objet) qui vous oblige chaque fois dclarer toutes vos variables
avant de pouvoir excuter l'application.
3.1 Dclaration explicite d'une variable
Pour dclarer une variable, on utilise l'instruction Dim suivi du nom de la variable puis
du type de la variable. Reprenons l'exemple du cours 2 :
Dim DateNaissance
Dim Message, Titre As String
Remarquez que la 1re dclaration ne contient pas d'information sur le type de variable.
Si vous dclarez une variable sans donner d'information sur le type de variable que c'est,
alors, cette variable (DateNaissance) aura par dfaut une variable du type Variant. Si vous
avez bien lu l'exemple prcdent, vous aurez compris qu'il s'agit ici d'une variable de type
Variant (avec chiffres) qui lui est affecte par dfaut. La 2me dclaration est par contre
explicite. Vous pouvez aussi mettre 2 variables sur une mme ligne condition que le type
de variable est le mme pour les 2 et en les sparant par une virgule.
3.2 Dclaration implicite d'une variable
Il existe une autre mthode de dclarer des variables. Pour cela, il suffit d'ajouter juste
avant la variable, un symbole spcifique. Voici la liste des symboles avec le type de
variable auxquelles ils se rapportent :
Symbole Type de variable
%

Integer

&

Long

Single

Double

Currency

String

Dans l'exemple ci-aprs, les deux premires instructions sont quivalentes la troisime :

Dim V1 as Integer
V1 = 25
V1% = 25

4. Porte des variables


En gnral, toute variable dclare a une porte limite. Cette mme variable a une valeur
nulle au dpart. De plus, elle ne s'applique pas forcment toutes les procdures d'une
application. Tout dpend de 2 lments : la manire de dclarer et l'emplacement de la
variable.
dans une procdure, si vous dclarez une variable l'aide de l'instruction Dim, sa
porte se trouve limite seulement cette procdure. On dit que la variable est
locale. Elle est donc initialise chaque appel de la procdure et dtruite lorsque
celle-ci se termine ( moins que vous remplaciez le mot Dim par Static). Elle n'est
pas accessible en dehors de la procdure. Vous pouvez remplacer l'instruction
Dim par Private, les deux termes tant quivalentes s'ils sont placs l'intrieur
d'une procdure.
Si vous dclarez une variable dans la section Gnral/Dclarations d'une feuille ou
d'un module en utilisant l'instruction Dim (ou Private), la variable est dite locale
au module. Cette variable est disponible pour toutes les procdures de la feuille ou
du module, mais pas pour les autres feuilles du projet.
Enfin, si vous dclarez une variable dans la section Gnral/Dclarations d'un
module (et non d'une feuille) en utilisant l'instruction Public au lieu de Dim, elle
devient accessible par toutes les feuilles et tous les modules de l'application. On dit
qu'elle est globale.

5. Les constantes
Contrairement aux variables dont les valeurs diffrent souvent, les constantes ont des
valeurs fixes. Mais tout comme les variables, on affecte aux constantes, un nom et une
valeur qui est elle, fixe. De plus, les constantes se dfinissent de la mme faon que les
variables. Tout dpend donc de l'endroit o est dfini la constante. Le mot Const peut
tre prcd de l'option Public pour que toutes les feuilles et modules de l'application
puissent y accder.
Attention cependant ne pas affecter une constante des noms identiques aux constantes
prdfinies (VbSystemModal, VbOkOnly, VbArrow...) dans Visual Basic !
Prenons l'exemple du taux de TVA :
Const TVA = 20.6
TotalTTC=PrixHorsTaxe x (1 + (TVA / 100))

Cours 4 : Les tableaux

1. Premire mthode pour dfinir un tableau


Les tableaux de valeurs sont utiles lorsque l'on manipule des donnes en tout genre.
Ainsi, dans un carnet d'adresses, vous pouvez stocker toutes les adresses dans un tableau
structur. Par exemple :
Dim Adresses (1 to 50) As String
Adresses(1) = "12, avenue de la Fayette, Paris"
........
Adresses(50) = "4, rue de la Paix, Paris"
Comme vous pouvez le constatez, la dfinition d'un tableau ressemble beaucoup celle
d'une variable la seule diffrence que vous devez donner une limite aux nombres de
valeurs contenues dans un tableau. Pour appeler une des variables du tableau, il faut
faire prcder de la variable, un numro qui permet d'identifier la variable spcifique
recherche parmi toutes celles du tableau. Ce tableau est une dimension,
Voici un exemple 2 dimensions :
Dim Adresses (1 to 50, 1 to 50) As String
Adresses(1,0) = "Vincent"
Adresses(1,1) = "12, Rue de la paix, Paris"
.....
Adresses(50,0) = "Philip"
Adresses(50,50) = "7, Boulevard de la Villette"
Notez qu'avec les fonctions LBound et UBound, vous pouvez obtenir les limites
infrieures et suprieures d'un tableau.

2. Deuxime mthode pour dfinir un tableau


Il existe une autre faon de dfinir un tableau :
Dim Adresses(50) As String
Adresses(0) = "12, avenue de la Fayette, Paris"
........
Adresses(49) = "4, rue de la Paix, Paris"
Avec cette mthode, les limites du tableau ne sont pas dfinies. Notez que le nombre
d'adresses est de 50 mais la numrotation va de 0 49 et non de 1 50. Il existe
cependant un moyen pour que la numrotation commence 1 : c'est en utilisant
l'instruction Option Base (par exemple : Option Base = 1) qu'il faut placer dans la section
Dclarations.

3. Troisime mthode pour dfinir un tableau


Pour construire
Exemple :

un

tableau,

on

peut

aussi

utiliser

la

fonction

Array

Dim Semaine, Jour As String


Semaine = Array("lundi", "mardi", "mercredi", "jeudi",
"vendredi", "samedi", "dimanche")
Jour = (3) 'retourne jeudi

4. Quatrime mthode pour dfinir un tableau


Une autre mthode consiste en la cration de tableaux dynamiques. Pour comprendre
cette mthode, prenons un exemple :
Dim Adresse() As String
Dim NbAdresses As Integer
'Nouvelle adresse
NbAdresses = nbAdresses + 1
Redim Adresse (NbAdresses)
Adresse (NbAdresses) = "75, Rue Lecourbe, Paris"
Ainsi, chaque fois que l'on lance cette procdure, le nombre total d'adresses
(NbAdresses) est incrment (augment) de 1 et la nouvelle adresse est plac la fin du
tableau. en effet, Redim a pour effet de reformater le tableau, et donc, tout ceux qui tait
dans le tableau est aussi effac sauf la dernire valeur entre.
Cependant, il existe un moyen de conserver les donnes dj prsentes dans le tableau.
Pour cela, on fait appel l'instruction Preserve :
Redim Preserve Adresse (NbAdresses)
Enfin, pour terminer, il est possible d'effacer toutes les donnes d'un tableau. Pour cela,
on utilise l'instruction Erase suivi du nom du tableau.

Cours 5 : Structure des conditions (tests, boucles)


1. Structure des tests
1.1 La structure : If...Then...Else...end If
Voici un exemple de structure simple avec l'instruction If :
If condition Then
Instructions 1
else
Instructions 2
End if
Interprtation : Si la condition est vrifie alors les instructions 1 sont excutes sinon les
instructions 2 sont excutes la place. (Notez que l'on peut utiliser des oprateurs
logiques And (et) et Or (ou) pour que plusieurs conditions doivent d'abord tre vrifies
avant de pouvoir excuter les instructions suivantes.). Le mot Else et les instructions qui
suivent ne sont pas obligatoires.
Voici un autre exemple de structure avec If mais un peu plus complexe :
If Condition 1 Then
Instruction 1
ElseIf Condition 2 Then
Instruction 2
Else
Instructions X
End If
Interprtation : Si la condition 1 est vrifie alors les instructions 1 sont excutes. Sinon
si la condition 2 est vrifie alors les instructions 2 sont excutes. Sinon, si aucune de ces
deux conditions ne sont vrifies alors les instructions X sont excutes.
Il existe une autre structure simplifie de If mais qui moins utilise :
Variable = IIf (Condition, instructions 1, instructions 2)
Interprtation : Si la condition est vrifie alors les instructions 1 sont excutes sinon les
instructions 2 sont excutes la place.
L'instruction IIf(Immediate If) est utile lorsque qu'il n'y a que une ou deux instructions
en fonction d'une condition. Par ailleurs, la valeur retourne par la condition est affecte
une variable.

1.2 La structure Select Case...End Select


Lorsque l'on doit effectuer toute une srie de tests, il est prfrable d'utiliser la structure
Select Case...End Select au lieu de If...Then...End if.
Ainsi, les deux exemples suivants sont quivalents :
Select Case Semaine
Case 1
Jour = "Lundi"
Case 2
Jour = "Mardi"
Case 3
Jour = "Mercredi"
Case 4
Jour = "Jeudi"
Case 5
Jour = "Vendredi"
Case 6
Jour = "Samedi"
Case 7
Jour = "Dimanche"
Else
MsgBox "erreur", vbOKOnly
End Select

If Semaine = 1 Then
Jour = "Lundi"
ElseIf Semaine = 2 Then
Jour = "Mardi"
ElseIf Semaine = 3 Then
Jour = "Mercredi"
ElseIf Semaine = 4 Then
Jour = "Jeudi"
ElseIf Semaine = 5 Then
Jour = "Vendredi"
ElseIf Semaine = 6 Then
Jour = "Samedi"
ElseIf Semaine = 7 Then
Jour = "Dimanche"
Else
MsgBox "erreur", vbOKOnly , "Note"
End If

Interprtation : Si la variable Semaine vaut 1, alors la variable Jour reoit la valeur


Lundi. Si la variable Semaine vaut 1, alors la variable Jour reoit la valeur Mardi.
(Etc...). Si la variable Semaine ne reoit aucune valeur comprise entre 1 et 7, alors un
message indiquant une erreur est affich.

2. Structure des boucles


2.1 La structure For..Next
La structure For...Next est utile lorsqu'on doit rpter plusieurs fois la mme instruction.
Exemple :
For J = 1 To 10
T(J) = J
Next
Interprtation : Dans cette boucle, l'instruction "T(J)=J" est rpte 10 fois c'est dire
jusqu' ce que J soit gale 10. A chaque passage, l'instruction "T(J)=J" affecte T(J)
les valeurs 1 10.

Pour que l'instruction soit excute une fois sur 2, vous pouvez utiliser l'instruction Step :
For J = 1 To 10 Step 2
T(J) = J
Next
Interprtation : Dans cette boucle, l'instruction "T(J)=J" affecte T(J) les valeurs
1,3,5,7,9.
2.2 La structure For Each...Next
Cette structure est moins utilise que la prcdente. Elle sert surtout excuter des
instructions portant sur un tableau. Exemple :
Dim Semaine(1 to 7) As String
Dim Jour As Variant
Semaine(1) = "Lundi"
'Etc...
For Each Jour In Semaine()
Combo1.AddItem Jour
Next
Interprtation : Pour chaque Jour de la Semaine, on ajoute la liste combine, la valeur
de la variable Jour jusqu' ce que l'indice de la semaine soit gale 7.
2.3 Les structures Do...Loop et While...Wend
Avec ces boucles, le nombre de fois o sont rptes les instructions est indfini.
Les deux exemples qui suivent sont quivalents :
i = 1
Do
T(i) = i
i = i + 1
Loop Until i > 10

i = 1
While i < 10
T(i) = i
i = i + 1
Wend

Interprtation : La variable i est initialise 1 au dpart. Les instructions qui suivent


sont excutes jusqu' ce que i soit suprieure 10. A chaque passage, on affecte la
variable T d'indice i la valeur de i.
Il existe d'autres variantes de ces boucles et qui sont chacune quivalentes :
Do
Do Until Condition Do While Condition
Instructions
Instructions
Instructions
Loop While Condition Loop
Loop

Cours 6 : Les contrles standards

Ne vous fiez pas aux apparences. Le Pointeur n'est pas un contrle. Il sert juste
dplacer et redimensionner un contrle plac sur une feuille.
Le contrle PictureBox sert afficher une image en mode point, une icne ou un
mtafichier. Il sert aussi regrouper des boutons radio. Remarquons que ce contrle est
le seul qui puisse tre plac dans une feuille MDI. En effet, essayez de placer d'autres
contrles sur une feuille MDI, vous verrez que a ne marche pas !
Le contrle Label sert placer du texte qui ne peut tre modifi ou effac lors de
l'excution de l'application.
Le contrle Textbox sert placer du texte qui peut tre ou non modifi par
l'utilisateur lors de l'excution de l'application.
Le contrle Frame sert regrouper plusieurs contrles (checkbox, optionbutton,...)
dans un cadre avec un titre que vous pouvez modifier dans ses proprits.
Le contrle CommandButton sert afficher un bouton de commande qui lorsque
l'on clique dessus, la portion de code crite dans sa procdure est excute.
Le contrle Checkbox sert placer une case cocher. En plaant plusieurs cases
cocher dans une application, l'utilisateur aura le choix entre plusieurs options. Selon les
options slectionnes, une portion de code sera excute.
Le contrle OptionButton s'utilise comme un contrle CheckBox. Contrairement aux
cases cocher, une seule option peut tre slectionne parmi un groupe d'options
composes de boutons radio.
Le contrle ComboBox laisse l'utilisateur le choix de slectionner un lment parmi
d'autres dans une liste.
Le contrle ListBox s'utilise comme le contrle ComboBox sauf que dans la liste
d'option, plusieurs options sont affiches simultanment.
Les barres de dfilement permettent de lire la suite du contenu d'une fentre trop
large ou trop longue pour tre affiche en une seule fois.

Le contrle Timer permet de gnrer un vnement intervalle rgulier, par exemple


dans une horloge o toutes les minutes, l'aiguille des minutes bouge. Notons que le
contrle Timer n'apparat pas pendant l'excution d'une application.
Le contrle DirListBox permet l'utilisateur de choisir un des lecteurs de disques de
l'ordinateur. Les noms des lecteurs sont affichs dans une liste non modifiable.
Le contrle DirListBox permet d'afficher la liste de tous les rpertoires d'un lecteur
de disque.

Le contrle FileListBox permet d'afficher la liste de tous les fichiers d'un rpertoire
du disque.
Le contrle Shape permet de dessiner des figures dans une feuille (rectangle, carr,
cercle). Le type de forme est choisi dans la proprit Shape du contrle.
Le contrle Line permet de tracer des lignes dans une feuille. La proprit
BorderStyle permet de choisir le type de ligne que vous dsirez : continu, invisible,
pointill...
Le contrle Image permet tout comme le contrle PictureBox d'insrer des images en
mode point, icne, ou mtafichier. Cependant, il requiert moins de ressource et donc
diminue la taille de votre application.
Le contrle Data permet d'accder aux donnes provenant de bases de donnes.
Le contrle OLE permet d'incorporer ou de lier un objet provenant d'une autre
application (feuille Excel, feuille Access,...).

Cours 7 : Les botes de dialogues communes


Avant tout, pour pouvoir utiliser les botes de dialogue communes, il faut ajouter le
contrle CommonDialog dans votre bote outils. Pour ce faire, placer votre souris sur la
bote outils et cliquez sur le bouton droit. Ensuite, choisissez la commande
"Composants". Une liste de tous les contrles apparat alors. Celui qui nous intresse ici,
c'est le contrle CommonDialog. Cochez la case du contrle Microsoft Common Dialog
Control 6.0 (SP3) et appuyez sur le bouton Appliquer. Le contrle CommonDialog va
alors apparatre sur votre bote outils. A prsent, vous pouvez l'utilisez dans vos
applications. NB : commencez par modifier les proprits du contrle avant d'utiliser les
mthodes respectives.

1. La bote de dialogue Ouvrir


La bote de dialogue "Ouvrir" permet d'ouvrir un fichier parmi tous ceux mmoriss sur
votre disque dur, disquette ou CD-ROM. Pour faire apparatre la bote de dialogue
"Ouvrir", on fait appel la mthode ShowOpen. Cependant, il est aussi ncessaire de
renseigner plusieurs proprits de la bote de dialogue. Voici la liste principale des
proprits renseigner :
Proprit
CancelError

Utilisation
Initialise True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL)
lorsque le bouton Annuler a t press.

DefaultExt

Elle dfinit l'extension par dfaut du nom du fichier ouvrir.

DialogTitle

elle dfinit le titre de la bote de dialogue situ sur la barre de titre.

FileName

Filter

Elle dfinit le chemin d'accs et le nom du fichier slectionn par dfaut.


Elle dfinit le(s) filtre(s) qui sert spcifier quel type de fichier pouvant tre
ouvert en lecture. Par exemple, avec l'instruction " CMD.Filter =" DLL
(*.DLL)|*.DLL|Excutables (*.EXE)|*.EXE|Tous (*.*)|*.*| ", vous pouvez
choisir de n'ouvrir que les fichiers .DLL ou .EXE ou bien tous les fichiers.

FilterIndex

Elle spcifie le filtre utiliser par dfaut dans la bote de dialogue. Reprenons
l'instruction prcdente : avec l'instruction suivante "CMD.FilterIndex = 2", le
filtre utilis par dfaut sera donc Excutables (*.EXE)|*.EXE|.

Flags

Elle dfinit les options de la bote de dialogue. La syntaxe de l'instruction est :


"Objet.Flags = valeur" o "valeur" peut valoir "&H1&", "&H2&", "&H3&" ou
bien "&H2& + &H1&".

InitDir

Elle dfinit le rpertoire affich l'ouverture de la bote de dialogue.

2. La bote de dialogue Sauvegarder sous


La bote de dialogue "Enregistrer sous" permet de sauvegarder un fichier ouvert. Pour
l'afficher, on fait appel la mthode ShowSave. Pour ce qui est des proprits modifier,
reportez-vous ceux de la bote de dialogue "Ouvrir".

3. La bote de dialogue Couleur


La bote de dialogue "Couleur" permet une couleur parmi d'autres. En l'agrandissant,
vous pourrez dfinir une couleur par ses composantes : teinte, saturation, RVB et
luminance. Pour l'afficher, on fait appel la mthode ShowColor. Tout comme les botes
de dialogue prcdentes, vous devrez renseigner certaines proprits du contrle.
Voici les principales proprits :
Proprit
CancelError

Utilisation
Initialise True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL)
lorsque le bouton Annuler a t press.

Flags

Elle dfinit les options de la bote de dialogue. La syntaxe de l'instruction est :


"Objet.Flags = valeur" o "valeur" peut valoir "&H1&", "&H2&", "&H3&" ou
bien "&H2& + &H1&".

Color

Elle slectionne une couleur par dfaut. La syntaxe de l'instruction est :


"Objet.Color = QBColor(valeur)".

2. La bote de dialogue Police de caractres


La bote de dialogue "Police de caractres" permet de slectionner une police et ses
attributs. Pour l'afficher, on fait appel la mthode ShowFont. Ensuite, renseignez les
proprits suivantes :
Proprit
CancelError

Flags

Utilisation
Initialise True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL)
lorsque le bouton Annuler a t press.
Elle dfinit les options de la bote de dialogue. La syntaxe de l'instruction est :
"Objet.Flags = valeur" o "valeur" peut valoir "&H1&", "&H2&", "&H3&"
ou bien "&H2& + &H1&".

FontBold

Elle dfinit le style Gras par dfaut.

FontItalic

Elle dfinit le style Italique par dfaut.

FontName

Elle dfinit la police par dfaut.

FontSize

Elle dfinit la taille par dfaut.

FontStrikethru

Elle dfinit le style Barr par dfaut.

FontUnderline

Elle dfinit le style Soulign par dfaut.

Max

Elle dfinit la taille maximale des polices affiches.

Min

Elle dfinit la taille minimale des polices affiches.

2. La bote de dialogue Imprimer


La bote de dialogue "Imprimer" sert dfinir les paramtres de l'impression. Pour
l'afficher, on fait appel la mthode ShowPrinter. Ensuite, renseignez ces proprits :
Proprit
CancelError
Copies
Flags
FromPage
PrinterDefault
ToPage

Utilisation
Initialise True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL)
lorsque le bouton Annuler a t press.
Elle dfinit le nombre d'exemplaires imprimer.
Elle dfinit les options de la bote de dialogue. La syntaxe de l'instruction est :
"Objet.Flags = valeur" o "valeur" peut valoir "&H1&", "&H2&", "&H3&"
ou bien "&H2& +&H1&".
Elle dfinit le numro de la premire page imprimer.
Elle sert indiquer si les paramtres entrs doivent devenir les nouveaux
paramtres par dfaut.
Elle dfinit le numro de la dernire page imprimer.

Cours 8 : Systme de menus


Un systme de menus est compos de plusieurs menus qui eux-mmes peuvent tre
composs de plusieurs sous-menus. La plupart des logiciels de Microsoft possdent un
systme de menus pour faciliter l'utilisateur dans ses actions.

1. Le systme de menus
Pour crer un systme de menus, allez dans le menu "Outils" du systme de menu de
Visual Basic et choisissez la commande "Crateur de menus" ou pour aller plus vite,
cliquez sur la 3me image de la barre d'outils.

A premire vue, a a l'air compliqu. Mais aprs quelques manipulations, ce sera facile.
Bon, voyons de plus prs ce systme de menus.
L'esperluette "&" que vous voyez dans chaque menu et commande vous permet de crer
des raccourcis. Ainsi, pour ouvrir le menu "Fichier", vous pouvez tout simplement
appuyer sur Alt+F. Notez que pour un menu, vous n'avez pas besoin de lui affecter une
lettre pour pouvoir crer un raccourci. C'est automatiquement "Alt" + la lettre
prcdant l'esperluette. Pour les commandes, allez dans la liste droulante Shortcut et
choisissez le raccourci que vous voulez pour votre commande de menu.
Pour crer une commande de menu, il faut l'indenter au menu auquel il est rattach.
Pour cela, la suite de la cration du menu "Fichier", appuyez sur la flche de droite
pour indenter la commande "Ouvrir". Visual basic permet un maximum de 5 niveaux
d'indentation. Par exemple, vous pouvez aprs avoir cr la commande "Ouvrir", crer
une sous-commande en l'indentant ce dernier.

Vous pouvez par ailleurs crer une barre sparatrice afin de sparer plusieurs
commandes de menu. Pour cela, dans "Caption", mettez un "-" et donnez-lui un nom
quelconque.
La case cocher "Checked" permet d'afficher ou d'effacer une marque de
slection en face d'une commande de menu.
La case cocher "Enabled" permet d'empcher l'utilisateur de slectionner une
commande. Si vous dcochez cette case, l'utilisateur ne pourra pas slectionner le
menu ou la commande auquel vous avez dcoch la case "Enabled".
La case cocher "Visible" permet de cacher ou d'afficher un menu ou une
commande de menu.
La case cocher "Windowlist" permet d'afficher les derniers fichiers ouverts par
l'application concerne.
Pour les autres options, laissez-les de ct, pour le moment.
Voil, c'est termin, pour la cration de menu. Il ne reste plus qu' affecter chaque
commande de menu une action spcifique. Pour affecter une action une commande,
cliquez sur celui-ci dans la feuille o est cr le systme de menus. Pour les actions de
chaque commande, lisez les cours qui suivent.

2. Le menu contextuel
Dans une quelconque application de Microsoft, lorsque vous cliquez sur le bouton droit
de votre souris, une srie de commande apparat : c'est le menu contextuel (ou Popup
menu en anglais).
La cration d'un popup menu se fait presque comme un systme de menu. Pour cela,
faites exactement comme si vous crez un systme de menu. Dfinissez ensuite, une action
pour chaque commande du menu contextuel. Par la suite, il faut dfinir dans quelles
conditions doit apparatre le menu contextuel. Double-cliquez sur la feuille o est cr le
systme de menu et dans la liste droulante "vnement", slectionnez l'vnement
"MouseDown". Entrez les instructions suivantes :
Private Sub Form_MouseDown(Button As Integer, Shift As Integer,
X As Single), Y As Single
If (Button = 2) Then
PopupMenu X
end if End Sub
Interprtation : Lorsque le bouton droit de la souris a t cliqu, le menu contextuel X
apparat. Vous pouvez remplacer la valeur de la variable "Button" si vous voulez que le
menu contextuel apparaisse une autre action de l'utilisateur : Button = 1 pour le bouton
gauche et Button = 4 pour le bouton central
Enfin, revenez dans la bote de dialogue "crateur de menu" et dcochez la case
"Visible" du menu que vous dsirez rendre contextuel. Ne le faites pas avant car si vous
le faites, vous ne pourrez pas dfinir une action pour chaque commande du menu
contextuel.

Cours 9 : Accs aux fichiers


Il existe trois modes d'accs aux fichiers dans Visual Basic 6 :
- Les fichiers accs squentiel ne peuvent ouvrir que des fichiers avec un contenu textuel.
- Les fichiers accs direct sont forms en gnral de plusieurs enregistrements de
longueur fixe.
- Les fichiers binaires sont tous les fichiers avec un contenu graphique.

1. Les fichiers accs squentiel


Il existe trois manires d'ouvrir un fichier texte. La 1re manire est l'ouverture d'un
fichier uniquement en lecture l'aide de l'instruction Input. La 2me manire est
l'ouverture d'un fichier uniquement en criture l'aide de l'instruction Output. Enfin, la
dernire manire est l'ouverture d'un ficher en criture aussi mais la seule diffrence de
la prcdente manire, les nouvelles donnes sont entres la suite de l'enregistrement
prcdent. Pour cela, on utilise l'instruction Append.
Pour comprendre son fonctionnement, prenons un exemple. Lancez Visual Basic et
ouvrez un nouveau projet. A la proprit Caption de la feuille Form1, affectez-lui la
valeur "Bloc-note". Sur la feuille Form1, tracez un rectangle assez grand en utilisant le
contrle TextBox. Allez dans la bote de proprit du contrle TextBox et allez sa
proprit Text. Effacez-y le contenu. Ensuite, sa proprit Multiline, choisissez True.
Maintenant, placez sur la feuille 4 contrles CommandButton. Pour chacun des 4
contrles, donnez leur, les valeurs "&Ouvrir", "&Effacer", "&Sauvegarder" et
"&Quitter" la proprit Caption et les valeurs "Ouvrir","Effacer", "Sauvegarder" et
"Quitter" la proprit Name. Voici l'allure que la feuille form1 doit avoir prsent :

Pour que ce bloc-note soit oprationnel, il faut dfinir des procdures qui grent les
actions de chaque contrle prsent dans la feuille.
Double-cliquez sur le bouton de commande "Ouvrir" et crivez la portion de code
suivant :
Private Sub ouvrir_Click()
On Error Resume Next
Open "C:\Windows\Bureau\note.TXT" For Input As #1
retour = Chr$(13) + Chr$(10)
Line Input #1, texte
tout = texte
If Len(tout) <> 0 Then
While Not EOF(1)
Line Input #1, texte
tout = tout + retour + texte
Wend
End If
Close #1
End Sub
Explication :
L'instruction On error Resume Next permet d'ignorer toute erreur que peut
entraner cette procdure.
L'instruction Open "C:\Windows\bureau\note.TXT" For Input As #1 permet
d'ouvrir le fichier "note" situ sur le bureau. Lorsque l'application est excute
pour la premire fois, une erreur 53 devrait apparatre car le fichier "note"
n'existe pas encore. Mais grce l'instruction On Error Resume Next, cette erreur
sera tout simplement ignore.
L'instruction retour = Chr$(13) + Chr$(10) permet d'aller la ligne suivante. Le
code ASCII 13 correspond au "retour chariot", c'est--dire de revenir gauche
du texte et 10 au "passage la ligne", c'est--dire d'aller la ligne suivante. Vous
pouvez aussi utiliser le code vbCrLf la place et c'est plus court et plus facile
retenir. Vous aurez ainsi : "tout = tout + vbCrlf + texte"
L'instruction Line Input permet de placer dans la variable "texte" le contenu de la
premire ligne du fichier "note.TXT".
Ensuite, le contenu de la variable "texte" est son tour affect la variable "tout".
Le test avec l'instruction If permet de vrifier que le fichier "note.TXT" n'est pas
vide l'aide de la fonction Len qui compte le nombre de lettres ou tout autre
symbole contenu dans la variable "tout". Si le nombre de lettres est diffrent de
zro alors, les instructions l'intrieur du test sont excutes.
La boucle avec While permet de parcourir tout le fichier la recherche
d'ventuelles autres lignes que la premire. La fonction EOF permet de savoir si
l'on arrive la fin du fichier ouvert. Cette boucle est donc excute jusqu' ce que
tout le contenu du fichier soit plac dans la variable tout. Les chanes de
caractres affectes la variable "tout" sont concatnes (concatnes = ajoutes)
aux prcdentes contenues dans la variable. La variable "retour" provoque un
retour la ligne chaque fois que cela est ncessaire.

Lorsque tout le contenu du fichier sera affect la variable "tout", cette dernire
sera son tour affecte la proprit Text du contrle TextBox. Ce qui
provoquera l'affichage du contenu du fichier dans le contrle TextBox.
L'instruction Close ferme le fichier ouvert en lecture.

crivons maintenant la portion de code correspondant au bouton "Sauvegarder" :


Private Sub Sauvegarder_Click()
Open "C:\Windows\Bureau\note.TXT" For Output As #1
Print #1, Text1.Text
Close #1
End Sub
Explication : le contenu de la zone de texte "Text1" est ensuite copi dans le fichier l'aide
de l'instruction Print.
Passons l'criture de la procdure concernant le bouton "Effacer" :
Private Sub Effacer_Click()
Text1.Text = ""
Text1.SetFocus
End Sub
Explication :
L'instruction Text1.Text = "" permet d'effacer tout ce qui se trouve sur la zone de
texte du contrle TextBox.
L'instruction Text1.SetFocus donne le focus la zone de texte, c'est--dire que cette
instruction provoque l'affichage d'une barre d'insertion dans la zone de texte.
Enfin, crivons la portion de code correspondant l'action du bouton "Quitter" :
Private Sub Quitter_Click()
End
End Sub
Explication : L'instruction End permet de quitter l'application en cours.

2. Les fichiers accs direct


Les fichiers accs direct contiennent des donnes contenues dans plusieurs
enregistrements fixes. Pour dclarer un enregistrement, on utilise l'instruction Type pour
crer un nouvel type de variable. Ensuite, On dclare une variable de ce type. Pour
ouvrir un fichier accs direct, on utilise l'instruction Open en indiquant la longueur de
chaque enregistrement. Ainsi, un fichier accs direct s'ouvre de la manire suivante :
Open "C:\Windows\Bureau\fichier.adr" For Random As #1 Len = Len(Adr) o adr est le
nom d'une variable de type prdfini.

La lecture d'un enregistrement s'effectue de la manire suivante : Get #1, Numro, adr.
L'criture dans un fichier accs direct s'effectue de la manire suivante : Put #1,
Numro, adr.

3. Les fichiers accs binaire


Dans la mesure o le fonctionnement des fichiers accs binaires est trs proche de celui
des fichiers accs direct, reportez-vous aux fichiers accs direct.

Cours 10 : Le presse-papier
Le presse-papier est indispensable pour toute opration de copie et de collage. Ces
oprations s'effectuent grce l'objet ClipBoard.
Remarque : Si vous utilisez le contrle TextBox, vous n'avez pas besoin de dfinir des
procdures pour le presse-papier dans la mesure o il est dj intgr dans le contrle.
Par contre, si vous utilisez le contrle RichtextBox, alors il vous faudra dfinir vousmme le presse-papier. La diffrence entre ces 2 contrles de saisie est que le contrle
RichTextBox possde quelques fonctions supplmentaires comme la possibilit de dfinir
des marges autour du texte.
Passons maintenant aux mthodes utilises pour dfinir le presse-papier :
ClipBoard.GetText permet de lire le contenu du presse-papier (uniquement avec des
donnes textuelles).
ClipBoard.SetText permet d'crire dans le presse-papier (uniquement avec des
donnes textuelles).
ClipBoard.Clear permet d'effacer le contenu du presse-papier.
ClipBoard.GetFormat(type) permet d'indiquer quel type de donnes est prsent
dans le presse-papier. Les valeurs que peut retourner Visual Basic sont :
1. (vbCFText) : donnes de type texte.
2. (vbCFBitmap) : image en mode point (bitmap).
3. (vbCFMetafile) : mtafichier vectoriel (wmf).
4. vbCFDib) : image bitmap indpendante du priphrique.
5. (vbCFPalette) : palette de couleur.
6. (vbCFEMetafile) : mtafichier amlior (emf).
7. (vbCFFile) : noms de fichiers copis depuis l'Explorateur de Windows.
8. &FFFFBF00 (vbCFLink) : liaisonDDE (valeur exprime sous forme
hexadcimale).
9. &FFFFBF01 (vbCFRTF) : texte au format RTF.
ClipBoard.GetData permet de lire le contenu du presse-papier (uniquement avec
des donnes graphiques).
ClipBoard.SetData permet d'crire dans le presse-papier (uniquement avec des
donnes graphiques).

Cours 11 : La barre d'outils et la barre d'tat


Tout d'abord, pour pouvoir utiliser les contrles pour placer une barre d'outils ou d'tat,
il faut qu'ils soient dj prsents dans votre bote outils. Or ce n'est pas le cas. Pour ce
faire, choisissez la commande "Composants" du menu "Projet". Cochez le contrle
Microsoft Windows Common Controls 6.0 et validez. A prsent, une srie de contrle est
apparue sur votre bote outils. Vous y trouverez le contrle ToolBar et le contrle
StatusBar.

1. La barre d'outils
Commencez par slectionner le contrle ToolBar dans la bote d'outils et sur la feuille
tracez un rectangle d'une quelconque taille. Cela n'a aucune importance dans la mesure
o la barre d'outils se placera automatiquement sur le haut de votre feuille.
Ensuite, slectionnez le contrle ImageList et placez-le son tour sur la feuille. (Notez
que l'emplacement de ce contrle n'a aucune importance.) Slectionnez nouveau le
contrle ImageList mais cette fois, sur la feuille et cliquez sur le bouton droit de votre
souris. Dans le menu contextuel, choisissez la commande "Proprits".
Dans l'onglet "Gnral", vous avez la possibilit de modifier la taille de vos images
prsentes dans la barre d'outils. C'est dans l'onglet "Images" que vous allez pouvoir
choisir les images qui y seront places. Appuyez sur le bouton "Insrer une image". Les
images par dfaut fournies avec Visual Basic sont situes dans le rpertoire C:\Program
Files\Microsoft Visual Studio\Common\Graphics\Bitmaps. Slectionnez les images que
dsirez mettre sur votre barre d'outils. Attribuez chacune de ces images un nom dans la
proprit "Key". Validez ensuite en appuyant sur le bouton "Appliquer".
A prsent, faites un clic droit sur le contrle ToolBar et slectionnez "proprits". Dans
l'onglet "Gnral", slectionnez "ImageList1" dans les proprits "ImageList",
"DisabledImageList" et "HotImageList". Slectionnez aussi "1-TbrFlat" dans la
proprit "Style". Passons prsent l'onglet "Boutons". Renseignez les principales
proprits. crivez dans la proprit "Key" le nom des images que vous avez choisi dans
le contrle ImagaList. La proprit "ToolTipText" vous permet d'afficher une bulle
lorsque vous survolez l'image. Enfin, dans la proprit "Image", crivez les numros qui
sont respectifs aux images contenues dans le contrle ImagaList.
N'oubliez pas que ce dernier permet d'afficher des images sur votre barre d'outils. Ok,
maintenant, revenez la feuille principale. Vous avez vu, votre barre d'outils est
prsent visible.
A prsent, occupons-nous du code pour relier chaque icne de la barre d'outils une
action. Double-Cliquez sur la barre d'outils. Pour grer chaque action, utilisons la
structure Select Case qui convient parfaitement ce que l'on veut faire.

Select Case Button.Key


Case "New"
Nouveau_Click
Case "Open"
Ouvrir_Click
End Select
"Nouveau_Click" correspond la procdure que vous avez normalement attribue la
commande "Nouveau" du systme de menus. Si ce n'est pas le cas, alors, il va vous falloir
ici, lui attribuer une action. Par ailleurs, au lieu d'utiliser "Button.key" pour tester la
condition, vous pouvez aussi utiliser "Button.Image", mais alors, au lieu d'avoir "New",
vous devrez mettre la place le numro leur correspondant que vous avez dfini dans le
contrle ToolBar, l'onglet Boutons, dans le champs "Image".

2. La barre d'tat
Choisissez le contrle StatusBar et placez-le n'importe o. Cela n'a pas d'importance car
au bout du compte, il s'affichera automatiquement tout en bas de votre feuille. Faites un
clic droit sur ce dernier qui est prsent plac sur la feuille et allez dans l'onglet
"Proprits". Paramtrez les diffrentes proprits qui s'y trouvent.
Ca y est ! A prsent, votre application est comparable toute autre logiciel. Avec
quelques rglages supplmentaires, vous pouvez mme rivaliser avec les applications de
Microsoft ! Super, non ?

Cours 12 : Les tableurs et les graphes


Tout d'abord, pour pouvoir utiliser les tableurs et graphes, vous devez au pralable
placer dans votre bote d'outils, les contrles Microsoft Flexgrid Control 6.0 et Microsoft
Chart Control 6.0. Pour cela, faites un clic droit sur la bote d'outils et choisissez la
commande "Composants". Ensuite, cochez les cases correspondant aux contrles et
validez.
Grce au contrle MSFlexGrid et aprs avoir acquis une certaine exprience, vous
pouvez mme crer des tableurs semblables ceux du logiciel Excel de Microsoft. Les
proprits du contrle MSFlexGrid permettent de manipuler les cellules de ce dernier.

Rows

Elle permet de dfinir ou de connatre le nombre de lignes du contrle.

Cols

Elle permet de dfinir ou de connatre le nombre de colonnes du contrle.

FixedRows

Elle permet de dfinir ou de connatre le nombre de lignes fixes du


contrle.

FixedCols

Elle permet de dfinir ou de connatre le nombre de colonnes fixes du


contrle.

Row

Elle permet de dfinir ou de connatre les coordonnes de la cellule


courante.

Col

Elle permet de dfinir ou de connatre les coordonnes de la cellule


courante.

Text

Elle permet de dfinir ou de connatre le contenu de la cellule courante.

ColWidth

Elle permet de dfinir ou de connatre la largeur d'une colonne.

RowHeight

Elle permet de dfinir ou de connatre la hauteur d'une ligne.

ColAlignment

Elle permet de dfinir ou de connatre l'alignement des donnes d'une


colonne.

RowSel

Elle permet de slectionner ou de connatre les coordonnes d'une plage de


cellules.

ColSel

Elle permet de slectionner ou de connatre les coordonnes d'une plage de


cellules.

De mme, les proprits du contrle Microsoft Chart Control 6.0 permettent de dfinir un
graphe donn.
Column

Elle renvoie ou dfinit la colonne active de la grille de donnes.

Data

elle renvoie ou dfinit la valeur d'un point de donnes spcifique dans la grille
de donnes identifie par Row et Column.

DrawMode Elle dtermine quand et comment est rafrachi l'affichage du graphique.


CharType

Elle renvoie ou dfinit le type de graphiques utilis pour tracer les donnes
dans la grille de donnes.

Cours 13 : Les applications MDI


Tout d'abord, dfinissons ce que c'est qu'une application MDI. Vous connaissez srement
le logiciel de traitement de texte WORD de Microsoft. Eh ben, c'est une application MDI
et comme son nom l'indique, elle est compose d'une fentre principale (appel aussi
fentre parent) et d'une ou plusieurs fentres de documents (appels aussi fentre fille.
Les applications MDI sont en gnral pourvues d'un systme de menu, d'une barre
d'outils et d'une barre d'tat. Elles permettent de visualiser plusieurs documents en
mme temps. Ce qui permet d'viter d'ouvrir plusieurs fois la mme application. Passons
prsent sa mise en place !

1. Mise en place de la fentre parent


Elle se droule en 3 tapes :
1. Pour crer la fentre parent en tant que tel, ouvrez un nouveau projet puis
slectionnez dans la fentre de projet la feuille ouverte par dfaut Form1. Faites
un clic droit dessus et choisissez la commande "Supprimer Form1". Ensuite, allez
dans le menu "Projet" et slectionnez la commande "Ajouter une feuille MDI".
Voil ! Vous avez cr une fentre parent, facile non ?
2. Passons la cration du systme de menus. pour cela, reportez-vous au cours 8.
3. Enfin, passons la cration de la barre d'outils et celle d'tat. Pour cela, reportezvous au cours11.

2. Mise en place de la fentre fille


Sa mise en place est simple. Pour la dfinir, placez une nouvelle feuille dans le projet.
Ensuite, initialisez True sa proprit MDIChild. C'est tout !

Cours 14 : Les bases de donnes

L'laboration d'une base de donnes se fait l'aide du contrle Data. Ainsi, vous pouvez
accder pas mal de fichiers de donnes divers tels que ceux de Access, Excel, FoxPro,
Lotus 1-2-3, BTrieve ou tout fichier ASCII.
En clair, le contrle Data est indispensable dans la ralisation d'une gestion d'une base de
donnes. Cependant, il ne suffit pas simplement de placer le contrle sur la feuille. Il faut
imprativement renseigner quelques unes de ses proprits sans quoi, le contrle ne
marchera
pas.
Mais rassurez-vous, ce n'est pas aussi dur que vous le pensiez. D'ailleurs, j'tais comme
vous auparavant. Je me disais que les bases de donnes, c'est pas du tout mon truc et rien
que d'entendre ce mot, a me donnait la migraine. Mais aprs une trs courte sance
d'apprentissage, je me suis vite rendu compte que ce n'tait pas aussi cailloux comme le
prtendent certains. Ca y est, vous avez repris confiance en vous ? Allez, c'est parti !
Tout d'abord, dfinissez un nouveau projet et placez le contrle Data sur la feuille
"Form1". Maintenant, passons au renseignement de quelques unes de ses proprits.
Connect

Indiquez-y quel type de bases de donnes vous voulez utiliser: Access,


Excel, Paradox, Foxpro...

DataBaseName Indiquez-y o se trouve votre fichier de base de donnes sur votre disque.
RecordSource

Indiquez-y le nom de la table diter.

Pour pouvoir afficher les donnes de votre fichier, vous aurez sans doute besoin d'un ou
plusieurs champs de texte crs l'aide du contrle TextBox. L aussi, vous aurez
modifier quelques une de ses proprits.
DataSource Indiquez-y le nom du contrle Data auquel il se rapporte.
DataField

Indiquez-y le nom du champ de valeurs auquel il se rapporte.

Passons prsent, aux principales mthodes utilises pour grer une base de donnes
dans une application.

AddNew

Delete
Movefirst,
MoveLast,
MovePrevious,
MoveNext
Refresh

UpdateRecord

Elle sert crer un nouvel enregistrement. Cependant, Les donnes


nouvellement entres ne sont pas tout de suite enregistres moins
que vous n'appuyez sur une des flches du contrle Data. Pour
qu'elles soient valides, on pourrait faire appel la mthode
Updaterecord suivi de l'instruction suivante:
Data1.recordSet.BookMark = Data1.RecordSet.LastModified qui
permet de revenir la dernire donne enregistre ou modifie.
Exemple: Data1.RecordSet.AddNew.
Elle sert supprimer un enregistrement donn.
Exemple: Data1.RecordSet.Delete
Elles servent respectivement revenir au premier enregistrement,
aller au dernier enregistrement, revenir l'enregistrement
prcdent et aller l'enregistrement suivant.
Exemple: Data1.RecordSet.MoveFirst.
Elle sert rafrachir la base de donne.
Exemple: Data1.Refresh.
Elle sert mettre jour une donne nouvellement enregistre ou
modifie.
Exemple: Data1.UpDateRecord.

Pour aller un peu plus loin, nous allons ici traiter des requtes SQL sans s'y attarder trop
longtemps. Avant tout, faites attention la casse des mots. Si vous crivez Select au lieu
de SELECT, a marchera pas !
Pour comprendre son fonctionnement, prenons l'exemple de l'instruction suivante :
Data1.RecordSource = "SELECT * FROM Produits WHERE [Nom de produit] = 'Riz';".
En terme plus clair, Cette requte extrait tous les champs (*) de la table Produits (FROM
Produits) pour lesquels le champ "Nom de produit" a pour valeur "Riz"(WHERE [Nom
de
produit]='Riz').
Dans cette requte, le champ "Nom de produit" a t mis entre crochet car il contient des
espaces. Autrement dit, ces crochets ne sont ncessaires que pour les champs avec un
nom ne contenant qu'un seul mot.
L'instruction suivante : Data1.RecordSource = "SELECT * FROM Produits; " permet
nouveau d'avoir accs toutes les donnes du fichier. Tous les champs (*) de la table
"Produits"(FROM Produits) sont nouveau accessible l'utilisateur.

Cours 15 : Le multimdia
La lecture des fichiers audio ou vido se fait l'aide du contrle MMControl. Pour cela,
choisissez la commande "Composants" du menu "Projet". Cochez le contrle Microsoft
Multimedia Control 6.0 et validez. A prsent, le contrle MMControl est dans votre bote
d'outils. Veuillez noter qu'il existe plusieurs types d'objet multimdia.
Les plus courantes sont le WaveAudio (Fichier sonore numris .WAV), le Sequencer
(Fichier musical MIDI .MID), CDAudio (Morceau de musique sur un CD audio),
AVIVideo (Fichier numrique au format .AVI), etc. Bien sr, il en existe bien d'autres
types d'objet multimdia mais nous nous contenterons de ceux cits dans le tableau.
Pour ouvrir un fichier multimdia, servez-vous des botes de dialogue communes. Pour
imiter les commandes du contrle MMControl, il est utile de connatre les commandes
MCI. Elles agissent sur le comportement de ce dernier. En voici une liste des commandes
MCI, les plus importantes :
Commande MCI

Fonction

Stop

Stoppe immdiatement la lecture en cours.

Play

Joue le fichier slectionn.

Open

Ouvre le fichier slectionn.

Close

Ferme le fichier slectionn.

Pause

Interrompt la lecture en cours.

Eject

jecte le CD contenu dans le CD-ROM.

Par exemple, l'instruction MMControl1.Command = "Stop" permet de stopper


immdiatement le fichier audio/vido en cours. Ainsi, pour lire un fichier ".wav",
commencer par l'ouvrir avec la commande "Open", puis pour la lecture de ce fichier,
utilisez la commande "Play". Si vous dsirez stopper la lecture en cours, utilisez la
commande "Stop". Enfin, n'oubliez pas de bien refermer le fichier l'aide de la
commande "Close" car il se peut qu'il reste encore en mmoire et donc qu'il occupe
encore une partie de votre mmoire vive.
Pour les fichiers "CDAudio", cela se passe un peu diffremment. Placez la portion de
code qui suit dans la procdure "Form_Load()":

Private Sub Form_Load()


MMControl1.DeviceType = "CDAudio"
MMControl1.Command = "Open"
MMControl1.UpdateInterval = 1000
MMControl1.Timeformat = 10
End Sub
Explication : La 1re instruction informe au contrle MMControl du type de fichier qui
va ouvert. Cela est ncessaire car les fichiers "CDAudio" sont diffrents des autres. La
2nde instruction permet d'ouvrir le premier morceau de musique. La 3me instruction
permet de dterminer l'intervalle de temps o doit s'excuter la procdure
MMControl1.StatusUpdate(), c'est--dire, toutes les secondes (ici, le temps est dfini en
milliseconde), la procdure MMControl1.StatusUpdate(). La 4me instruction dtermine
le format horaire utiliser pour exprimer les informations relatives la position en cours
dans le CDAudio, par exemple combien de temps se sont couls depuis la lecture d'une
musique.
Pour jecter le CD du CD-ROM, placez la portion de code qui suit dans la procdure
"MMControl1_EjectClick(Cancel As Integer)":
Private Sub MMControl1_EjectClick(Cancel As Integer)
MMControl1.Command = "Eject"
MMControl1.Command = "Close"
End
End Sub
Explication : Comme vous vous doutez, la 1re instruction permet d'jecter le CD, la
2nde de fermer le priphrique MCI (sorties audio/vido) et la dernire de quitter.
Enfin, le plus important, placez la portion de code qui suit dans la procdure
MMControl1_StatusUpdate():
Private Sub MMControl1_StatusUpdate()
Dim All, Seconde, Minute, Misc
All = MMControl1.Position Mod 16777216
Seconde = All / 65536
Minute = (All - Seconde * 65536) /256
Misc = All - Seconde * 65536 - Minute * 256
Piste.Caption = " Piste " + Str(Misc)
Temps.Caption = " Dure " + Minute + " : " + Seconde
End Sub
Explication : Les 3 premires instructions permettent d'extraire le numro de la piste et
du temps coul depuis le dbut. La 4me instruction place le numro de la piste en cours
dans le contrle "Piste" (il peut tre un contrle "Texbox" ou "Label"). Enfin, la
dernire instruction place la dure du temps coul depuis la premire piste dans le
contrle "Temps" (il peut tre un contrle "Texbox" ou "Label").

Cours 16 : Le langage de requte structur SQL


Tout d'abord, il faut que je vous explique ce que c'est que ce langage de requte et quoi
est-ce qu'il sert. Le SQL("Structured Query Language" ou pour les francophones,
"Langage de Requte Structur") est un langage qui a t cr dans le but de
communiquer avec une base de donnes relationnelle.
Pour ceux qui ne le savent pas, une base de donnes relationnelle est une base de donnes
o les donnes sont stockes dans des tables. Ces dernires sont en interaction les unes et
les autres.
ATTENTION :
Veuillez noter que le langage SQL peut varier d'un constructeur l'autre. Dans ce cas, il
vous faut consulter la documentation qui lui est propre. Le langage SQL abord ici, est le
langage standard et peut ne pas tre compatible avec votre base de donnes. Si vous
constatez que les codes qui suivent ne fonctionnent pas, eh bien, a veut dire qu'il n'est pas
compatible avec votre base.
SQL permet d'interroger une base de donnes, d'insrer de nouvelles donnes mais aussi
mettre jour vos donnes existantes. A prsent voyons cela de plus prs.

1. Recherche de donnes
1.1 La syntaxe
L'instruction utilise pour effectuer une recherche dans une base de donnes est
SELECT. Elle sert interroger une base et de retourner si elles existent, les donnes que
vous recherchez. La syntaxe de l'instruction SELECT est la suivante :
SELECT [*|ALL|DISTINCT] [TOP X [PERCENT]] Colonne1, Colonne2
FROM Tables
WHERE (Critre de recherche)|(Critre de jointure)
AND|OR [ (Critre de recherche) ]
GROUP BY [ ALL ] Colonne1, Colonne2
HAVING (Critre de recherche)
ORDER BY Colonnes [ ASC|DESC ]
Je sais, premire vue d'oeil, a peut paratre compliqu. Mais il n'en est rien en ralit.
En observant de plus prs, vous verrez que c'est trs abordable. Bon, je vous explique en
dtail cette syntaxe.
L'instruction SELECT permet de slectionner les donnes partir d'une ou plusieurs
colonnes d'une table.
L'argument * permet de faire une recherche dans toutes les colonnes de la table.

L'argument ALL indique de retourner toutes les valeurs recherches mme ceux
qui sont en double. Par exemple, dans une base de donnes contenant une liste de
tous les clients d'une socit, il est parfaitement possible qu'il y ait 2 clients ayant le
mme nom de famille ou le mme prnom. Cet argument indique de retourner les
donnes de ces 2 clients. Cet argument est celui par dfaut. Il est facultatif.
L'argument DISTINCT est le contraire de ALL. Il sert indiquer de ne retourner
que les donnes uniques. Il est facultatif.
L'argument TOP permet de prciser le nombre d'enregistrements que vous
souhaitez recevoir en rponse votre requte partir du premier enregistrement.
PERCENT indique le pourcentage X d'enregistrements que vous souhaitez
retournez. Il est facultatif.
Les mots Colonne1, Colonne2 indiquent dans quelle(s) colonne(s) de la table ou des
tables vous souhaitez effectuez votre recherche. N'oubliez pas la virgule si vous
effectuez votre recherche dans plusieurs colonnes.
La clause FROM sert indiquer partir de quelle(s) table(s) les donnes doivent tre
extraites. Cette clause est indispensable pour toute requte Tables reprsente le nom
des diffrentes tables dans lesquelles vous dsirez faire des recherches.
La clause WHERE permet d'insrer des critres de recherche dans votre requte. Il est
facultatif.
Le mot Critre de recherche reprsente les critres de recherche. Par exemple :
"WHERE Client = 'Jean'" ou bien "WHERE Prix < '1500'".
Le mot Critre de jointure permet d'effectuer une recherche dans une colonne
prsente dans 2 tables diffrentes.
Les oprateurs AND et OR permettent d'insrer un autre critre de recherche. Ils sont
facultatifs. Le mot Critre de recherche reprsente aussi des critres de recherche. Par
exemple : "WHERE Client='Alphonse' OR Client='Jean'".
La clause GROUP BY permet de regrouper des donnes. Il est facultatif.
Pour le mot ALLVoir prcdemment.
La clause HAVING permet d'insrer un critre de recherche pour les donnes
regroupes avec la clause GROUP BY. Il est facultatif.
Pour le mot Critre de recherche, voir prcdemment.
Enfin, la clause ORDER BY permet de trier les donnes par colonnes. Il est facultatif.
Colonnes reprsente le nom des colonnes dans lesquelles sont tries les donnes.
L'argument ASC permet de trier les donnes par ordre croissant. C'est l'ordre par
dfaut. Il est facultatif.
L'argument DESC , facultatif, permet de trier les donnes par ordre dcroissant.

Ce nest pas trs vident mais avec de la pratique, tout vous paratra clair. De plus, vous
n'tes pas oblig d'utiliser tous les clauses et arguments montrs ci-dessus.
Voici un exemple simple sur la faon d'utiliser les requtes avec SQL en s'appuyant sur le
contrle Data qui vous permet de visualiser les donnes :
Data.RecordSource="SELECT * FROM Fichier WHERE Prix<'1500' AND Prix>'3000'
ORDER BY Prix"

Il vous suffit de placer ce code dans un bouton de commande pour qu'il fasse apparatre
la liste de tous les prix compris entre 1500 et 3000 de la table "Fichier". La clause
ORDER BY permet de ranger le rsultat de votre recherche par ordre croissant (ordre
par dfaut).
1.2 Les oprateurs
Vous pouvez aussi faire appel des oprateurs pour spcifier des conditions dans une
instruction SQL ou servir de conjonction plusieurs conditions. Vous vous rappelez, vous
en avez dj vu 2 oprateurs avant : ce sont AND et OR. Ces deux l, sont des oprateurs
conjonctifs. Il existe 5 types d'oprateur en tout :
Les oprateurs de comparaisons servent vrifier les conditions d'galit, de nongalit, les valeurs suprieures et les valeurs infrieures : =, <>, <, >, <=, >=.
Les oprateurs conjonctifs permettent d'effectuer plusieurs conditions la fois. Les
voici : AND et OR.
Les oprateurs logiques servent effectuer des comparaisons. Les voici: IN, NOT
IN, BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, IS NULL, IS NOT NULL,
EXISTS, NOT EXISTS, ALL et ANY.
Les oprateurs arithmtiques servent effectuer des oprations de calcul. Les
voici : +,-,* et /.
Le tableau suivant vous montre comment utiliser tous ces oprateurs.
Oprateur

Exemple

Interprtation

WHERE Prix='1500'

Retourne les valeurs dont le prix est


gal 1500

<>

WHERE Prix<>'1500'

est diffrent de 1500

<

WHERE Prix<'1500'

est strictement infrieur 1500

>

WHERE Prix>'1500'

est strictement suprieur 1500

<=

WHERE Prix<='1500'

est infrieur ou gal 1500

>=

WHERE Prix>='1500'

est suprieur ou gal 1500

AND

WHERE Prix>'1500' AND


Prix<'2000'

est compris entre 1500 et 2000 non


inclus.

OR

WHERE Prix='1500' OR Prix='2000'

est gal 1500 ou 2000

IN

WHERE Prix IN('1500','2000')

est gal 1500 ou 2000

NOT IN

WHERE Prix NOT IN('1500','2000')

est diffrent de 1500 ou de 2000

BETWEEN

WHERE Prix BETWEEN '1500'


AND '2000'

est compris entre 1500 et 2000 non


inclus.

NOT
BETWEEN

WHERE Prix NOT BETWEEN


'1500' AND '2000'

n'est pas compris entre 1000 et 1500


non inclus.

LIKE

WHERE Nom LIKE 'c*' or LIKE

Retourne les valeurs dont le nom du

'*a'

client commence par un "c" ou se


terminant par un "a"

NOT LIKE

WHERE Nom NOT LIKE '*k*'

ne contient pas la lettre "k"

IS NULL

WHERE Prix IS NULL

dont aucun prix n'a t fix

IS NOT
NULL

WHERE Prix IS NOT NULL

Retourne les valeurs dont le prix a t


fix

EXISTS

WHERE EXISTS (SELECT Prix


FROM Fichier WHERE Prix='1500')

Test pour vrifier s'il y a des prix


gaux 1500

WHERE NOT EXISTS (SELECT


NOT EXISTS
Prix FROM Fichier WHERE
Prix='1500')

Test pour vrifier s'il y a des prix


diffrent 1500

ALL

WHERE Prix > ALL (SELECT Prix Test pour vrifier s'il y a des produits
FROM Fichier_concurrent WHERE concurrents se trouvant Marseille
Lieu='Marseille')
qui cotent moins cher que le vtre

ANY

WHERE Prix < ANY (SELECT Prix Teste le prix du produit pour savoir s'il
FROM Fichier_concurrent WHERE est plus bas que celui du concurrent se
Lieu='Marseille')
trouvant dans Marseille

1.3 Les fonctions mathmatiques


Il est aussi possible avec le langage SQL d'effectuer des calculs directement partir des
donnes. Cela se fait l'aide des fonctions mathmatiques suivantes :
Fonction

Utilisation

COUNT()

Comptabilise le nombre d'enregistrements retourn

SUM()

Calcule la somme des valeurs retournes

AVG()

Calcule la moyenne des valeurs retournes

MAX()

Retourne la plus haute des valeurs trouves

MIN()

Retourne la plus petite des valeurs trouves

Prenons un exemple pour mieux comprendre. Plaons ce bout de code dans un champ de
texte.
Data.RecordSource="SELECT COUNT(Produit) FROM Fichier
Ce code permet de voir combien est-ce qu'il y a de produits vendu dans un magasin.
Les autres fonctions fonctionnent de la mme manire que cette dernire.

2. Ajout et recherche de donnes

2.1 Ajout de donnes


Pour ajouter des donnes dans une base de donnes, on utilise l'instruction INSERT.
La syntaxe pour ajouter de nouvelles donnes avec SQL est la suivante :
INSERT INTO Table (Colonnes)
VALUES (valeurs1, valeurs2)
L'instruction INSERT permet d'insrer de nouvelles donnes.
Le mot-cl INTO est spcifique une base Access. Ne la mettez que que si
vous utilisez Access.
Le mot Table reprsente la table o doit tre insr ces nouvelles donnes.
Le mot Colonnes reprsente les colonnes dans lesquelles sont places ces
nouvelles donnes.
La clause VALUES vous permet d'insrer de nouvelles donnes. C'est ici qu'il faut
placer les nouvelles valeurs.
Les mots valeurs1, valeurs2 reprsentent les donnes qui vont tre entres
dans la base.
Par exemple :
INSERT INTO Fichier_client(Nom,Prnom,Id) VALUES ('Dupont','Jean','568')
Le client Dupont Jean, numro d'identification 568, a t ajout dans la base de donnes.
2.2 Suppression de donnes
La suppression de donnes se fait l'aide de l'instruction
La syntaxe pour supprimer des donnes l'aide de SQL est la suivante :

DELETE.

DELETE FROM table WHERE (Critre de recherche)


L'instruction DELETE permet d'effacer des donnes d'une base.
La clause FROM sert indiquer partir de quel table les donnes doivent
tre dtruites.
Le mot table reprsente le nom de la table.
La clause WHERE permet d'introduire un critre de recherche.
Le mot Critre de recherche permet d'effectuer une recherche afin de
dterminer quelles donnes doivent tre effac de la base.
Par exemple :
DELETE FROM Fichier_client WHERE Client='Dupont'
Le client Dupont a t supprim dans la base de donnes.

3. Mise jour de donnes


La mise jour de vos donnes se fait l'aide de l'instruction UPDATE. La syntaxe est :
UPDATE table SET Colonne='valeur'

WHERE (Critre de recherche)


L'instruction UPDATE permet de mettre jour vos donnes.
Le mot table reprsente le nom de la table dans lequel vont tre mis jour
des donnes.
La clause SET permet d'introduire un critre de recherche.
Le mot Colonne reprsente le nom de la colonne dans lequel vont tre mis
jour des donnes.
Le mot valeur reprsente la nouvelle valeur.
La clause WHERE permet d'introduire un critre de recherche.
Le mot Critre de recherche permet d'effectuer une recherche afin de
dterminer quelles donnes doivent tre effac de la base.
Par exemple :
UPDATE Fichier SET date='20/05/01' WHERE Produit='Lait'
Tous les enregistrements de la colonne date vont tre modifi par '20/05/01'. Mais avec la
clause WHERE, seul les produits laitiers seront concern.

4. Les transactions
Les transactions permettent de grouper une srie d'instruction SQL. Ne croyez pas que
a sert rien. Cette mthode de regroupement peut s'avrer tre trs utile lorsque vous
manipulez des donnes sensibles. En effet, lorsque qu'une instruction SQL choue, vous
avez la possibilit d'annuler la transaction et de revenir en arrire c'est--dire avant que
les donnes soient modifies. Cette transaction se fait l'aide des commandes suivantes :
BEGINTRANS marque le dbut d'une transaction.
COMMITTRANS marque la fin d'une transaction.
ROLLBACK annule la transaction et vous retrouvez vos donnes initiales.
Voici la syntaxe d'une transaction :
On Error GoTo Erreur
BeginTrans
Srie d'instruction
CommitTrans
Exit Sub
Erreur:
MsgBox Error$
RollBack
exit Sub

Vous avez d remarquer qu'une routine de traitement d'erreur a t place dans ce code.
C'est dans le cas o la transaction chouerait. Sinon, je pense que vous avez compris son
fonctionnement en voyant la syntaxe. Ce nest pas dur comprendre.

5. Recherche partir d'un champ de texte


Voici comment faire pour effectuer une recherche partir d'un mot tap dans un champ
de texte. Voil, il faut que vous placiez un champ de texte nomm par exemple, "Text1"

et un bouton de commande appel par exemple, "Chercher". Placez le bout de code


suivant dans la procdure du bouton :
valeur = "SELECT * FROM Liste WHERE Produit LIKE " + " ' " + Text1.Text + " ' "
Data.RecordSource = valeur
Data.refresh
Voil, c'est tout ! Si vous ne comprenez pas quelque chose, n'hsitez pas poser votre
question sur le forum.

Cours 17 : L'diteur de ressources


Tout d'abord, faut que je vous explique ce que c'est qu'un diteur de ressources et quoi
sert-il. C'est un utilitaire qui permet de stocker des donnes comme une base de donnes.
On pourrait dire que c'est une alternative pour stocker vos donnes au lieu de faire appel
des bases de donnes.
Vous pouvez par exemple vous servir de cet utilitaire pour permettre de traduire une
application en plusieurs langues. Vous pouvez y stocker 5 types de donnes :
Les chanes de caractre;
Les bitmaps;
Les icnes;
Les curseurs;
Les ressources de type binaires tels que les fichiers son(WAV) ou vido(AVI).
Note : La taille des fichiers est limit 64Ko.
Bon, en premier lieu, il faut le charger. Pour cela, allez dans le menu "Complments" et
choisissez la commande "Gestionnaire de complments". Ensuite, placez vous sur la ligne
"diteur de ressources" et cochez la case "Charger/Dcharger" en bas droite. Voil,
prsent, vous pouvez remarquer dans la barre d'outils, une icne avec des ptits carrs
verts, c'est l'diteur de ressources.
Lorsque vous avez cliqu sur cet icne, la fentre de l'diteur de ressource apparat. Vous
pouvez constater qu'il est vide. Normal, vous n'y avez encore rien mis. Passons aux
choses srieuses !
A droite de la barre d'outils, vous pouvez remarquer la prsence de 5 icnes permettant
de charger la ressource voulue. Chargeons par exemple des chanes. Cliquez sur l'icne
"Modifier les tables d'une chane...". Vous verrez alors apparatre un tableau. La
premire colonne contient le numro d'identification pour chacune des ressources. La
deuxime colonne contient les chanes de caractre en franais. Vous pouvez rajouter
d'autres colonnes si vous souhaitez avoir plusieurs langues. Les numros de la premire
colonne correspondent la langue utilise par votre ordinateur (LCID). Par exemple,
supposons que vous avez plac deux colonnes contenant des chanes en franais et en
anglais. Si la langue utilise par votre ordinateur est le franais, alors, ce sera les

ressources en franais qui sera utilis. Par contre, si la langue utilise par votre
ordinateur est l'anglais, alors, ce sera les ressources contenant les chanes en anglais qui
sera utilis. Remarquez, si la langue utilise par votre PC ne fait pas partie de vos
ressources, alors, ce sera la premire colonne qui sera utilis.
Passons la pratique maintenant !
Voici les fonctions qui permettent d'utiliser ces ressources dans votre projet. -Pour
charger une chane, vous utiliserez la fonction LoadResString(id) o "id" correspond au
numro de la chane contenue dans l'diteur de ressources.
-Pour charger un curseur, une icne ou un bitmaps, vous utiliserez la fonction
LoadResPicture(id,type) o "id" correspond au numro de la chane contenue dans
l'diteur de ressources et o "type" correspond au type de ressources que vous voulez
charger. Les diffrents types sont :
Pour les bitmaps, c'est 0 ou "vbResBitmaps"
Pour les icnes, c'est 1 ou "vbResIcon"
Pour les curseurs, c'est 3 ou "vbResCursor"
-Pour charger une ressource personnalise, vous utiliserez la fonction
LoadResData(id,type) o "id" correspond au numro de la chane contenue dans l'diteur
de ressources et o "type" correspond au type de ressources que vous voulez charger.
Pour ce dernier, modifiez la proprit en crivant par exemple "WAV" comme type pour
un fichier son WAV.
Enfin, si vous voulez que l'utilisateur puisse choisir la langue utiliser, placez toutes vos
chanes dans une seule colonne et utilisez la fonction "LoadResString" suivi de l'ID de la
chane.

Cours 18 : Le contrle Winsock


Winsock est le contrle idal et indispensable pour toute communication entre
ordinateurs. Il s'appuie principalement sur le protocole TCP/IP(Transmission Control
Protocol/Internet Protocol) qui est le langage commun utilise par la plupart des
ordinateurs pour communiquer. Winsock, diminutif de Windows Sockets, est souvent
utilise pour crer des applications client/serveur. Mais il peut trs bien servir d'autres
fins comme par exemple, accder un serveur par FTP (File Transfer Protocol). Au cas
o ceux qui ne savent pas en quoi consiste les applications client/serveur, je vais vous
expliquer un peu comment a fonctionne. De manire gnrale, ce sont deux programmes
qui communiquent en s'changeant des informations. D'une manire plus prcise,
l'application client envoie une requte l'application serveur pour demander des
informations. Dans le sens inverse, le serveur aprs avoir reu la requte du client, essaie
de rpondre cette requte puis renvoie la rponse de la requte au serveur.
Bon, je vous explique prsent comment fonctionne ce contrle. Le contrle Winsock
n'est pas prsent par dfaut dans la bote outils. Faites un clic droit sur la souris et
choisissez la commande "Composants". Cochez sur la case "Microsoft Winsock Control"
et validez.

1. Les proprits du contrle Winsock


Pour utiliser Winsock correctement, il est trs important de bien paramtrer les
proprits de ce dernier, faute de quoi, votre application ne marchera pas. Notez que
certaines de ses proprits ne sont accessibles que lors de l'criture du code. Toutes les
proprits du contrle ne sont pas expliques. Seules les plus importantes le sont :
BytesReceived : Indique en octets, les donnes prsentes dans la mmoire tampon de
rception. Cette proprit n'est disponible que lors de l'excution de l'application et n'est
pas modifiable. La valeur retourne est un nombre entier.
LocalHostName : Retourne le nom du serveur local. Cette proprit n'est disponible que
lors de l'excution de l'application et n'est pas modifiable. La valeur retourne est une
chane de caractres.
LocalIP : Retourne l'adresse IP du serveur local. Cette proprit n'est disponible que lors
de l'excution de l'application et n'est pas modifiable. La valeur retourne est une chane
de caractres.
LocalPort : Retourne le numro du port local. Cette proprit est disponible et modifiable
aussi bien lors de la conception que lors de l'excution de l'application. La valeur
retourne est un nombre entier.
Protocol : Retourne le protocole utilis. Vous avez le choix entre le mode TCP ou UDP :

Le mode TCP vous permet d'tablir et maintenir une connexion un serveur


donn.
Pour l'application Client, il vous faut le nom du serveur auquel vous vous
connectez ou bien son adresse IP ainsi que le port sur lequel vous tes connect.
Utilisez ensuite la mthode Connect pour vous connecter. Pour l'application
serveur, il vous faut connatre le port sur lequel l'application Client est connecte.
Faites ensuite appel la mthode Listen pour chercher savoir si l'application
Client cherche se connecter au serveur. Si c'est le cas, l'vnement
ConnectionRequest est activ et pour que la connexion entre l'application Client et
celle du serveur soit maintenue, faites appel la mthode Accept.
Enfin, aprs que la connexion soit maintenue, faites appel aux mthodes SendData
et Getdata pour envoyer et recevoir des donnes.
Le mode UDP (User Datagram Protocol) est un protocole qui n'tablit pas de
connexion. Ainsi, la relation de client/serveur disparat. L'application peut donc
tre aussi bien cliente que serveur. La distinction n'est plus faite avec ce mode.
RemoteHost : Retourne le nom du serveur distant. Cette proprit est disponible et
modifiable aussi bien lors de la conception que lors de l'excution de l'application.
RemotePort : Retourne le numro du port distant. Cette proprit est disponible et
modifiable aussi bien lors de la conception que lors de l'excution de l'application. La
valeur retourne est un nombre entier.
State : Retourne l'tat de la connexion. Pour finir, voici les diffrents tats possibles de la
proprit "State" :
ETAT

CONSTANTE

VALEUR

Ferm (par dfaut)

sckClosed

Ouvert

sckOpen

A l'coute

sckListening

Connexion suspendue

sckConnectionPending

Recherche du serveur distant

sckResolvingHost

Serveur distant trouv

sckHostResolved

Connexion en cours

sckConnecting

Connect

sckConnected

Fin de connexion avec l'application client

sckOpen

Erreur

sckError

2. Les mthodes du contrle Winsock


Passons maintenant aux mthodes les plus importantes du contrle Winsock :
Accept : Cette mthode sert montrer que le serveur a accept la connexion de
l'application client. Mais avant, il faut que la proprit "State" du contrle soit
paramtre "sckListening". Enfin, cette mthode n'est utilise que durant l'vnement
"ConnectionRequest".
Close : Cette mthode met fin la connexion TCP entre les applications client et serveur.
GetData : Cette mthode permet de rcuprer les donnes stockes dans la mmoire
tampon.
Listen : Cette mthode permet au serveur d'tre l'coute des requtes TCP provenant de
l'application client.
SendData : Cette mthode permet d'envoyer les donnes soit l'application client, soit au
serveur.
Connect : Cette mthode permet de se connecter l'ordinateur distant. Elle doit tre suivie
des arguments RemoteHost et Remoteport en les sparant par une virgule.

3. Les vnements du contrle Winsock


Pour finir, faut que je vous montre l'utilisation des vnements. Ces vnements sont trs
utiles pour le contrle Winsock.
Close : Cet vnement se dclenche quand l'ordinateur distant clt la connexion.
Connect : Cet vnement se dclenche quand l'ordinateur distant a russi tablir la
connexion.
ConnectionRequest : Cet vnement se dclenche quand le serveur reoit une requte
provenant de l'application client.
DataArrival : Cet vnement se dclenche quand l'application reoit des donnes.
SendComplete : Cet vnement se dclenche quand l'envoi des donnes est termin.
SendProgress : Cet vnement se dclenche quand les donnes sont en cours d'envoi.
Error : Cet vnement se dclenche quand une erreur apparat.

4. Un exemple d'applications client/serveur


Il ne suffit pas de connatre les proprits et mthodes du contrle Winsock pour pouvoir
l'utiliser correctement. Je vais donc vous expliquer un peu comment l'utiliser l'aide
d'un exemple. Le code suivant est celui d'un exemple d'application client simplifi :
Option Explicit
Private Sub Connexion_Click()
If Winsock.State <> sckConnected Then
Winsock.RemoteHost = "127.0.0.1"
Winsock.RemotePort = 1007
Winsock.Connect
Else
MsgBox "Vous tes dj connect"

End If
End Sub
Private Sub Quitter_Click()
Winsock.Close
End
End Sub
Private Sub Recherche_Click()
If Text1.Text <> "" Then
If Winsock.State = sckConnected Then
Winsock.SendData Text1.Text
Else
MsgBox "Non connect au serveur"
End If
Else
MsgBox "Veuillez tapez le nom!"
End If
End Sub
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
Dim strData
Winsock.GetData strData, vbString
Text2.Text = strData
End Sub
Explication du code de l'application client :
La procdure "Connexion_Click()" sert se connecter au serveur o les donnes que l'on
cherche savoir, sont stockes.
L'instruction de test "If...Then...Else...End If" sert savoir si l'application client
est dj connect ou pas au serveur.
Dans le cas o il n'est pas connect au serveur, eh ben on le connecte au serveur.
Mais avant, il faut lui fournir des informations sur le serveur, savoir son adresse
IP("RemoteHost") et le port("RemotePort") o sera tabli la connexion. Une fois
ceci faite, il ne reste plus qu' vous connecter l'aide de la mthode Connect.
Dans le cas o il est dj connect au serveur, eh ben, on affiche tout simplement un
message indiquant que vous tes dj connect.
La procdure "Quitter_Click()" sert mettre fin la connexion avec le serveur.
Pour cela, faites appel la mthode Close.
Enfin, utilisez l'instruction End pour quitter l'application.
N'oubliez surtout pas de mettre fin chaque fois votre connexion un serveur
car sinon, cela peut provoquer des erreurs.

Une fois connecte au serveur, la procdure "Recherche_Click()" sert faire une requte
auprs du serveur afin de chercher les donnes que l'on cherche. La premire instruction
de test sert savoir si le champ de texte (Text1) est vide.
Si ce n'est pas le cas, on fait appel une autre instruction de test pour savoir si vous
tes dj connect ou pas. Si vous l'tes, alors, on fait appel la mthode
SendData Pour envoyer au serveur ce qui est contenu dans le champ "Text1" et
rcuprer des infos sur le mot que vous avez entrez dans ce champ. Si c'est le cas,
alors un message vous indiquant que vous n'tes pas encore connect au serveur,
est affich.
Si c'est le cas, un message vous indiquant que le champ "Text1" est vide, est affich
votre cran.
La procdure "Winsock_DataArrival(ByVal bytesTotal As Long)" sert recevoir les
donnes du serveur.
Pour cela, on fait appel la mthode GetData suivi de l'argument dans lequel les
donnes seront stockes et enfin suivi du type de cet argument.
Enfin, on affecte au champs "Text2" les donnes que l'on a reu du serveur.
Le code suivant est celui d'un exemple d'application serveur. Les donnes que l'on
cherche, sont stockes dans une base de donnes que l'on accde l'aide du contrle
"Data". Il y aussi une chose rajouter dans la proprit du contrle "Winsock". Dans sa
proprit "Index", mettez "0". Cela correspond au nombre de personnes connectes au
serveur mais aussi au nime contrle Winsock(groupe contrle). En effet, chaque fois
que vous l'incrmentez, un "nouveau" contrle Winsock est charg l'aide de la
mthode "Load".

Option Explicit
Private Sub Form_Load()
Label6.Caption = Winsock(0).LocalHostName
Label4.Caption = Winsock(0).LocalIP
Winsock(0).LocalPort = 1007
List1.AddItem ("A l'coute du port:" & Winsock(0).LocalPort)
Winsock(0).Listen
End Sub
Private Sub Winsock_ConnectionRequest(index As Integer, ByVal
requestID As Long)
Dim Message As String Message = "ID de la connexion " &
requestID & " de " & Winsock(index).RemoteHostIP
List1.AddItem (Message)
index = index + 1
Load Winsock(index)
Winsock(index).Accept requestID
Label5.Caption = index
End Sub

Private Sub Winsock_DataArrival(index As Integer, ByVal


bytesTotal As Long)
Dim InData, OutData
Dim requete As String
Winsock(index).GetData InData, vbString
requete = "select from * where Nom='" & strData & "'"
Data.RecordSource = requete
strOutData = Data.Recordset.Fields("Passe")
Winsock(index).SendData OutData
End Sub
Private Sub Winsock_Close(index As Integer)
List1.AddItem ("Dconnexion de: " & Winsock(index).RemoteHostIP)
index = index - 1
Label5.Caption = index
Winsock(index).Close
EEnd Sub

Explication du code de l'application serveur:


La procdure "Form_Load()" va permettre au chargement de l'application, de placer
dans deux contrles "Label", le nom du serveur ainsi que son adresse IP. Ensuite, on
indique au serveur sur quel port ("LocalPort"), il doit se mettre en coute. Ensuite, il est
indispensable de placer le serveur l'coute de requtes de connexion. Pour cela, on fait
appel la mthode Listen.
La procdure "Winsock_ConnectionRequest(index As Integer, ByVal requestID As
Long)" sert traiter les requtes de connexions. L'instruction "index = index + 1" sert
indiquer qu'une nouvelle requte de connexion est faite au serveur. On charge un
"nouveau" contrle Winsock qui gre cette requte. Pour accepter cette requte, on fait
appel la mthode Accept suivi de l'argument "requestID".
La procdure "Winsock_DataArrival(index As Integer, ByVal bytesTotal As Long)" sert
recevoir les donnes provenant de l'application client et vice-versa. Pour recevoir les
donnes, on fait appel la mthode GetData. Pour envoyer des donnes, on fait appel la
mthode SendData
Enfin, la procdure "Winsock_Close(index As Integer)" sert mettre fin une
connexion. A chaque fois, qu'une personne se dconnecte, la proprit "Index" est
dcrment de 1. Pour fermer la connexion, utilisez la mthode Close.

Vous aimerez peut-être aussi