Vous êtes sur la page 1sur 91

VISUAL BASIC

LES CONCEPTS FONDAMENTAUX

INTRODUCTION _______________________________________________________________ 4
I-

Prsentation ___________________________________________________________________ 4

II-

Les versions de Visual Basic ______________________________________________________ 4

III-

Les concurrents de Visual Basic___________________________________________________ 5

IV-

gnralits sur le langage ________________________________________________________ 5

Le projet_______________________________________________________________________ 9
I-

Prsentation _____________________________________________________________________ 9

II- Notion de module_________________________________________________________________ 9


III- Mthode de programmation _______________________________________________________ 11

L'diteur Visual Basic___________________________________________________________ 13


I-

Utilisation de l'diteur____________________________________________________________ 13

II- Principes d'criture ______________________________________________________________ 14

Les lments du langage_________________________________________________________ 16


I-

Les variables ___________________________________________________________________ 16

II- Types utilisateurs _______________________________________________________________ 18


III-

Les tableaux __________________________________________________________________ 18

IV-

Structures algorithmiques_______________________________________________________ 19

V- Les oprateurs __________________________________________________________________ 21


VI-

Les procdures _______________________________________________________________ 22

VII-

Les fonctions prdfinies________________________________________________________ 26

Notions d'objets ________________________________________________________________ 29


I-

Dfinition d'objet________________________________________________________________ 29

II- Convention d'criture des objets ___________________________________________________ 29


III-

Les Classes d'objets ___________________________________________________________ 30

IV-

Les proprits d'un objet _______________________________________________________ 30

V- Les mthodes d'un objet __________________________________________________________ 36


VI-

Evnements et procdures d'vnement ___________________________________________ 37

Les objets propres un projet_____________________________________________________ 38


I-

L'objet App ____________________________________________________________________ 38

Les Feuilles Visual Basic ________________________________________________________ 41


I-

Prsentation ____________________________________________________________________ 41

B.ROCHE / IIRIAM 10/00

Page 1 / 92

BR_VB_concepts.doc

II- Mthodes et vnements d'une feuille _______________________________________________ 42


III-

Les Botes de dialogue__________________________________________________________ 44

Les contrles __________________________________________________________________ 49


I-

les contrles standards ___________________________________________________________ 49

II- Les contrles de listes et fichiers ___________________________________________________ 56

le Glisser - Dplacer (Drag and drop) ______________________________________________ 59


I-

principe _______________________________________________________________________ 59

II- Proprits, vnements, mthodes __________________________________________________ 59

L'accs aux donnes : le contrle Data _____________________________________________ 62


I-

Introduction____________________________________________________________________ 62

II- Le contrle Data ________________________________________________________________ 62


III-

Les contrles dpendants _______________________________________________________ 64

IV-

Les contrles dpendants spcifiques______________________________________________ 66

L'accs aux donnes : les fichiers _________________________________________________ 73


I-

Introduction____________________________________________________________________ 73

II- Fonctions relatives aux fichiers_____________________________________________________ 73


III-

Les fichiers squentiels _________________________________________________________ 74

IV-

Les fichiers alatoires __________________________________________________________ 76

V- Les fichiers binaires _____________________________________________________________ 77

Les applications MDI ___________________________________________________________ 78


I-

Prsentation ____________________________________________________________________ 78

II- Cration d'une feuille MDI________________________________________________________ 79


III-

Organisation des feuilles-enfants _________________________________________________ 79

La gestion des erreurs ___________________________________________________________ 80


I-

Introduction____________________________________________________________________ 80

II- Intercepteur d'erreur ____________________________________________________________ 80


III-

Ecriture d'une routine de gestion d'erreur _________________________________________ 81

IV-

Sortie d'une routine de gestion d'erreur ___________________________________________ 81

V- Erreurs inattendues______________________________________________________________ 82

Le dbogage___________________________________________________________________ 85
I-

Introduction____________________________________________________________________ 85

II- Types d'erreurs _________________________________________________________________ 85


III-

Aide fournie par les outils de dbogage ____________________________________________ 86

IV-

La fentre de dbogage _________________________________________________________ 88

Les menus ____________________________________________________________________ 90


I-

Prsentation ____________________________________________________________________ 90

II- Conception _____________________________________________________________________ 91


B.ROCHE / IIRIAM 10/00

Page 2 / 92

BR_VB_concepts.doc

III-

Conventions d'affectation des noms de menus_______________________________________ 92

B.ROCHE / IIRIAM 10/00

Page 3 / 92

BR_VB_concepts.doc

INTRODUCTION

I- PRESENTATION
Visual Basic de Microsoft est la fois un langage et un atelier de dveloppement.
On retrouve le langage dans chaque produit de la gamme Office : Word, Excel, Access. Dans les
versions antrieiures office 97, on le trouvait sous le nom de VBA (Visual Basic for Application)
Lenvironnement de dveloppement Visual Basic permet de crer des applications en mode
graphique (GUI, Graphical User Interface) pour toutes les versions de Windows (3.x, 95, NT).
C'est donc un langage de haut niveau, simple mettre en uvre, contrairement aux langages C
et C++. En effet, Visual Basic se charge de faire appel et de passer les paramtres aux API
(fonctions de base) de Windows.
Que l'on ait l'intention de crer un petit utilitaire ou une application pour une entreprise ou mme
des applications partages internationales sur Internet, Visual Basic met disposition tous les
outils ncessaires :
Les fonctions d'accs aux donnes, qui permettent de crer des bases de donnes et des
applications pour les formats de base de donnes les plus utiliss (Microsoft ou autres),
La technologie ActiveX qui permet d'utiliser les fonctionnalits offertes par d'autres
applications, telles que le traitement de texte, le tableur et autres applications Windows,
Les fonctionnalits Internet facilitent l'accs des documents et des applications sur Internet
depuis l'application.
Visual Basic permet de crer un pseudo-code excutable, c'est dire que l' application finale est
un vritable fichier .exe qui utilise l'excution une bibliothque de liaisons dynamiques (DLL,
Dynamic-Link Library) qui sont libres de diffusion.
Les applications dveloppes avec Visual basic peuvent donc tre distribues librement.
Visual Basic rpond certainement la grande majorit des besoins de dveloppement
notamment en informatique de gestion.
Il noffre cependant pas le degr de finesse et de souplesse ncessaire la production de
logiciels universels comme Word ou Excel. Ce domaine reste du ressort du langage C++.

II- LES VERSIONS DE VISUAL BASIC


C'est seulement partir de la version 3.0 que Visual Basic permet d'accder aux bases de
donnes. C'est partir de ce moment que Visual Basic a connu un rel succs.
La version 4 intgre galement les nouvelles versions du moteur de base de donnes JET (2.5
en 16 bits et 3.0 en 32 bits) permettant la gestion de l'intgrit rfrentielle, et les mises jour en
cascade.
Visual Basic est disponible en trois versions :

B.ROCHE / IIRIAM 10/00

Page 4 / 92

BR_VB_concepts.doc

L'dition Initiation permet aux programmeurs de crer facilement de puissantes applications


pour Microsoft Windows 95 et Windows NT. Elle comprend tous les contrles intrinsques
ainsi que les contrles Grid, Tab et les contrles dpendants.
L'dition Professionnelle offre une gamme d'outils aux fonctionnalits compltes permettant de
dvelopper des solutions autonomes. Elle comprend toutes les fonctionnalits de l'dition
Initiation ainsi que des contrles ActiveX supplmentaires, notamment les contrles Internet, et
le module Crystal Reports.
L'dition Entreprise permet de crer des applications partages fiables au sein d'une quipe.
Elle comprend toutes les fonctionnalits de l'dition Professionnelle, ainsi que le module
Automation Manager, le Gestionnaire de composants, des outils de gestion de base de
donnes, le systme de contrle de version orient projet Microsoft Visual SourceSafe, et bien
plus encore.

III- LES CONCURRENTS DE VISUAL BASIC


Visual Basic connat de nombreux concurrents, nous n'en citerons que quelques uns :
Access
Delphi
Powerbuilder
Windev
Oracle / Developper 2000

IV- GENERALITES SUR LE LANGAGE


1.

UN LANGAGE ORIENTE OBJETS

VB est un langage orient objet.


Les feuilles et contrles sont des objets, tout comme les bases de donnes et beaucoup
d'autres choses. En fait on utilise en permanence des objets en VB. il est mme facile de crer
ses propres objets partir des classes que l'on dfinit, et d'utiliser des objets pour simplifier le
code et augmenter le taux de rutilisation du code.

2. UNE PROGRAMMATION EVENEMENTIELLE


VB est un langage de programmation vnementielle, c'est dire que ce sont les actions des
utilisateurs sur les objets apparaissant l'cran qui dclenchent l'excution de procdures.
L'enchanement des procdures n'est pas prdfini l'avance comme dans un langage de
programmation procdural. On peut donc dire que c'est l'utilisateur qui pilote l'application comme
bon lui semble et non comme le programmeur l'a crit dans une programmation classique.

3. UNE PROGRAMMATION GUIDEE ET ASSISTEE


VB permet de faire une partie de la programmation d'une application sans crire de code. En
effet, l'utilisation de la souris et des icnes va grandement simplifier la programmation.

B.ROCHE / IIRIAM 10/00

Page 5 / 92

BR_VB_concepts.doc

4. PREMIER CONTACT
Avant de commencer, il est ncessaire de se familiariser avec un certain nombre de termes qui
seront rgulirement utiliss dans VB :
Terme

Description

projet

regroupe les feuilles et les modules dune application

feuille

fentre Windows munie de ses contrles et du code associ

module

groupe de routines non lies un vnement et partageables


par lensemble des feuilles

contrle

objet apparaissant dans une feuille et permettant une interaction


et lapplication

vnement

action laquelle un contrle ragit

proprit

permet de dfinir une caractristique dune fentre ou dun


contrle. Une proprit permet de dfinir laspect dun contrle,
le comportement dun contrle ou dune fentre vis vis dun
vnement

mthode

Traitement prdfini et non modifiablepermettant dagir sur une


fentre ou un contrle

Au lancement de VB, on voit apparatre un cran sensiblement ressemblant ceci :

B.ROCHE / IIRIAM 10/00

Page 6 / 92

BR_VB_concepts.doc

Il est compos des parties suivantes :


La barre de menus
Elle est compose d'un menu et d'icnes, permettant de mettre en uvre les principales
fonctionnalits de VB.
La bote outils
Elle contient les outils que l'on peut utiliser pour dessiner des contrles sur les feuilles. Chacun
de ces outils reprsente un contrle.
L'diteur de feuilles
Reprsente une feuille de travail, c'est dire l'interface homme/machine. C'est par le biais de
feuilles que vont s'effectuer les entres/sorties. Sous access, on les appelle les formulaires.
La fentre de projet
Elle recense tous les composants d'un projet
La fentre des proprits
Elle recense toutes les proprits relatives l'objet slectionn (feuille, contrle,...). On
remarquera que la signification de la proprit slectionne apparat automatiquement en bas de
cette fentre.
La fentre prsentation des feuilles :
Elle indique la position de la feuille courante quand elle apparatra l'cran en mode application.
Cette fonctionnalit n'a d'importance que lorsque la fentre ne doit pas apparatre en plein cran.
B.ROCHE / IIRIAM 10/00

Page 7 / 92

BR_VB_concepts.doc

On pourra galement faire apparatre d'autres fentres, comme la fentre de palette de couleurs
ou la fentre de dbogage. On verra ces fentres ultrieurement dans le cours.
Toutes ces fentres peuvent tre simultanment ouvertes.

B.ROCHE / IIRIAM 10/00

Page 8 / 92

BR_VB_concepts.doc

LE PROJET

I- PRESENTATION
* Toute application Visual basic est appele projet.
Plusieurs fichiers seront crs pour chaque projet, savoir :
un fichier de projet qui rpertorie tous les composants (.VBP)
Il est obligatoire, et sert mmoriser la liste de tous les fichiers ncessaires au projet, ainsi
que les options d'environnement du projet. C'est un fichier texte dont on peut afficher le
contenu.
Un ou plusieurs fichiers contenant des contrles ActiveX. Ces contrles taient auparavant
appels contrles OLE ou contrles personnaliss. Les ditions professionnelles et
entreprises contiennent un grand nombre de contrles ActiveX et offrent aussi la possibilit de
crer ses propres contrles. D'autres contrles ActiveX destins de multiples usages sont
disponibles auprs de nombreux fournisseurs.
un fichier en donnes binaires pour chaque feuille contrlant les proprits ayant des donnes
binaires comme valeurs (.FRX)
un fichier de ressources unique (.RES)
Des fichiers modules (.FRM, .BAS ou .CLS)

II- NOTION DE MODULE


Dans Visual Basic, le code est stock dans des modules. Il existe trois types de modules :
module de feuille,
module standard,
module de classe.
Chaque module de feuille, standard et de classe peut contenir les lments suivants :
Des dclarations : on peut inclure des dclarations de constantes, de types, de variables et de
procdures de bibliothque de liaison dynamique (DLL) de niveau module pour les modules de
feuille, de classe ou standard.
Des procdures : de type Sub, Function ou Property qui contiennent des morceaux de code qui
peuvent tre excuts en bloc et plusieurs fois dans l'application.

1. MODULES DE FEUILLE
Les modules de feuille (dont le nom de fichier possde l'extension .FRM) sont le fondement de la
plupart des applications VB. Ils peuvent contenir des procdures qui grent :
des vnements,
des procdures gnrales,
des dclarations de niveau feuille de variables, de constantes, de types et de procdures
externes.
B.ROCHE / IIRIAM 10/00

Page 9 / 92

BR_VB_concepts.doc

Le code que l'on crit dans un module de feuille est propre l'application laquelle la feuille
appartient. Il peut aussi faire rfrence d'autres feuilles ou objets internes cette application.

2. MODULES STANDARD
Les modules standard (dont le nom de fichier possde l'extension .BAS) sont des conteneurs de
procdures et de dclarations gnralement utiliss par d'autres modules internes l'application.
Ils peuvent contenir des dclarations de variables, de constantes, de types, de procdures
externes et de procdures globales.
Le code crit dans un module standard n'est donc pas ncessairement li une application
particulire. Un module standard peut tre rutilis dans plusieurs applications diffrentes,
condition de ne pas faire rfrence aux feuilles et aux contrles par leur nom.
On peut visualiser aisment le contenu, puisque c'est un fichier ASCII.
Un projet aura de zro n modules standards.
On trouvera souvent un module .BAS (appel souvent main), qui contiendra les dclarations de
variables globales au projet.

3. MODULES DE CLASSE
Les modules de classe (dont le nom de fichier possde l'extension .CLS) sont le fondement de la
programmation oriente objet dans VB; On crit du code dans les modules de classe pour crer
de nouveaux objets, qui peuvent inclure ses propres mthodes et proprits personnalises.

* remarques :
on pourra donner le nom que l'on veut chacun de ces fichiers (modules), mais il est
fortement conseill de leur attribuer le nom spcifi dans la proprit name de la feuille.
une fois le projet termin, il est possible de crer un fichier excutable (.EXE) en choisissant
dans le menu Fichier la commande Crer un fichier EXE. Tous les fichiers crs deviendront
alors inutiles, l'exception des fichiers .DLL, .VBX et .OCX qui devront tre stocks dans un
dossier accessible par un path.

III- ERREUR! SIGNET NON DEFINI.RACCOURCIS CLAVIER


Raccourci

Fonction

F5
Ctrl+Pause
F7
Shift+F7
Shift+F2 en tant positionn sur un
nom de procdure
Ctrl+Shift+F2

Ctrl+J
Ctrl+Shift+Initiale d'une proprit
B.ROCHE / IIRIAM 10/00

Excution
Bascule en mode arrt, trs utile en cas de
verrou (boucle infinie sur une msgbox par
ex.).
Bascule vers le module de code d'une
feuille.
Bascule du code vers l'objet.
Affiche le code de la procdure appele.
Affiche la procdure prcdemment
consulte.
Affiche nouveau la liste automatique des
mthodes et proprits d'un objet. Se
positionner dans la mthode ou la
proprit changer.
Accs immdiat dans la fentre des

Page 10 / 92

BR_VB_concepts.doc

proprits sur celle commenant par


l'initiale choisie.

IV- METHODE DE PROGRAMMATION


Les points suivants ne reprsentent que des conseils que le programmeur est libre de suivre ou
de ne pas suivre.
Toutefois, il est conseill de travailler avec rigueur et de faire une bonne analyse du problme
grer, surtout si l'application dvelopper est complexe.
Il est recommand de suivre les tapes suivantes :

* crer le projet
Crer sur le disque un dossier (rpertoire) qui ne contiendra que les fichiers propres au projet.
Ds le lancement de VB, faire Fichier / Enregistrer le projet sous... ds lors qu'il s'agit d'un
nouveau projet

* crer les fentres


Il est prfrable, au pralable, d'avoir conu le schma d'enchanement des fentres de
l'application.
On crera alors l'ensemble des fentres du schma et on les laissera vierges pour l'instant.
Il faudra, pour chaque feuille, lui attribuer trois noms :
le nom en clair, qui apparatra dans le bandeau de la feuille
le nom raccourci, qui est le nom qui apparatra dans les programmes (15 caractres
maximum).
le nom de sauvegarde, qui reprsente le nom sous lequel la feuille sera sauvegarde
sur le disque. ( 8 caractres maximum).
Il est ncessaire d'attribuer les noms de manire rigoureuse et selon un principe tabli au pralable,
afin de faciliter dans un premier temps la programmation et dans un deuxime temps la maintenance.
* placer les contrles
Sur chaque feuille, en leur donnant leur taille et leur emplacement dfinitifs. Pour les aligner, on
peut choisir l'option afficher la grille dans Outils / Options / Environnement.
Initialiser alors les proprits de chaque contrle, dont notamment le nom (proprit name)
Mettre true la proprit cancel de tous les boutons Annuler
Mettre true la proprit Default de tous les boutons OK des fentres de saisie.
Mettre true la proprit cancel de tous les boutons Annuler des fentres de demande de
confirmation.
* programmer et tester les procdures d'vnement
Ne pas programmer tout en mme temps, mais au contraire, programmer de manire
progressive, en testant le programme le plus souvent possible, afin de n'avoir pas trop de
difficults trouver une erreur.

B.ROCHE / IIRIAM 10/00

Page 11 / 92

BR_VB_concepts.doc

Faire des indentations (dcalages droite) pour les structures si, tant que ,...
Ne pas hsiter commenter le programme notamment sur les points suivants :
titres de paragraphes afin de bien faire ressortir la structure du programme,
explications dtailles pour toutes les sections de programmes complexes.
Tester et dboguer
* crer l'aide en ligne
* imprimer la documentation automatique du projet
* crer le programme excutable
* crer les disquettes d'installation
* rdiger la notice d'installation
* rdiger la notice d'utilisation
* former les utilisateurs au projet

B.ROCHE / IIRIAM 10/00

Page 12 / 92

BR_VB_concepts.doc

L'EDITEUR VISUAL BASIC

Il est important de matriser la mcanique de l'criture du code dans VB, afin de rduire les temps
de saisie de code, par exemple, l'diteur de code de VB fournit automatiquement des
informations sur le code que l'on tape. Ainsi, si on tape le nom d'un contrle suivi de l'oprateur
point (.), les proprits et mthodes de ce contrle s'affichent automatiquement dans une zone
de liste. De mme, quand on tape le nom d'une fonction dans la fentre Code, VB indique
automatiquement la syntaxe de celle-ci.
Comme tous les autres langages de programmation, VB possde ses propres rgles
d'organisation, de modification et de formatage du code. On va les dtailler maintenant.

I- UTILISATION DE L'EDITEUR
L'diteur de code de Visual Basic est une fentre dans laquelle on crit la majeure partie du
code. Elle se prsente sous la forme :

Liste objet

Liste procdure

Boutons de slection d'affichage

B.ROCHE / IIRIAM 10/00

Page 13 / 92

BR_VB_concepts.doc

II- PRINCIPES D'ECRITURE


1. ACHEVEMENT DE L'ECRITURE DE CODE
Visual Basic facilite l'criture du code, grce des fonctionnalits capables de complter
automatiquement les instructions, les proprits et les arguments.
Au fur et mesure que l'on tape le code, l'diteur affiche les choix, les valeurs ou les prototypes
de fonction ou d'instruction appropris.
On peut activer ou dsactiver ces options ainsi que d'autres valeurs du code l'aide de l'onglet
diteur de la bote de dialogue Options, laquelle on accde l'aide de la commande Options
du menu Outils.
Quand on spcifie le nom d'un contrle dans le code, le Complment automatique des
instructions affiche une liste droulante des proprits disponibles pour ce contrle. Il suffit alors
de taper les premires lettres du nom de la proprit pour slectionner automatiquement cette
dernire dans la liste. La touche TAB termine automatiquement la frappe.
Cette option s'avre aussi utile lorsque l'on ne connat pas avec certitude les proprits
disponibles pour un contrle donn.
La fonctionnalit Info express automatique affiche la syntaxe des instructions et des fonctions.
Quand l'on tape le nom d'une instruction ou d'une fonction valide, la syntaxe apparat
immdiatement en dessous de la ligne courante tandis que le premier argument s'affiche en gras.
Une fois que l'on a spcifi la valeur du premier argument, le deuxime apparat en gras.

2. CRITURE DES INSTRUCTIONS


On peut rpartir une instruction sur plusieurs lignes dans la fentre de l'diteur de code en
utilisant le caractre de continuation de ligne (un espace suivi d'un trait de soulignement).
Exemple :
Data1.RecordSource = _
"SELECT * FROM Titles, Publishers" _
& "WHERE Publishers.PubId = Titles.PubID" _
& "AND Publishers.State = 'CA'"
On peut aussi placer plusieurs instructions sur une ligne si on les spare par deux-points (:)
Exemple :
Text1.Text = "Bonjour" : Red = 255 : Text1.BackColor = Red
* Remarque : Il est nanmoins prfrable de placer chaque instruction sur une ligne
distincte afin d'amliorer la lisibilit de votre code.
Les commentaires peuvent figurer la suite d'une instruction, sur la mme ligne, ou occuper
une ligne entire.

3. CONVENTION D 'AFFECTATION DE NOMS DANS VISUAL BASIC


Les noms de ces procdures, variables et constantes dclares dans VB doivent se conformer
aux rgles suivantes :
Ils doivent commencer par une lettre.
Ils ne peuvent pas contenir de point ni de caractre de dclaration de type (caractres
spciaux qui spcifient un type de donnes).

B.ROCHE / IIRIAM 10/00

Page 14 / 92

BR_VB_concepts.doc

Ils ne peuvent pas dpasser 255 caractres. Les noms des contrles, feuilles, classes et
modules sont limits 40 caractres.
Ils ne peuvent pas tre identiques des mots cls avec restrictions.
Un mot cl avec restrictions est un mot qui fait partie du langage Visual Basic. Il s'agit des
instructions prdfinies (comme Interface et Loop), des fonctions (comme Len et Abs) et des
oprateurs (comme Or et Mod).
On peut utiliser les crochets pour faire rfrence une feuille ou un contrle mais pas pour
dclarer une variable ou une procdure portant le mme nom qu'un mot cl avec restrictions. Les
crochets permettent aussi d'obliger Visual Basic accepter les noms issus d'autres bibliothques
de types et qui entrent en conflit avec des mots cls avec restrictions.
On retrouve cette notion dans le code VB Applications
On se rapportera galement page 29 : Convention d'criture des objets

B.ROCHE / IIRIAM 10/00

Page 15 / 92

BR_VB_concepts.doc

LES ELEMENTS DU LANGAGE

I- LES VARIABLES
1. LE NOM DES VARIABLES
Le nom d'une variable commence par une lettre et doit comporter au plus 255 caractres

2. DECLARATION IMPLICITE OU EXPLICITE


Il n'est pas obligatoire de dclarer les variables utilises dans un programme VB.
C'est la dclaration implicite.
VB alloue automatiquement une place en mmoire ds qu'il trouve une variable. C'est simple,
mais cela peut causer quelques problmes. En effet, si on fait une faute de frappe dans le
programme, pour faire appel une variable, VB allouera automatiquement un deuxime
emplacement (ex : rfcli et refcli). Le programme fonctionnera trs bien, mais il ne donnera pas
les rsultats attendus. La recherche de l'erreur peut s'avrer bien longue et complique...
Il est donc prfrable de dclarer les variable de manire explicite.
Pour que VB vrifie qu'une variable est dclare avant une premire utilisation, il suffit de cocher
la case Declare Variable Declaration de la bote de dialogue OPTIONS (onglet environment),
accessible par le menu OUTILS.
En fait lorsque cette option est active, VB ajoute dans tous les modules la ligne Option Explicit.
* Remarque : Visual Basic ne diffrencie pas les minuscules des majuscules. Ainsi, il ne fait pas
de diffrence entre la variable nomcli et Nomcli ou NomCli

3. DECLARATION EXPLICITE
Dans le cadre d'une dclaration explicite, on utilise une des instructions suivantes :
Dim : variable dont la porte est limite au domaine l'intrieur duquel elle est dclare. Ce
domaine peut tre une procdure, une fonction, un module ou une feuille. La dure de vie de
la variable est alors limite au domaine l'intrieur duquel elle est dclare.
Static : Fonctionne sur le mme principe qu'une variable dclare avec Dim, mais sa dure de
vie est celle du projet. Elle conserve sa valeur en mmoire tout au long du projet, mme si
moment elle n'est pas accessible du fait de sa porte.
Public : variable devant tre dclare dans la section dclaration d'un module, qui sera dite
globale l'application, et qui sera accessible de n'importe quel endroit de l'application.

B.ROCHE / IIRIAM 10/00

Page 16 / 92

BR_VB_concepts.doc

4. LES TYPES DE VARIABLES


Les diffrents types sont :
Type
Byte

code
type
17

entier non sign sur 1 octet : de 0 255

Integer

entier sign sur 2 octets : de -32768 +32767

Long

entier sign sur 4 octets

Boolean
( partir de V4)
Single

11

True ou False sur 2 octets

nombre dcimal virgule flottante, sign, sur 4 octets

Double

nombre dcimal virgule flottante, sign, sur 8 octets

Currency

virgule fixe sign (4 chiffres dcimaux) sur 8 octets

String

chane de caractres longueur variable

String * n

Chaine de caractres de longueur fixe (n tant la longueur)

Date

Date et/ou heure, sur 8 octets

Object

Dfinition

rfrence un objet quelconque

Variant

12

tout type (numrique, chane, objet, tableau)


utiliser avec prudence !...

* Remarques :
Une chane de caractres s'crit entre guillemets ("ceci est en exemple de chane")
Une simple quote sur une ligne implique que le reste de la ligne est du commentaire ( ' )
La taille d'une chane peut aller jusqu' 65400 octets, une chane est de taille fixe ou
variable.
La valeur True quivaut au nombre entier 0
La valeur False quivaut au nombre entier -1
Le type variant admet tout type de donnes. VB associe cette variable le type de la
valeur attribue lors de l'affectation.
On peut tester le type de la variable avec la fonction VarType. En plus des valeurs vues ci
dessus, on pourra trouver les valeurs suivantes :
vbObject
vbError
vbDataObject
vbArray

9
10
13
8192

OLE Automation object.


Error.
Non-OLE Automation object.
Array.

5. EXEMPLES
dim nom as string
' ceci est une chane de taille variable (adapte son contenu)
dim ville as string * 20 ' ceci est une chane de taille fixe gale 20
static Heure as date
Dim numcli as integer, adresse as string, ville, cp as string
Dans ce cas l, ville sera du type variant car on n'a pas dfini de type.

B.ROCHE / IIRIAM 10/00

Page 17 / 92

BR_VB_concepts.doc

6. CAS PARTICULIER : LES CONSTANTES


On utilise l'instruction const
exemple : const Maxi = 100

II- TYPES UTILISATEURS


Il peut arriver que l'on ait besoin de se crer des types particuliers.
On utilise alors l'instruction Type, commenant apr le mot cl type et se finit par end type.
On dclare gnralement les types utilisateurs dans la procdure dclarations du module.
Ces types de donnes peuvent contenir un ou plusieurs lments d'un type de donnes
prdfini, d'un type de tableau ou d'un autre type prcdemment dfini par l'utilisateur
exemple :
type enr_pers
nom as string * 20
prenom as string * 15
end type
Une fois la dclaration de type faite, on peut dclarer des variables ayant ce type:
dim personne as enr_pers
personne est une variable ncessitant 35 octets en mmoire.
On peut accder un champ de la manire suivante :
Affectation : personne.nom = "Dupont"

III- LES TABLEAUX


Le tableau est un type complexe permettant de regrouper des informations de mme nature.
Visual Basic admet jusqu' 60 dimensions, mais il est bien vident qu'il faut viter de travailler sur
de telles structures !!!
La dclaration d'un tableau se fait tout simplement par l'instruction Dim (ou Static ou Public).
L'indice d'un tableau commence toujours 0. On peut toutefois, ne travailler qu' partir de l'indice
1, ce qui laisse les vide les emplacements d'indice 0.

exemples :
dim tab_eleves (20) as string*20
dim tab_notes (10,20) As integer
dim tab_noms (5)

'tableau 1 dimension, 21 lments de 20 caractres '


'tableau 2 dimensions 11 lignes et 21 colonnes d'entiers'
'tableau 1 dimension, de type variant '

Ce tableau permet de stocker 200 valeurs numriques.

B.ROCHE / IIRIAM 10/00

Page 18 / 92

BR_VB_concepts.doc

On accde aux diffrents lments de la manire suivante :


tab_notes (i, j)

exemple : tab_notes(4,8) = 15

Pour dclarer un tableau comportant des valeurs structures :


type enr_pers
nom as string * 20
prenom as string * 15
end type
dim tab_pers (10) as enr_pers
Ce tableau comporte 21 emplacements pouvant mmoriser 10 chanes de longueur 20 et 10
chanes de longueur 15.
L'accs se fait de la manire suivante :
tab_pers(i).nom
* Remarque :
Les tableaux peuvent tre redimensionns en cours d'excution avec l'instruction redim
(utiliser preserve pour conserver les anciennes donnes).
Si l'on veut connatre les bornes du tableau en cours d'excution, on utilisera les fonctions
Lbound et UBound.

IV- STRUCTURES ALGORITHMIQUES


1. STRUCTURES CONDITIONNELLES
Algorithme

Visual Basic

Si condition
alors instructions
[sinon instructions]
Fin si

If condition
Then instructions
[Else instructions]
End if

Si condition
alors instructions
[sinon si condition2
alors instructions
[sinon instructions]]
Fin si

If condition
Then instructions
[ElseIf condition2
Then instructions
[Else instructions]]
End If

Selon variable
cas valeur1 instructions
cas valeur2 instructions
...
[autres cas instructions]
Fin selon

Select case variable


case valeur1 instructions
case valeur2 instructions
...
[case else instructions]
End select

B.ROCHE / IIRIAM 10/00

Page 19 / 92

BR_VB_concepts.doc

exemples
If total >= 1000
then remise = 0.2
end if

If total >= 1000


then remise = 0.4
else remise = 0.2
end if

if total < 1000


then remise = 0.2
elseif codecli = "G"
then remise =0.3
else remise = 0.4
end if

select case remise


case 1000 to 2000
remise = 0.2
case 2000 to 3000
remise = 0.3
case else
remise = 0.35
typeclient = " suivre"
end select

2. LES BOUCLES
Algorithme
rpter
suite dactions faire
jusqu <cond>

Visual Basic
Do
suite dactions faire
Loop Until <cond>

Le programme fait au moins un passage dans la boucle. Il bouclera jusqu' ce que la condition
soit satisfaite.

tant que <cond> faire


suite dactions faire
fin tant que

do While <cond>
suite dactions faire
Loop

Le programme ne rentre pas forcment dans la boucle. Il y rentre si la condition est satisfaite et
boucle tant qu'elle est vrifie.

pour i de min max faire


suite dactions faire
fin pour

For i = min To max


suite dactions faire
Next

On utilise cette structure lorsque lon sait le nombre de passages que lon veut effectuer dans la
boucle.
A la place de min et max, on peut mettre des valeurs ou bien des expressions.
L'incrmentation est automatique et la pas par dfaut est 1.

B.ROCHE / IIRIAM 10/00

Page 20 / 92

BR_VB_concepts.doc

Variantes :
For i = min To max Step 2
suite dactions faire
Next
L'option step permet de faire varier le pas d'une autre valeur que 1. Ici le pas sera de 2.
On peut aussi avoir un pas ngatif :

For i = max To min Step -1


suite dactions faire
Next

V- LES OPERATEURS
1. OPERATEURS ALGEBRIQUES
+
*
^
/
\
Mod

&

somme de 2 nombres ou concatnation de 2 chanes


soustraction de 2 nombres
multiplication de 2 nombres
lvation la puissance
division de 2 nombres (le rsultat est un flottant)
division entire de 2 nombres (le rsultat est l'arrondi de la
division de l'arrondi des oprandes)
modulo, reste de la division entire (le rsultat est le reste de
la division entire des deux oprandes (ex 12.6 mod 3.1
donnera 1)
concatnation de 2 chanes de caractres

2. OPERATEURS DE COMPARAISON
<
<=
>
>=
=
<>
Like

infrieur
infrieur ou gal
suprieur
suprieur ou gal
gal
diffrent de
comme le modle de chane fourni

Jokers : Utiliss avec l'oprateur like pour tablir le modle de chane :


*
?
#
[liste de caractres]

remplace de 0 n caractres quelconques


remplace un seul caractre quelconque
remplace un seul chiffre
pour tout caractre unique qui se trouve dans la
liste
[!liste de caractres] pour tout caractre unique qui ne se trouve pas
dans la liste

B.ROCHE / IIRIAM 10/00

Page 21 / 92

BR_VB_concepts.doc

exemples :
if nomclient like "R[OA]" then...
La condition sera vrifie si le nom du client commence par RO ou RA
if nomclient like "T?[!OA]" then ...
La condition sera vrifie si le nom du client commence par T et n'a pas O ou A en troisime
position.

3. OPERATEURS LOGIQUES
Not
And
Or
Xor
Eqv
Imp
()

non logique (pas)


et logique
ou logique
ou exclusif
quivalence logique
implication logique
permet de rendre une comparaison prioritaire

Equivalence logique :
resultat = expression 1 eqv expression2
Si expression1 est
True
True
False
False

Et

expression2 est
True
False
True
False

rsultat a la valeur
True
False
False
True

Implication logique : (voir documentation VB)

VI- LES PROCEDURES


1. CLASSIFICATION DES PROCEDURES
On peut classer les procdures en deux catgories, bien qu'elles fonctionnent toutes sur le mme
principe. Il est toutefois important de comprendre quoi elles correspondent et o elles ont t
cres.

a) Les procdures de feuille


On trouvera, dans chaque feuille :
une procdure pour dclarer les variables
autant de procdures que d'vnements qui peuvent se produire sur la feuille (chargement,
dchargement,...)
autant de procdures que d'vnements possibles sur chaque contrle de la feuille (click,
drag,..)
autant de procdures et fonctions que le programmeur dsire et qui ne sont pas lis un
vnement.
B.ROCHE / IIRIAM 10/00

Page 22 / 92

BR_VB_concepts.doc

b) Les procdures de module


On trouvera, dans chaque module autre que les feuilles :
une procdure de dclaration
autant de procdures et de fonctions que le dsire le programmeur.

Dans tous les cas, il est fortement recommand de faire une programmation modulaire, afin
d'augmenter la lisibilit des programmes et leur maintenance.
On distinguera galement les types suivants de procdures :
Les procdures Sub : elles ne renvoient pas de valeur.
Les procdures Function : elles renvoient une valeur.
Les procdures Property : elles peuvent renvoyer ou affecter des valeurs, et dfinir des
rfrences des objets.

2. LES PROCEDURES SUB


a) Dclaration
[Private|Public][Static]Sub nom_procedure (liste des paramtres)
<dclaration des variables locales>
suite dactions
End Sub
Par dfaut, les procdures Sub sont des procdures Public dans tous les modules, ce qui signifie
qu'elles peuvent tre appeles partir de n'importe quel endroit de l'application.
Dans Visual Basic, il est important de faire la distinction entre les deux types de procdures Sub,
savoir les procdures gnrales et les procdures d'vnement.

b) Procdure gnrale
Une procdure gnrale indique l'application la faon de mener bien une tche particulire.
Une fois qu'une procdure gnrale est dfinie, elle peut tre appele par l'application. C'est la
notion de procdure telle qu'elle a t dfinie en cours d'algorithmique.

c) Procdure d'vnement
Une procdure d'vnement, au contraire, reste inactive jusqu'au moment o elle est appele
pour ragir des vnements provoqus par l'utilisateur ou dclenchs par le systme.
Dans VB, lorsqu'un objet reconnat qu'un vnement s'est produit, il appelle automatiquement la
procdure d'vnement dont le nom correspond l'vnement. Comme le nom associe les objets
et le code, on dit que les procdures d'vnement sont attaches aux feuilles et aux contrles.
Toutes les procdures d'vnement utilisent la mme syntaxe gnrale:

B.ROCHE / IIRIAM 10/00

Page 23 / 92

BR_VB_concepts.doc

Syntaxe d'un vnement de contrle

Syntaxe d'un vnement de feuille

Private Sub controlname_eventname (paramtres)


instructions

Private Sub Form_eventname (paramtres)


instructions

End Sub

End Sub

* Remarque :
Il est aussi conseill de dfinir la proprit Name des contrles avant de commencer crire les
procdures d'vnement qui leur sont associes. En effet, si on modifie le nom d'un contrle
aprs lui avoir associ une procdure, on doit galement modifier le nom de la procdure afin
qu'elle corresponde au nouveau nom du contrle. En effet, VB n'tablit pas de lien entre le
contrle et la procdure. Lorsqu'un nom de procdure ne correspond aucun nom de contrle, la
procdure devient une procdure gnrale.

d) Appel
call nom_procedure (liste des paramtres)
* Remarques :
le mot cl call est facultatif.
Si la procdure n'a pas de paramtres, on indique les parenthses ouvrantes et
fermantes dans la dclaration. On ne les fait pas apparatre dans l'appel.

3. LES FONCTIONS : PROCEDURES FUNCTION


Visual Basic contient un certain nombre de fonctions prdfinies telles que Sqr, Cos ou Chr.
On peut toutefois crire ses propres procdures Function grce l'instruction Function.
La syntaxe d'une procdure Function est la suivante :

a) Dclaration
[Private|Public][Static]Function nom_fonction (liste des paramtres) as type_valeur_retourne
<dclaration des variables locales>
dim variablex as type_valeur_retourne
suite dactions
variablex = ...
nom_fonction = variablex
End Function

b) Appel
valeur = nom_fonction (liste des paramtres)

* Remarque :

B.ROCHE / IIRIAM 10/00

Page 24 / 92

BR_VB_concepts.doc

Si on place le mot Static devant Sub ou Function, alors toutes les variables locales seront
considres comme statiques.

4. LE PASSAGE DE PARAMETRES
On peut passer un paramtre de deux faons :
soit par valeur,
soit par rfrence.
Si l'on n'indique rien (ou si on indique ByRef ) devant un paramtre dans la dclaration de la
procdure ou de la fonction, le type de passage sera par rfrence.
Si l'on veut effectuer un passage par valeur il suffit d'ajouter ByVal devant le nom du paramtre.
Exemple :
Sub controle (Byval nomp1 As string, testp1 As Boolean, nump1 As Integer)
nomp1 est pass par valeur,
testp1 et nump1 sont passs par rfrence.
* Remarque :
on peut aussi dclarer des paramtres facultatifs avec le mot optional (depuis la version 4)
Sub test (v1 As Integer, Optional v2 As Integer)
On ne peut pas trouver de paramtre obligatoire aprs un paramtre facultatif.

VII- LES FONCTIONS PREDEFINIES


1. FONCTIONS DE CONVERSIONS
Fonction
Asc
Chr
Val
Str
Format
Hex, Oct
Cdbl
Ccur
Cint
Clng
B.ROCHE / IIRIAM 10/00

Description
retourne le code ASCII du premier caractre de la chane passe
en argument.
retourne le caractre correspondant au code ASCII (0 255) pass
en argument.
convertit la chane passe en argument en donne numrique
ex : val("1234") donne la valeur 1234.
conversion d'un nombre en chane
formate une chane avec des instructions de formatage passes
comme arguments
retourne une chane correspondant une conversion Hxa ou
Octale de l'argument numrique.
convertit une expression en donne de type double.
convertit une expression en donne de type currency.
convertit une expression en donne de type integer.
convertit une expression en donne de type long.
Page 25 / 92

BR_VB_concepts.doc

Csng
Cstr
Cvar
Cbool
Cbyte
Cdate
IsNumeric
IsEmpty
IsNull
IsArray
IsError
IsMissing
VarType
TypeName

convertit une expression en donne de type single.


convertit une expression en donne de type string.
convertit une expression en donne de type variant.
convertit une expression en donne de type boolean.
convertit une expression en donne de type byte.
convertit une expression en donne de type date.
indique si l'argument de type variant peut tre traduit en numrique
indique si l'argument de type variant a t initialis.
indique si l'argument de type variant est nul.
indique si l'argument est de type tableau.
indique si l'argument de type variant reprsente un code erreur.
indique si un paramtre facultatif a t effectivement renseign lors
de l'appel.
retourne le code correspondant au type de la variable passe en
argument.
retourne la chane correspondant au type de la variable passe en
argument.

2. FONCTIONS DE MANIPULATION DE CHAINES


Len
Instr
Left, Right, Mid
Lcase
Ucase
LTrim, RTrim
Space
StrCnv
String

longueur d'une chane.


recherche la position de la premire occurrence d'une sous-chane
dans une chane.
extraction d'une chane.
conversion en minuscules.
conversion en majuscules.
supprime les espaces gauche (ou droite) de la chane fournie
renvoie une chane d'espaces dont la longueur est gale au
paramtre fourni
Convertit en majuscule la premire lettre de chaque mot d'une
chane.
renvoie une chane de N caractres identiques.

3. LES FONCTIONS DE DATES


Date
DateAdd
DateDiff
Day
Hour
Minute
Month
Second
Now
Time
WeekDay
Year

B.ROCHE / IIRIAM 10/00

Renvoie la date systme


Ajoute une dure la date fournie
Renvoie la diffrence entre deux dates
renvoie le jour du mois (1 31) de la date fournie
Renvoie un nombre (0 23) gal l'heure fournie
Idem (0 59)
Idem (1 12)
Idem (0 59)
Renvoie la date et l'heure systme
Renvoie l'heure systme
renvoie un nombre gal au jour de la semaine de la date
Renvoie un nombre gal l'anne du paramtre fourni.

Page 26 / 92

BR_VB_concepts.doc

4. FONCTIONS MATHEMATIQUES
Abs
Fix, Int
Log
Rnd
Sgn
Sqr

5.

Valeur absolue
Partie entire
Logarithme nprien
Renvoie un nombre alatoire
Renvoie le signe d'un nombre (-1, 0, 1)
racine carre

FONCTIONS DIVERSES

Il existe de nombreuses autres fonctions prdfinies, notamment en ce qui concerne les finances,
les accs aux disques et la manipulation des fichiers.
Voir la documentation VB.

B.ROCHE / IIRIAM 10/00

Page 27 / 92

BR_VB_concepts.doc

NOTIONS D'OBJETS

I- DEFINITION D'OBJET
Un objet est une entit manipulable par l'ordinateur et laquelle correspond :
une classe d'objet
des propres proprits
des mthodes
des procdures d'vnement
des procdures et fonctions
En fait on peut citer quelques objets :
la fentre d'accueil de l'application,
la fentre de saisie d'un client,
le bouton de "quitter" de la feuille affiche l'cran,
...
Ces exemples font directement rfrence aux objets manipuls par Visual Basic, on peut
toutefois en citer d'autres :
le client Dupont,
l'imprimante connecte au poste de Monsieur Dupont,
la facture n 2345,
...
* Chaque objet possde un nom.
Exemples :
* CmdQuit : nom du bouton de commande "quitter"
* FrmAccueil : nom de la feuille d'accueil de l'application,...

II- CONVENTION D'ECRITURE DES OBJETS


Sous Visual Basic, on peut adopter la convention suivante pour nommer les objets :
Objet
Feuille
Case cocher
Liste modifiable
Liste modifiable dpendante
Bouton de commande
Donnes
Liste de rpertoires
Liste de lecteurs
Liste de fichiers
Cadre
Grille
Grille dpendante
Barre de dfilement horizontale
B.ROCHE / IIRIAM 10/00

Prfixe
frm
chk
cbo
dbc
cmd
dat
dir
drv
fil
fra
grd
dbg
hsb
Page 28 / 92

Exemple
frmFileOpen
chkReadOnly
cboEnglish
dbcEnglish
cmdCancel
datBiblio
dirSource
drvTarget
filSource
fraLanguage
grdPrices
dbgPrices
hsbVolume
BR_VB_concepts.doc

Objet
Feuille
Dessin
Etiquette
Ligne
Zone de liste
Zone de liste dpendante
Menu
Conteneur OLE
Bouton d'option
Zone dimage
Forme (cercle, carr, ovale, rectangle, rectangle arrondi
et carr arrondi)
Zone de texte
Minuterie
Barre de dfilement verticale

Prfixe
frm
img
lbl
lin
lst
dbl
mnu
ole
opt
pic
shp

Exemple
frmFileOpen
imgIcon
lblHelpMessage
linVertical
lstPolicyCodes
dblPolicyCode
mnuFileOpen
oleObject1
optFrench
picDiskSpace
shpCircle

txt
tmr
vsb

txtGetText
tmrAlarm
vsbRate

Les noms d'objet et les noms de variable sont soumis aux mmes rgles, comme tout ce qui sera
cr sous Visual Basic.
Les noms sous VB :
doivent commencer par une lettre ;
ne doivent contenir que des lettres, des chiffres et le trait de soulignement (_), mais pas
de caractres de ponctuation ni despaces ;
ne doivent pas dpasser 40 caractres.

III- LES CLASSES D'OBJETS


* Tout objet appartient une classe
Dans une classe d'objets, on retrouve des objets de mme nature.
Ainsi, sous Visual Basic, on manipulera, entre autre :
des classes de feuilles,
des classes de contrles .
Ainsi, les contrles de la bote outils reprsentent chacun une classe d'objets.
L'objet connu comme contrle n'existe pas avant sa cration sur une feuille. Lorsque l'on cre un
contrle sur une feuille, on cre une copie (ou occurrence ou instance de la classe) de ce
contrle. Cette occurrence de la classe constitue l'objet auquel on fait rfrence dans
l'application.
La feuille que l'on utilise au moment de la cration est une classe. Au moment de l'excution,
Visual Basic cre une occurrence ou instance de la classe de la feuille.

IV- LES PROPRIETES D'UN OBJET


A chaque classe d'objets sont affectes un certain nombre de proprits (au moins le nom de
l'objet). Chaque objet de la classe a ses propres valeurs de proprits.
Chaque proprit a un nom, il faudra connatre les proprits les plus courantes.

B.ROCHE / IIRIAM 10/00

Page 29 / 92

BR_VB_concepts.doc

exemples :
* la proprit caption qui reprsente le titre d'une fentre ou d'un bouton,
* la proprit Font qui reprsente la police de caractre du titre d'une fentre ou d'un
bouton,...
La plupart des proprits (mais pas toutes) sont modifiables aussi bien lors de la conception que
lors de son excution.
Lors de la conception on peut modifier la valeur d'une proprit via la fentre des proprits.
Si la feuille des proprits n'est pas apparente, il suffit d'appuyer sur la touche F4 ou de cliquer
sur l'icne proprits :

Exemple de fentre de proprits :

Objet auquel se
rapporte la liste de
proprits

Classe de l'objet

Nom de la proprit
Valeur
Dfinition de la
proprit

Colonne des proprits


admises pour cet objet

La modification de la valeur d'une proprit, pendant la phase d'excution, se fait en utilisant la


notation pointe :
Exemple :
FrmAccueil.Cmdbouton1.Caption = "Quitter"
modifiera le texte du bouton de nom CmdBouton1 se trouvant dans la feuille de nom FrmAccueil.
Si l'instruction prcdante se trouve dans le module concernant la feuille FrmAccueil, on peut
omettre FrmAccueil., ce qui donne :
Cmdbouton1.Caption = "Quitter"

B.ROCHE / IIRIAM 10/00

Page 30 / 92

BR_VB_concepts.doc

En fait cette instruction modifie le texte du bouton de nom FrmAccueil se trouvant dans la feuille
courante.
Liste des principales proprits, leur signification et les objets auxquels elles s'appliquent :
Proprits
ActiveControl
ActiveForm
Align

Signification
contrle qui aurait le focus si le conteneur tait
actif.
feuille active pour une application MDI.
alignement automatique sur le bord de la feuille.

Alignment

cadrage du texte

Appearance

apparence 3D ou normale ( choisir dans la liste).

AutoRedraw

boolen indiquant si il y a mmorisation des


dessins ou non, true mmorise au prix d'un
affichage trs lent.
AutoShowChildren boolen indiquant si les feuilles enfants sont
automatiquement rendues visibles ou non.
AutoSize
ajustement automatique des dimensions du
contrle par rapport son contenu.
BackColor
couleur de fond.
BackStyle
BorderStyle

indique si un contrle graphique est transparent ou


non.
type de bordure ( choisir dans la liste).

Caption

chane de caractres apparaissant dans l'objet


(barre de titre pour une feuille).

CellSelected

Col

indique si la cellule courante fait partie de la


slection.
boolen indiquant si il faut tout redessiner
(mthodes graphiques) en dehors des contrles
non graphiques.
n de la colonne de la cellule courante.

Cols
ColWidth

nombre de colonnes.
largeur des colonnes.

ClipControls

B.ROCHE / IIRIAM 10/00

Page 31 / 92

Objets
Form
MDIForm
MDIForm
Data
PictureBox
CheckBox
Label
OptionButton
TextBox
tout contrle
visible
Form
PictureBox
MDIForm
Label
PictureBox
tout contrle
visible
Label
Shape
Form
Grid
Image
Label
Line
PictureBox
Shape
TextBox
CheckBox
CommandButton
Data
Form
Frame
Label
MDIForm
OptionButton
Grid
Form
Frame
PictureBox
DBGrid
Grid
Grid
Grid
DBGrid
BR_VB_concepts.doc

ControlBox
Controls

boolen indiquant si le menu systme est prsent


ou non
tableau des contrles contenus dans un contrle
de type conteneur. (collection).

Count

nombre de contrles dans un conteneur.

CurrentX

position de la souris en X.

CurrentY

position de la souris en Y.

DataChanged

boolen indiquant si le contenu du contrle a


chang ou non (pour un contrle li une BD).

DataField

champ de donnes auquel le contrle est li

DataSource
DragIcon

contrle Data auquel le contrle est li.


icne utilis pour une opration de glisser

DragMode

DrawMode

mode utilis pour une opration de glisser


(automatique (vbautomatic) ou manuel
(vbmanual)).
mode de dessin des traits ( choisir dans la liste).

DrawStyle

type de trait ( choisir dans la liste).

DrawWidth

largeur du trait de dessin.

Drive
Enabled
FillColor

unit de disque courante.


boolen indiquant si le contrle peut tre activ ou
non.
couleur de remplissage.

FillStyle

motif de remplissage.

B.ROCHE / IIRIAM 10/00

Page 32 / 92

Form
Form
PictureBox
Frame
SStab
Form
PictureBox
Frame
SStab
Form
PictureBox
Form
PictureBox
CheckBox
DBCombo
DBList
Image
Label
PictureBox
TextBox
CheckBox
ComboBox
DBCombo
DBGrid
DBList
Image
Label
ListBox
PictureBox
TextBox
idem
tout contrle
visible
tout contrle
visible
Form
Line
PictureBox
Shape
Form
PictureBox
Form
PictureBox
DriveListBox
tout contrle
Form
PictureBox
Shape
Form
Grid
PictureBox
BR_VB_concepts.doc

FixedCols
FixedRaws
Font

FontBold

FontItalic

FontSize

FontStrikethru

FontTransparent

FontUnderline

ForeColor

GridLines
GridLineWidth
hDC
Height
hWnd

Icon
Index
Interval
KeyPreview
Left
List
ListCount
ListIndex

Shape
nombre de colonnes fixes.
Grid
nombre de lignes fixes.
Grid
police de caractres active pour la mthode print.
tout objet
pouvant contenir
du texte
boolen indiquant si la police est en gras ou non.
tout objet
pouvant contenir
du texte
boolen indiquant si la police est en italique ou
tout objet
non.
pouvant contenir
du texte
taille de la police.
tout objet
pouvant contenir
du texte
boolen indiquant si la police est barre ou non.
tout objet
pouvant contenir
du texte
boolen indiquant si le fond de la police est
tout objet
transparent ou non.
pouvant contenir
du texte
boolen indiquant si la police est souligne ou non. tout objet
pouvant contenir
du texte
couleur des caractres.
tout objet
pouvant contenir
du texte
boolen indiquant si il y a affichage du quadrillage Grid
ou non.
largeur des traits de quadrillage.
Grid
Handle graphique attribu par Windows.
Form
PictureBox
hauteur d'un contrle.
tout contrle
Handle de la fentre attribu par Windows.
contrles listes
contrles boutons
Form
Frame
Grid
H et VScrollBar
MDIForm
PictureBox
TextBox
fichier icne de la feuille.
Form
MDIForm
numro dans un groupe de contrle.
tout contrle
visible
priodicit de vnement timer en millisecondes
Timer
boolen indiquant si la feuille doit recevoir les
Form
vnements clavier avant ses contrle ou non.
coordonne en X du bord suprieur gauche.
tout contrle
tableau des textes d'une liste.
contrles listes
nombre d'lments d'une liste.
contrles listes
indice de l'lment slectionn dans une liste.
contrles listes

B.ROCHE / IIRIAM 10/00

Page 33 / 92

BR_VB_concepts.doc

Locked
Max
MaxButton
MaxLenght
MDIChild
Min
MinButton
MouseIcon
MousePointer
MultiLine
MultiSelect
Name
NewIndex
Parent
PasswordChar
Path
Picture

Row
RowHeight
Rows
ScrollBars

Selected
SelEndCol
SelEndRow
SelLenght

SelStart

SelStartRow

boolen indiquant si le contrle est en lecture seule


ou non.
valeur maximum de la proprit value.
boolen indiquant si le bouton d'agrandissement
est prsent ou non.
nombre maximal de caractres accepts
boolen indiquant si la feuille est une feuille enfant
dans une application MDI.
valeur minimum de la proprit value.
boolen indiquant si le bouton de rduction est
prsent ou non.
image personnalise pour le curseur de la souris.
image prdfinie pour le pointeur de la souris
lorsqu'il passe sur un contrle.
boolen indiquant si la saisie se fait sur plusieurs
lignes ou non.
indique le mode de slection multiple dans une
liste.
identifie un objet.
indice de l'lment ajout en dernier dans une liste.
feuille o se trouve le contrle.
caractre utilis pour l'affichage du texte ("" normal
ou un autre caractre).
chemin d'accs courant.

Column (Grid)
TextBox
H et VScrollBar
Form
TextBox
Form
H et VScrollBar
Form
tout contrle
visible
tout contrle
visible
TextBox
contrles listes
tout contrle
contrles listes
tout contrle
TextBox

DirListBox
FileListBox
fichier du dessin de fond.
Form
Image
MDIForm
PictureBox
n de la ligne de la cellule courante.
Grid
DBGrid
hauteur d'une ligne.
Grid
DBGrid
nombre de lignes.
Grid
boolen indiquant la prsence de barres de
Column (Grid)
dfilement ou non.
Grid
MDIForm
TextBox
tableau de boolens indiquant l'tat de slection de contrles listes
chaque lment d'une liste.
n de la colonne de la dernire cellule slectionne. Grid
DBGrid
n de la ligne de la dernire cellule slectionne.
Grid
longueur de la slection
ComboBox
DBCombo
TextBox
position du premier caractre slectionn.
ComboBox
DBCombo
TextBox
n de la ligne de la premire cellule slectionne.
Grid

B.ROCHE / IIRIAM 10/00

Page 34 / 92

BR_VB_concepts.doc

SelStartCol
SelText

n de la colonne de la premire cellule


slectionne.
chane slectionne.

Shape
Sorted

figure gomtrique (carr, rectangle...).


indicateur de tri

Stretch

boolen indiquant si il y a ajustement de l'image


aux dimensions du contrle ou non.
type de liste combine (droulante, simple,
droulante sans saisie).
ordre d'activation des contrle lors de l'utilisation de
la touche tabulation.

Style
TabIndex

TabStop

boolen indiquant si il y a arrt ou non sur le


contrle lors de l'utilisation de la touche tabulation.

Tag
Text

chane de caractres disponible pour le


concepteur.
contenu du champ de saisie.

Top
Value

coordonne en Y du bord suprieur gauche.


valeur d'un contrle.

Visible

boolen indiquant si un contrle est visible ou non.

Width
WindowState

largeur du contrle.
tat de la fentre (normale, icne, plein cran).

Grid
DBGrid
ComboBox
DBCombo
TextBox
Shape
ComboBox
ListBox
Image
ComboBox
DBCombo
tout contrle
pouvant avoir le
focus
tout contrle
pouvant avoir le
focus
tout contrle
Column (Grid)
contrles listes
Grid
DBGrid
TextBox
tout contrle
contrles boutons
H et VScrollBar
tout contrle
visible !
tout contrle
Form
MDIForm

V- LES METHODES D'UN OBJET


Une mthode correspond un programme li un objet. C'est le programmeur qui crit les
mthodes accessibles par un objet lorsqu'il cre une classe d'objet. Dans Visual Basic 4 Pro, il
n'est pas possible d'crire ou de modifier les mthodes d'une classe d'objets.
Comme pour les proprits, chaque objet pourra faire appel certaines mthodes.
On pourra appeler une mthode dans un programme.
Exemples :
FrmAccueil.Hide
La mthode Hide fermera la fentre cite (ici la fentre ayant pour nom FrmAccueil).

B.ROCHE / IIRIAM 10/00

Page 35 / 92

BR_VB_concepts.doc

FrmAccueil.show
affichera la feuille de nom FrmAccueil (si la proprit visible est gale true).
LstListetitre.AddItem "Monsieur le Directeur"
On ajoutera la rubrique "Monsieur le Directeur" l'objet LstListetitre qui correspond une liste
droulante.
* Remarque :
On utilise pour les mthodes la notation pointe, comme pour les proprits.

VI- EVENEMENTS ET PROCEDURES D'EVENEMENT


Il existe plusieurs types d'vnements, les plus simples matriser et comprendre sont les
vnements utilisateurs directs savoir les actions sur le clavier ou la souris.
Par exemple, il se produira un vnement click sur un bouton de commande lorsque l'utilisateur
cliquera sur le bouton en question. De mme, il se produira l'vnement change sur une zone de
texte lorsque l'utilisateur aura saisi un caractre sur cette zone de texte.
Lors d'une action sur le clavier ou la souris, Windows va gnrer des messages pour l'application
concerne (celle qui est active).
Par exemple, l'utilisateur va modifier la dimension d'une fentre en cliquant sur la bordure et en
dplaant la souris en maintenant le bouton gauche enfonc. Le code excutable qui fait que
vous voyez le cadre suivre le curseur de la souris est du code Windows (contenu dans un
ensemble de DLL formant les APIs Windows). Il n'y a rien crire dans l'application VB. Par
contre, lorsque l'opration est termine (relchement du bouton gauche de la souris), Windows
gnre un ensemble d'vnements (Resize, Paint...) destination de l'application concerne.
Pour chaque objet, un ensemble d'vnements est susceptible de se produire.
Pour chacun de ces vnements concernant un objet, il est possible d'crire du code VB qui
s'excutera lorsque l'vnement se produira, il s'agit de la procdure vnement.

Exemple :
Private Sub Command2_Click()
calculette.Hide
Form1.Show
End Sub

B.ROCHE / IIRIAM 10/00

Page 36 / 92

BR_VB_concepts.doc

LES OBJETS PROPRES A UN PROJET

Les objets globaux sont des objets qui existent systmatiquement. Ils correspondent des
fonctions du systme dexploitation tels que lobjet Screen, Printer ou Clipboard ou contiennent
des informations sur lapplication elle-mme.

I- L'OBJET APP
L'objet App permet de dterminer des informations relatives lap plication.

1. PROPRIETES ESSENTIELLES
EXEName
HelpFile
Hinstance
LogMode
LogPath
Path
PrevInstance
StartMode
TaskVisible
Title
ThreadID
UnattendedApp

Retourne le nom du fichier EXE en cours dexcution ou le nom du projet.


Dtermine le nom du fichier daide Windows dune application.
Renvoie lidentificateur de linstance de lapplication.
Dtermine les modalits de journalisation.
Renvoie le chemin et le nom du fichier de journalisation utilis par la
mthode LogEvent.
Dtermine le chemin daccs absolu en cours.
Indique si une instance prcdente (copie) de lapplication fonctionne.
Dtermine si une application dmarre en tant que projet autonome ou
comme serveur OLE Automation.
Dtermine si lapplication apparat dans la liste des tches de Windows.
Dtermine le titre de lapplication qui apparat dans le gestionnaire de tches de Windows.
Renvoie lidentificateur Win32 de la thread en cours dexcution (utilis
dans les appels lAPI Win32).
Dfinit si une application sera excute sans interface utilisateur.

2. PROPRIETES LIEES A LA COMMUNICATION AVEC DES COMPOSANTS ACTIVEX (SERVEUR


OLE)
Lors de la communication de lapplication avec un composant ActiveX, des botes de dialogue par
dfaut peuvent apparatre. Elles indiquent que le composant est occup ou bien que la demande
de lapplication est en attente (cest--dire en cours dexcution).
Les proprits suivantes permettent de paramtrer les botes de dialogue devant apparatre :
OLERequestPendingMsgText
OLERequestPendingMsgTitle

Dfinit le texte de la bote de dialogue. Demande en attente.


Dfinit le titre de la bote de dialogue. Demande en attente.

OLERequestPendingTimeOut

Dfinit la dure au bout de laquelle la bote de dialogue.


Demande en attente apparat.
Dfinit le texte de la bote de dialogue Serveur occup.
Dfinit le titre de la bote de dialogue. Serveur occupe.
Dfint si une requte dautomation rejete gnre une erreur au
lieu dafficher la bote de dialogue. Serveur occup.

OLEServerBusyMsgText
OLEServerBusyMsgTitle
OLEServerBusyRaiseError

OLEServerBusyTimeOut
B.ROCHE / IIRIAM 10/00

Dfinit la dure au bout de laquelle la boite de dialogue Serveur


Page 37 / 92

BR_VB_concepts.doc

occup apparat.

3. METHODES
LogEvent
StartLogging

Permet denregistrer un vnement dans le journal de lapplication.


Dfinit le journal et le mode de journaIisation.

II- SCREEN
Permet dobtenir des informations sur lcran et de contrler le pointeur de la souris en dehors
des feuilles de lapplication excute.

1. PROPRIETES
ActiveControl
ActiveForm
FontCount
Fonts
Height
MousePointer
TwipsPerPixelX
TwipsPerPixelY
Width

Contrle ayant le focus.


Feuille ayant le focus.
Nombre de polices de caractres de lcran.
Table des polices de caractres de lcran.
Hauteur de lcran en twips (1440 twips/pouce, 567 twips/cm).
Dfinit lapparence du pointeur de la souris.
Indique le nombre pixel en abscisse.
Indique le nombre pixel en ordonne.
Largeur de lcran en twips.

Exemple

III- PRINTER / PRINTERS(COLLECTION)


Permet de raliser des impressions contrles par lapplication. Lobjet Printer peut tre
considr comme une page de limprimante sur laquelle on peut placer du texte et des
graphismes (comme dans une feuille).

1. PROPRIETES
ColorMode
Copies
Count
DeviceName
DriverName
Duplex
FONTCOUNT
Fonts
Height
Orientation
Page
PaperBin
PaperSize
Port
PrintQuality
TrackDefault
B.ROCHE / IIRIAM 10/00

Dtermine si limpression sur une imprimante couleur est en couleurs ou


monochrome.
Dtermine le nombre dexemplaires imprimer.
Renvoie le nombre dobjets Printer (imprimante) de la collection Printers.
Renvoie le nom du priphrique pris en charge par un pilote donn.
Renvoie le nom du pilote associ un objet Printer (imprimante).
Dtermine si une page est imprime des deux cts.
Nombre de polices de caractres de limprimante.
Table des polices de caractres de limprimante.
Hauteur dune page de limprimante en twips.
Indique si les documents sont imprims en orientation portrait ou paysage.
Numro de la page courante.
Indique le bac dalimentation par dfaut de limprimante.
Indique la taille du papier.
Dtermine le nom du port de limprimante.
Dtermine la qualit dimpression.
Dtermine si lobjet Printer dsigne toujours la mme imprimante.
Page 38 / 92

BR_VB_concepts.doc

TwipsPerPixelY
TwipsPerPixelX
Width
Zoom

Indique le nombre de twips pour un pixel en abscisse.


Indique le nombre de twips pour un pixel en ordonne.
Largeur dune page de limprimante en twips.
Dtermine le pourcentage dagrandissement ou de rduction des donnes
imprimes.

2. METHODES
EndDoc
KillDoc
NewPage
PaintPicture

Met fin limpression dun document et lenvoie au priphrique dimpression ou au


spooler.
Arrte un travail dimpression.
Met fin la page en cours et passe la suivante.
Dessine le contenu dun fichier graphique (.BMP, .WMF, .ICO, .EMF ou .DIB) sur
un objet Printer.

IV- CLIPBOARD
Permet de manipuler le contenu du Presse-papiers.

1. METHODES
Clear
GetData
GetFormat
GetText
SetData

Efface le contenu du presse-papiers.


Renvoie une image depuis le presse-papiers.
Indique si le format des donnes contenues dans le pressepapiers correspond au format spcifi.
Renvoie un texte depuis le presse-papiers.
Place une image dans le presse-papiers en prcisant le
format.

V- DEBUG
Permet denvoyer les donnes de sortie dans la fentre de dbogage pendant lexcution.

1. METHODES
Assert

Print

B.ROCHE / IIRIAM 10/00

Suspend lexcution du programme et affiche la ligne o cette mthode apparat si


la valeur boolenne passe comme argument est False. Ceci permet de
provoquer des arrts conditionnels lors de lexcution du programme mais en mode
dveloppement seulement, car les lignes de code contenant cette mthode ne sont
pas prises en compte par le compilateur.
Envoie des donnes dans la fentre
de dbogage.

Page 39 / 92

BR_VB_concepts.doc

LES FEUILLES VISUAL BASIC

I- PRESENTATION
1. DEFINITION
La feuille VB reprsente l'interface avec l'utilisateur, dans quasiment tous les projets.
Un projet peut comporter de nombreuses feuilles.
Une feuille peut jouer un rle particulier, c'est la feuille de dmarrage. C'est elle qui apparatra
lors du lancement du projet, si toutefois elle a t dclare comme fentre de dmarrage dans le
menu outil/option/projet. On peut aussi dmarrer un projet par la procdure main. Il suffit de le
signaler dans le mme menu.
Les principales proprits sur les objets ont t dcrites dans le chapitre prcdent, il faut
maintenant voir les mthodes et vnements.

2. FENETRE MODALE OU NON MODALE


Une fentre A est dite modale si elle doit tre ferme avant d'afficher une autre fentre B
prcdemment charge.
Toutefois, une fentre modale A peut ouvrir une autre fentre C, condition que celle-ci soit elle
aussi modale.
Fentre B non modale

Fentre B non modale

Non Possible
Fentre A modale

Fentre A modale

Fentre C modale

Fentre A modale

Possible
Fentre A modale

La plupart des feuilles seront modales. Toutes les feuilles d'information, de message d'erreur ou
de confirmation seront obligatoirement modales, puisque le programme a besoin de connatre la
rponse du message pour pouvoir continuer travailler.

B.ROCHE / IIRIAM 10/00

Page 40 / 92

BR_VB_concepts.doc

II- METHODES ET EVENEMENTS D'UNE FEUILLE


1. LES METHODES
Les mthodes les plus courantes sont les suivantes :

Mthode
Show
Hide
Move
PopupMenu

Description
Rend visible une feuille l'cran. Si la feuille n'est pas
prsente en mmoire, elle est charge automatiquement.
Cache une feuille tout en la gardant en mmoire
Dplace et redimensionne la feuille selon les coordonnes
fournies en paramtre.
Affiche le menu contextuel spcifi

Printform

Imprime la feuille

SetFocus

Donne le focus la feuille spcifie, condition que la feuille


soit charge en mmoire.

Exemple :
FrmCalcul.Show 1
Cette mthode affichera (aprs avoir ventuellement charg) la feuille FrmCalcul. Le 1 signifie
que la fentre est modale. Par dfaut une fentre est non modale (valeur 0).

2. LES EVENEMENTS
Les vnements prsents ici concernent uniquement la feuille et non les contrles situs sur la
feuille.
Le principaux vnement sur une feuille sont les suivants :
Evnement

Description

Load

DblClick

Il se produit au moment ou la feuille est charge en mmoire,


par l'instruction load. La feuille ne sera pas forcment affiche.
Il se produit au moment ou la feuille est dcharge de la
mmoire, par l'instruction unload.
Il se produit lorsque la feuille devient active (quand on lui
donne le focus), par les mthodes Show ou SetFocus.
Il se produit lorsque lorsque la feuille n'est plus la feuille active.
(dplacement du focus sur une autre feuille et non
dchargement de la feuille).
Il se produit lorsque l'utilisateur clique sur un bouton de la
souris et le relche.
Idem, mais double cilck

Resize

Il se produit lorsque l'utilisateur redimensionne la feuille.

Unload
Activate
Deactivate

Click

B.ROCHE / IIRIAM 10/00

Page 41 / 92

BR_VB_concepts.doc

Exemple :
load FrmCalcul
Cette instruction chargera en mmoire la feuille FrmCalcul, sans toutefois l'afficher , et
dclenchera la procdure d'vnement Form_Load().

III- LA VIE D'UNE FEUILLE DANS UN PROJET


La manipulation des feuilles ncessite une bonne connaissance des vnements de la vie d'une
feuille. Les scnarios suivants prsentent l'enchanement des vnements d'une feuille, leur
signification et leur usage.

1. AFFICHAGE D'UNE FEUILLE QUI N'A JAMAIS ETE EXPLOITEE


Le terme feuille non exploite signifie :
Aucune variable publique dclare dans cette feuille n'a dj t sollicite par une
procdure extrieure.
Aucune proprit de la feuille ou de ses contrles n'a t sollicite par une procdure
extrieure.
La feuille n'a jamais t affiche.
Lorsque cette feuille est affiche suite une instruction "NomFeuille.show", les vnements
suivants se produisent dans cet ordre :
Form_Initialize : Signale que les variables publiques et prives dclares dans la
feuille sont charges en mmoire. On profite de cet vnement pour attribuer des
valeurs des variables ds leur cration.
Form_Load : Signale que les proprits de la feuille et de ses contrles sont charges
en mmoire. On en profite pour paramtrer dynamiquement des objets avant leur
affichage. Attention, la feuille n'est pas encore prsente l'cran. Si on utilise cet
vnement pour coder des mthodes graphiques comme .line, .circle, etc..., aucune
erreur ne se produira mais les mthodes n'auront pas d'effet.
Form_Resize : Signale que la fentre est redimensionne. La fentre n'est cependant
pas encore visible. On peut en profiter pour attribuer une dimension prcise la
fentre.
Form_Paint : Signale un rafrachissement du contenu graphique de la fentre. Elle est
visible l'cran. On peut alors coder des mthodes graphiques.

2. MASQUAGE D 'UNE FEUILLE PRESENTE A L'ECRAN :


Si la feuille est affiche, ses variables et proprits sont en mmoire. Masquer une feuille par
l'emploi de sa mthode .hide entraine l'vnement Form_DeActivate. Les variables et proprits
sont toujours en mmoire.
Dchargement d'une feuille avec l'instruction Unload :
Ceci entrane particulirement deux vnements :
Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) : Signale que le
dchargement a t demand. Il permet grce l'argument UnloadMode de savoir
B.ROCHE / IIRIAM 10/00

Page 42 / 92

BR_VB_concepts.doc

quelle est l'origine du dchargement (Windows, Feuille mre MDI, Instruction Unload,
Utilisation des cases "systme"). L'argument Cancel fonctionne comme un boolen. En
plaant sa valeur sur True dans la procdure vnementielle, le dchargement de la
feuille est annul.
Form_Unload(Cancel As Integer) : signale le dchargement de la feuille. Peut tre
annul par l'emploi de l'argument Cancel (Cancel=True). Sans annulation, l'vnement
Unload signifie le dchargement des proprits, mais pas celui des variables qui
restent charges. Les variables publique, prives, statiques dclares dans une feuille
survivent donc la fermeture de celle-ci.

3. DESTRUCTION DE L'INSTANCE D 'UNE FEUILLE :


Pour obtenir une destruction dfinitive de toute rfrence une feuille, on utilise l'instruction
suivante :
Set NomFeuille = Nothing
l'vnement Form_Terminate est activ. Il signale que les variables dclares dans la feuille
sont dtruites. A utiliser pour ventuellement archiver des valeurs.

4. MANIPULATION D 'UNE VARIABLE D 'UNE FEUILLE NON EXPLOITEE:


Si une procdure accde en consultation ou modification une variable dclare dans une feuille
qui n'a encore jamais t exploite d'une quelconque manire que ce soit, l'vnement
Form_Initialize se produira et toutes les dclarations de la feuille seront ralises.

5. MANIPULATION D 'UNE PROPRIETE D 'UNE FEUILLE NON EXPLOITEE:


Si une procdure accde en consultation ou modification une proprit d'une feuille ou de ses
contrles qui n'a encore jamais t exploite d'une quelconque manire que ce soit, les
vnements Form_Initialize et Form_Load se produiront.
Les variables.de la feuille seront donc charges, puis les proprits.
Il n'est donc pas ncessaire qu'une feuille soit charge par l'instruction LOAD pour pouvoir
utiliser ses variables ou proprits depuis une procdure extrieure.

IV- LES BOITES DE DIALOGUE


Les botes de dialogue sont des feuilles prdfinies par Visual Basic et qui permettent d'afficher
des messages d'erreur, des messages l'attention de l'utilisateur, de proposer des choix qui
influenceront la suite du programme.
Deux types de botes de dialogue sont possibles :
les MsgBox pour les messages
les InputBox pour la saisie d'une valeur

1. LES BOITES DE DIALOGUE DE TYPE MSGBOX


L'affichage d'une bote de dialogue de type MsgBox peut se faire soit par l'instruction MsgBox,
soit par la fonction MsgBox.

B.ROCHE / IIRIAM 10/00

Page 43 / 92

BR_VB_concepts.doc

Le principe est le mme, sauf qu'avec la fonction MsgBox, il sera possible de savoir sur quel
bouton l'utilisateur a appuy, et ainsi de conditionner la suite du programme.
Exemple :
L'xemple ci-dessous montre une procdure qui utilise la fois l'instruction MsgBox et la fonction.
On notera que les paramtres ne sont pas les mmes).
Titre

Prompt

B.ROCHE / IIRIAM 10/00

Page 44 / 92

BR_VB_concepts.doc

Private Sub Form_Load()


Dim reponse As Integer
Form1.Show
reponse = MsgBox("ceci est un test de bote de dialogue", 35, "Bienvenue")
Select Case reponse
Case 6
MsgBox ("vous avez appuy sur OUI")
Case 7
MsgBox ("vous avez appuy sur NON")
Case 2
MsgBox ("vous avez appuy sur ANNULER")
End Select
End Sub
* Remarque : avec la saisie assiste, on aurait pu se dispenser de calculer la valeur de la
variable boutons, en cliquant successivement sur les styles de boutons proposs par l'diteur.
Ainsi la commande devient :
reponse = MsgBox("Ceci est un test de bote de dialogue", vbDefaultButton1 + vbQuestion +
vbYesNoCancel, "Bienvenue")

Syntaxe :
MsgBox(prompt[, boutons][, titre][, helpfile, context])
Seul le prompt est prcis pour l'instruction. Helpfile et Context sont rarement utiliss.
Prompt : il s'agit du texte du message. Il ne doit pas excder 1024 caractres . Le passage la
ligne sera automatique, moins d'introduire la caractre de code ASCII 13 pour forcer le passage
la ligne l'endroit souhait.
Boutons : C'est une valeur numrique gale la somme des 4 indications suivantes :
* sur les boutons
Code
0
1
2
3
4
5

types de boutons
OK
OK et Annuler
Abandonner, rpter et Ignorer
Oui, Non et Annuler
Oui et Non
Rpter et Annuler

Code
16
32
48
64

types d'icne
Message critique "X"
Confirmation "?"
Avertissement "!"
Information "i"

* sur l'icne

B.ROCHE / IIRIAM 10/00

Page 45 / 92

BR_VB_concepts.doc

* sur le bouton par dfaut


Code
0
256
512

bouton par dfaut


Premier
Deuxime
Troisime

* sur la modalit de la bote


Code
modalit
0
La bote est modale et il est possible de passer une
autre application par ALT + TAB ou bien ALT + ESC
1
La bote est modale et il est impossible de passer
une autre application par ALT + TAB ou bien ALT + ESC

On peut tester, avec la fonction MsgBox quel bouton a t activ par l'utilisateur.
Les valeurs de retour sont les suivantes :
Code
bouton slectionn
1
OK
2
Annuler
3
Abandonner
4
Rpter
5
Ignorer
6
Oui
7
Non
Titre : C'est le texte affich dans le bandeau de la bote de dialogue (son titre).

2. LES BOITES DE DIALOGUE DE TYPE INPUTBOX


L'affichage d'une bote de dialogue de type InputBox ne peut se faire que par l'instermdiaire de
la fonction InputBox.
Syntaxe
InputBox(prompt[, titre][, dfaut][, xosx][, ypos][, helpfile, context])
Ici aussi, seuls Prompt, titre et dfaut seront gnralement utiliss.
Prompt et titre : mme signification que pour une MsgBox.
Dfaut : Valeur par dfaut qui s'affichera dans la bote de dialogue. Cet argument n'est pas
obligatoire !

Dim reponse As String


...

reponse = InputBox("Entrer le titre du client", "Saisie du client", "Monsieur")


B.ROCHE / IIRIAM 10/00

Page 46 / 92

BR_VB_concepts.doc

* Remarques :
Le type retourn par la fonction est du chane. Attention donc ventuellement convertir la
valeur saisie.
Si l'utilisateur appuie sur le bouton Annuler, la fonction retournera une chane vide.

B.ROCHE / IIRIAM 10/00

Page 47 / 92

BR_VB_concepts.doc

LES CONTROLES

Les principaux contrles offerts par Visual Basic sont consigns dans la bote outils qui
apparat dans le projet.
On tudiera dans ce chapitre les principaux.

I- LES CONTROLES STANDARDS

Pointeur
Label

Zone d'image
Texte (textBox)

Cadre (frame)

Bouton de commande

Case cocher

Case d'option

Liste modifiable (combo box)


Barre dfilement horizontale
Minuteriel
Liste de rpertoires
Forme (shape)
Dessin
Contrleur OLE
SStab
Liste modifiable dpendante
(accs aux donnes)

Zone de liste
(ListBox)
Barre de dfilement
verticaal
Zone de liste d'units
Zone de liste de fichiers
Ligne (line)
Donne (data)
Dialogue commun
Liste dpendante (DBList)
Grille dpendante(DBGrid)

1. LE POINTEUR
Permet de dplacer et de redimensionner des feuilles et des contrles.
(Il ne s'agit pas d'un contrle.)

2. LE CONTROLE ETIQUETTE (LABEL)


Affiche du texte que l'utilisateur ne peut pas modifier et avec lequel il ne peut pas
dialoguer. Ce contrle ne peut recevoir le focus
Il pourra tre modifi par la proprit caption.

B.ROCHE / IIRIAM 10/00

Page 48 / 92

BR_VB_concepts.doc

On utilisera ce contrle comme tiquette en regard d'un champ de saisie, comme titre, pour
placer un commentaire ou afficher une donne non modifiable.

Proprits courantes
Alignement

Caption
Enabled

Valeurs

Description
texte align gauche
nombre align droite
centr
Texte qui sera affich dans le contrle
Affiche en gris le contrle si la valeur est
False. Le contrle ne pourra ragir aux
vnements gnrs par l'utilisateur
Gras
Italique
Soulign
Police de caractres
Taille de la police de caractres
Nom du contrle (ne pas confondre avec le
contenu)
Visible sur la feuille ou non
(voir la paragraphe accs aux donnes)
(voir la paragraphe accs aux donnes)

0
1
2
Texte
True ou False

FontBold
FontItalic
FontUnderline
FontName
FontSize
Name

True ou False
True ou False
True ou False

Visible
DataSource
DataField

True ou False

* Remarques
D'autres proprits sont disponibles, qui se rapportent la prsentation du contrle
(couleur, bordure,...), mais il est conseill de se rapporter la norme Windows et de s'y
conformer.

3. LE CONTROLE ZONE DE TEXTE (T EXTBOX)


Fournit une zone pour taper ou afficher du texte. La diffrence avec un label est que
l'utilisateur a la possibilit de modifier le contenu par l'intermdiaire du clavier, aprs avoir cliqu
sur le champ.
Proprits courantes
Alignement
Enabled
FontBold
FontItalic
FontName
FontSize
FontUnderline
Name
Visible
DataSource
DataField
Index

Valeurs

MaxLengh

Nombre

Multiline

True ou False

B.ROCHE / IIRIAM 10/00

Description

Numro qui identifie de manire unique un


contrle dans un groupe de contrles.
Nombre maximal de caractres pouvant tre
saisis
Autorise ou pas plusieurs lignes dans une zone
Page 49 / 92

BR_VB_concepts.doc

Proprits courantes
PasswordChar
ScrollBars

Valeurs

TabIndex

un caractre
0
1
2
3
nombre

TabStop

True ou False

Text

Description
de texte.
Caractre affich dans un mot de passe
pas de barre de dfilement
Barre de dfilement horizontale
Barre de dfilement vertical
Barres de dfilement horizontale et verticale.
numro d'ordre des tabulations dans sa feuille
mre.
Arrt ou pas sur la zone de texte en cas de
tabulation
Texte qui sera affich dans le contrle.

* Remarques
D'autres proprits sont disponibles, qui se rapportent la prsentation du contrle
(couleur, bordure,...), mais il est conseill de se rapporter la norme Windows et de s'y
conformer.
Il est possible de se positionner directement sur un champ de saisie en utilisant le et
commercial dans la proprit caption du label prcdent le champ de saisie dans
l'ordre des tabulations. Ce caractre sera alors soulign et on pourra se rendre
directement sur le champ de saisie par le raccourci clavier ALT + caractre soulign

4. BOUTON DE COMMANDE (COMMANDBUTTON)


Excute une commande ou une action lorsque lutilisateur le choisit.
Proprits courantes
Caption
Enabled
DataChanged
DataField
DataSource
FontBold
FontItalic
FontName
FontSize
FontUnderline
Index
Name
TabIndex
TabStop
Visible
Cancel

True ou False

Default

True ou False

B.ROCHE / IIRIAM 10/00

Valeurs

Description

Si la valeur est true, la touche Echap quivaut


un click sur ce bouton.
Si la valeur est true, la touche Entre
quivaut un click sur ce bouton.

Page 50 / 92

BR_VB_concepts.doc

* Remarques
D'autres proprits sont disponibles, qui se rapportent la prsentation du contrle
(couleur, bordure,...), mais il est conseill de ne pas abuser de ces proprits et de
laisser les proprits par dfaut.
On peut mettre, la place du texte (proprit caption), une image ou une animation.
Cela peut parfois tre utile, mais attention aux abus et au ct gadget qui risque de
lasse l'utilisateur.
Il est possible de faire prcder un caractre de la proprit caption d'un et commercial
(&). Ce caractre sera alors soulign et on pourra slectionner le bouton de commande
par le raccourci clavier ALT + caractre soulign (comme pour les menus).
Il est conseill d'utiliser la mme valeur pour le nom du contrle (proprit Name) et
pour son contenu (proprit caption). Si on utilise un prfixe on fera prcder le nom
du prfixe (ex : Quitter / CmdQuitter).
la proprit Cancel gale True est gnralement attribue un bouton du type
Annuler et la proprit Default est gnralement attribue un bouton du type OK

5. CASE A COCHER (CHECKBOX)


Affiche une option Vrai/Faux ou Oui/Non.
Le nombre de cases cocher que l'on peut activer simultanment est illimit.
Le texte associ fait partie du contrle. Ce n'est donc pas un label.

Proprits courantes
Alignment
Caption
Enabled
FontBold
FontItalic
FontName
FontSize
FontUnderline
Index
Name
TabIndex
TabStop
Visible
Value

Valeurs

Description

0 ou 1

0
1
2

La case n'est pas coche


La case est coche
La case est grise

* Remarque
Les proprits DataSource, DataField et DataChanged seront vues dans le paragraphe
accs aux donnes.

B.ROCHE / IIRIAM 10/00

Page 51 / 92

BR_VB_concepts.doc

6. CASE D'OPTION (OPTIONBUTTON)


Fait partie, avec d'autres boutons d'option, d'un groupe d'options qui permet d'afficher
plusieurs choix possibles. L'utilisateur ne peut slectionner qu'un seul de ces boutons la
fois, les autre s'excluant automatiquement. On appelle galement ce contrle bouton de radio.
Proprits courantes
Alignment
Caption
Enabled
FontBold
FontItalic
FontName
FontSize
FontUnderline
Index
Name
TabIndex
TabStop
Visible
Value

Valeurs

Description

0 ou 1

True
False

l'option est valide


l'option n'est pas valide

* Remarques
Les valeurs de la proprit Value ne sont pas les mmes que pour un contrle case
cocher.
Les proprits DataSource, DataField et DataChanged ne sont aps disponibles pour ce
contrle.
N'utiliser ces cases que lorsque l'on sait que les valeurs des options proposes ne vont
pas changer ou qu'il ne faudra pas en rajouter d'autres, afin de limiter la maintenence
des programmes.
Exemple :

Private Sub CmdOK_Click()


If OptHomme Then
MsgBox "c'est un homme"
Else
MsgBox "c'est une femme"
End If
End Sub

B.ROCHE / IIRIAM 10/00

Page 52 / 92

BR_VB_concepts.doc

B.ROCHE / IIRIAM 10/00

Page 53 / 92

BR_VB_concepts.doc

7.

LE CADRE

(FRAME)

Constitue un conteneur fonctionnel et visuel pour des contrles. Il est surtout utilis pour
les cases d'option. Il s'avre indispensable dans une feuille o il y a plusieurs groupes de
cases d'option afin de les distinguer. On pourra alors choisir une option dans chaque
cadre. On s'en sert galement titre visuel pour permettre une meilleure lisibilit de la
feuille. On regroupe alors dans chaque cadre des informations de mme nature.
Proprits courantes
Caption
FontBold
FontItalic
FontName
FontSize
FontUnderline
Name
Visible
Value

Valeurs

True
False

Description

l'option est valide


l'option n'est pas valide

* Remarques
On peut forcer une option par dfaut en mettant la valeur true dans la proprit value
lors de la conception de la feuille.
Si l'on ne veut pas faire figurer le cadre sur la grille pour des raisons esthtiques, mais
que celui-ci est indispensable, on peut mettre la proprit visible false.

Exemple :

dans cet exemple, on pourra choisir une option dans le cadre Sexe et une autre dans le cadre
Situation de Famille.

B.ROCHE / IIRIAM 10/00

Page 54 / 92

BR_VB_concepts.doc

II- LES CONTROLES DE LISTES ET FICHIERS


1. LE CONTROLE LISTE MODIFIABLE (COMBO BOX)

Permet l'utilisateur de taper dans un lment slectionn ou den slectionner un


dans une liste droulante. Si la zone de liste contient trop d'lments pour qu'ils puissent tre
affichs tous la fois, des barres de dfilement apparaissent automatiquement sur le
contrle. Ce type de contrle permet l'utilisateur de procder une slection soit en tapant
du texte dans la partie modifiable, soit en slectionnant l'un des lments dans la partie liste.

* remarque : il existe trois styles de listes modifiables :


liste modifiable droulante (Proprit Style = 0) ;
liste modifiable simple (Proprit Style = 1) ;
zone de liste droulante (Proprit Style = 2).
La figure suivante montre les trois styles de zones de liste modifiables.

Liste modifiable droulante (Style 0 par dfaut)


La valeur par dfaut (lorsque la proprit Style a la valeur 0) dfinit une liste comme tant
modifiable et droulante. L'utilisateur peut taper directement du texte (comme dans une zone de
texte) ou cliquer sur la flche situe droite de la zone afin d'ouvrir une liste de choix.
Liste modifiable simple (Style 1)
Pour afficher tous les lments de la liste, il faut dessiner une liste de taille suffisante. Une barre
de dfilement verticale est automatiquement insre lorsque le nombre dlments est suprieur
au nombre dlments pouvant tre affichs dans la liste. L'utilisateur peut taper directement du
texte ou faire sa slection dans la liste. Tout comme dans une liste modifiable droulante,
lutilisateur a la possibilit de taper des choix qui ne sont pas proposs dans la liste.
Zone de liste droulante (Style 2)
Une liste droulante ressemble une zone de liste normale : elle affiche une liste d'options parmi
lesquelles l'utilisateur doit choisir. Toutefois, contrairement aux zones de liste, la liste ne s'affiche
pas tant que lutilisateur ne clique pas sur la flche situe droite de la zone droulante. De
mme, dans une zone de liste, lutilisateur est uniquement autoris slectionner un lment.
Les lments de la liste peuvent tre fournis :
dans la proprit Liste
B.ROCHE / IIRIAM 10/00

Page 55 / 92

BR_VB_concepts.doc

En fait cette liste peut tre considre comme un tableau, dont l'index du premier lment a
la valeur 0.
par programme
On peut, par programme, modifier la liste en utilisant les mthodes suivantes :
Mthode
Syntaxe
Objet.AddItem valeur[,index]
AddItem
ajout d'un lment dans la liste
Objet.RemoveItem index
RemoveItem
Suppression d'un lment
Objet.Clear
Clear
Suppression de tous les
lments de la liste

Exemple
Cmbcru.AddItem "Ctes de
Bourg"
CmbCru.RemoveItem 1
CmbCru.Clear

On peut aussi travailler sur les lments de la liste en utilisant les proprits suivantes :
Proprit
Fonction
Exemple
Accs un lment de la liste TxtVin.text = CmbCru.list(4)
List(index)
Position de l'lment
pos = CmbCru.ListIndex
ListIndex
slectionn dans la liste
Fournit le nombre d'lments
ListCount
de la liste.
tri de la liste
Attention avec la mthode
Sorted
AddItem
* Remarque : On pourra associer une zone de liste les lments d'une table relationnelle. On
tudiera ce cas dans le chapitre concernant les donnes.

2. LE CONTROLE ZONE DE LISTE (LISTBOX)


La liste simple (listbox) contient un ensemble de chanes de caractres. Si la liste ne rentre
pas dans le rectangle dfini lors de la conception, une barre de dfilement verticale apparat
automatiquement. On peut demander ce que les donnes apparaissent sur plusieurs
colonnes (proprit column), cela pouvant faire apparatre une barre de dfilement
horizontale. Les lments de la liste peuvent tre tris (proprit sorted la conception).
B.ROCHE / IIRIAM 10/00

Page 56 / 92

BR_VB_concepts.doc

On peut demander ce que la liste permette la slection multiple simple (chaque clic slectionne
ou dslectionne un lment), ou tendue (avec les touche CTRL ou MAJ) avec la proprit
multiselect. Par dfaut cette proprit vaut 0 (pas de slection multiple).
Pour savoir si un lment de la liste a t slectionn, on peut utiliser la proprit Selected(index)
qui correspond un tableau de boolens indiquant l'tat de slection de chaque lment.
Exemple : if LstVin.Selected(j) then i = i + 1

3.

LISTE D'UNITES, LISTE DE REPERTOIRES , LISTE DE FICHIERS

Ces trois listes vont gnralement ensemble. Ils correspondent aux contrles suivants :
La liste d'units de disques (DriveListBox) est une liste droulante sans saisie, dont la liste
contient automatiquement toutes les units de disques de la machine (y compris CDROM). La proprit drive permet de connatre l'unit de disque slectionne.
La liste des rpertoires (DirListBox) donne la liste des sous-rpertoire du rpertoire
courant. La proprit path permet de connatre le rpertoire slectionn.
La liste des fichiers (FileListeBox) donne la liste des fichiers du rpertoire dont le nom est
contenu dans la proprit path du contrle liste des fichiers.
La proprit pattern permet de spcifier un filtre d'affichage (*.* par dfaut).
En fait, chaque slection de l'utilisateur les rpercutions d'une liste l'autre ne sont pas
automatiques. Il suffit d'crire deux lignes de code pour que tout se passe bien, en utilisant la
procdure d'vnement Change chaque fois que le lecteur ou le rpertoire courant change :
Exemple :

Private Sub Dir1_Change()


Fil1.Path = Dir1.Path
End Sub
Private Sub Drv1_Change()
Dir1.Path = Drv1.Drive
End Sub

B.ROCHE / IIRIAM 10/00

Page 57 / 92

BR_VB_concepts.doc

LE GLISSER - DEPLACER (DRAG AND DROP)

I- PRINCIPE
On appelle glisser l'opration qui consiste dplacer un contrle en maintenant enfonc un
bouton de la souris.
On appelle dplacer le relchement de ce bouton.
Le tableau suivant indique les proprits, vnements et mthodes associes aux oprations de
glisser - dplacer.
Catgorie
Proprits

Elment
DragMode
DragIcon

Evnements

DragDrop
DragOver

Mthodes

Move
Drag

Description
Permet le glissement automatique ou
manuel d'un contrle
Spcifie l'icne afficher lors du
dplacement du contrle
Correspond la dpose d'un contrle sur un
objet
Correspond au glissement d'un contrle sur
un objet
Dplace un contrle un nouvel
emplacement de coordonnes X et Y
Commence ou arrte un glissement manuel

Les contrles Menu, timer, Line et Shape ne reconnaissent pas les proprits DragMode et
DragIcon, ainsi que la mthode drag (on ne pourra donc pas les dplacer)
Les feuilles reconnaissent les vnements DragDrop et DragOver, ne reconnaissent pas les
proprits DragMode et DragIcon, ainsi que la mthode Drag.

II- PROPRIETES, EVENEMENTS, METHODES


1. GLISSEMENT AUTOMATIQUE (PROPRIETE DRAGMODE)
La valeur 0 (manuel) de cette proprit signifie que le glisser n'est possible qu'avec la mthode
Drag.
La valeur 1 (automatique) signifie que le glissement est activ, c'est dire que le glisseemnt de
l'objet est permis et se fait sans programmation.
On peut modifier par programme la valeur de cette proprit.
exemple : PicImage.DragMode = 0

2. ICONE DE GLISSEMENT (PROPRIETE DRAGICON)


Pendant le glissement, ce n'est pas l'objet qui est dplac, mais son contour. Il est possible de
remplacer ce contour par une icne, en utilisant la proprit DragIcon. Visual Basic fournit un
certain nombre d'icnes dans un sous rpertoire Icons du rpertoire Visual Basic.

B.ROCHE / IIRIAM 10/00

Page 58 / 92

BR_VB_concepts.doc

3. DEPOSE D 'UN OBJET (EVENEMENT DRAGDROP)


Cet vnement se produit lorsque l'on relche le bouton de la souris.
On peut donc rpondre cet vnement de plusieurs manires, notamment en dplacent l'objet
source sur l'objet destination, ou bien en refusant de dplacer l'objet source sur l'objet
destination.
Exemples :
- Cet exemple interdit tout collage sur l'objet pic1
Private Sub Pic1_DragDrop(Source As Control, X As Single, Y As Single)
MsgBox "il est interdit de dplacer un objet dans cette zone"
End Sub
- cet autre exemple dplace le contrle sur l'objet FrmAccueil :
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
If Source.Name = "Lbl1" Then
Source.Move X, Y
Else
MsgBox "vous n'avez pas le droit de dplacer ce contrle"
End If
End Sub
L'argument Source correspond l'objet source du dplacement. On teste ici le nom de l'objet
source afin d'autoriser uniquement le dplacement sur la feuille du contrle Lbl1. Le dplacement
a t fait grce la mthode move.

4. DEPLACEMENT DE L'OBJET (METHODE MOVE)


Cette mthode est utilise pour dplacer ou modifier la taille d'un objet.
Sa syntaxe est la suivante :
objet.Move gauche [, haut [, largeur [, hauteur]]]
On voit que seul le premier argument est facultatif, toutefois si on veut indiquer la hauteur, il faut
prciser tous les paramtres prcdents.
Pour dplacer un objet, on utilisera les arguments gauche et haut.
On le voit dans l'exemple prcdent.
* remarque : Il se peut que le contrle ne se positionne pas exactement au mme endroit que
celui de son propre contour apparu lors de l'opration de glissement. C'est normal
car les coordonnes fournies (X et Y) sont en fait celles de la souris, qui ne
correspond pas forcment au coin suprieur gauche du contour de l'objet dplac.
Pour remdier ce petit inconvnient, on peut faire un dplacement relatif aprs
avoir conserv les positions initiales de la souris.

5.

GLISSEMENT D'UN CONTROLE SUR UN OBJET

(EVENEMENT DRAGOVER)

Cet vnement se produit lorsque on fait glisser un contrle sur un autre objet. On peut donc
crire du code dans la procdure d'vnement correspondante, notament pour changer par
exemple le pointeur de la souris pour lui signifier que le dplacement du contrle sur cet objet est
interdit.
La procdure d'vnement comporte 3 paramtres :
source qui donne le contrle dplac et qui peut tre utilis comme un contrle
B.ROCHE / IIRIAM 10/00

Page 59 / 92

BR_VB_concepts.doc

X et Y : position en cours du pointeur de la souris dans la feuille ou le contrle cible


State( ou tat) : Entier qui correspond l'tat de transition du contrle en cours de
dplacement par rapport la feuille ou au contrle cible.
0 = Entre (le contrle source entre dans la porte de la cible).
1 = Sort (le contrle source sort de la porte de la cible).
2 = Dessus (le contrle source est pass d'une position une autre dans la cible).
L'exemple ci-dessous montre un changement de pointeur de souris lorsque un contrle entre sur
l'objet Picture1 et redevient normal quand le contrle ne glisse plus au dessus de picture1.
Quand il sort, on affiche galement un message d'au revoir.
Private Sub Picture1_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
Select Case State
Case 0
' Charge l'icne.
source.MouseIcon = LoadPicture("c:\vb\icons\traffic\trffc14.ico")
Case 1
' Dcharge l'icne.
Source.MouseIcon = LoadPicture()
MsgBox "Au Revoir"
End Select
End Sub

B.ROCHE / IIRIAM 10/00

Page 60 / 92

BR_VB_concepts.doc

L'ACCES AUX DONNEES : LE CONTROLE DATA

I- INTRODUCTION
Visual basic permet d'accder des donnes stockes sur disque. Ceci est indispensable en
informatique de gestion pour un langage de dveloppement.
Les donnes peuvent tre stockes :
soit dans des fichiers classiques,
soit dans des bases de donnes.
L'objet de ce chapitre est de traiter l'accs aux donnes stockes dans des bases de donnes.
On peut accder aux donnes d'une base de plusieurs faons. Nous ne nous intresserons ici
l'accs aux donnes d'une base Access 2, dans la mesure o le moteur DataJet est inclus dans
VB. Le contrle Data permet d'accder aux donnes sans quasiment crire de code. L'accs aux
donnes par programmation est largement dvelopp dans le cours D.A.O (Data Access Object).

II- LE CONTROLE DATA


1. PRESENTATION
Le contrle Data peut, sans l'emploi de code, effectuer les tches suivantes :
se connecter une base de donnes locale ou distante ;
ouvrir une table de base de donnes spcifie ou dfinir un jeu d'enregistrements partir
d'une requte SQL sur les tables de cette base de donnes ;
passer des champs de donnes des contrles dpendants dans lesquels on peut afficher ou
modifier les valeurs ;
ajouter de nouveaux enregistrements ou mettre jour une base de donnes en fonction des
modifications apportes aux donnes affiches dans les contrles dpendants ;
intercepter les erreurs qui se produisent au moment de l'accs aux donnes ;
fermer la base de donnes.
L'ajout du contrle Data sur une feuilles se droule exactement comme pour n'importe quel autre
contrle Visual Basic.
On peut avoir autant de contrles Data que ncessaire sur une feuille. Il ne sera pas
toutefois ncessaire qu'ils soient tous visibles (proprit visible).
En rgle gnrale, on utilisera un contrle Data pour chaque table (ou requte) de base de
donnes avec laquelle on souhaite travailler.

B.ROCHE / IIRIAM 10/00

Page 61 / 92

BR_VB_concepts.doc

2. MISE EN OEUVRE
Il est ncessaire de suivre les tapes suivantes :
Ajouter le contrle Data la feuille.
Une fois que le contrle dessin et dimensionn le contrle sur la feuille, une lgende apparat
(dans l'exemple suivant il s'agit de Data1). Le nom par dfaut du contrle est Data1, il s'agit de la
proprit Caption, que l'on peut changer comme l'on veut.

Dfinir ses proprits de faon identifier la base de donnes et la table partir desquelles
on veut obtenir des informations.
En dehors de la proprit caption, il faut renseigner les proprits suivantes :
Connect : il s'agit du type de base de donnes que l'on souhaite utiliser
DatabaseName pour dfinir le nom du fichier et du rpertoire de la base de donnes
laquelle on souhaite se connecter.
RecordSource pour le nom de la table de base de donnes laquelle on souhaite accder.

* Remarque : Si la base de donnes n'est pas disponible au moment de la cration, on doit


dfinir les proprits DatabaseName et RecordSource au moment de l'excution.
Ajouter des contrles dpendants (notamment des zones de texte, des zones de liste et
d'autres contrles qu'on "lie" au contrle Data).
Dfinir les proprits des contrles dpendants pour identifier la source et le champ de
donnes afficher.
Quand on excute l'application, ces contrles dpendants affichent automatiquement les champs
de l'enregistrement en cours dans la base de donnes.

3. LE DEPLACEMENT DANS UNE TABLE OU UNE REQUETE

On peut modifier les informations contenues dans la base de donnes en changeant la valeur
affiche dans l'un des contrles dpendants. Lorsque l'on clique sur une flche du contrle Data
pour passer un nouvel enregistrement, Visual Basic enregistre automatiquement toutes les
modifications apportes aux donnes.
Bien entendu, on peut ajouter du code pour enrichir l'application.

B.ROCHE / IIRIAM 10/00

Page 62 / 92

BR_VB_concepts.doc

III- LES CONTROLES DEPENDANTS


1. PRESENTATION
Les contrles dpendants sont des contrles lis aux bases de donnes par l'intermdiaire
desquels on accde aux informations contenues dans une base de donnes.
Lorsqu'un contrle est li au contrle Data, Visual Basic applique au contrle dpendant les
valeurs de champ de l'enregistrement de base de donnes en cours. Le contrle affiche ensuite
les donnes et accepte vos modifications. Si on modifie des donnes dans un contrle
dpendant, les changements peuvent tre automatiquement rpercuts dans la base de donnes
lorsque l'on passe un autre enregistrement.
La plupart des contrles dpendants se caractrisent par trois proprits lies aux bases de
donnes, savoir DataChanged, DataField et DataSource.
Proprit
DataChanged
DataField
DataSource

Description
Indique si une valeur affiche dans un contrle dpendant a chang.
Spcifie le nom d'un champ dans le jeu d'enregistrements cr par le contrle
Data.
Spcifie le nom du contrle Data auquel le contrle est li.

2. AJOUT DE CONTROLES DEPENDANTS DANS UNE FEUILLE


Pour ajouter des contrles dpendants dans une feuille, il faut :
Dessiner le contrle dpendant sur la mme feuille que le contrle Data auquel il sera li.
- Dfinir la proprit DataSource pour spcifier le contrle Data auquel il sera li.
Affecter la proprit DataField un champ valide dans l'objet Recordset du contrle Data.
Si la base de donnes est accessible au moment de la cration, une liste des champs valides est
affiche dans la zone des paramtres de la proprit DataField dans la fentre Proprits. En
revanche, si elle n'est pas disponible au moment de la cration, on doit indiquer un nom de
champ valide au moment de l'excution avant que les valeurs des donnes soient transmises au
contrle partir de la base de donnes.

3. AJOUT D'UN NOUVEL ENREGISTREMENT


On peut ajouter un nouvel enregistrement la base de donnes l'aide du contrle Data de
deux manires diffrentes :
en affectant la valeur "2 - Add New" la proprit EOFAction du contrle Data ;
en utilisant, dans du code, la mthode AddNew de l'objet Recordset du contrle Data.
Utilisation de la proprit EOFAction
EOFAction et BOFAction sont des proprits du contrle Data qui dterminent ce qu'il se passe
quand on se dplace au-del du dbut ou de la fin de l'objet Recordset du contrle Data.
Le tableau suivant rpertorie les constantes qui peuvent tre affectes la proprit EOFAction.

B.ROCHE / IIRIAM 10/00

Page 63 / 92

BR_VB_concepts.doc

Constante
vbEOFActionMoveLast

vbEOFActionEOF

vbEOFActionAddNew

Valeur
Action
0
Une mthode MoveLast a t utilise pour positionner
l'enregistrement en cours au niveau du dernier enregistrement
du jeu d'enregistrements et ainsi empcher l'utilisateur de
poursuivre le dfilement au-del de la fin du jeu
d'enregistrements.
1
Positionne l'enregistrement en cours au niveau de
l'enregistrement non valide (EOF) et dsactive le bouton
correspondant la mthode MoveNext dans le contrle Data.
2
Valide le dernier enregistrement et invoque automatiquement
la mthode AddNew avant de positionner le contrle Data au
niveau du nouvel enregistrement.

Si la proprit EOFAction a la valeur vbEOFActionAddNew, lorsque l'utilisateur se dplace audel du dernier enregistrement, le contrle Data cre automatiquement un nouvel enregistrement
et autorise l'utilisateur taper des donnes. Quand l'utilisateur tape de nouvelles donnes puis
quitte l'enregistrement en cours (le nouvel enregistrement), celui-ci est automatiquement mis
jour et enregistr dans la base de donnes. En revanche, si l'utilisateur quitte le nouvel
enregistrement sans ajouter des donnes, celui-ci est effac.
Utilisation de la mthode AddNew
Il est galement possible d'ajouter un nouvel enregistrement l'aide de la mthode AddNew de
l'objet Recordset du contrle Data. Cette mthode ncessite toutefois l'emploi de code Visual
Basic. Sa syntaxe est la suivante :
Data1.Recordset.AddNew
Quand la mthode AddNew est utilise, Visual Basic ajoute un nouvel enregistrement la fin du
jeu d'enregistrements. A ce stade, tous les contrles dpendants sont vids de leur contenu et on
peut taper les valeurs du nouvel enregistrement. Aprs l'ajout d'un nouvel enregistrement, on doit
enregistrer les informations en appliquant la mthode Update ou en cliquant sur une flche du
contrle Data pour atteindre un autre enregistrement. La syntaxe de la mthode Update est la
suivante :
Data1.Recordset.Update
Quand on utilise les flches du contrle Data ou une des mthodes Move pour se dplacer
jusqu' un autre enregistrement, la mthode Update est automatiquement appele pour
enregistrer le nouvel enregistrement.

4. MISE A JOUR D'UN ENREGISTREMENT


Aprs avoir modifi un enregistrement, on doit enregistrer les donnes mises jour dans la base
de donnes en appliquant la mthode Update au jeu d'enregistrements :
Data1.Recordset.Update
on peut aussi utiliser la mthode Update aprs la mthode AddNew au lieu de cliquer sur une
des flches du contrle Data.

B.ROCHE / IIRIAM 10/00

Page 64 / 92

BR_VB_concepts.doc

* Remarque : Une tentative d'ajout ou de modification d'un enregistrement peut chouer dans
les conditions suivantes :
la table possde un index unique et cet enregistrement figure dj dans la table ;
la valeur Null est affecte un des champs de la cl d'index de votre enregistrement ;
on ne dispose pas de la permission d'criture pour la table ou la base de donnes ;
la base de donnes, la table ou le champ ne peut pas tre mis jour ;
la page qui contient l'enregistrement est verrouille ;
le contenu du contrle dpendant ne correspond pas la dfinition du champ dans la base de
donnes ;
la modification enfreint une des rgles d'intgrit de la base de donnes;
la modification enfreint une des rgles de validation que l'on a spcifi.
Il faudra donc systmatiquement envisager ces cas lorsque l'on fera une modification ou un ajout
d'enregistrement en crant des routines de gestion d'erreur.
Si on souhaite annuler la mthode AddNew, il suffit d'excuter une nouvelle fois cette mme
mthode ( condition de ne pas avoir valid l'enregistrement par update ou par la flche du
contrle Data) et de passer un autre enregistrement. On peut galement excuter la mthode
UpdateControls du contrle Data pour restaurer les valeurs prcdentes des contrles
dpendants.

5. SUPPRESSION D 'UN ENREGISTREMENT


on peut supprimer un enregistrement l'aide de la mthode Delete. Pour cela, on doit d'abord
dplacer le contrle Data jusqu' l'enregistrement supprimer, puis appeler la mthode Delete. Il
n'est pas ncessaire d'utiliser ensuite la mthode Update. La mthode Delete supprime
l'enregistrement en cours de la base de donnes et le rend non valide. On doit alors passer un
autre enregistrement du jeu.
Toute tentative de modification du contenu de l'enregistrement supprim entrane une erreur
rcuprable. On peut donc crer un bouton "Supprimer" avec ces deux lignes de codes, sans
oublier l'intercepteur d'erreur :
Data1.Recordset.Delete
Data1.Recordset.MoveNext

IV- LES CONTROLES DEPENDANTS SPECIFIQUES


1. LES CONTROLES DBCOMBO ET DBLIST
Les contrles DBList et DBCombo ressemblent beaucoup aux contrles ListBox et
ComboBox, l'exception de quelques diffrences majeures qui leur confrent davantage de
souplesse ainsi qu'une plus grande utilit dans les applications de base de donnes.
Ces deux contrles peuvent tre automatiquement remplis partir d'un champ de base de
donne du contrle Data auquel ils sont lis. En outre, ils peuvent ventuellement faire passer un
champ slectionn un autre contrle Data, caractristique extrmement pratique pour les
applications de type "tables de consultation".
Comme leurs homologues intgrs, les contrles DBList et DBCombo se diffrencient
essentiellement par le fait que le contrle DBCombo fournit une zone de texte qui peut tre
modifie et dans laquelle le champ slectionn peut tre copi.

B.ROCHE / IIRIAM 10/00

Page 65 / 92

BR_VB_concepts.doc

Contrairement la plupart des autres contrles dpendants, les contrles DBList et DBCombo
se caractrisent par cinq proprits spciales, numres dans le tableau ci-aprs, qui
dfinissent la liaison aux donnes.
Proprit
DataSource
DataField

RowSource
BoundColumn

ListField

Description
Nom du contrle Data auquel est li le contrle DBList ou
DBCombo.
Nom d'un champ dans le jeu d'enregistrements spcifi par la
proprit DataSource. Ce champ servira dterminer quel
lment de la liste sera mis en surbrillance. En cas de nouvelle
slection, ce champ est mis jour quand on passe un autre
enregistrement
Nom du contrle Data qui servira remplir la liste.
Nom d'un champ dans le jeu d'enregistrements spcifi par la
proprit RowSource. Cette liste doit tre du mme type que le
champ DataField qui sera utilis pour mettre jour DataField.
Nom d'un champ dans le jeu d'enregistrements spcifi par la
proprit RowSource qui sera utilis pour remplir la liste.

Ces contrles sont gnralement utiliss pour construire une liste d'lments sur la base d'une
requte de base de donnes partir de laquelle un utilisateur peut slectionner ou taper une
valeur, voire modifier le champ slectionn dans le cas d'une liste modifiable dpendante.
Lorsqu'un lment de la liste est slectionn, la valeur BoundColumn qui lui est associe devient
accessible au contrle Data spcifi par la proprit DataSource. Ds que le contrle Data passe
un autre enregistrement ou est mis jour d'une autre manire, le jeu d'enregistrements est mis
jour avec le texte slectionn ou modifi.
Exemple
On va tudier un exemple concret pour d'utilisation que l'on peut faire de ces deux contrles.
On gre des lves qui appartiennent un lyce. Un lve n'est inscrit que dans un et un seul
lyce, on a donc naturellement le numro du lyce dans la table des lves. Lorsqu'on saisit un
lve, on veut lui affecter le numro de lyce adquat. Le problme, c'est que dans une feuille de
saisie digne de ce nom, on veut que l'oprateur choisisse parmi une liste de nom de lyces et
que le numro soit automatiquement affect dans la table des lves de manire transparente.
Voici donc le mode opratoire pour raliser cet exemple.
La table ELEVES contient les champs suivants : noel de type compteur, nomel de type chane,
prenomel de type chane, nolyc de type entier long.
La table LYCEE est compose de : nolyc de type compteur, nomlyc de type chane, ville de type
chane.
Sur une feuille de travail, on place les contrles ncessaires la saisie ou la modification d'un
lve :
- 4 contrles de type zone de texte (textbox) appels txtnoel, txtnomel, txtprenomel et txtnolyc,
- un contrle data appel data1.
Les proprits du contrle donnes modifier sont :
- databasename : le nom de la base avec son chemin d'accs (VB offre un parcours standard),
- recordsource : eleve.

B.ROCHE / IIRIAM 10/00

Page 66 / 92

BR_VB_concepts.doc

Pour chacun des contrles zone de texte, il faut que la proprit datasource contienne la valeur
data1 et que la proprit datafield contienne le nom du champ de la table lve correspondant.
Pour la liste des lyces, on insre un contrle dbcombo, appel DbClistlyc, et un deuxime
contrle de donnes appel data2 (dont on peut mettre la proprit visible false).
La proprit databasename de data2 est la mme que data1, la proprit recordsource de data2
doit contenir lycee.
Les proprits du contrle DbClistlyc sont :
- rowsource : data2,
- listfield : nomlyc,
- datasource indique le contrle donnes devant tre mis jour, ici : data1,
- datafield est le champ devant tre mis jour, ici : nolyc (numro de lyce de la table ELEVE),
- Boundcolumn indique le lien entre les deux tables, ici : nolyc (numro de lyce de la table
LYCEE).
Lorsqu'une slection est faite dans la liste, la proprit boundtext contient la valeur du champ
indiqu dans boundcolumn correspondant la ligne slectionne; en clair elle contiendra le
numro du lyce correspondant au nom de lyce slectionn dans la liste.
Le problme est que le report n'apparat pas immdiatement l'cran, pour que cela se fasse il
suffit d'ajouter la ligne de code suivante dans la procdure vnement change du contrle
DbClistlyc :
nolyc.text = lystlyc.boudtext
Pour ajouter un nouvel enregistrement, on place un bouton de commande, sur l'vnement click
on crit la ligne suivante :
data1.recordset.addnew

2. LE CONTROLE DBGRID
Il est possible de personnaliser intgralement le contrle DBGrid et de le manipuler
directement dans le code, ce qui confre une grande souplesse dans la cration d'applications de
base de donnes sur mesure.
Dans bien des cas cependant, DBGrid servira afficher et parcourir rapidement tous les
enregistrements d'une table de base de donnes. On peut effectuer cette opration en quelques
minutes, sans crire une seule ligne de code.
Pour utiliser DBGrid afin d'afficher et de parcourir une table de base de donnes existante, il faut
suivre la procdure suivante :
Ajouter un contrle Data une nouvelle feuille et spcifier la base de donnes et la table
afficher (proprits DatabaseName et RecordSource de ce contrle).
-2. Ajouter un contrle DBGrid la feuille et li attribuer le contrle Data que l'on vient de crer
(proprit DataSource).
3. Excutez l'application.

B.ROCHE / IIRIAM 10/00

Page 67 / 92

BR_VB_concepts.doc

Lorsque le programme s'excute, la table de base de donnes que spcifie s'affiche dans le
contrle DBGrid, avec tous ses lments : titres de colonne (provenant du Recordset du contrle
Data) et barres de dfilement. On peut immdiatement passer en revue tous les enregistrements
et les champs de la table. De plus, il est possible de modifier n'importe quelle cellule de la table,
la mise jour s'effectuant automatiquement ds que l'on passe une autre ligne ( condition que
la mise jour du Recordset sous-jacent soit possible et que la proprit AllowUpdate du contrle
DBGrid ait la valeur True).
Si les proprits AllowAddNew et AllowDelete possdent la valeur True, On peut mme
supprimer des enregistrements en slectionnant et en supprimant la ligne toute entire.

a) Concepts fondamentaux
Le contrle DBGrid dpend de deux autres objets :
L'objet Recordset du contrle Data ;
La collection Columns de ce contrle DBGrid.
DBGrid est en fait une collection d'objets Column, comportant chacun un nombre de lignes
variable. Chaque colonne correspond un champ d'une table de base de donnes et chaque
ligne un enregistrement. La proprit Count de la collection Columns du contrle dtermine le
nombre de colonnes, et la proprit RecordCount du Recordset du contrle Data dtermine le
nombre de lignes.
A l'excution, les proprits Row et Col spcifient la cellule courante dans une grille. On peut
donc utiliser ces proprits dans le code. L'utilisateur peut la modifier l'excution, l'aide d'une
souris ou des touches de direction. Quand l'utilisateur change de cellule courante, le Recordset
du contrle Data sous-jacent est repositionn automatiquement sur l'enregistrement contenant la
cellule slectionne.

b) Actions lors de la conception


Lors de sa conception, le contrle DBGrid possde une seule colonne et une seule ligne. Il
contient galement une ligne vide (dsigne l'excution par l'astrisque (*)), qui sert ajouter
de nouveaux enregistrements.
Lorsqu'on dfinit la proprit DataSource, le contrle DBGrid se lie au Recordset cr par le
contrle Data ; il dfinit ensuite le nombre de colonnes et les autres proprits de colonne partir
des proprits correspondantes des objets Field contenus dans le Recordset du contrle Data.
La fentre Proprits affiche les proprits pour l'ensemble du contrle DBGrid.

(1)

Dfinir les colonnes

Pour dfinir les proprits des objets Column individuels, on doit:


activer le contrle DBGrid pour l'interface utilisateur : l'aide du bouton droit de la souris,
choisir Modifier dans le menu contextuel du contrle
Utiliser le menu contextuel pour insrer ou supprimer des colonnes
On arrive ceci :

B.ROCHE / IIRIAM 10/00

Page 68 / 92

BR_VB_concepts.doc

On voit que chaque colonne (objet Column) a son propre onglet.


On peut utiliser ces onglets pour dfinir interactivement des proprits pour l'ensemble du
contrle DBGrid ou pour des colonnes slectionnes individuellement.
L'onglet "Gnral" affiche les proprits qui s'appliquent la totalit du contrle DBGrid et qui
peuvent tre fixes lors de la conception. Ces proprits sont galement disponibles dans la
fentre Proprits standard.
L'onglet "Colonnes" affiche les proprits d'une colonne individuelle. Si plusieurs colonnes sont
slectionnes, les proprits de la colonne la plus gauche dans l'onglet "Colonnes"
apparaissent. La dfinition de proprits d'objet Column n'affecte pas les proprits gnrales de
contrle DBGrid.
L'onglet "Couleurs" permet de slectionner les couleurs s'appliquant l'ensemble du contrle
DBGrid. Les couleurs d'objet Column ne sont pas affectes par ces dfinitions.
L'onglet "Polices" permet de slectionner les polices utilises dans l'ensemble du contrle DBGrid
et dans les titres. Les polices d'objet Column ne sont pas affectes par ces dfinitions.
(2)
Mise en forme des colonnes
On peut dfinir des proprits spcifiques pour chaque colonne du contrle DBGrid.
Lors de la cration, on a la possibilit de dfinir la largeur de colonne et la hauteur de ligne, mais
aussi de masquer des colonnes. Il est possible d'empcher les utilisateurs de modifier la mise en
forme l'excution.
Si le texte d'une cellule est trop long pour tre affich dans cette cellule, le passage la ligne
s'effectue automatiquement l'intrieur de la cellule. Pour afficher l'intgralit du texte, on peut
augmenter la valeur de la proprit Width de l'objet Column de la cellule ou celle de la proprit
RowHeight du contrle DBGrid lui-mme. Lors de la conception, on peut modifier la largeur de
colonne de manire interactive, soit en redimensionnant la colonne, soit en modifiant la proprit
Width de la colonne dans l'onglet de l'objet Column.

B.ROCHE / IIRIAM 10/00

Page 69 / 92

BR_VB_concepts.doc

c) Actions lors de lexcution


A l'excution, le contrle DBGrid affiche les enregistrements de l'objet Recordset sous-jacent. Il y
a toujours un seul enregistrement courant dans le contrle DBGrid, mme si plusieurs lignes sont
slectionnes : l'enregistrement courant correspond l'enregistrement courant du contrle Data
et peut tre dfini ou extrait l'aide de la proprit Bookmark du contrle DBGrid.
Comme dans tous les contrles dpendants, la modification d'un enregistrement (ou d'un champ
dans un enregistrement) dans le contrle DBGrid entrane la mise jour du Recordset sousjacent ds que l'on se dplace vers un nouvel enregistrement (une nouvelle ligne), condition
que cette mise jour soit possible et que la proprit AllowUpdate du contrle DBGrid ait la
valeur True. Autrement, une erreur rcuprable se produit.
Si on affecte la valeur True la proprit MultiSelect, il est possible d'accder aux colonnes
slectionnes l'aide de la collection SelBookmarks (renvoye dans la proprit SelBookmarks).
Si la proprit RecordSelectors possde la valeur True, l'utilisateur peut slectionner une ligne
toute entire en cliquant sur l'icne du slecteur d'enregistrement pour cette ligne.
(1)
Slection de cellules
Lorsque l'on slectionne une cellule, la proprit ColIndex est dfinie, ce qui provoque la
slection d'un des objets Column dans la collection Columns de l'objet DBGrid. Les proprits
Text et Value de l'objet Column se rapportent au contenu de la cellule courante.
Il est possible d'accder aux donnes de la ligne slectionne l'aide de la proprit Bookmark,
qui donne accs l'enregistrement courant de l'objet Recordset sous-jacent.
(2)
Slection de plages
Le contrle DBGrid permet de slectionner des plages de cellules, comme dans une feuille de
calcul. Toutefois, il n'offre pas de fonctionnalit automatique pour la manipulation de plages (par
exemple, copier, supprimer ou dplacer des blocs entiers de champs ou d'enregistrements). Si on
souhaite mettre en uvre ce type de fonctionnalit, il faudra crire le code correspondant.
Les informations relatives aux plages slectionnes sont renvoyes de deux manires :
Les cellules DBGrid elles-mmes sont renvoyes dans les proprits SelStartCol,
SelStartRow, SelEndCol et SelEndRow.
Des signets (bookmark) pointant sur les enregistrements de base de donnes affichs dans la
plage slectionne sont renvoys dans la proprit SelBookmarks.
Par exemple, pour supprimer la plage d'enregistrements slectionne il faut :
Parcour itrativement la collection SelBookmarks, en utilisant la proprit Count pour
dtecter ses limites.
-2 A chaque parcours de la boucle, affecter la proprit Bookmark de l'objet Recordset du
contrle Data la valeur du signet dans la collection SelBookmarks, et supprimez l'enregistrement.
Cette dmarche est illustre dans l'exemple de code suivant :
Private Sub DeleteRows_Click ()
Do While DataGrid1.SelBookmarks.Count <> 0
Data1.Recordset.Bookmark = DataGrid1.SelBookmarks(0)
Data1.Recordset.Delete
Loop
End Sub

B.ROCHE / IIRIAM 10/00

Page 70 / 92

BR_VB_concepts.doc

(3)
Champs calculs
Il est possible d'utiliser le contrle DBGrid pour afficher des champs calculs. On appelle ainsi
des champs qui ne figurent pas rellement dans la base de donnes, mais sont calculs partir
des donnes contenues dans les champs de cette base.
Un exemple de champ calcul est fourni par l'affichage d'une colonne "TVA" lorsque la base de
donnes contient seulement un champ "prix".
Pour afficher un champ calcul il faut :
Ajouter un champ indpendant au contrle DBGrid.
- Sur l'vnement RowLoaded, effectuer le calcul et affecter le rsultat la proprit Value
de la colonne.

B.ROCHE / IIRIAM 10/00

Page 71 / 92

BR_VB_concepts.doc

L'ACCES AUX DONNEES : LES FICHIERS

I- INTRODUCTION
L'objet de ce chapitre est de traiter l'accs aux donnes stockes dans des fichiers sachant que
c'est loin d'tre le cas le plus frquent. Stocker des informations dans des fichiers peut tre
toutefois intressant dans une application, par exemple pour stocker des donnes de manire
temporaire, ou bien lorsque l'on ne manipule qu'un nombre trs restreint d'informations (tant en
nombre de fichiers que d'enregistrements).
Le type de donnes contenues dans le fichier permet de dterminer le type d'accs ce fichier. Il
existe trois types d'organisation et d'accs de fichiers dans Visual Basic :
Squentiel : concerne les fichiers texte standards. Les donnes sont stockes sous forme de
caractre ANSI. Chaque caractre du fichier reprsente un caractre de texte ou bien un
caractre de mise en forme (Retour chariot par exemple). On peut visualiser le contenu de ces
fichiers sous un diteur de texte.
Alatoire : contient un certain nombre d'enregistrements de longueur fixe. Un enregistrement
peut donc comporter un certain nombre de champs. Les informations sont stockes en binaire.
On accde un enregistrement avec son numro.
Binaire : il s'agit du mme type de fichier que le prcdent, mis part le fait qu'il n'y a pas de
contrainte quant aux types de donnes ni la longueur des enregistrements. On ne l'utilisera
quasiment jamais.

II- FONCTIONS RELATIVES AUX FICHIERS


Fonction
Dir
EOF
FileCopy (instruction)
FileDateTime
FileLen
FreeFile
GetATTr
Loc

LOF
Seek

B.ROCHE / IIRIAM 10/00

Signification
Renvoie le nom d'un fichier, d'un rpertoire, ou bien le nom de
volume d'un lecteur.
Renvoie une valeur qui indique si la fin d'un fichier est atteinte.
EOF(filenumber)
Copie un fichier. FileCopy source, destination
Renvoie une date qui indique la date et l'heure de la cration ou
de la dernire modification d'un fichier. FileDateTime(pathname)
Renvoie la taille d'un fichier en octets. FileLen(pathname)
Renvoie le numro de fichier disponible suivant l'usage de
l'instruction Open. FreeFile[(plage)]
Renvoie un nombre qui reprsente les attributs d'un fichier ou
d'un rpertoire. GetAttr(pathname)
Renvoie la position de lecture/criture en cours dans un fichier
ouvert. Loc(filenumber)
Renvoie la longueur, exprime en octets, d'un fichier ouvert
l'aide de l'instruction Open. LOF(filenumber)
Renvoie la position de lecture/criture en cours dans un fichier
ouvert l'aide de l'instruction Open. Seek(filenumber)
Page 72 / 92

BR_VB_concepts.doc

Fonction
SetAttr (instruction)

Signification
Dfinit les attributs d'un fichier. SetAttr pathname, attributes

III- LES FICHIERS SEQUENTIELS


1. OUVERTURE
L'ouverture du fichier va dterminer son mode d'utilisation :
Lecture (entre) : Input
Ecriture (sortie) : Output
Ajout en fin de fichier : Apend
Syntaxe :
Open chemin [For Input | Output | Append] As numrofichier

L'instruction Open comprend les lments suivants :


chemin
numrofichier

Expression de chane qui spcifie un nom de fichierpeut


comprendre un nom de rpertoire et un nom de lecteur.
Numro de fichier compris entre 1 et 511 inclus. Utilisez la
fonction FreeFile pour obtenir le numro de fichier disponible
suivant.

La fermeture d'un fichier se fait avec l'instruction CLOSE.


Close [listenumrofichier]

2. LECTURE D 'UN ENREGISTREMENT


Line Input #numrofichier, variable
Lit une ligne partir d'un fichier squentiel ouvert et l'affecte une variable de type String.
Input #numrofichier, listevariables
Lit les donnes partir d'un fichier squentiel ouvert et les affecte des variables.
Exemples
Open "FICHTEST" For Input As #1
Do While Not EOF(1)
Line Input #1, LigneTexte
Debug.Print LigneTexte
Loop
Close #1

' Ouvre le fichier.


' La boucle est effectue jusqu' la fin du fichier.
' Place la ligne lue dans la variable.
' Affiche dans la fentre Dbogage.

B.ROCHE / IIRIAM 10/00

Page 73 / 92

' Ferme le fichier.

BR_VB_concepts.doc

Open "FICHTEST" For Input As #1


Do While Not EOF(1)
Input #1, MaChane, MonNombre
Debug.Print MaChane, MonNombre
Loop
Close #1

' Ouvre le fichier en lecture (Input).


' La boucle est effectue jusqu' la fin du fichier.
' Place les donnes lues dans les variables.
' Affiche les donnes dans la fentre Dbogage
' Ferme le fichier.

3. ECRITURE D'UN ENREGISTREMENT


Print #numrofichier, [listeexpression]
Ecrit des donnes formates pour l'affichage dans un fichier squentiel.
Write #numrofichier, [listeexpression]
Ecrit des donnes brutes dans un fichier squentiel.
Contrairement l'instruction Print #, l'instruction Write # insre des virgules entre les lments et
des guillemets doubles de part et d'autre des chanes de caractres au moment de l'criture dans
le fichier. Vous n'avez donc pas placer de sparateurs explicites dans la liste. L'instruction
Write # insre un caractre de passage la ligne (retour chariot ou retour chariot et saut de ligne)
ds qu'elle a crit dans le fichier le dernier caractre contenu dans l'argument listeexpression .
Exemples :
numfic = FreeFile
Open "FICHTEST" For Output As #numfic
Write #numfic, "Bonjour tout le monde", 234

' Ouvre le fichier en criture (Output).


' Les donnes crites sont dlimites par
' des virgules.
Write #numfic
' Ecrit une ligne vierge.
MonBool = False: MaDate = #February 12, 1969#: MonNul = Null
MonErreur = CVErr(32767)
Write #numfic, MonBool ; " est une valeur boolenne"
Write #numfic, MaDate ; " est une date"
Write #numfic, MonNul ; " est une valeur de type nul"
Write #1, MonErreur ; " est une valeur d'erreur"
Close #numfic
' Ferme le fichier.
Open "FICHTEST" For Output As #1
' Ouvre le fichier en criture (Output)
Print #1, "Ceci est un exemple"
' Ecrit le texte dans le fichier.
Print #1,
' Ecrit une ligne vierge dans le fichier.
Print #1, "Zone 1"; Tab ; "Zone 2"
' Ecrit dans deux zones.
Print #1, "Bonjour" ; " " ; "tout le monde"
'Spare les chanes de caractres avec des espaces.
Print #1, Spc(5) ; "5 espaces gauche " ' Insre 5 espaces gauche.
Print #1, Tab(10) ; "Bonjour"
' Ecrit le mot partir de la colonne 10.
MonBool = False : MaDate = #February 12, 1969# : MonNul = Null
MonErreur = CVErr(32767)
Print #1, MonBool ; " est une valeur boolenne"
Print #1, MaDate ; " est une date"
Print #1, MonNul ; " est une valeur nulle"
Print #1, MonErreur ; " est une valeur d'erreur"
Close #1
' Ferme le fichier.

B.ROCHE / IIRIAM 10/00

Page 74 / 92

BR_VB_concepts.doc

IV- LES FICHIERS ALEATOIRES


1.

LES ENREGISTREMENTS

Dans un fichier en accs alatoire, tous les enregistrements doivent avoir une longueur fixe. On
peut donc, si besoin, dclarer des types d'enregistrements.Les types de donnes dfinis par
l'utilisateur peuvent contenir un ou plusieurs lments d'un type de donnes fondamental
quelconque, d'un type de tableau ou d'un autre type prcdemment dfini par l'utilisateur.
exemple :
Type Enfants
MonNom As String
MonAnniversaire As Date
MonSexe As Integer

' La variable de type String contient un nom.


' La variable de type Date contient une date de naissance.
' La variable de type Integer contient le sexe (0 pour fminin,
1 pour masculin).

End Type

La dclaration se fait alors de la manire suivante :


Dim MonEnreg As Enfants
' Dclare la variable.
' L'affectation de la variable de type Enfants doit se faire dans une procdure.
MonEnreg.MonNom = "ROCHE"
' Affecte une valeur un lment.

2. OUVERTURE
Open chemin For Random [Access accs] [verrou] As [#]numrofichier Len=longueur
chemin
accs
verrou

numrofichier

longueur

B.ROCHE / IIRIAM 10/00

Expression de chane qui spcifie un nom de fichier. Peut


comprendre un nom de rpertoire et un nom de lecteur.
Mot cl qui spcifie les oprations qui peuvent tre excutes
sur le fichier ouvert : Read, Write ou Read Write.
Mot cl qui spcifie les oprations que d'autres processus
peuvent excuter sur le fichier ouvert : Shared, Lock Read, Lock
Write, Lock Read Write.
Numro de fichier compris entre 1 et 511 inclus. On peut utiliser
la fonction FreeFile pour obtenir le numro de fichier disponible
suivant.
Nombre infrieur ou gal 32 767 (octets). Cette valeur
reprsente la longueur de l'enregistrement.

Page 75 / 92

BR_VB_concepts.doc

3. LECTURE D 'UN ENREGISTREMENT


Get # numrofichier, numroenreg, variable
Lit les donnes d'un fichier disque ouvert et les place dans une variable dfinie par l'utilisateur.

numrofichier
numroenreg
variable

N'importe quel numro de fichier valide.


Numro de l'enregistrement lire
Nom de variable valide utilis pour recevoir le contenu de la
lecture.

Exemple
Type Enreg
' Dfinit un type dfini par l'utilisateur.
ID As Integer
Nom As String * 20
End Type
Dim MonEnreg As Enreg
' Dclare la variable.
Open "FICHTEST" For Random As #1 Len = Len(MonEnreg) ' Ouverture du fichier en Random.
Position = 3
' Dfinit le numro d'enregistrement.
Get #1, Position, MonEnreg
' Lit le troisime enregistrement.
Close #1
' Ferme le fichier.

4. ECRITURE D'UN ENREGISTREMENT


Put # numrofichier, numroenreg, variable
Ecrit le contenu d'une variable dans un fichier disque.
numrofichier
numroenreg
variable

N'importe quel numro de fichier valide.


Numro de l'enregistrement marquant le dbut de l'criture
Nom de la variable contenant les donnes crire sur le disque.

Remarque : Pour supprimer un enregistrement dans un fichier accs alatoire, il faut crer
un nouveau fichier alatoire, recopier dedans les enregistrements garder, supprimer le fichier
d'origine (instruction Kill) et renommer le nouveau fichier pour lui donner le nom de celui que l'on
vient de dtruire (instruction Name).

V- LES FICHIERS BINAIRES


Fonctionne exactement comme les fichiers accs alatoire sauf que l'instruction open a la
forme suivante :
Open chemin For Binary As numrofichier
Il n'est pas utile de prciser la longueur de l'enregistrement dans la mesure o leur longueur peut
tre variable.

B.ROCHE / IIRIAM 10/00

Page 76 / 92

BR_VB_concepts.doc

LES APPLICATIONS MDI

I- PRESENTATION
Une application MDI (Multiple Document Interface) permet de visualiser, dans une feuille
principale, un ensemble de feuilles-enfants (MDIChild). Ces feuilles peuvent contenir :
des reprsentations diffrentes d'une mme information,
plusieurs enregistrements d'une base de donnes
des informations complmentaires...
Exemple de visualisation d'une mme information dans 2 feuilles-enfants :

On pourrait utiliser des feuilles indpendantes pour raliser la mme opration, alors pourquoi
une application MDI ? En fait, il y a plusieurs avantages offerts par cette technique; tout d'abord,
les feuilles-enfants ne sortent pas de la fentre principale lorsqu'on les dplace. On peut iconifier
les feuilles-enfants l'intrieur de la feuille principale. On dispose de mthodes permettant la
matrise de positionnement des feuilles-enfants. Ces avantages sont essentiellement lis une
meilleur utilisation de l'cran pour les applications ouvrant trop de fentres afin que l'espace de
travail de l'utilisateur ne soit pas trop surcharg.

B.ROCHE / IIRIAM 10/00

Page 77 / 92

BR_VB_concepts.doc

II- CREATION D'UNE FEUILLE MDI


La cration d'une application MDI est trs simple. il suffit d'utiliser l'option " Insertion FeuilleMDI".
VB cre une nouvelle feuille destine contenir d'autres feuilles. Il faut noter que cette option ne
sera plus accessible, dans la mesure o l'on ne dispose que d'une feuille MDI par application. On
peut crer un menu propre la feuille principale.
Si une application ne peut avoir qu'un seul objet MDIForm , elle peut avoir plusieurs feuilles MDI
filles.
Un objet MDIForm ne peut contenir que des contrles Menu (menu) et PictureBox (zone d'image)
ainsi que des contrles personnaliss qui disposent d'une proprit Align.
Un objet MDIForm ne peut pas tre modal.
* Rappel : une fentre ou une bote de dialogue est dite modale lorsqu'elle exige une action de
la part de l'utilisateur avant qu'une autre feuille ou une autre bote de dialogue
puisse devenir active.
Les feuilles MDI filles sont conues indpendamment de la feuille MDI, mais elles sont toujours
contenues dans la feuille MDI au moment de l'excution.
Les feuilles-enfants sont des feuilles normales pour lesquelles on donne la valeur True la
proprit MDIChild.
Chaque feuille-enfant peut avoir son propre menu, il se substituera celui de la feuille principale
chaque fois que la feuille-enfant sera active. Une feuille MDI fille rduite apparat sous forme
d'icne dans l'objet MDIForm.

III- ORGANISATION DES FEUILLES-ENFANTS


Pour organiser les feuilles-enfants et les icones l'intrieur de la feuille principale on utilise la
mthode Arrange :
objet.Arrange disposition
objet
disposition

Valeurs

Obligatoire. Expression d'objet qui prend la valeur d'un objet


figurant dans la rubrique " Application ".
Obligatoire. Valeur ou constante qui spcifie l'organisation des
fentres ou des icnes dans un objet MDIForm, comme indiqu
dans la section " Valeurs ".
0:
Met en cascade toutes les feuilles-enfants ouvertes,
1
Met en mosaque horizontale toutes les feuilles-enfants
ouvertes,
2
Met en mosaque verticale toutes les feuilles-enfants
ouvertes,
3
Arrange tous les icnes prsents dans la feuille
principale.

Remarque : La proprit Count de MDIForm vous renseigne sur le nombre de contrles


contenus dans la collection Controls.

B.ROCHE / IIRIAM 10/00

Page 78 / 92

BR_VB_concepts.doc

LA GESTION DES ERREURS

I- INTRODUCTION
Lorsque des erreurs surviennent dans le code et que l'on ne les vrifie pas, Visual Basic gnre
souvent une erreur d'excution qui arrte l'excution du code et empche gnralement
l'utilisateur de poursuivre l'application. Il existe aussi d'autres types d'erreurs qui n'arrtent pas
l'excution du code, mais qui peuvent tre l'origine d'actions imprvisibles.
Visual Basic permet d'intercepter ces erreurs. Le processus de gestion d'erreurs comprend trois
tapes :
Dfinir (ou valider) un intercepteur d'erreur en indiquant l'application o effectuer le
branchement en cas d'erreur, c'est--dire quelle routine de gestion d'erreur excuter.
L'instruction On Error valide cet intercepteur et dirige l'application vers une tiquette.
Ecrire une routine de gestion d'erreur qui soit en mesure de rpondre aux diverses erreurs
susceptibles d'intervenir. Si le contrle passe effectivement l'intercepteur, celui-ci est alors
dit actif
Quitter la routine de gestion d'erreur.
Les instructions Resume et Resume Next permettent de reprendre le droulement de
l'application.

II- INTERCEPTEUR D'ERREUR


Un intercepteur d'erreur est valid lorsque Visual Basic excute l'instruction On Error :
On Error GoTo ligne
On Error GoTo 0

On Error GoTo ligne

On Error GoTo 0

B.ROCHE / IIRIAM 10/00

Active la routine de gestion d'erreur qui commence ligne. Il


s'agit d'une tiquette de ligne ou d'un numro de ligne. Par la
suite, si une erreur d'excution se produit, le contrle se branche
sur ligne, activant ainsi le gestionnaire d'erreur. La ligne spcifie
doit se trouver dans la mme procdure que l'instruction
On Error, sinon une erreur au moment de la compilation se
produit.
Rend non valide tout gestionnaire d'erreur valid dans la
procdure en cours.

Page 79 / 92

BR_VB_concepts.doc

Un intercepteur d'erreur est valid lorsque Visual Basic excute l'instruction On Error,
laquelle dsigne un gestionnaire d'erreur. L'intercepteur demeure ensuite Valid tant que la
procdure qui le contient est active, c'est--dire jusqu' ce qu'une instruction Exit Sub, Exit
Function, Exit Property, End Sub, End Function ou End Property soit excute pour cette
procdure. Bien qu'un seul intercepteur d'erreur puisse tre valid la fois pour une procdure
donne, on peut crer plusieurs intercepteurs d'erreur et valider tel ou tel intercepteur selon la
situation. Il est galement possible d'invalider un intercepteur d'erreur l'aide de l'instruction
On Error Goto O. (Voir chapitre Erreurs inattendues).

III- ECRITURE D'UNE ROUTINE DE GESTION D'ERREUR


La routine commence donc l'tiquette ligne:. On donne en gnral un nom significatiof cette
tiquette (gesterreur, checkerror,...), pour mieux la reprer dans le code source.
La proprit Number de l'objet Err contient un code numrique correspondant l'erreur
d'excution la plus rcente. On teste donc cette valeur avec une instruction Select Case ou
If...Then...EIse afin de mettre en oeuvre une action particulire en fonction de l'erreur qui se
produit.
Il est courant de placer le code de gestion d'erreur la fin de la procdure, en spcifiant une
instruction Exit Sub, Exit Function ou Exit Property juste avant l'tiquette de ligne, ce qui
permet la procdure de ne pas excuter la routine de gestion d'erreur si aucune erreur ne se
produit.
Remarque : La chane contenue dans la proprit Description de l'objet Err explique l'erreur
associe au numro d'erreur en cours. Toutefois selon la version de Microsofi Visual Basic
utilise, le contenu de la description peut varier. On conseille donc d'utiliser Err.Number plutt
que Err.Description pour identifier l'erreur qui s est produite.

IV- SORTIE D'UNE ROUTINE DE GESTION D'ERREUR


Il existe plusieurs moyens pour quitter une routine de gestion d'erreur. Selon les circonstances,
on peut le faire en utilisant l'une des instructions suivantes :
Resume [O]

Resume Next

Resume ligne

B.ROCHE / IIRIAM 10/00

Reprend l'excution du programme a partir de l'instruction


l'origine de l'erreur ou de l'appel le plus rcemment excut
depuis la procdure contenant la routine de gestion d'erreur.
Reprend l'excution du programme a partir de l'instruction qui
suit immdiatement celle qui a provoqu l'erreur. Si l'erreur s'est
produite en dehors de la procdure qui contient la routine de
gestion d'erreur, l'excution reprend partir de l'instruction qui
suit immdiatement l'appel de la procdure dans laquelle l'erreur
s'est produite, Si la procdure appele nc contient pas de
gestionnaire d'erreur valid.
Reprend l'excution du programme partir de l'tiquette
spcifie par l'lment ligne, celui-ci tant une tiquette de ligne
ou un numro de ligne diffrent de zro qui doit se trouver dans
la mme procdure que le gestionnaire d'erreur.

Page 80 / 92

BR_VB_concepts.doc

V- ERREURS INATTENDUES
Comme on l'a vu plus haut, on dit qu'un gestionnaire d'erreur est valid par l'excution d'une
instruction On Error et s'il n'a pas encore t arrt par une instruction On Error GoTo O ou en
quittant la procdure o il a t valid. On dit d'un gestionnaire d'erreur qu'il est actif lorsqu'il est
en cours d'excution. Un gestionnaire d'erreur doit tre valid avant de pouvoir tre actif, mais il
n'est pas ncessairement actif par ce simple fait. Aprs une instruction Resume, par exemple, le
gestionnaire est dsactiv, mais demeure valid.
Lorsqu'une erreur intervient l'intrieur d'une procdure ne contenant pas de routine de gestion
d'erreur valide ou au sein d'une routine de gestion d'erreur active, Visual Basic recherche dans
la liste des appels une autre routine de gestion d'erreur valide.
On visualise ce phnomne dans le cas suivant :
1 Une procdure d'vnement appelle la procdure A.
2.La procdure A appelle la procdure B.
3 La procdure B appelle la procdure C.

Sub private Form_load ()


ProcedureA
......
End Sub

Sub ProcedureA ()
X = ProcedureB()
......
End Sub

Function Procedure B ()
ProcedureC()
Sub ProcedureC ()
......
......
End Funct
......
End Funct

Si une erreur se produit dans la procdure C et si celle-ci ne contient pas de gestionnaire d'erreur
valid, Visual Basic en recherche un en remontant dans les procdures en attente, en
l'occurrence, d'abord dans la procdure B, puis dans la procdure A, puis dans la procdure
d'vnement d'origine (mais pas plus loin). Il excute le premier gestionnaire d'erreur valid
rencontr. S'il n'en existe aucun, il affiche le message appropri et arrte l'excution.
Si Visual Basic trouve une routine de gestion d'erreur valide, l'excution se poursuit dans celleci, comme si l'erreur s'tait produite dans la procdure qui contient le gestionnaire d'erreur. Si une
instruction Resume ou Resume Next est excute l'intrieur de la routine de gestion d'erreur,
l'excution se poursuit comme indiqu dans le tableau suivant :

B.ROCHE / IIRIAM 10/00

Page 81 / 92

BR_VB_concepts.doc

Rsultat

Resume Next

Visual Basic appelle de nouveau la procdure dans laque vient


d'effectuer la recherche. Si, dans la liste des appels, plus haut, la
procdure A contient un gestionnaire d'erreur valid comprenant
une instruction Resume, Visual Basic appelle de nouveau la
procdure B.
L'excution se poursuit partir de l'instruction qui suit la dernire
instruction excute dans cette procdure, autrement dit celle qui
suit l'appel de la procdure dans laquelle Visual Basic vient
d'effectuer une recherche en arrire. Dans la liste des appels vue
plus haut, si la procdure A contient un gestionnaire d'erreur
valid comprenant une instruction Resume Next, l'excution
reprend au niveau de l'instruction situe aprs l'appel de la
procdure B.

On peut remarquer que l'instruction excute est situe dans la procdure dans laquelle la
procdure de gestion d'erreur est localise et non pas ncessairement dans celle o l'erreur s'est
produite. Si on ne tient pas compte de ceci, le code risque d'avoir des comportements imprvus.
Pour faciliter le dbogage du code, on peut simplement passer en mode Arrt chaque fois qu'une
erreur se produit. (voir les options de dbogage).
Exemple de gestion des erreurs
La procdure suivante renvoie la valeur True si le fichier spcifi existe et dans le cas contraire,
la valeur False. Elle ne contient pas de code de gestion d'erreur :
Function FileExists (filename) As Boolean
FileExists = (Dir(filename) <> "")
End Function

En effet, cette fonction utilise la fonction Dir qui renvoie le nom du premier fichier (avec ou sans
caractres gnriques, lettre de lecteur ou chemin d'accs) correspondant celui qui est spcifi.
En revanche, si elle ne trouve aucun fichier correspondant, elle renvoie une chane de longueur
nulle.
Le code semble rpondre aux deux rsultats possibles de l'appel de la fonction Dir. Cependant,
si la lettre de lecteur spcifie dans l'argument ne correspond pas un lecteur valide, l'erreur
Priphrique non disponible est gnre. De mme, si le lecteur spcifi est un lecteur de
disquette, cette fonction ne s'excute correctement que si le lecteur en contient une et que son
volet est referm. Si ce n'est pas le cas, Visual Basic gnre l'erreur Disque non prt et arrte
l'excution du code.
Pour remdier aux problmes causs par un lecteur non valide ou par l'absence de disquette
dans un lecteur, il suffit d'ajouter le code suivant :
Function FileExists (filename) As Boolean
Dim Msg As String
On Error GoTo CheckError ' Active l'interception des erreurs afin que la routine
de gestion d'erreur ragisse si une erreur est
dtecte.
FileExists = (Dir(filename) <> "")

Exit Function
CheckError:

B.ROCHE / IIRIAM 10/00

' Empche l'excution de la routine de


gestion d'erreur si aucune erreur n'est
dtecte.

'sortie normale de la fonction, on ne passe pas par


checkerror
' En cas d'erreur, effectue un branchement ici.

Page 82 / 92

BR_VB_concepts.doc

Const ErrDiskNotReady = 71, ErrDeviceUnavailable = 68


' Dfinit des constantes reprsentant le code d'erreur Visual Basic.
' vbExclamation, vbOK, vbCancel, vbCritical et vbOKCancel sont des
' constantes dfinies dans la bibliothque de types VBA.
If (Err.Number = ErrDiskNotReady) Then
Msg = " Placez une disquette dans le lecteur et fermez le volet."
' Affiche une zone de message
If MsgBox(Msg, vbExclamation & vbOKCancel) = vbOK Then
Resume
Else
Resume Next
End If
ElseIf Err.Number = ErrDeviceUnavailable Then
Msg = " Ce lecteur ou ce chemin n'existe pas : " & filename
MsgBox Msg, vbExclamation
Resume Next
Else
Msg = " L'erreur inattendue #" & Str(Err.Number)&" s'est produite : " &
Err.Description
' Affiche du message comportant l'icne du signe Stopet un bouton OK.
MsgBox Msg, vbCritical
Stop
End If
Resume
End Function

B.ROCHE / IIRIAM 10/00

Page 83 / 92

BR_VB_concepts.doc

LE DEBOGAGE

I- INTRODUCTION
Les techniques de dbogage de Visual Basic incluent des points d'arrt, des expressions d'arrt,
des expressions espionnes, un mode d'excution pas pas, un mode d'excution procdure par
procdure et l'affichage des valeurs des variables des proprits. Visual Basic comprend aussi
des options spciales de dbogage, telles que la possibilit de modifier et de continuer
l'excution, la dfinition de l'instruction suivante excuter et la vrification des procdures
pendant que l'application est en mode arrt.

II- TYPES D'ERREURS


Pour comprendre l'utilit du dbogage, il faut connatre les trois types d'erreurs que l'on risque de
rencontrer : les erreurs de compilation les erreurs d'excution les erreurs de logique.

1. ERREURS DE COMPILATION
Elles proviennent d'un code incorrectement construit. (exemples : erreur de syntaxe,mot cl mal
orthographi, signes de ponctuation, une instruction Next sans l'instruction For
correspondante,...). Visual Basic dtecte ces erreurs lors de la compilation de l'application.
On peut viter de rencontrer ces erreurs lors de la compilation, en utilisant l'option "Vrification
automatique de la syntaxe", qui forcera Visual Basic afficher un message d'erreur ds que l'on
aura fait une erreur de syntaxe en saisissant le Code.
Pour activer l'option "vrification automatique de la syntaxe " :
Choisir Outils Options, et cliquer sur l'onglet Environnement dans la bote de dialogue
Options.
- Slectionner "Vrification automatique de la syntaxe".

2. ERREURS D 'EXECUTION
Les erreurs d'excution surviennent (et sont dtectes par Visual Basic) lorsqu'une instruction
tente une opration impossible excuter. L'exemple courant est la division par zro. Comme
l'application doit s'excuter pour pouvoir dtecter cette erreur, il est recommand d'inclure dans
les applications un code destin intercepter et grer les erreurs d'excution lorsqu'elles se
produisent. Voir le chapitre "Gestion des erreurs".

3. ERREURS DE LOGIQUE
Les erreurs de logique se produisent lorsqu'une application ne s'excute pas comme prvu. Une
application peut tre crite correctement d'un point de vue syntaxique, se drouler sans
rencontrer d'oprations non valides, et toutefois produire des rsultats incorrects. Ce n'est qu'en
testant l'application et en analysant les rsultats que l'on peut en vrifier le bon fonctionnement.
Visual Basic fournit des outils pour faciliter la mise au point de l'application.

B.ROCHE / IIRIAM 10/00

Page 84 / 92

BR_VB_concepts.doc

III- AIDE FOURNIE PAR LES OUTILS DE DEBOGAGE


1. LES OUTILS DE DEBOGAGE DE LA BARRE D'OUTILS
Parmi ses nombreux outils de dbogage, Visual Basic propose plusieurs boutons de la barre
d'outils qui s'avrent trs utiles :
Fin de l'application
Arrt

Pas Pas dtaill


Appel
s

Pas pas principal


Excution de l'application

Informations immdiates

Basculer le point d'arrt

Basculer le point d'arrt


Information immdiate
Appels

Pas pas dtaill


Pas pas principal

dfinit, dans la fentre Code, une ligne o VB interrompt


l'excution de l'application.
Affiche la valeur en cours d'une expression pendant que
l'application est en mode arrt.
Affiche, pendant que l'application est en mode arrt, une bote
de dialogue montrant toutes les procdures qui ont t appeles,
mais qui n'ont pas encore t totalement excutes.
Excute la ligne de code excutable suivante de l'application et
excute pas pas les procdures.
Excute la ligne de code excutable suivante de l'application
sans excuter pas pas les procdures.

La barre de titre de Visual Basic indique toujours le mode en cours. Ce mode est l'un des trois
suiavnts : cration, excution et mode arrt. On passe de l'un l'autre l'aide des trois boutons
de la barre d'outils.
La disponibilit de ces boutons dpend du mode dans lequel se trouve Visual Basic (excution,
cration ou arrt). Le tableau suivant indique les boutons accessibles dans chacun de ces modes
:
Mode
Boutons disponibles
Cration
Excuter
Excution
Arrt, Fin
Arrt
Continuer, Fin

B.ROCHE / IIRIAM 10/00

Page 85 / 92

BR_VB_concepts.doc

2. T ECHNIQUES DE DEBOGAGE
Avant l'excution d'un programme qui pose problme, on peut spcifier les lignes sur lesquelles
on souhaite que le programme s'arrte.
En mode cration, on place le curseur sur une ligne de programme on clique sur le bouton
"Basculer le point d'arrt" ou on appuie sur la touche F9.
On vient alors de dclarer un point d'arrt. Pour l'enlever, on refait la mme opration.
Pour dboguer votre programme, on le lance normalement et il va s'arrter sur le premier point
d'arrt qu'il rencontre. A ce moment, on peut choisir l'une des possibilits suivantes :
ignorer simplement le point d'arrt en demandant au programme de continuer s'excuter
normalement : il suffit de cliquer sur le bouton "excution de l'application" pour poursuivre ou bien
appuyer sur la touche F5
continuer l'excution du programme instruction par instruction. C'est le mode "pas pas".
On peut choisir entre le mode pas pas dtaill (bouton ou touche F8) ou principal (bouton ou
touche MAJ + F8).
L'excution pas pas principale est identique l'excution pas pas dtaill, sauf lorsque
l'instruction en cours contient un appel une procdure. Contrairement la commande pas pas
dtaill qui excute progressivement la procdure appele, la commande pas pas principal
excute la procdure en bloc, puis passe l'instruction suivante de la procdure en cours.
spcifier la prochaine instruction excuter, si on ne souhaite pas que ce soit l'instruction
suivante (cela peut tre fort utile pour sortir d'une boucle infinie !!!), on clique sur l'instruction o
on dsire aller et on tape sur les touches Ctrl + F9 (ou Excuter Dfinir l'instruction suivante),
afficher dans la fentre "Information immdiate" le contenu d'une variable dont on doute : on
slectionne la variable dans le programme et on clique sur le bouton information immdiate (celui
qui reprsente une paire de lunettes).
ajouter une variable espion, en cliquant sur le bouton "Ajouter" de la fentre "information
immdiate". Ceci permettra d'ajouter une ligne permanente dans la fentre "Debug" o le contenu
de la variable souhaite s'affichera et sera rafrachie chaque modification.
utiliser le bas de la fentre "Debug" pour y taper n'importe quelle instruction Visual Basic
valide, y compris l'instruction "?" qui quivaut Print et qui est fort utile pour afficher
immdiatement la valeur d'une variable ou d'une expression.
corriger une erreur d'excution et poursuivre l'excution du programme. Cette possibilit est
trs utilise, notamment quand l'erreur provient de noms mal orthographis ou de proprits ou
mthodes mal accordes aux objets.

B.ROCHE / IIRIAM 10/00

Page 86 / 92

BR_VB_concepts.doc

Dans ce cas, la mthode show n'est pas approprie l'objet Recordset.


On peut cliquer sur Dbogage pour corriger l'erreur (remplacer show par findfirst par exemple) et
repartir partir de cette ligne.
modifier le programme pendant le point d'arrt, c'est dire sans avoir arrt le programme.

IV- LA FENETRE DE DEBOGAGE


La fentre Dbogage comprend deux parties. Le volet Espion apparat dans la moiti suprieure
de la fentre tandis que le volet Excution est affich dans sa moiti infrieure.

1. LE VOLET "ESPION"
Le volet Espion affiche les expressions espionnes en cours, qui sont des expressions dont on
dcide de contrler les valeurs au fur et mesure de l'excution de l'application. Dans ce volet,
la colonne "Contexte" indique la procdure, le module ou les modules dans le(s)quel(s) chaque
expression est value.
Le volet Excution peut afficher la valeur d'une expression espionne pour autant que l'instruction
en cours figure dans le contexte spcifi. Sinon, la colonne "Valeur" affiche un message
indiquant que l'instruction est hors contexte.

2. LE VOLET EXECUTION
Le volet Excution affiche des informations fournies par les instructions de dbogage du code ou
des informations que l'on demande en tapant directement des commandes dans le volet.
La procdure et la feuille (ou module) en cours dterminent les variables qui peuvent s'afficher,
conformment aux rgles de porte des variables.
On peut employer la mthode Debug.Print pour examiner les valeurs de variables locales de la
procdure affiche ou la valeur d'une variable publique.
B.ROCHE / IIRIAM 10/00

Page 87 / 92

BR_VB_concepts.doc

B.ROCHE / IIRIAM 10/00

Page 88 / 92

BR_VB_concepts.doc

LES MENUS

I- PRESENTATION
On peut utiliser le Crateur de menus pour ajouter des commandes des menus existants ou
remplacer des commandes existantes par des commandes propres l'application, crer des
menus et barres de menus, modifier ou supprimer des menus et barres de menus existants. Le
Crateur de menus est trs simple d'utilisation. On peut personnaliser des menus de faon
entirement interactive, rduisant ainsi les tches de programmation.
Pour afficher le Crateur de menus, il suffit de choisir Outils Crateur de menus dans la barre
de menu ou de cliquer sur le bouton le bouton "Crateur de menus" dans la barre d'outils.
Le crateur de menus se prsente ainsi :

La plupart des proprits des contrles de menu peuvent tre dfinies l'aide du Crateur de
menus. Par contre, toutes les proprits de menus sont disponibles dans la fentre Proprits.
Les deux principales proprits des contrles de menu sont les suivantes :
Name : Nom utilis pour faire rfrence au contrle de menu dans le code de l'application.
Caption : Texte qui apparat sur le contrle que verra l'utilisateur).

Utilisation de la zone de liste du Crateur de menus


La zone de liste des contrles de menu rpertorie tous les contrles de menu de la feuille en
cours. Lorsque l'on tape un lment de menu dans la zone de texte "Caption", cet lment
apparat galement dans la zone de liste des contrles de menu. Pour modifier les proprits
d'un contrle de menu, il suffit de slectionner le contrle voulu dans la zone de liste.
B.ROCHE / IIRIAM 10/00

Page 89 / 92

BR_VB_concepts.doc

exemple : menu du menu Fichier de l'application Editeur de texte.

La position du contrle de menu dans la zone de liste des contrles de menu indique si le
contrle est un titre de menu, un lment de menu, un titre de sous-menu ou un lment de
sous-menu :
Un contrle de menu align gauche dans la zone de liste apparat comme un titre de menu
dans la barre de menus.
Un contrle de menu qui prsente un premier niveau de retrait dans la zone de liste apparat
sur le menu lorsque l'utilisateur clique sur le titre du menu prcdent.
Un contrle de menu suivi de plusieurs contrles de menu en retrait est un titre de sous-menu
et les contrles de menu qui le suivent sont les lments qui composent ce sous-menu.
Un contrle de menu avec un tiret (-) comme paramtre de proprit caption, apparat comme
une barre sparatrice. Une barre sparatrice spare les lments de menu en groupes logiques.

II- CONCEPTION
Pour crer des contrles de menu dans le Crateur de menus, il faut suivre les tapes suivantes :
Slectionner la feuille.
- Slectionner Outils Crateur de menus ou Choisir le bouton "Crateur de menus" dans la
barre d'outils.
Dans la zone de texte "Caption", taper le texte du premier titre de menu que l'on veut voir
apparatre dans la barre de menus. De mme, insrer le signe & avant la lettre que l'on souhaite
dfinir comme touche d'accs rapide pour cet lment de menu. Cette lettre sera
automatiquement souligne dans le menu. Le texte du titre du menu apparat dans la zone de
liste des contrles de menu.
Dans la zone de texte "Name", taper le nom que l'on utilisera pour faire rfrence au contrle
de menu dans le code.
A l'aide des boutons "Flche gauche" et "Flche droite", modifier le niveau de retrait du
contrle.
B.ROCHE / IIRIAM 10/00

Page 90 / 92

BR_VB_concepts.doc

Si ncessaire, dfinir d'autres proprits pour ce contrle. On pourra les modifier par la suite.
Choisir le bouton "Suivant" pour crer un autre contrle de menu ou choisir le bouton "Insrer"
pour ajouter un contrle de menu entre des contrles existants. On peut galement utiliser les
boutons "Flche vers le haut" et "Flche vers le bas" pour dplacer le contrle parmi les contrles
existants.
Une fois que l'on a cr tous les contrles de menu voulus pour cette feuille, choisir "OK" pour
fermer le Crateur de menus.
Les titres de menus que l'on vient de crer apparaissent sur la feuille. Pour drouler le contenu
d'un menu, il suffit de cliquer sur le titre correspondant.

III- CONVENTIONS D'AFFECTATION DES NOMS DE MENUS


Lorsque l'on nomme des lments de menus, il est conseill de se conformer aux rgles
suivantes :
Les noms d'lments doivent tre uniques au sein d'un mme menu, mais peuvent tre utiliss
dans diffrents menus pour reprsenter des actions identiques ou diffrentes.
Les noms d'lments peuvent tre composs d'un ou plusieurs mots, composs ou non.
Chaque nom d'lment de menu ne doit comporter qu'une seule lettre d'accs rapide. La lettre
d'accs doit tre soit la premire lettre du titre de menu, soit une autre lettre plus mnmonique.
Des points de suspension ( . . . ) doivent suivre les noms des commandes qui requirent un
complment d'informations pour pouvoir tre excutes.
Les noms d'lments doivent tre disposs dans une seule colonne.
Utiliser des noms d'lments courts.
Dfinition de la proprit Name
Bien que l'on puisse dfinir ses propres conventions d'affectation des noms, on peut utiliser la
convention suivante pour dfinir la proprit Name dans le Crateur de menus.
lment de menu
Titre de menu
Elment de menu
Elments d'un groupe de menus
Elment de sous-menu

B.ROCHE / IIRIAM 10/00

Syntaxe
mnuTitreMenu
mnuTitreMenuItem
mnuTitreMenuArray
mnuTitreSous-MenuItem

Page 91 / 92

Exemple
mnuFichier
mnuFichierItem
mnuFichierArray
mnuCouleurItem

BR_VB_concepts.doc

Vous aimerez peut-être aussi