Vous êtes sur la page 1sur 832

Microsoft

Visual
Basic 6

Crez des applications


efficaces en VB6

Greg Perry

Pearson a apport le plus grand soin la ralisation de ce livre afin de vous fournir une information
complte et fiable. Cependant, Pearson nassume de responsabilits, ni pour son utilisation, ni pour les
contrefaons de brevets ou atteintes aux droits de tierces personnes qui pourraient rsulter de cette
utilisation.
Les exemples ou les programmes prsents dans cet ouvrage sont fournis pour illustrer les descriptions
thoriques. Ils ne sont en aucun cas destins une utilisation commerciale ou professionnelle.
Pearson ne pourra en aucun cas tre tenu pour responsable des prjudices ou dommages de quelque
nature que ce soit pouvant rsulter de lutilisation de ces exemples ou programmes.
Tous les noms de produits ou marques cits dans ce livre sont des marques dposes par leurs propritaires
respectifs.

Publi par Pearson


47 bis, rue des Vinaigriers
75010 PARIS
Tl. : 01 72 74 90 00
Ralisation PAO : TYPAO
ISBN : 978-2-7440-4082-5
Copyright 2009 Pearson Education France
Tous droits rservs

Aucune reprsentation ou reproduction, mme partielle, autre que celles prvues larticle L. 122-5 2
et 3 a) du code de la proprit intellectuelle ne peut tre faite sans lautorisation expresse de Pearson
Education France ou, le cas chant, sans le respect des modalits prvues larticle L. 122-10 dudit code.
No part of this book may be reproduced or transmitted in any form or by any means, electronic or
mechanical, including photocopying, recording or by any information storage retrieval system, without
permission from Pearson Education, Inc.

Prelim.indd II

10/04/08 17:01:52

=Prog VB6 FMSOM.fm Page III Lundi, 6. aot 2001 3:13 15

Sommaire
Introduction .............................................

CHAPITRE 13. Gestion de limprimante ..

415

Partie I ....................................................

CHAPITRE 14. Image et multimdia ........

435

CHAPITRE 1. Prsentation de Visual Basic

PB 7. Les barres de dlement ................

467

CHAPITRE 2. Lenvironnement
et les outils Visual Basic .....................

RSUM DE LA PARTIE II. ......................

475

33

CHAPITRE 15. Les modles de feuilles ....

481

CHAPITRE 3. Gestion des contrles .........

65

CHAPITRE 16. Visual Basic et les objets ..

505

CHAPITRE 4. Cration de menus ..............

97

CHAPITRE 17. Contrles ActiveX ............

531

CHAPITRE 5. Analyse des donnes ..........

117

PB 8. Ces lments qui enjolivent


les applications ...................................

567

PB 2. Variables et expressions ................

139

CHAPITRE 6. Oprateurs et
instructions de contrle ......................

CHAPITRE 18. Interactions avec


les donnes .........................................

577

143

Contrles ADO ........................................

601

CHAPITRE 7. Support avanc


du clavier et de lcran .......................

171

CHAPITRE 19. Ajout dun accs


Internet ...............................................

619

PB 3. Entres utilisateur
et logique conditionnelle ....................

197

CHAPITRE 20. Fournir de laide ...............

641

RSUM DE LA PARTIE I. ........................

223

CHAPITRE 21. Distribution


de vos applications .............................

663

CHAPITRE 8. Sous-routines et fonctions ..

225

RSUM DE LA PARTIE III. .....................

689

CHAPITRE 9. Les botes de dialogue ........

271

CHAPITRE 10. Gestion de la souris


et contrles avancs ............................

CHAPITRE 22. Tableaux


multidimensionnels ............................

693

293

CHAPITRE 23. LAPI Windows ................

731

PB 4. Slections multiples
dans une zone de liste .........................

327

Partie IV ................................................

755

PB 5. Pratique de la souris ......................

337

ANNEXE A. Solutions aux exercices .......

757

CHAPITRE 11. Gestion des feuilles ..........

345

ANNEXE B. Prcdence des oprateurs ...

789

CHAPITRE 12. Gestion des chiers ..........

379

ANNEXE C. Table des codes ASCII .........

791

PB 6. Lire et crire des chiers ...............

407

Index ........................................................

797

III

=Prog VB6 FMTDM.fm Page IV Lundi, 6. aot 2001 3:14 15

Table des matires

>
:

Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercice ..........................................

62
62
63
63

CHAPITRE 3. Gestion des contrles .........

65

Etude des contrles ............................


Les proprits de la feuille ..............
Loutil Pointeur ...............................
Le contrle Label ............................
Le contrle TextBox ........................
Le contrle CommandButton ...........
Le contrle Image ...........................

66
70
71
71
72
74
76

Le focus ..............................................
Les procdures vnementielles .........
Ecrire des procdures vnementielles

77
79
80
82

35

Les projets bonus ...............................


En rsum ...........................................
Questions et rponses .........................
Atelier .................................................
Quiz ................................................
Exercices ........................................

86
86
86
87
87
88

La Bote outils ..............................

36

Contrles, proprits et vnements .......

89

La fentre Feuille ............................

36

La fentre Prsentation des feuilles ...

37

Les lments visuels ...........................


Ajouter le code ...................................
Analyse ...............................................

90
92
93

CHAPITRE 4. Cration de menus ..............

97

Crer des menus avec lassistant


Cration dapplications ......................
Introduction aux menus ......................
Le Crateur de menus ........................
Fonctionnement du Crateur de menus
Tester le menu .................................
Ajouter un menu droulant ..............
Ajouter trois options cocher ..........
Ajouter le menu Message ................
Finaliser le menu laide du code ...

98
99
101
101
105
106
107
109
111

Introduction .............................................

Partie I ....................................................

CHAPITRE 1. Prsentation de Visual Basic

Les dessous de Visual Basic ...............


La nature visuelle de Visual Basic ...

8
12

Pourquoi crire des programmes ? .....


Le processus de programmation ......

14
15

La maintenance du programme .......

17

Votre premier programme ..................

18

La programmation vnementielle .....

26

En rsum ...........................................

30

Questions-rponses ............................

31

Atelier .................................................
Quiz ...............................................

31
31

Exercice ..........................................

32

CHAPITRE 2. Lenvironnement
et les outils Visual Basic .....................

33

L environnement Visual Basic ...........


La fentre Nouveau projet ...............

34
34

La barre doutils .............................

IV

La fentre Projet .............................

38

La fentre Proprits .......................

40

Obtenir de laide .................................


Laide locale ...................................

43
43

Le support technique .......................

45

Laide en ligne ................................

46

Apprivoiser lcran .............................

47

Crer une application partir de zro ..


Congurer la feuille ........................

50
50

Ajouter les dtails ...........................

54

Finaliser par le code .......................

58

En rsum ...........................................

61

Les vnements des contrles courants

=Prog VB6 FMTDM.fm Page V Lundi, 6. aot 2001 3:14 15

Table des matires

En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................

115
115
116
116
116

CHAPITRE 5. Analyse des donnes ..........

117

Notions prliminaires .........................


Le contenu de la fentre Code ............
Les donnes en Visual Basic ..............
Les donnes numriques .................
Autres types de donnes ..................

118
119
120
121
124

Les variables .......................................


Dclaration des variables ...............
Dclaration des chanes ..................

126
127
130

Stockage des donnes .........................


Les oprateurs Visual Basic ...............
Lordre des oprateurs ........................
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................

131
132
134
135
135
136
136
137

CHAPITRE PB2. Variables et expressions

139

Analyse ...............................................

140

CHAPITRE 6. Oprateurs et
instructions de contrle ......................

143

Les oprateurs conditionnels ..............


Les donnes conditionnelles ..............
Combinaison doprateurs
conditionnels et logiques ....................
Les instructions If ...............................
Les instructions Else ..........................
Les instructions Exit ...........................
Instructions If... Else imbriques ........
Les instructions Select Case ...............
Les boucles .........................................
Les boucles Do ...............................

144
148
149
151
153
154
155
156
159
160

Les boucles For ...............................

163

En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................

166
167
168
168
169

CHAPITRE 7. Support avanc


du clavier et de lcran .......................

171

Introduction aux fonctions internes ....


La fonction MsgBox() ........................
Les constantes nommes .................
Les boutons par dfaut ....................
Les icnes .......................................

172
174
178
179
180

La fonction InputBox() .......................


Gestion du clavier ..............................
Les vnements clavier ....................
Linstruction SendKeys ....................
Priorit des rponses ......................

181
184
184
188
189

Contrles supplmentaires .................


Les cases cocher ..........................
Les boutons doption .......................

189
190
191

Le contrle Frame
et les groupes doptions ...................

192

En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................

194
194
195
195
196

PB 3. Entres utilisateur
et logique conditionnelle ....................

197

Cration de la premire feuille ...........


Analyse de la premire feuille ...........
Cration de la deuxime feuille .........
Analyse de la deuxime feuille ..........
Cration de la troisime feuille ..........
Analyse de la troisime feuille ...........

198
201
201
207
207
216

Rsum de la Partie I................................

219

<
:

=Prog VB6 FMTDM.fm Page VI Lundi, 6. aot 2001 3:14 15

Table des matires

Partie II ..................................................

223

CHAPITRE 8. Sous-routines
et fonctions .........................................

225

Questions de structures ......................


Les appels de procdures gnrales ...
Procdures prives et publiques ......
La porte des variables ...................
La transmission des donnes ...........

226
227
228
230
233

Transmission par rfrence


et par valeur ...................................
Les appels de fonctions ...................

>
:

235
236

Transmission des contrles


comme arguments ...........................

238

Les fonctions internes ........................


Fonctions numriques .....................
Fonctions de type de donnes ..........
Fonctions de chanes .......................
Fonctions spciales .........................

239
239
241
250
256

En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................

267
268
268
268
269

CHAPITRE 9. Les botes de dialogue ........

271

Les botes de dialogue communes .....


Ajouter le contrle Common Dialog ....
Fonctionnement du contrle
Common Dialog .................................
La bote de dialogue Couleur .............
Gestion du bouton Annuler ................
La bote de dialogue Police ................
Les Pages de proprits ......................
La bote de dialogue Ouvrir ...............
La bote de dialogue Enregistrer ........
La bote de dialogue Imprimer ...........
La bote de dialogue Aide ..................
En rsum ...........................................

271
273

VI

274
276
278
280
283
284
286
287
289
289

Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................

289
290
290
291

CHAPITRE 10. Gestion de la souris


et contrles avancs ............................

293

Rponse la souris .............................


Les vnements souris .....................
Ajustement du curseur .....................
Dplacements et clics ......................
Les oprations de glisser-dposer ....

294
294
295
296
299

Les contrles ListBox .........................


Les zones de liste simples ................
Les contrles ComboBox .................

301
301
306

Le contrle Timer ...............................


Les tableaux .......................................
Dclaration des tableaux .................
Exploitation des tableaux ................
Les tableaux de contrles ................

310
314
316
319
324

En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................

324
324
325
325
326

PB 4. Slections multiples
dans une zone de liste .........................

327

Crer la feuille ....................................


Ajouter le code ...................................
Analyse ...............................................

327
334
335

PB 5. Pratique de la souris ......................

337

Changer licne pointeur ....................


Programmer la souris .........................
Ajouter le code ...................................
Analyse ...............................................
Implmenter le glisser-dposer
automatique ........................................
Implmenter le glisser-dposer manuel

337
338
340
341
342
342

=Prog VB6 FMTDM.fm Page VII Lundi, 6. aot 2001 3:14 15

Table des matires

345

Linstruction Input # .......................

Proprits, vnements et mthodes ..


Les collections de feuilles ..................
Accs la collection Forms .............
Les indices ......................................
La proprit Count ..........................
Dchargement des feuilles ...............

346
349
349
350
351
352

Linstruction Write # .......................

388
389

Les chiers alatoires .........................


Laccs alatoire .............................
Les instructions Get et Put ..............
Les types de donnes personnaliss ...

392
393
394
394

La mthode Print ...............................


Formatage de la sortie Print ............
Positionnement de la sortie Print .....

353
354
356

Imbrication de types
de donnes personnaliss ................

398

Cration de nouvelles proprits


de feuilles ...........................................
Les applications multifeuilles ............
SDI contre MDI ..............................
Terminologie MDI ...........................
Lassistant Cration dapplications .

358
363
364
365
366

Les contrles de chiers .....................


La zone de liste Lecteur ...................
La zone de liste Dossier ..................
La zone de liste Fichier ...................

399
400
401
401

Les commandes de traitement


de chiers .......................................

401

Les barres doutils ..............................

368

Ajout du contrle Toolbar


la Bote outils ............................

En rsum ...........................................
Atelier .................................................
Quiz ................................................
Exercices ........................................

404
404
405
405

369

PB 6. Lire et crire des chiers ...............

407

Les coolbars .......................................


En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................

372
376
376
377
377
378

Crer linterface .................................


Ajouter le code ...................................
Analyse ...............................................

408
410
412

CHAPITRE 13. Gestion de limprimante ..

415

CHAPITRE 12. Gestion des chiers ..........

379

La collection dobjets Printers ...........


Accder la collection Printers ......
Interroger les proprits ..................

416
416
417

Les traitements de chiers ..................


Linstruction Open ..........................
Les modes daccs aux chiers ........
Les restrictions daccs ...................
Verrouillage des chiers ..................
La longueur denregistrement ..........

380
380
381
382
382
383

Contrle de la sortie ...........................


Imprimer vers lobjet Printer ...........
Lchelle de la sortie .......................

420
420
421

CHAPITRE 11. Gestion des feuilles ..........

Localiser un numro
de chier disponible ........................
Linstruction Close .........................

383
384

Les chiers squentiels ......................


Linstruction Print # .......................

385
386

Les proprits CurrentX


et CurrentY .....................................
Les proprits Font .........................

422
424

Impression des feuilles .......................


Inconvnients de PrintForm ...............
Avertir lutilisateur .............................
En rsum ...........................................
Questions-rponses ............................

427
428
431
432
433

VII

<
:

=Prog VB6 FMTDM.fm Page VIII Lundi, 6. aot 2001 3:14 15

Table des matires

Atelier .................................................
Quiz ...............................................
Exercices ........................................
CHAPITRE 14. Image et multimdia ........

435

Les contrles Image et PictureBox .....


Les contrles de dessin ......................
Le contrle Line ..............................
Le contrle Shape ...........................
Les mthodes de dessin ......................
Le contrle multimdia ......................

En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................

436
438
439
440
445
450
451
453
460
463
463
464
464
465

PB 7. Les barres de dlement ................

467

Prsentation des barres de dlement ..

467

Exploitation du contrle multimdia


Lecteur de CD audio .......................
Lecture de chiers vido ..................

Fonctionnement des barres


de dlement ...................................

Crer lapplication ..............................


Ajouter le code ...................................
Analyse ...............................................

468
469
470
472
473

Rsum de la Partie II ..............................

475

Partie III .................................................

479

CHAPITRE 15. Les modles de feuilles ....

481

A propos des modles de feuilles .......


Les modles de feuilles proposs .......
Lassistant Cration dapplications ...

482
483
484

Proprits des barres de dlement .

Ajouter des modles


de feuilles une application ............
Modier les modles .......................

>
:

433
433
434

VIII

484
486

Le modle de feuille A propos de .....

Ajouter vos propres modles de feuilles


En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................

487
490
502
503
503
504
504
504

CHAPITRE 16. Visual Basic et les objets ..

505

OLE pour les objets externes .............


Liaison et incorporation ..................
Le contrle OLE .............................
Enregistrer le contenu de lobjet ......
Travailler avec les objets ....................
Programmer avec des objets ............
Collections .....................................
LExplorateur dobjets ........................
Parcourir lExplorateur dobjets .....
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................

506
506
507
510
512
512
519
522
522
524
527
529
529
529
530

CHAPITRE 17. Contrles ActiveX ............

531

La technologie ActiveX ......................


Ajout de contrles ActiveX
un projet ...........................................
Automatisation ActiveX .....................
Cration de vos propres contrles
ActiveX ..............................................
Concevoir les contrles ...................
Crer le contrle ActiveX ................
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................

532

Autres modles de feuilles ...............

La fentre de lExplorateur dobjets

533
536
541
542
544
564
564
564
565
565

=Prog VB6 FMTDM.fm Page IX Lundi, 6. aot 2001 3:14 15

Table des matires

Les contrles dencapsulation .........

PB 8. Ces lments qui enjolivent


les applications ...................................

567

Contrle Internet Explorer ..............

But de lapplication ............................


Cration de la feuille principale .........
Ajouter le code de la feuille principale .
Analyse ...............................................
Cration de la bote A propos de ........

568
568
572
574
575

Prsentation rapide de points avancs ..


Documents ActiveX .........................

CHAPITRE 18. Interactions avec


les donnes .........................................
Donnes de base de donnes
et Visual Basic ....................................
Apprentissage des termes ...................
Obtention dun chantillon de donnes
Le contrle Data .................................
Congurer le contrle Data ............
Utiliser le contrle Data .................

HTML et VBScript ..........................


De VB Java ? ...............................

577

Contrles avancs de base de donnes

578
579
582
586
587
588
590
592

Lassistant Cration dapplications ....


En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................

593
597
598
599
599
599

Contrles ADO ........................................

601

But de lapplication ............................


Cration de la feuille initiale ..............
Connexion du contrle ADO
aux donnes ........................................
Recherche des donnes ......................
Parcours des donnes .........................
Mise jour des tables .........................
Conclusion sur le contrle ADO ........

601
602
609
613
613
615
617

CHAPITRE 19. Ajout dun accs


Internet ...............................................

619

Lassistant Internet .............................


Etude de quelques contrles Internet .

620
624

Utilisation avance du contrle Data

Lassistant Migration
de document ActiveX .......................

Types dapplications Intern


et Visual Basic ................................

624
625
626
626
628
633
635

En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................

636
637
637
638
638
639

CHAPITRE 20. Fournir de laide ...............

641

Info-bulles et aide
"Quest-ce que cest ?" .......................
Adaptation de laide une application
Systmes daide HTML ...................
Laide RTF .....................................
Prparer le chier des sujets ...........
Crer les sauts hypertexte ...............
Crer un chier daide ....................
Afcher le chier daide ..................
Ajout daide "Quest-ce que cest ?" ..
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercice ..........................................

642
644
644
647
647
648
649
655
658
659
660
661
661
662

CHAPITRE 21. Distribution


de vos applications .............................

663

Dbogage et tests ...............................


Le dbogueur ..................................
Positionner des points darrt ..........
Retracer vos pas .............................
Avancer pas pas dans le code .......

664
668
669
670
672

IX

<
:

=Prog VB6 FMTDM.fm Page X Lundi, 6. aot 2001 3:14 15

Table des matires

Points darrt multiples ...................


Fentre de dbogage .......................
Fentre Variables locales .................
Fentre Espions ..............................
Distribution de votre application ........
Compiler une application ................
Lassistant Empaquetage
et dploiement ................................
Aprs la gnration de linstallation
Dsinstaller lapplication ................

En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................

672
673
674
675
677
677
680
685
686
686
687
688
688
688

Rsum de la Partie III.............................

689

CHAPITRE 22. Tableaux


multidimensionnels ............................

693

Introduction aux tableaux


multidimensionnels ............................
Dclarer les tableaux
multidimensionnels .........................
Les tableaux et les boucles For ........
Initialiser les tableaux .....................

Le contrle grille ................................


Prparer le contrle grille ...............
Comprendre comment fonctionne
le contrle grille .............................

694
697
699
701
703
703
704

Utiliser le contrle grille


dans une application .......................
La proprit FormatString ...............

710
724

Enregistrer des images


dans le contrle grille ....................

En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................

>
:

726
727
728
729
729
730

CHAPITRE 23. LAPI Windows ................

731

LAPI Windows ..................................

732

Nature des DLL ..................................

734

Linstruction Declare .........................

735

Comprendre les types


de donnes de lAPI ........................

737

La Visionneuse dAPI ......................

739

Appel dune routine API simple .........

741

Appel dune API diffrente ................

744

Trouver le dossier Windows ...............

745

En rsum ...........................................

751

Questions-rponses ............................

752

Atelier .................................................

753

Quiz ................................................

754

Exercice ..........................................

754

Partie IV ................................................

755

ANNEXE A. Solutions aux exercices .......

757

Chapitre 1 ...........................................

757

Quiz ................................................

757

Exercice ..........................................

758

Chapitre 2 ...........................................

758

Quiz ................................................

758

Exercices ........................................

759

Chapitre 3 ...........................................

759

Quiz ................................................

759

Exercices ........................................

760

Chapitre 4 ...........................................

760

Quiz ................................................

760

Exercices ........................................

761

Chapitre 5 ...........................................

761

Quiz ................................................

761

Exercices ........................................

762

Chapitre 6 ...........................................

763

Quiz ................................................

763

Exercices ........................................

763

=Prog VB6 FMTDM.fm Page XI Lundi, 6. aot 2001 3:14 15

Table des matires

Chapitre 7 ...........................................
Quiz ...............................................
Exercices ........................................

764
764
765

Chapitre 8 ...........................................
Quiz ...............................................
Exercices ........................................

765
765
766

Chapitre 9 ...........................................
Quiz ...............................................
Exercices ........................................

767
767
768

Chapitre 10 .........................................
Quiz ...............................................
Exercices ........................................

769
769
769

Chapitre 11 .........................................
Quiz ...............................................
Exercices ........................................

770
770
771

Chapitre 12 .........................................
Quiz ...............................................
Exercices ........................................

771
771
772

Chapitre 13 .........................................
Quiz ...............................................
Exercices ........................................

773
773
774

Chapitre 14 .........................................
Quiz ...............................................
Exercices ........................................

774
774
775

Chapitre 15 .........................................
Quiz ...............................................
Exercices ........................................

777
777
778

Chapitre 16 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 17 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 18 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 19 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 20 .........................................
Quiz ................................................
Exercice ..........................................
Chapitre 21 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 22 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 23 .........................................
Quiz ................................................
Exercice ..........................................

778
778
779
779
779
780
780
780
781
782
782
783
783
783
784
784
784
785
785
785
786
787
787
788

ANNEXE B. Prcdence des oprateurs ..

789

ANNEXE C. Table des codes ASCII ........

791

Index ........................................................

797

XI

<
:

=Prog VB6 FMTDM.fm Page XII Lundi, 6. aot 2001 3:14 15

Prog VB6 FM intro Page 1 Lundi, 6. aot 2001 3:16 15

Introduction
Tout au long de ces vingt et un chapitres, vous allez apprendre dvelopper des
applications Windows en Visual Basic. Nous nous efforcerons de rendre cet apprentissage aussi peu rbarbatif que possible. La simplicit du langage et le caractre visuel de
lenvironnement font de Visual Basic un outil des plus conviviaux. En fait, la cration
dune application en Visual Basic consiste en grande partie dans la disposition des
contrles qui formeront linterface. Votre application Windows apparat au fur et
mesure que vous ajoutez les objets, et telle quelle le sera lutilisateur. Visual Basic
est, ce propos, lun des tout premiers langages de programmation avoir intgr un
environnement rellement WYSIWYG (what you see is what you get, ou tel crit tel
cran).
Mme si vous navez encore jamais crit une seule ligne de code, ces vingt et un
chapitres sauront vous initier, dans la plus grande simplicit, aux techniques de
programmation professionnelles. Chaque chapitre traite son sujet spcique de fond en
comble en ltayant dexemples de code, dans un esprit de travaux pratiques. Exercices
et questions-rponses vous permettront daffermir et de mettre en uvre les notions
tudies dans chaque chapitre. Enn, les Projets bonus rpartis travers louvrage vous
invitent mettre "la main la pte", pour crer des applications compltes et fonctionnelles, et le fonctionnement est ensuite analys ligne par ligne. Ainsi, chaque acquis est
renforc dune mise en pratique. Vous crerez mme votre premier programme Visual
Basic ds le Chapitre 1 !
Enseigner la programmation Visual Basic au nouveau venu est une tche dlicate, en
raison notamment dune volution parallle des outils et des comptences que cela
requiert. Certains en viennent Visual Basic aprs avoir tt de langages de programmation plus avancs mais aussi plus fastidieux , tels que C++. Dautres ont
seulement lexprience que de QBasic. QBasic est un langage fourni sur la plupart des
PC depuis de nombreuses annes. Linterface textuelle de MS-DOS, lente et peu
commode, a valu QBasic son obsolescence. Pourtant, QBasic nest jamais quun
cousin un peu loign de Visual Basic, et en constitue une excellente passerelle. Enn, il

Prog VB6 FM intro Page 2 Lundi, 6. aot 2001 3:16 15

Introduction

y a les vrais dbutants, ceux qui nont jamais programm. Pour ceux-l, Visual Basic
nest pas la seule nouveaut : ce sont les principes de la programmation elle-mme quil
faudra aussi leur faire dcouvrir.
Visual Basic est bien plus quun simple langage de programmation. Ce langage pilote
en arrire-plan tout ce qui se passe pendant lexcution du programme. Mais, pour le
programmeur comme pour lutilisateur, cest linterface visuelle qui prime. Les applications Windows offent aux utilisateurs un haut degr dinteraction, grce au systme de
fentres et aux divers objets graphiques. Le code peut tre aussi efcace que lon
voudra, si linterface nest pas satisfaisante, lutilisateur naimera pas votre programme.
Vous serez harcel de demandes daide et de support. Et vos clients pourraient hsiter
acheter les mises jour ultrieures.
Cest pourquoi nous insisterons, particulirement au dbut de louvrage, sur cette question
de linterface utilisateur. Une fois que vous serez capable de concevoir et de crer une
interface viable et attrayante, alors seulement vous commencerez tudier la mcanique
interne des programmes.
Notre monde change rapidement. Les entreprises se renouvellent, les secteurs se restructurent, les activits se transforment. Vos programmes doivent suivre le mouvement. Ils
doivent tre exibles et aiss maintenir, an de pouvoir satisfaire tous les changements
demands par le client. Nous insisterons donc galement sur les tapes de conception,
dcriture, de test et de maintenance qui font un programme de qualit. Un programme est
crit une fois, mais actualis de nombreuses fois. En suivant les principes que nous vous
indiquerons quant lcriture du code, vous vous pargnerez pas mal de peine au moment
de la maintenance et de la mise jour.
Entre thorie et pratique, nous tenterons de vous faire dcouvrir le plus daspects
possible de Visual Basic, tout en prenant soin dviter les dtails qui ne concernent pas
le programmeur Visual Basic "normal". Nous nous attacherons lessentiel : vous aider
construire des programmes efcaces, concis, clairs, documents et faciles maintenir.
Voici, entre autres, ce que vous apprendrez :

>
:

construire une interface utilisateur approprie ;

jeter les bases du programme avec lassistant Cration dapplications ;

structurer le code de sorte que le programme sexcute sans accrocs ;

comprendre les outils les plus courants de lenvironnement Visual Basic ;

matriser lart du dbogage ;

intgrer vos applications les technologies de bases de donnes ;

intgrer laccs Internet au cur de vos programmes ;

Prog VB6 FM intro Page 3 Lundi, 6. aot 2001 3:16 15

Introduction

grer les contrles ActiveX qui permettent Visual Basic dexploiter des outils venus
dautres langages ou applications ;

crer vos propres objets dinterface grce aux fonctionnalits ActiveX de Visual
Basic ;

accder au moteur daide en ligne pour faciliter la tche des utilisateurs ;

offrir, grce aux botes de dialogue communes, une interface familire vos
utilisateurs ;

permettre lutilisateur dexcuter une commande dun simple clic, par le biais des
barres doutils et des coolbars ;

programmer les API Windows qui permettront Visual Basic dexploiter des
fonctionnalits Windows supplmentaires ;

dynamiser vos applications laide des images et du multimdia.

<
:

Prog VB6 FM intro Page 4 Lundi, 6. aot 2001 3:16 15

Prog VB6 FM1A Page 5 Lundi, 6. aot 2001 3:17 15

Partie

Dun coup dil


1. Prsentation de Visual Basic . . . . . . . . . . . . . . .

2. Lenvironnement et les outils Visual Basic . . . . .

33

3. Gestion des contrles . . . . . . . . . . . . . . . . . . . . .

65

PB1. Contrles, proprits et vnements . . . . . . . . . .

89

4. Cration de menus . . . . . . . . . . . . . . . . . . . . . . .

97

5. Analyse des donnes . . . . . . . . . . . . . . . . . . . . . .

117

PB2. Variables et expressions . . . . . . . . . . . . . . . . . . .

139

6. Oprateurs et instructions de contrle . . . . . . . .

143

7. Support avanc du clavier et de lcran . . . . . . .

171

PB3. Entres utilisateur et logique conditionnelle . . .

197

Rsum de la Partie I . . . . . . . . . . . . . . . . . . . . .

219

Prog VB6 FM1A Page 6 Lundi, 6. aot 2001 3:17 15

Partie II

Cette partie vous apprend manuvrer dans lenvironnement Visual Basic, crer les
lments visuels de votre application Windows, et vous enseigne les fondements du
langage de programmation Visual Basic.
Ds le premier chapitre, vous allez crer une application semblable aux applications
Windows que vous avez dj eu loccasion dutiliser. Les chapitres suivants vous font
dcouvrir les diffrents objets et techniques qui rendront vos programmes plus puissants.
A la n de chacun de ces chapitres, une srie de questions et dexercices vous permet de
rcapituler vous-mme les points importants et de les mettre en pratique.
La programmation exige plus que la simple connaissance du langage et de ses commandes.
En progressant dans les chapitres qui suivent, vous comprendrez mieux limportance
dcrire des programmes clairs et bien documents. Le contexte dans lequel les utilisateurs exploitent vos applications change, et vos applications doivent changer
galement. En suivant les principes et exemples tudis ds le dbut, vous apprendrez
crire des programmes faciles maintenir.
Visual Basic sert concevoir des programmes Windows. Dans cette partie, nous passerons en revue tous les lments (ou presque) quimplique cette interface. Vous apprendrez ainsi disposer des contrles sur la feuille, crer et rpondre aux menus, ainsi
qu grer les autres types dinteractions entre lutilisateur et le programme. Vous
commencerez alors matriser le cur de Visual Basic : le langage de programmation.
Visual Basic est lun des outils de programmation les plus conviviaux. Le dveloppement dune application consiste en grande partie disposer des objets graphiques et
en rgler le comportement laide de proprits. Visual Basic est en fait le seul vrai
langage de programmation que les dbutants puissent apprendre si facilement. Il
permet galement aux programmeurs avancs de crer des applications Windows puissantes.
Que vous soyez novice ou un peu expriment, vous serez surpris de dcouvrir ce que
Visual Basic peut faire pour vous, et ce que vous pouvez faire avec Visual Basic.

>
:

Prog VB6 FM1A Page 7 Lundi, 6. aot 2001 3:17 15

Chapitre

Prsentation
de Visual Basic
Visual Basic 6 est la dernire et la meilleure version du langage de programmation Visual Basic de Microsoft. Si lcriture de programmes est parfois une
assommante corve, Visual Basic rduit les efforts fournir et peut faire de cette activit
une partie de plaisir. Avec Visual Basic 6, la plupart des tches de programmation
deviennent aussi simples que de dplacer des objets graphiques laide de la souris.
Nous commenons ici un enseignement de Visual Basic en vingt et un jours. Avant la n
de ce chapitre, vous aurez cr votre toute premire application Visual Basic. Au terme
des trois prochaines semaines, vous matriserez Visual Basic 6 et serez en mesure de
dvelopper des applications efcaces selon vos besoins.
Voici ce que nous tudierons aujourdhui :

lhistoire de Visual Basic ;

les mthodes et les processus de programmation ;

comment linterface visuelle de Visual Basic rend la programmation simple et


amusante ;

lassistant Cration dapplications ;

pourquoi la programmation vnementielle est si importante en environnement


Windows.

Prog VB6 FM1A Page 8 Lundi, 6. aot 2001 3:17 15

Partie II

Les dessous de Visual Basic


Une fois saisis les fondements de Visual Basic, vous serez mme den exploiter tous les
ressorts. Microsoft a construit Visual Basic sur la base dun langage de programmation
pour dbutants : le BASIC. Sous une forme ou une autre, le BASIC est utilis depuis plus
de trente-cinq ans. Lobjectif de ses premiers concepteurs tait de dvelopper un langage
de programmation accessible aux novices. Avec le BASIC, les programmeurs en herbe
devenaient rapidement efcaces. Les autres langages de programmation en usage
lpoque, tels que le COBOL, le FORTRAN ou lAssembleur, ncessitaient un apprentissage beaucoup plus pouss avant dtre rellement productif.
ition
Dfin

ition
Dfin

Info

BASIC est lacronyme de Beginners All-purpose Symbolic Instruction Code


(code dinstructions symboliques multifonction pour dbutants). a parle de
soi-mme !
Un langage de programmation est un ensemble de commandes et doptions
de commandes (les arguments) par lequel on envoie des instructions
lordinateur. Les ordinateurs ne peuvent pas (pas encore) comprendre le
langage des humains, dabord parce que les humains peuvent ragir des
instructions ambigus, ce qui est foncirement impossible pour la machine.
Un langage de programmation doit tre plus prcis quun langage naturel.
Les langages de programmation sont plus faciles apprendre que les langues
trangres. Les langages pour ordinateurs comprennent souvent moins de 300
commandes, commandes qui renvoient des syntaxes ou des concepts familiers mme aux non-anglophones : Open (ouvrir), Next (suivant), etc.

Bien que ce langage ft conu pour les dbutants, les programmes BASIC restaient quelque
peu sotriques, et demandaient malgr tout un apprentissage. Le Listing 1.1 montre un
exemple de programme crit en BASIC, dont le but est dafcher le carr des nombres de 1
10. Mme si vous pouvez, avec quelques rudiments de langue anglaise, en percer les
grandes lignes, ce programme nest certainement pas ce qui se fait de plus clair ; une
comprhension minimale du BASIC est requise pour pleinement comprendre la raison
dtre et larticulation de ses lments.
Info

>
:

Les programmes sont souvent constitus de plusieurs programmes interagissant les uns sur les autres ; cest pourquoi on dsigne souvent par
application lensemble des chiers dun programme. Le programme, ou
application crite dans un langage de programmation, est un jeu dinstructions qui dirige lordinateur.

Prog VB6 FM1A Page 9 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

Listing 1.1 : Les premiers programmes BASIC, o lon numrotait les lignes,
taient quelque peu sotriques

10
20
30
40
50
60
70
80
90

REM Ce programme calcule et affiche les 10 premiers carrs.


CLS
PRINT "Carrs de 1 10"
PRINT "Valeur", "Carr"
FOR N = 1 TO 10
PRINT N, (N*N)
NEXT N
PRINT
END

Info

Ne pas faire
Ne paniquez pas pour des histoires de carrs. Vous naimez pas les maths ?
Pas de problme : Visual Basic fera votre place tous vos devoirs de calcul.

Si vous lanciez le programme BASIC, vous obtiendriez cette sortie :

Carrs de 1 10
Valeur
carr
1
1
2
4
3
9
4
16
5
25
6
36
7
49
8
64
9
81
10
100

Notez que le BASIC est un langage strictement textuel. Lentre et la sortie des donnes
se font en mode texte ; les fentres et autres graphismes sont lapanage des programmes
modernes.
Visual Basic na pas t cr directement depuis le BASIC original. Bien que, en trentecinq ans, le BASIC ait volu sous beaucoup de rapports, lessentiel de sa structure a t
conserv. Le BASIC fut choisi par Microsoft comme langage de programmation principal du premier systme dexploitation MS-DOS ; mais il a fallu le perfectionner et
lenrichir de nouvelles fonctionnalits, jusqu le rditer sous de multiples avatars :
MBASIC (pour Microsoft BASIC), GWBASIC, BASICA (pour BASIC avanc), QuickBASIC, et enn Qbasic encore fourni sur les CD-ROM Windows.

<
:

Prog VB6 FM1A Page 10 Lundi, 6. aot 2001 3:17 15

Partie II

A travers cette volution, le langage BASIC a gard sa nature simple, tout en senrichissant
continuellement de nouvelles et puissantes commandes. Le caractre "texte pur" de
langages comme QBasic permet aux programmeurs novices dacqurir une certaine
vitesse de travail plus facilement quavec la plupart des langages graphiques, comme
Visual C++. An de maintenir cette facilit dutilisation, Microsoft a voulu garder aux
diffrentes versions du BASIC leur nature interprte, oppose aux langages compils.
Avec un langage interprt, le programmeur peut excuter immdiatement son
programme, voir sans dlais les rsultats et les ventuelles erreurs. Ce feedback instantan est capital pour les dbutants, qui ont besoin de rponses rapides quand ils apprennent programmer. Les langages compils sexcutent plus rapidement et sont mieux
appropris au dveloppement dapplications commerciales, mais requirent beaucoup
plus defforts et dapprentissage.
Info

Les langages interprts, tel que le BASIC, vous permettent dexcuter le


programme tout moment, alors que vous lcrivez. Cette rapidit de la
"rponse" en font de bons points de dpart pour lapprentissage. Les langages compils ncessitent des tapes supplmentaires, la compilation et la
liaison, avant que le programmeur ne puisse excuter son uvre. La compilation transpose le programme du langage dans lequel il a t crit au langage
natif de lordinateur.

Alors que Windows devenait plus populaire, Microsoft a ralis que QBasic, langage
purement textuel, ntait pas exploitable comme langage de programmation "fentre".
On a donc dvelopp Visual Basic, langage fond sur le BASIC, mais bien mieux adapt
aux environnements modernes. A la diffrence de QBasic et des autres avatars du
BASIC, tous textuels, Visual Basic est un langage visuel. Bien quon rencontre aussi en
Visual Basic du code plus ou moins semblable au programme du Listing 1.1, la plus
grande partie dun programme Visual Basic est constitue dlments graphiques sans
aucune ressemblance avec le code " lancienne". La Figure 1.1 montre un cran
incluant de nombreux lments de programmation Visual Basic.

>
:

ition
Dfin

Le code est un autre mot servant dsigner lensemble dinstructions du


programme.

Info

Bien avant davoir referm ce livre, vous serez capable de dchiffrer tous les
lments de la Figure 1.1. Le fouillis apparent de lcran dconcerte un peu
au dbut, mais la simplicit de Visual Basic prend vite le pas.

10

Prog VB6 FM1A Page 11 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

Figure 1.1
Lcran de
programmation Visual
Basic peut paratre
un peu encombr,
mais il savre trs
simple dutilisation.

Si Visual Basic est devenu lun des langages les plus utiliss, cest que, en plus dtre
graphique et simple dutilisation, il est la fois interprt et compil. A mesure que
vous crivez votre programme Visual Basic, vous pouvez le tester en lexcutant de
faon interprte, jusqu ce que tous les bogues aient t isols et limins. Une fois le
programme dment test et tous les problmes rgls, il ne reste qu compiler un
excutable rapide et sr (personne ne peut modier facilement le programme), prt
tre distribu aux utilisateurs. En faisant de la compilation une simple option de menu,
Visual Basic prend sur lui les tapes les plus dlicates de la compilation (notamment un
procd cabalistique du nom ddition de liens), que les autres langages obligent
effectuer soi-mme.
ition
Dfin

Un bogue (de langlais bug) est une erreur dans le programme. Si votre
programme ne sexcute pas correctement, il vous faudra le dboguer, cest-dire liminer une une toutes les erreurs.

A lpoque o Microsoft a sorti la premire version de Visual Basic, beaucoup


prdisaient la dchance du langage BASIC (ainsi que de ses rejetons, comme QBasic).
Ces mauvaises langues considraient quun langage fond sur le BASIC ne pouvait servir
la programmation srieuse, justement parce que ces personnes mdisantes navaient
jamais regard le BASIC comme un langage srieux. Les langages tels que C, C++ et
Pascal faisaient alors fureur, en raison de leurs possibilits de compilation et aussi parce
que leurs structures de programmation sadaptaient plus facilement lenvironnement

11

<
:

Prog VB6 FM1A Page 12 Lundi, 6. aot 2001 3:17 15

Partie II

Windows. Avec Visual Basic, Microsoft a donn la communaut des programmeurs les
leons suivantes :

Un langage de type BASIC peut tre la fois simple comprendre et puissant.

Avec une interface adquate, un langage de type BASIC peut trs bien fonctionner
en environnement Windows.

Visual Basic peut tre tantt langage interprt, tantt langage compil, selon les
besoins du programmeur.

Loin dtre obsolte, un langage fond sur le BASIC peut devenir le langage le plus
utilis dans le monde.

La nature visuelle de Visual Basic


Comme vous avez pu le voir sur la Figure 1.1, Visual Basic 6 est plus quun simple
langage de programmation. Le secret de Visual Basic tient dans son nom : visual. Dans
les systmes dexploitation Windows daujourdhui, les programmes doivent tre
capables dinteragir graphiquement avec lcran, le clavier, la souris et limprimante.
Les langages de programmation plus anciens, comme le BASIC, taient parfaits dans
des environnements purement textuels, mais sont tout fait inappropris aux interfaces
graphiques des ordinateurs modernes.
Durant cette premire partie, vous ne verrez pas grand-chose du langage de programmation Visual Basic comme tel, parce que la procdure de programmation en Visual Basic
engage beaucoup plus dinteractions avec lenvironnement visuel que de tches dcriture de code. Cest seulement lorsque vous aurez crer des programmes plus avancs
quil vous faudra apprendre, du langage, plus que les quelques commandes traites lors
des premiers chapitres.
Info

>
:

12

Ce nest pas seulement le langage BASIC sous-jacent qui rend Visual Basic
facile apprendre et utiliser. La plus grande part du dveloppement dun
programme Visual Basic revient glisser-dposer (avec la souris) des
lments visuels sur lcran. Au lieu dcrire des sries complexes dinstructions dentre et de sortie pour grer les interactions avec lutilisateur, il
vous sufra de faire glisser travers lcran des contrles, tels que zones de
texte et boutons de commande ; Visual Basic se charge de faire fonctionner
proprement les contrles lorsque lutilisateur excutera le programme.

Prog VB6 FM1A Page 13 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

ition
Dfin

Lutilisateur est celui qui utilise le programme. Vous, le programmeur qui crit
les programmes, tes aussi utilisateur de vos propres programmes et de ceux
qucrivent les autres. Le sytme de programmation Visual Basic nest rien
dautre quun programme dont on se sert pour crer dautres programmes.

Visual Basic est disponible en plusieurs ditions :

Visual Basic Edition Entreprise. Cre pour la programmation en quipe et les


environnements client-serveur, o le traitement et les donnes sont distribus
plusieurs ordinateurs.

Visual Basic Edition Professionelle. Conue pour les programmeurs professionnels


qui souhaitent exploiter pleinement lenvironnement de programmation Visual Basic.
Cette dition inclut un jeu complet doutils et dassistants pour lempaquetage et la
distribution des applications. Nous supposons, dans cet ouvrage, que vous utilisez
lEdition professionnelle, comme la plupart des programmeurs Visual Basic. Si toutefois vous utilisez une autre version, la plupart des informations du livre sappliquent
galement ; en effet, loin de nous tre centrs exclusivement sur les outils de lEdition
professionnelle, cest un tour dhorizon complet du langage et de lenvironnement de
programmation Visual Basic que nous vous proposons.

Visual Basic Edition Initiation. Lessentiel de Visual Basic, avec un jeu complmentaire doutils standards tout ce dont vous avez besoin pour vous lancer dans
la programmation Visual Basic. Vous trouverez, dans la documentation complte du
Microsoft Developer Network (rseau des dveloppeurs Microsoft), toute laide
ncessaire lapprentissage et lutilisation de Visual Basic.
Info

La version spciale INFA de Visual Basic est livre avec le coffret Visual Studio.
Visual Studio est un environnement de programmation qui supporte plusieurs
langages Microsoft, dont Visual Basic, Visual C++ et Visual J++. Lenvironnement Visual Basic est identique celui quemploient les utilisateurs dautres
langages. Si vous vous essayez un autre langage de programmation Microsoft, vous naurez donc pas matriser un nouveau systme de menus et de
botes de dialogue.

13

<
:

Prog VB6 FM1A Page 14 Lundi, 6. aot 2001 3:17 15

Partie II

Pourquoi crire des programmes ?


La plupart des utilisateurs dordinateur nauront jamais apprendre un langage de
programmation. Ils se contentent, en gnral, dacheter leurs logiciels dans les magasins spcialiss, et ne ressentent jamais le besoin de programmes plus spcialiss. En
revanche, il est difcile de trouver sur le march un programme qui convienne exactement une tche spcique, notamment lorsquon utilise lordinateur des ns
professionnelles ou scientiques. Vous pouvez imaginer un nouveau concept de jeu
qui, une fois concrtis en logiciel best-seller, vous permettrait de partir en prretraite
aux Balares. Si lon a besoin dune application spcique qui nest nulle part
disponible sur le march, ou si lon souhaite crer des logiciels pour gagner de
largent, il faut concevoir et crire ces programmes laide dun langage de programmation comme Visual Basic.
Info

ce
Astu

>
:

14

Souvenez-vous : vous ne pouvez simplement dire lordinateur ce quil doit


faire et attendre quil fasse le boulot pour vous. Lordinateur nest quune
machine stupide et sans initiative ; il a besoin pour travailler que vous lui
fournissiez une liste dtaille dinstructions. Vous lui communiquez ces
instructions sous la forme dun programme. Un programme Visual Basic est
constitu de codes (semblables celui du Listing 1.1) et dlments visuels
qui dnissent laspect de lcran et les contrles Windows avec lesquels
lutilisateur interagit lorsquil lance le programme.
En apprenant Visual Basic, vous apprenez aussi automatiser les applications courantes comme celles que lon trouve dans Microsoft Ofce.
Microsoft Ofce est compos de plusieurs programmes qui travaillent
enemble : traitement de texte, tableur, base de donnes, etc. Microsoft
Ofce contient galement une version complte du langage de programmation Visual Basic, grce auquel on peut automatiser les applications
Ofce. (Microsoft Ofce 97 intgre Visual Basic pour Applications 5,
version de Visual Basic destine au dveloppement de sous-programmes
pour les logiciels de la suite Ofce.) Par exemple, vous pouvez automatiser
votre comptabilit mensuelle en crivant un programme qui consolide vos
feuilles de calculs Excel. Le Visual Basic qui est livr avec les applications
Ofce nest pas le systme de dveloppement complet de Visual Basic 6,
mais il inclut une version complte du langage qui vous permet de contrler au plus prs les applications.

Prog VB6 FM1A Page 15 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

Le processus de programmation
Avec le temps, vous tablirez votre propre faon dcrire les programmes selon vos
besoins. Cependant, il convient de suivre ces quelques rgles et tapes lorsque vous
programmez en Visual Basic :
1. Dterminer ce que votre application devra faire en crant un schma gnral.
2. Crer la partie visuelle de votre application (les crans et les menus avec lesquels
lutilisateur interagira).
3. Ajouter le code en langage Visual Basic qui reliera tous ces lments visuels et qui
automatisera le programme.
4. Tester lapplication an de dceler et dliminer tous les bogues.
5. Une fois les tests effectus, compiler le programme et distribuer lapplication
compile aux utilisateurs.
Info

Mme si vous avez test votre programme pour le purger de tous ses bogues
avant de distribuer lapplication, il est toujours possible quun utilisateur
dcouvre un ou plusieurs nouveaux bogues. Les tests les plus approfondis ne
garantissent jamais labsence dnitive de bogues. Plus votre programme est
complexe, plus il fait de choses, plus grandes sont les chances quun bogue
pointe sa vilaine tte au moment o vous et vos utilisateurs vous y attendez le
moins. Malgr cette foncire impossibilit de retirer tous les bogues, il faut
tester, tester et tester encore. Eprouver toutes les possibilits du
programme pour touver le plus grand nombre possible de bogues avant de
compiler et de distribuer lapplication.

En attendant que votre application Visual Basic soit minutieusement et totalement


teste, avant compilation, vous pouvez aider acclerer le processus. En testant le
programme de faon interactive, vous pouvez localiser et corriger les bogues plus
facilement et plus rapidement. Visual Basic inclut un systme daide spcial, appel
dbogueur, qui vous aide circonscrire les bogues rvls lors des tests. Vous apprendrez
vous servir du dbogueur au Chapitre 21.
ition
Dfin

Un dbogueur est un systme de monitorage interactif, qui peut tre activ ou


dsactiv lintrieur de Visual Basic, et qui vous aide isoler les instructions
fautives. Par exemple, si vous excutez le programme que vous avez crit et
quil renvoie un rsultat incorrect, le dbogueur vous permet disoler rapidement la section du programme qui contient le bogue.

15

<
:

Prog VB6 FM1A Page 16 Lundi, 6. aot 2001 3:17 15

Partie II

Avant Visual Basic, lcriture de programme constituait une tche fastidieuse sous
plusieurs rapports. Dans un environnement textuel, il fallait dabord dessiner sur le
papier tous les crans qui seraient afchs. Il fallait ensuite montrer tout cela aux utilisateurs pour vrier que les dessins correspondaient exactement leurs souhaits. Si vous
conceviez un programme destin une distribution de masse, comme un jeu ou une
application commerciale "gnraliste", vous deviez coucher sur le papier tous les
crans, crer de complexes ux de donnes vers, et depuis, ces divers crans, crer les
chiers rsidents ncessaires lexcution du programme, et planier peu prs chaque
dtail avant mme de vous mettre au clavier.
Grce la nature visuelle de Visual Basic, vous ne touchez au clavier que bien plus tard
dans le processus de programmation. Au lieu dutiliser du papier, vous dessinez directement vos crans laide des outils Visual Basic. La Figure 1.2 prsente un cran de ce
genre. Pour crer un tel cran, aucun code nest ncessaire : tout ce que vous avez
faire, cest de faire glisser les divers contrles sur la fentre Feuilles.
Figure 1.2
Visual Basic vous
permet de concevoir
et de crer les crans
mesure que
vous dveloppez
le programme.

Info

La fentre Feuilles, appele aussi "feuille", prsente larrire-plan dun cran


de programme Visual Basic et inclut des lments tels que boutons de
commande et barres de dlement. Selon la nature et la complexit du
programme, plusieurs fentres de feuilles peuvent tre requises.

Vous pouvez tester vos crans de programme (chaque feuille reprsentant la trame dun
cran) avant mme dajouter le code ; en effet, Visual Basic vous permet dexcuter
interactivement le programme ds la cration de la premire feuille. Vous pouvez ainsi

>
:

16

Prog VB6 FM1A Page 17 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

vous assurer de llgance de lcran, et montrer un prototype aux commanditaires du


programme, qui ne se gneront pas pour vous en donner un avis. A ce stade de prototype
prcodage, il est beaucoup plus simple de modier le programme lorsque que le code a
t ajout. Cette fonction de prototypage est lun des caractres de Visual Basic qui vous
permettent de programmer rapidement et efcacement.
ition
Dfin

ce
Astu

Un prototype est un programme dessai qui ne contient presque aucune


fonctionnalit, mais qui prsente tout ou partie des crans qui composeront
le produit ni. Ce prototype est test par vous et par les utilisateurs nals du
programme an de dterminer si les crans contiennent bien tous les
lments requis.
Vous pouvez toujours apporter de nouvelles modications au programme,
mme aprs que vous lavez cr, test, compil et distribu aux utilisateurs.
Mais ce serait une procdure fastidieuse, et qui impliquerait de distribuer de
nouveau aux utilisateurs tous les chiers de lapplication. Dans tous les cas,
plus tt vous isolez les problmes, plus il est simple dy remdier.

La maintenance du programme
Les bogues ne constituent pas la seule raison qui puisse vous pousser modier encore
un programme, alors que vous croyez en avoir termin. La maintenance du programme
est indispensable du fait que les exigences changent, les entreprises changent, les lois
changent. Vous devez galement retoucher le programme an quil reste viable et
dactualit ; vous devrez rgulirement le mettre jour pour prendre en compte les
changements qui laffectent. En outre, les utilisateurs auront toujours de nouvelles
exigences sur ce que le programme doit faire.
ition
Dfin

La maintenance du programme est le terme employ pour dsigner la mise


jour du programme aprs sa distribution. Cette mise jour peut tre le fait
dune demande des utilisateurs ou dun changement dans la faon dont le
programme doit oprer.

En fait, un programme est crit une fois, mais retouch de nombreuses fois. Mieux vous
assurez cette maintenance du programme, plus votre programme sera actuel et efcace.
Vous pouvez dcider de distribuer une nouvelle version du programme, avec un numro
de version diffrent qui safche sur lcran de dmarrage et informe les utilisateurs de
la rcence du logiciel install sur leur systme.
ce
Astu

Il convient de "documenter" votre code an que dautres programmeurs


puissent comprendre votre code sils devaient le modier par la suite.

17

<
:

Prog VB6 FM1A Page 18 Lundi, 6. aot 2001 3:17 15

Partie II

A mesure que vous avancerez dans votre dcouverte du langage de programmation Visual
Basic, vous apprendrez crire clairement votre code, ainsi qu tablir la documentation
du programme. Plus vous ajoutez de commentaires votre programme, plus vous crivez
clairement le code au lieu duser dinstructions obscures et alambiques, plus il vous sera
facile, ainsi qu dautres, de traquer des erreurs et dentretenir le programme.
ition
Dfin

La documentation est en fait une description du programme. Vous pouvez


insrer la documentation dans le programme lui-mme, de sorte que quiconque
sera appel le modier pourra comprendre chaque section du programme
sans avoir en deviner le sens. Les descriptions internes au programme
Visual Basic sont appeles commentaires.

Il convient dajouter les commentaires mesure que vous crivez le programme, car
cest l que vous tes le plus mme de le comprendre et de le dcrire. Si vous
attendez davoir termin lapplication, comme le font beaucoup de programmeurs,
cette application risque de ne jamais tre correctement documente ; en effet, dautres
projets simposeront vous, et les tches documentation sont souvent mises de ct une
fois quun projet est achev.
A titre complmentaire, il peut tre utile dtablir une documentation externe,
augmente de captures des diffrents crans du programme et dindications sur la faon
dont lutilisateur lance, utilise et quitte le programme. Plus complte sera la documentation que vous leur fournirez, plus facilement les utilisateurs matriseront votre
application ; et plus ils feront de bons clients.

Votre premier programme


Si vous tes familier des autres produits Windows, comme Microsoft Publisher, vous
avez sans doute dj vu luvre les assistants, qui vous aident et vous guident dans la
cration de documents selon vos besoins. Visual Basic dispose aussi dassistants qui
vous aident crer votre programme. Pour crire un programme Visual Basic, vous avez
le choix de partir de zro ou de crer la charpente de lapplication laide dun assistant.
Une fois que lassistant a tabli la structure gnrale du programme, il ne vous reste
qu le complter de tous les dtails.
Info

>
:

18

Lassistant pose une srie de questions et sollicite de vous des prcisions.


A mesure que vous rpondez, lassistant gnre lapplication selon les critres que vous avez spcis. Visual Basic propose plusieurs assistants, mais
celui que vous invoquerez sans doute le plus souvent est lassistant Cration
dapplications.

Prog VB6 FM1A Page 19 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

Il est parfois difcile de choisir entre crer lapplication ex nihila et tablir la structure du
programme laide dun assistant pour ensuite le naliser selon les exigences du projet.
Si lon a dj dvelopp une application semblable celle qui est requise, on peut
simplement faire une copie de la premire et la retravailler selon les nouveaux impratifs.
Avec le temps, vous apprendrez apprcier les situations et oprer les bons choix.
Pour vous aider dans vos premiers pas, cette section vous guidera dans la cration de
votre toute premire application. Vous dcouvrirez avec quelle facilit lassistant
Cration dapplications vous permet de dnir la structure du programme. Bien que
lapplication rsultante ne soit pas vraiment exploitable comme telle (aprs tout, ce
nest quun squelette), vous serez surpris de tout ce que lassistant Cration dapplications peut crer automatiquement. La leon de demain vous enseignera crer une
application ex nihilo, sans recourir lassistant Cration dapplications.
Info

Cela peut paratre surprenant, mais vous crerez sans doute beaucoup plus
souvent vos applications ex nihilo, ou partir dune application prexistante,
que vous nutiliserez lassistant Cration dapplications. Lassistant donne un
prprogramme tout fait fonctionnel ; mais vous dvelopperez avec le temps
un style de programmation personnel, et vous prfrerez dans la plupart des
cas travailler sur la base dune de vos crations prcdentes. Le style vient
avec le temps et la pratique : soyez patient et explorez Visual Basic. Faites
des essais, nayez pas peur de vous fourvoyer, et attendez-vous commettre des
erreurs chaque fois que vous crirez un programme. La programmation, cest
de la cration. Et vous dcouvrirez combien, avec Visual Basic, cette cration
peut tre plaisante.

Lassistant Cration dapplications est prt servir ds le lancement de Visual Basic.


La bote de dialogue Nouveau projet, prsente la Figure 1.3, safche lorsque vous
ouvrez Visual Basic depuis le bouton Dmarrer de Windows. Les onglets de la bote de
dialogue Nouveau projet proposent les choix suivants :
Nouveau. Vous permet de crer une nouvelle application partir de rien ou laide
dun assistant.
Existant. Vous permet de slectionner et douvrir un projet Visual Basic existant.
Rcent. Afche une liste des projets Visual Basic rcemment ouverts ou crs.
Info

Si vous avez referm la bote de dialogue Nouveau projet et que vous


souhaitiez par la suite lancer lassistant Cration dapplications, choisissez
la commande Nouveau projet du menu Fichier pour afcher de nouveau la
bote de dialogue. Cette fois, par contre, les onglets Existant et Rcent
napparaissent pas, car la commande de menu implique que vous souhaitiez
partir sur un nouveau projet.

19

<
:

Prog VB6 FM1A Page 20 Lundi, 6. aot 2001 3:17 15

Partie II

Figure 1.3
Lassistant Cration
dapplications
peut tre slectionn
depuis la bote
de dialogue Nouveau
projet.

ition
Dfin

Info

Le projet est la somme des chiers qui constituent votre application. Une
seule application peut tre compose de plusieurs chiers, rassembls sous
le nom de projet. Une partie de ces chiers contient le code ; une autre
partie contient des descriptions dcrans lintrieur de leurs fentres de
feuilles respectives ; une autre, enn, contient des informations avances qui
permettront votre programme de communiquer avec dautres programmes
et modules au sein du systme dexploitation.
Faire
Pour que la bote de dialogue Nouveau projet cesse de safcher automatiquement chaque dmarrage, cochez la case Ignorer cette bote de dialogue
lavenir. Au prochain dmarrage de Visual Basic, elle napparatra pas.

Lassistant se lance lorsque vous double-cliquez sur licne Assistant Cration dapplications. Le premier cran qui safche est un cran dintroduction qui explique que
lassistant est prt commencer. (Cet cran vous permet galement de charger un prol
dnissant des options particulires ; nous ny aurons pas recours dans cet ouvrage.)
Comme avec la plupart des assistants, lorsque vous avez termin votre lecture et vos
slections sur un cran, vous cliquez sur le bouton Suivant pour passer lcran suivant.
La Figure 1.4 montre la page suivante de lassistant, dans laquelle vous devez choisir un
type dinterface.

>
:

20

Prog VB6 FM1A Page 21 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

Figure 1.4
Le type dinterface
dtermine la faon
dont votre application
manipulera les fentres
multiples.

Voici les options qui vous sont proposes :

Interface multidocument (MDI). Permet votre application de contenir plusieurs


fentres de documents. Avec une telle interface, vous travaillez sur plusieurs jeux
de donnes dans plusieurs fentres lintrieur du programme. Chaque fentre de
document est appele fentre lle.

Interface monoducument (SDI). Une seule fentre peut tre ouverte la fois dans
lapplication. Vos applications seront, dans la plupart des cas, des applications SDI.

Style de lexplorateur. Permet votre application dexploiter une interface de type


Explorateur Windows, avec dans le panneau de gauche un sommaire des rubriques
et dans le panneau de droite le dtail de la rubrique choisie.

Cliquez sur lune de ces options pour obtenir une description et afcher un schma en
rduction dune fentre de programme type. Vous emploierez souvent linterface monodocument, car la plupart des applications ne ncessitent quune seule fentre de donnes
ouverte la fois. Pour ce premier exemple, slectionnez loption Interface monodocument.
Lcran de lassistant vous demande aussi le nom de votre projet. Le nom par dfaut,
Projet 1, laisse un peu dsirer, aussi le renommerez-vous en PremireApp (les espaces
sont interdites). Cliquez ensuite sur Suivant pour afcher la prochaine fentre de
lassistant, telle quelle est reproduite en Figure 1.5.
Lassistant Cration dapplications ajoute au menu de lapplication les options que vous
avez slectionnes. Il sagit des options classiques que lon retrouve dans la plupart des
applications Windows. Les menus eux-mmes seront du type menu droulant standard.
Vous avez le choix entre diverses options pour la barre de menus (Fichier, Edition, etc.)
ainsi quentre des options de sous-menus, telles que Nouveau, Ouvrir ou Fermer.

21

<
:

Prog VB6 FM1A Page 22 Lundi, 6. aot 2001 3:17 15

Partie II

Figure 1.5
Slectionnez
les options inclure
dans le menu
de votre application.

Lesperluette (&) prcdant la lettre dun nom de menu indique la touche de raccourci,
qui apparatra en soulign ; par exemple, &Nouveau indique que Nouveau (voyez le
soulignement) apparatra dans le menu et que lutilisateur pourra accder cette
commande en appuyant sur Alt-N. Pour rellement placer le caractre esperluette dans
le nom, placez-en deux ; ainsi, le nom de menu S&&SM donnera S&SM. Pour cette
application, laissez toutes les options telles quelles (&Fichier, &Edition, Afc&hage,
Fe&ntre et &? doivent tre coches). Cliquez sur Suivant pour poursuivre.
Info

Une fois que lassistant Cration dapplications aura termin de gnrer


lapplication, les options de menu fonctionneront comme prvu. Par exemple, le menu Fichier se droulera lorsque vous cliquerez sur Fichier ou
appuierez sur Alt-F.

Sur lcran suivant de lassistant, reproduit en Figure 1.6, vous choisissez les boutons de
barre doutils que contiendra votre application. Comme vous pouvez le constater, lassistant
Cration dapplications fait dj une bonne partie du travail. En crant la barre doutils
initiale, lassistant se charge dune corve qui, autrement, vous aurait chue. Le panneau de
gauche prsente les boutons disponibles, tandis que le panneau de droite afche les boutons
(et les sparateurs qui les espacent) prslectionns pour lapplication. Comme pour les
options de menus de lcran suivant, nous accepterons tous les paramtres par dfaut.
Cliquez sur Suivant.
Lassistant afche maintenant lcran Ressources, dans lequel vous slectionnez les
ressources qui seront exploites par votre programme, tels que des chiers texte multilangages. Les programmes simples ne requirent gnralement pas de ressources externes. Pour cet exemple, maintenez loption par dfaut Non. Cliquez sur Suivant pour
continuer.

>
:

22

Prog VB6 FM1A Page 23 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

Figure 1.6
En crant la barre
doutils initiale,
lassistant Cration
dapplications vous
fait gagner du temps.

Lcran qui safche, Connexion Internet, vous permet dintgrer votre application
une interface Internet. Si vous slectionniez loption Oui dans cette fentre (ce que vous
ne ferez pas pour linstant), lassistant Cration dapplications ajouterait lapplication
un navigateur Internet complet, qui fonctionnerait en gros comme Internet Explorer. Vos
applications peuvent tre relies lInternet sans que vous ayez programmer quoi que
ce soit. Lorsque lutilisateur entre une adresse Internet (ou URL, pour Uniform
Resource Locator localisateur uni de ressources), comme http://www.ssm.fr, le
navigateur afche la page Web correspondante dans la fentre de navigation de lapplication, utilisant pour se connecter le service Internet par dfaut du PC. Une page de
dmarrage par dfaut peut tre spcie, qui safchera automatiquement ds que
lutilisateur lance le navigateur.
ntion
Atte

Lintgration dun navigateur Web votre application suppose que lutilisateur dispose dune connexion Internet. Si tel nest pas le cas, une erreur sera
gnre lorsque lutilisateur tentera de lancer le navigateur.

Cette premire application ne ncessitant pas daccs lInternet, nous ne modierons pas
les slections par dfaut de cet cran. Cliquez sur Suivant. La fentre qui safche vous
propose dintgrer votre application les crans standards suivants :

Ecran de prsentation au dmarrage. Portant le nom de lapplication, cet cran


safche chaque fois que le programme est lanc.

Bote de dialogue de connexion. Bote de dialogue dans laquelle lutilisateur entre


son nom et son mot de passe ; peut participer la scurit de votre application.

23

<
:

Prog VB6 FM1A Page 24 Lundi, 6. aot 2001 3:17 15

Partie II

Bote de dialogue de paramtrage doptions. Bote de dialogue onglets, vierge


par dfaut, dans laquelle les utilisateurs spcient des attributs que vous avez dnis
pour lapplication.

Bote de dialogue A propos de. Safche lorsque lutilisateur choisit loption A


propos de du menu "?" de lapplication.

Pour les besoins de notre application, cliquez sur loption Bote de dialogue A propos de.
ce
Astu

ition
Dfin

Le bouton Modles de feuilles vous permet de choisir entre plusieurs modles, disponibles depuis le dossier Modles de Visual Basic. Les modles
slectionns sont intgrs lapplication. Le modle Addin (complment)
permet dajouter une feuille de votre propre librairie. Le modle Odbc log in
(ouverture de session ODBC) offre aux utilisateurs un accs aux bases de
donnes avances. Le modle Tip of the day (Astuce du jour) afche de
faon alatoire une rubrique conseil chaque dmarrage de lapplication.
Un modle de feuille est une feuille prdnie, mais que vous pouvez
modier selon vos besoins. Les modles de feuilles proposent les fonctionnalits susceptibles dtre utilises dans diffrentes applications.

Aprs avoir slectionn la feuille standard Bote de dialogue A propos de, vous pouvez
cliquer sur Suivant pour jeter un coup dil lcran Feuille daccs aux donnes, qui
vous permet de rattacher lapplication des chiers externes de bases de donnes. Nous
nutiliserons pas cette fonction pour linstant ; vous pouvez donc cliquer sur le bouton
Terminer an que Visual Basic achve la cration de lapplication initiale.
Info

En cliquant sur le bouton Afcher le rapport, vous faites apparatre un


rcapitulatif du projet qui vient dtre conu ; le rapport indique galement
les modications qui peuvent tre apportes, et vous renvoie dautres
assistants utiles.

Bravo ! Vous venez de crer votre premire application, sans connatre grand-chose de
Visual Basic et sans rien connatre du langage de programmation Visual Basic. Au bout
de quelques instants, Visual Basic vous fait savoir que la cration de votre application
est termine. Cliquez sur OK pour faire disparatre la bote de dialogue. Vous pouvez
maintenant lancer votre application.
ce
Astu

>
:

24

Aprs avoir charg une application depuis le disque ou aprs en avoir cr


une, il convient de lexcuter. Vous la verrez ainsi "tourner", comme le verront
les utilisateurs une fois que vous aurez achev les tests et la compilation. Visual
Basic, cest un peu comme une cuisine. Vous tes le cuisinier ; votre applica-

Prog VB6 FM1A Page 25 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

tion, la recette. Changez la recette (lapplication), et le plat (le programme


rsultant) sera diffrent. Selon la complexit de lapplication prvue, la phase
de programmation peut tre assez longue ; cela, mme si vous avez recours
lassistant Cration dapplications pour gnrer le programme initial. Pour
voir "tourner" le programme alors que vous le crez, il faut lexcuter.
Pour lancer le programme, choisissez Excution, Excuter. (Lexcution en mode interactif est loption par dfaut.) Vous pouvez voir dans le menu la touche de raccourci
correspondante, F5. La Figure 1.7 montre la fentre qui safche.
Figure 1.7
Votre premire
application est cre !

Avec lassistant Cration dapplications, vous avez produit une programme tout fait
fonctionnel (bien que squelettique et limit), simplement en rpondant des questions.
La nouvelle application peut tre dcrite comme suit :
Une fentre de programme standard safche, qui peut tre redimensionne et
dplace. Le titre du projet, PremireApp, apparat dans la barre de titre de la fentre.
Une barre dtat afche la date et lheure. Cette barre dtat peut tre dsactive
depuis le menu Afchage.
Un menu de travail propose quatre options. Seule loption A propos du menu "?"
fonctionne (essayez-la) ; mais les options de menu classiques, telles que Fichier,
Ouvrir (qui ouvre une bote de dialogue de localisation de chier) ou Edition,
Couper, sont dj l attendre que vous leur affectiez du code actif. Suivant en cela
la convention Windows, la bote de dialogue A propos de propose un bouton Infos
systme.

25

<
:

Prog VB6 FM1A Page 26 Lundi, 6. aot 2001 3:17 15

Partie II

ce
Astu

La fentre Infos systme afche un rcapitulatif complet du systme dexploitation et du matriel de lutilisateur. Visual Basic gnre ce rcapitulatif en
excutant un programme spcique qui dtermine la conguration exacte de la
machine. (Ce programme Infos systme peut tre appel depuis dautres emplacements que la bote de dialogue A propos de.) Un tel rcapitulatif peut se
rvler trs utile lorsque les utilisateurs vous exposent un problme li lune
de vos applications. Il suft de demander lutilisateur dafcher pour vrier
que son systme dexploitation et son matriel rpondent bien aux exigences du
programme. La fentre Infos systme, en outre, permet de consulter rapidement
ltat des ressources, telles que lespace disque et la mmoire disponibles.

Une barre doutils standard est afche, laquelle vous pouvez adjoindre de nouvelles fonctionnalits, et qui peut tre active et dsactive depuis le menu Afchage.

Cette application ne fait pas grand-chose, mais elle est fonctionnelle et ne demande plus
de votre part quun travail de nition. Vous pouvez facilement modier et enrichir
lapplication, ses menus, ses fentres. Pour linstant, lapplication nest que le rceptacle de fonctionnalits venir. Cependant lassistant Cration dapplications, en gnrant
ce canevas encore grossier, vous a pargn bien de la peine. Comme vous le verrez dans
la leon de demain, il est assez facile de crer de toutes pices un projet fonctionnel ;
mais lassistant Cration dapplications jette les bases requises par la plupart des applications. Alors pourquoi sen priver ?
Pour quitter lapplication en cours dexcution, choisissez Fichier, Quitter. Visual Basic
demande si vous souhaitez enregistrer le projet ; rpondez non. Inutile denregistrer ce
dbut dapplication, puisquil suft de lancer lassistant Cration dapplications de
nouveau pour revenir au mme point.

La programmation vnementielle
La Figure 1.8 montre une fentre de programme Windows. Cette fentre contient
plusieurs types de contrles Windows, tels que boutons de commande, cases cocher et
barres de dlement. Ces contrles forment seulement un exemple des multiples contrles
Windows que lenvironnement de programmation Visual Basic met votre disposition.
De par sa nature visuelle, Visual Basic exige ce type de contrles. En effet, et contrairement aux programmes crits en langages textuels " lancienne", les programmes
Windows ragissent des vnements. Un vnement peut tre provoqu par lun de ces
contrles, mais aussi ressortir aux activits internes, comme lhorloge du PC. Les vnements se produisent toujours selon un ordre alatoire.

>
:

26

Prog VB6 FM1A Page 27 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

Figure 1.8
Les programmes
Windows ragissent
des vnements.

Zone de liste

Cases
cocher

Barres de
dfilement

Boutons de commande

Par exemple, lutilisateur du programme de la Figure 1.8 pourrait cliquer sur lun des
boutons, cocher lune des cases ou activer lune des zones de liste droulante. Cet
utilisateur peut procder des manipulations diffrentes, dans un ordre diffrent,
chaque fois quil se sert du programme. Pour rpondre efcacement aux actions de
lutilisateur et aux autres activits propres dclencher un vnement, on emploie des
techniques de programmation vnementielle.
ition
Dfin

Par vnement, on dsigne toute action qui se dclenche lors de lexcution


du programme : clic de souris, frappe au clavier, etc. Est orient vnement
un programme qui ragit aux vnements Windows.

Info

Votre programme doit grer les vnements alatoires. Mais, dans le cas o
plusieurs programmes Windows sexcutent en mme temps, chacun doit
tre capable danalyser et de rpondre aux vnements qui le concernent.

Comme le montre la Figure 1.9, Windows gre quelques vnements, mais passe le plus
souvent la main aux programmes en cours dexcution. Windows tant un systme
dexploitation multitche, plusieurs programmes peuvent tre excuts simultanment.
Votre programme doit traiter chacun des vnements appropris mesure quils se

27

<
:

Prog VB6 FM1A Page 28 Lundi, 6. aot 2001 3:17 15

Partie II

produisent, tout en ignorant ceux qui ne le concernent pas. Par exemple, un programme
cens afcher un message davertissement intervalles rguliers doit vrier auprs de
lvnement horloge le laps de temps qui sest coul depuis le dernier message. Tout
autre programme simultanment en xcution, et qui na pas vrier lheure, devra
ignorer les messages correspondants envoys par Windows.
Figure 1.9
Votre programme
doit ragir certains
vnements en
ignorant les autres.

Evnement
n 1

Evnement
n 2

Evnement
n 3

Evnement
n 4

Evnement
n 5

Windows reoit
les vnements

Windows traite
une partie des
vnements

Windows
Windows passe les
autres vnements
aux applications
concernes

Evnement
n 1

Application n1

Evnement
n 2

Evnement
n 3

Application n2

Un programme Visual Basic est constitu de linterface visuelle, fentres et contrles,


avec laquelle lutilisateur interagit. Le code de programmation vient relier tout cela
ensemble. Chaque contrle est la fois automatique, dun fonctionnement normalis, et
paramtr selon le code du programme spcique. Par exemple, un bouton de
commande ragira visuellement toujours de la mme manire lorsquun utilisateur
clique dessus. Pour faire fonctionner ce bouton, vous avez juste le placer sur la feuille
(la fentre de programme). Notez que la plupart des boutons de commande peuvent tre
activs par la touche entre aussi bien que par la souris. Sous tous les autres aspects, en
revanche, le bouton est totalement sous votre contrle : vous dcidez du nom ou de
limage qui doit y apparatre, de sa taille, de sa couleur, etc. Ce sont des proprits
modiables, bien que Visual Basic y assigne des valeurs par dfaut. Ce sont ces proprits
qui distinguent un bouton de commande dun autre.

>
:

28

Prog VB6 FM1A Page 29 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

Info

En tant quelles dnissent lapparence et le comportement des contrles,


les proprits permettent de les diffrencier. Ces proprits prennent diverses valeurs : couleur, tiquette texte, taille, emplacement sur la feuille. En
disposant un contrle sur la feuille, vous lui attribuez les proprites qui font
son "identit".

La Figure 1.10 montre une fentre contenant de nombreux boutons de commande. Si,
pour aucun de ces boutons, le code ne spciait un comportement prcis, ils ragiraient
tous de la mme manire aux clics de la souris : senfoncer (visuellement) et dclencher
un vnement Windows "clic". Cest pourquoi lon affecte chacun des proprits
particulires, quant la lgende, la taille, la couleur, etc.
Figure 1.10
Chacun des multiples
contrles est
diffrenci par
les proprits que
lui affecte le code.

Une fois que vous avez plac les contrles sur la feuille et que vous leur avez spci des
proprits individuelles, vous tes prt crire le code qui rpondra aux vnements
dclenchs par ces contrles. Un mme contrle peut dclencher plusieurs types dvnements. Par exemple, un mme bouton de commande peut correspondre un vnement
clic ou un vnement double-clic, selon ce que fait lutilisateur. Vous crivez le code pour
dterminer lequel de ces vnements doit tre ignor, lequel doit tre gr, et comment.
ce
Astu

Si vous crivez du code pour un vnement particulier, le programme rpondra cet vnement ds quil se produira dans le cours de lexcution. Si
toutefois vous naffectez pas de code lvnement, et quil se produise,
votre programme ignorera linformation transmise par Windows pour cet
vnement.

29

<
:

Prog VB6 FM1A Page 30 Lundi, 6. aot 2001 3:17 15

Partie II

Le code "derrire" la feuille de programme ne fonctionne pas comme un long listing


textuel, mais plutt comme une srie de courtes sections de code, chacune charge de
rpondre aux vnements des contrles de la feuille. Chacune de ces sections se tourne
les pouces jusqu ce que "son" vnement se produise ; lorsque lvnement se produit,
le programme excute le code correspondant. Par exemple, pour quun clic du bouton
droit sur un objet (bouton de commande, etc.) dclenche lmission dun bip et lafchage dun avertissement, vous devez crire le code pour ce bip et ce message. Et le
code en question ne sera excut que si lutilisateur clique du bouton droit sur lobjet.
ition
Dfin

Un objet est un lment de programme Visual Basic, tel quun contrle, une
feuille ou un module de code contenant des instructions.

Comment tous ces fragments fonctionnent-ils ensemble ? La rponse viendra, disons,


dans une vingtaine de chapitres. Pour la leon de demain, vous commencerez par
apprendre spcier les proprits des contrles, ainsi qu grer ces contrles lorsque
vous crez votre toute premire application de zro, sans laide de lassistant Cration
dapplications. La thorie seule nest pas sufsante il faut se mettre au clavier et
commencer placer les contrles, en dnir les proprits, et crire le code des
vnements correspondants.

En rsum
Vous voil bien en route vers la matrise de Visual Basic. Vous avez appris dans ce
chapitre les bases de la programmation. Une fois assimil le processus de programmation, vous tes quip pour commencer lutilisation de Visual Basic, lun des environnements de programmation les plus performants daujourdhui.
Cette leon vous a enseign concevoir et crire un programme. Visual Basic a boulevers les mthodes de conception des programmeurs, par la facilit avec laquelle on
peut prototyper le concept du programme et passer de ce prototype au produit ni. En
programmation, il faut toujours revenir sur son ouvrage. Il est rare quun programme
fonctionne parfaitement du premier coup ; mais, comme nous lavons vu, lenvironnement interactif de Visual Basic vous pargne beaucoup de travail et donc beaucoup
derreurs.
Lassistant Cration dapplications gnre un squelette de programme que vous enrichissez par la suite pour en faire une application autonome, fonctionnelle et conforme
vos besoins. Enrichir signie ajouter des contrles, dnir leurs proprits, et crire le
code qui permettra au programme de ragir et dinteragir correctement avec ces contrles. Dans les chapitres qui suivent, vous apprendrez matriser ces dtails pour aboutir
un programme efcace.

>
:

30

Prog VB6 FM1A Page 31 Lundi, 6. aot 2001 3:17 15

Chapitre 1 : Prsentation de Visual Basic

Questions-rponses
Q Faut-il suivre les tapes du processus de programmation (conception, cration
des lments visuels, etc.) pour tous les programmes Visual Basic, ou seulement
pour les petits programmes ?
R Plus le programme est important, plus il est important de suivre cette procdure ; et
le programme se complexie rapidement, mesure que vous lenrichissez de
nouvelles fonctionnalits. Telle fonctionnalit peut affecter telle autre ; aussi, plus
vous tes prvoyant, plus vous planiez, et moins vous aurez retravailler et
corriger par la suite. Heureusement, lenvironnement Visual Basic facilite la modication des programmes, mme quand des changements majeurs dans la structure
sont impliqus. Quand vous utilisez lassistant Cration dapplications, bien sr, la
conception est la deuxime tape. A mesure que vous progresserez dans ce livre,
vous apprendrez crire et concevoir efcacement vos programmes.
Q Lassistant Cration dapplications gnre-t-il du code ?
R Lassistant Cration dapplications gnre du code, mais pas beaucoup. Chaque
instruction a pour but de faire excuter au programme une tche spcique : effectuer un calcul, etc. En tant que programmeur, cest votre boulot que de produire le
code spcique.

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous
trouverez ces rponses lAnnexe A.

Quiz
1. Sur quel langage Microsoft sest-il fond pour laborer Visual Basic ?
2. Pourquoi Visual Basic est-il adapt aux dbutants comme aux programmeurs
conrms ?
3. Quest-ce qui est le plus important pour les novices en Visual Basic : le langage de
programmation ou linterface visuelle ?
4. Quelle est la diffrence entre une fentre de feuille est une fentre dapplication ?

31

<
:

Prog VB6 FM1A Page 32 Lundi, 6. aot 2001 3:17 15

Partie II

5. Que signient les termes bogue et dboguer ?


6. Quest-ce qui sexcute le plus vite : un programme crit dans un langage interprt
ou un programme crit dans un langage compil ?
7. Quest-ce qui est plus facile dboguer : un programme crit dans un langage
nteprt ou un programme crit dans un langage compil ?
8. Quelle est la diffrence entre un Ecran de prsentation au dmarrage et un cran
Astuce du jour ?
9. Quelle est la diffrence entre un contrle et la valeur de proprit dun contrle ?
10. Les contrles contiennent le code qui leur permet de ragir aux actions de lutilisateur.
Vrai ou faux ?

Exercice
En vous servant de lassistant Cration dapplications, crez une application qui inclut,
en plus des diverses options que vous avez choisies pour lexemple de ce chapitre, un
navigateur Internet et un Ecran de prsentation au dmarrage. Excutez lapplication
pour voir le fonctionnement de laccs Internet. Si vous ne disposez pas dune
connexion Internet, vous obtiendrez un message derreur en essayant de lancer la fentre de navigation. Mais crez le projet quand mme, pour la pratique.

>
:

32

Prog VB6 FM1A Page 33 Lundi, 6. aot 2001 3:17 15

Chapitre

Lenvironnement
et les outils Visual Basic
Maintenant que vous avez pu voir combien lassistant Cration dapplications est simple
dutilisation, vous tes prt faire le plongeon : crer un programme partir de zro.
Il nest pas trs difcile de crer une application sans laide de lassistant Cration
dapplications, mais vous devez nanmoins comprendre lenvironnement Visual Basic
avant de vous atteler lcriture. Au terme de ce chapitre, vous devriez tre capable de
vous reprer dans lenvironnement Visual Basic pour crer vos programmes comme un
pro : " la main".
Voici ce que nous tudierons aujourdhui :

les lments de lenvironnement Visual Basic ;

le placement des contrles sur une feuille ;

lenregistrement du projet et des chiers associs ;

la fentre Proprits et ses composants ;

laccs la fentre Code.

33

Prog VB6 FM1A Page 34 Lundi, 6. aot 2001 3:17 15

Partie II

L environnement Visual Basic


Au cours de ces vingt et un jours dapprentissage, cest dans lenvironnement Visual Basic
que vous tudierez et construirez des programmes. Plus vite vous vous familiariserez avec
cet environnement, dont le principe rside essentiellement dans le jeu des diverses
fentres, plus vite vous matriserez la programmation Visual Basic. La Figure 2.1 prsente
un cran Visual Basic dont les principaux composants sont dsigns.
Figure 2.1
Vous devez assimiler
le fonctionnement
des composants
Visual Basic.

Barre d'outils

Bote
outils

Zone d'dition de
la fentre Feuilles

Fentre Proprits

Fentre Projet

Fentre
Prsentation
des feuilles

La fentre Nouveau projet


Comme nous lavons vu lors de la leon prcdente, la fentre Nouveau projet safche
au lancement de Visual Basic ou lorsque vous choisissez la commande Fichier, Nouveau
projet. Dans le cadre de votre apprentissage, cest depuis la fentre Nouveau projet que
vous commencerez la plupart de vos applications.
Quand vous ne vous servirez pas de lassistant Cration dapplications pour dnir une
structure dapplication, comme nous lavons fait dans la leon dhier, cest licne EXE
standard que vous choisirez pour crer un programme autonome. Cette icne est nomme
ainsi daprs lextension que portera le programme une fois compil : .EXE, pour excu-

>
:

34

Prog VB6 FM1A Page 35 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

table. Mme si vous ne compilerez pas tout de suite vos applications, cest licne EXE
standard que vous slectionnerez le plus souvent dans votre apprentissage de Visual
Basic.
ition
Dfin

Info

ce
Astu

Une application EXE standard est une application qui peut tre compile ou
excute de faon interprte.

Vous verrez dans la fentre Nouveau projet de nombreuses icnes portant le


nom dActiveX. ActiveX est le nom donn aux contrles que vous crez vousmme. Ces contrles portent lextension de noms de chiers .OCX, et peuvent
tre intgrs lenvironnement Visual Basic de sorte quils demeurent dans
votre fentre Bote outils. Vous pouvez crire des applications qui deviendront des contrles et pourront ainsi servir des projets ultrieurs. En fait,
ActiveX est une dsignation assez large qui sapplique galement dautres
domaines informatiques.
Souvenez-vous que Visual Basic nest rien dautre quun programme Windows,
certes vaste, qui vous permet de crer de nouveaux programmes Windows. Les
barres doutils, menus, botes de dialogue et fentres de lenvironnement
Visual Basic fonctionnent dune faon tout fait semblable aux autres applications Windows. Vous ne devriez donc pas avoir de mal vous y familiariser.

La barre doutils
Selon votre utilisation de Visual Basic, la barre doutils situe sous la barre de menus se
modie. En tout, quatre barres doutils sont disponibles :

Dbogage. Safche lorsque vous employez les outils de dbogage pour corriger votre
programme.

Edition. Facilite ldition du code Visual Basic.

Editeur de code de feuille. Aide la disposition des objets sur la feuille.

Standard. Barre doutils par dfaut, afche sous la barre de menus.

Lafchage de ces barres doutils peut tre activ et dsactiv depuis le menu Afchage,
Barres doutils. Chaque barre doutils prsente une multitude de boutons, grce
auxquels vous pouvez accder aux fonctionnalits courantes sans passer par une succession de commandes de menus. Dans le cours de vos dveloppements Visual Basic, vous
rencontrerez de nombreux boutons trs utiles, alors que dautres ne vous seront jamais
daucun usage. Nous signalerons, dans ces leons, des boutons de barres doutils

35

<
:

Prog VB6 FM1A Page 36 Lundi, 6. aot 2001 3:17 15

Partie II

susceptibles dacclrer le dveloppement de vos programmes, mais nous ne saurions


en aucun cas fournir une rfrence exhaustive des boutons disponibles, tous ntant pas
dune gale utilit pour notre propos.
Info

Faire
Quand vous ne reconnaissez pas un bouton, maintenez-y un instant le
curseur de la souris : une info-bulle safche, qui indique la fonction du
bouton.
Ne pas faire
Nessayez pas de mmoriser tous les boutons de toutes les barres doutils.

ce
Astu

Chaque barre doutils peut tre ancre ou dsancre. Cest--dire que


vous pouvez faire glisser une barre doutils depuis sa position, sous la
barre de menus, pour former une barre doutils ottante. Il est ainsi
possible de placer une barre doutils prs de llment auquel elle sapplique,
an que les boutons requis soient rapidement accessibles. Libre vous de
replacer, par la suite, la barre doutils sa position initiale, en la faisant
glisser sous la barre de menus, o elle restera jusquau prochain changement.

La Bote outils
La fentre Bote outils nest pas une barre doutils. Comme son nom lindique, il
sagit dune collection doutils grce auxquels vous disposez les contrles sur la feuille.
En progressant dans ces leons, vous apprendrez ajouter et retirer les boutons de la
Bote outils. La Figure 2.2 montre un jeu des outils les plus communs.
Avec la Bote outils, vous ne serez jamais court doutils. Si votre application requiert
plus dun bouton de commande, loutil CommandButton de la Bote outils vous les
fournira. Les boutons de la Bote outils gnrent les outils votre feuille mesure que
vous les demandez. Cest ce que nous verrons la dernire section de cette leon, o
nous crerons une application ex nihila.

La fentre Feuille
Cest dans la fentre Feuille que vous effectuerez la plupart de vos oprations. Toutes
les feuilles de vos programmes, qui formeront larrire-plan visible de lapplication,
seront cres dans la zone centrale ddition o safche la fentre Feuille. Vous pouvez
ajuster la fentre Feuille de faon donner aux fentres cres lintrieur les dimensions voulues. (Les barres de dlement vous permettent de faire dler le contenu de la
fentre Feuille pour quapparaissent les lments masqus.)

>
:

36

Prog VB6 FM1A Page 37 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

Figure 2.2
La Bote outils
contient les outils
qui, sur votre feuille,
deviennent
des contrles.

Pointeur
de slection
Label
Frame
Case cocher
ComboBox
Barre de dfilement
horizontale
Timer
Zone de liste Dossier

PictureBox
Zone de texte
Bouton de
commande
Bouton d'option
Zone de liste
Barre de dfilement
verticale
Zone de liste Lecteur
Zone de liste Fichier

Shape

Line

Image

Data

OLE

Gardez lesprit quune application contient une multitude de feuilles. Chacune de ces
feuilles peut tre afche dans sa propre zone ddition de la fentre Feuille ; cest ce
que montre la Figure 2.3. La feuille active est celle dont la barre de titre est en
surbrillance. Pour activer une feuille, on clique nimporte o lintrieur ou sur la barre
de titre.

La fentre Prsentation des feuilles


La fentre Prsentation des feuilles est une petite fentre intimement lie la fentre
Feuille. Cette fentre a cela de trs utile, quelle donne un aperu de la disposition
des feuilles. Quand la fentre Feuille contient plusieurs feuilles, la fentre Prsentation des
feuilles afche un schma miniature de chacune de ces feuilles. La fentre vous
permet de visualiser lorganisation des feuilles sur lcran, tel que lutilisateur le
verra, ainsi que leur volution au gr de lutilisation du programme.
La fentre Prsentation des feuilles ne se contente pas de donner un aperu du positionnement des feuilles sur lcran nal. Elle vous permet galement de dplacer ces feuilles en
les faisant simplement glisser vers une nouvelle position. Si, par exemple, vous souhaitez
quune feuille apparaisse au centre de lcran, il suft de la faire glisser l, dans la fentre
Prsentation des feuilles ; et cest ce que lutilisateur verra lorsquil excutera le
programme.

37

<
:

Prog VB6 FM1A Page 38 Lundi, 6. aot 2001 3:17 15

Partie II

Figure 2.3
Les zones ddition
de la fentre Feuille
vous permettent
de travailler sur
plusieurs feuilles
la fois.

Info

ce
Astu

Feuilles
multiples

Feuille
active

Lorsque vous en saurez assez sur le langage de programmation Visual Basic,


vous serez en mesure de spcier dans le code seul la position exacte dune
feuille sur lcran. Vous pouvez galement indiquer Visual Basic de centrer
automatiquement la feuille ds que la forme est cre, et indpendamment de
ce quafche la fentre Prsentation des feuilles au cours du dveloppement.
Beaucoup de programmeurs ferment la fentre Prsentation des feuilles an
de librer de la place pour dautres fentres.

La fentre Projet
Dans la fentre Projet, vous grez les composants de votre application. Comme le
montre la Figure 2.4, la fentre Projet peut devenir passablement encombre. Un
programme Windows, que nous devrions appeler, comme la enseign la leon prcdente, une application, peut recouvrir plusieurs chiers. Avant que le programme ne
soit compil, les chiers lis Visual Basic peuvent devenir encore plus nombreux. La
fentre Projet vous permet de grer tous ces composants et damener dans la zone
ddition celui sur lequel vous souhaitez travailler.

>
:

38

Prog VB6 FM1A Page 39 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

Figure 2.4
La fentre Projet
contient lensemble
des composants de
votre projet.

Groupe

Nom du fichier
Nom de l'objet

Info

La fentre Projet est galement appele Explorateur de projets, en raison de


son interface semblable celle de lexplorateur Windows, et dans laquelle
on peut tendre et rduire les groupes dobjets.

Dans la fentre Projet, la liste des composants est prsente comme une structure arborescente. Les objets corrls sont afchs ensemble. Les signes moins () et plus (+)
vis--vis des groupes dobjets permettent respectivement de rduire ou dtendre lafchage des dtails. Si, par exemple, vous cliquez sur le signe plus de lobjet Feuilles, la liste
des projets en cours safche. Quand vous double-cliquez sur lune des feuilles, la fentre
correspondante safche dans la zone ddition de la fentre Feuille.
Chaque lment de la fentre Projet porte la fois un nom de projet et un nom de chier.
En Visual Basic, on assigne des noms aux objets tels que feuilles ou modules. Chaque
lment est aussi enregistr sur le disque dans un chier spar. Le nom de chier qui,
pour un mme lment, diffre du nom de projet (par exemple, seuls les noms de
chiers portent une extension) apparat entre parenthses ct de llment. La fentre
Projet afche donc le nom de chier et le nom de projet de chacun des chiers de votre
projet, et il suft de double-cliquer sur un objet pour lactiver.
ce
Astu

La fentre Projet inclut une barre doutils qui nafche que trois boutons. Le
bouton Fentre Code afche la fentre Code pour lobjet slectionn, de
sorte que vous puissiez en modier le code. (La fentre Code napparaissait
pas sur la Figure 2.1 ; elle vous sera prsente la dernire section de cette
leon, alors que vous ajouterez du code lapplication.) Le bouton Afcher
lobjet afche la fentre dobjet pour lobjet slectionn. Beaucoup dobjets
se voient associer la fois une fentre dobjet et une fentre Code. A chaque
feuille, par exemple, correspondent un module de code et une fentre
Feuille. Les boutons Fentre Code et Afcher lobjet vous permettent donc
de basculer du code dun objet ses lments visuels. Le bouton Basculer
les dossiers groupe et dgroupe les lments de la fentre Projet selon une
interface de type Explorateur.

39

<
:

Prog VB6 FM1A Page 40 Lundi, 6. aot 2001 3:17 15

Partie II

Voici les types dobjets qui apparaissent dans la fentre Projet :

Projets. Une application peut tre constitue de plusieurs projets, notamment lorsque vous employez des contrles ActiveX. Les projets portent toujours lextension
.VBP.

Feuilles. La fentre projet afche la liste des feuilles de votre projet. Les feuilles
portent toujours lextension .FRM.

Modules. Les modules de votre projet contiennent des routines (ensembles


dinstructions Visual Basic) gnrales et rutilisables. Un module peut ainsi tre
utilis par plusieurs programmes. Les modules portent toujours lextension .BAS.

Modules de classes. Les modules de classes sont des modules spciaux qui dnissent
les objets conus pour un projet. Les modules de classes portent toujours lextension
.CLS.

Contrles utilisateur. Les contrles utilisateur sont les contrles ActiveX que vous
avez ajouts au projet. Les chiers des contrles ActiveX portent toujours lextension .OCX.

Documents utilisateur. Les documents utilisateur sont des objets document qui
dcrivent les parties de votre projet. Les chiers de documents utilisateur portent
toujours lextension .DOB.

Page de proprits. Les pages de proprits (comme celles que lon trouve dans les
botes de dialogue onglets) apparaissent dans un chier de projet pour dcrire un
contrle particulier. Les chiers de pages de proprits portent toujours lextension
.PAG.
Info

Dautres lments apparaissent parfois dans la fentre Projet, tels que les
ressources et autres documentations que vous adjoignez au projet.

Pour la plus grande partie du dveloppement dapplications Visual Basic, et notamment


lors de ces vingt et un premiers jours, vous travaillerez uniquement sur les feuilles et les
modules.

La fentre Proprits
Une feuille peut contenir plusieurs contrles. A mesure que vous en ajoutez, vous
pouvez slectionner les contrles, simplement en cliquant dessus. Lorsquun contrle
est slectionn, la fentre Proprits afche toutes les proprits qui lui sont lies.
Comme vous le verrez dans la dernire section de cette leon, Visual Basic dnit automatiquement les valeurs de proprits initiales du contrle ds que vous lajoutez. En
afchant la fentre Proprits dun contrle, vous pouvez modier ces valeurs.

>
:

40

Prog VB6 FM1A Page 41 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

La Figure 2.5 montre une fentre Proprits qui afche quelques-unes des proprits
dun contrle Label. Vous pouvez constater que les informations afches dans la fentre Proprits quant au nom, au type et la description, retent le contrle slectionn.
Pour affecter une valeur une proprit, slectionnez la proprit et entrez la nouvelle
valeur. Quand vous pouvez choisir parmi plusieurs valeurs tablies, une liste droulante
safche.
Figure 2.5
La fentre
Proprits dcrit
chaque proprit du
contrle slectionn.

Nom de l'objet

Type de l'objet

Nom de la proprit

Description de
la proprit

Valeur de la proprit

Chaque proprit porte un nom qui la distingue ; et chaque proprit a une valeur que
vous ou Visual Basic lui assignez. Par exemple, Visual Basic nomme toujours Command1
le premier bouton de commande que vous ajoutez un projet. La proprit Name de ce
premier bouton aura donc pour valeur Command1. Il convient naturellement de donner au
bouton de commande un nom plus signicatif an de bien documenter lapplication.
Vous pouvez, par exemple, nommer cmdReportPrint un bouton qui dclenche limpression dun rapport.
A chaque nom dobjet doit tre inclus un prxe de trois lettres qui dcrit la fonction de
lobjet. Ainsi, lorsque vous consulterez la liste des objets, vous connatrez de chacun non

41

<
:

Prog VB6 FM1A Page 42 Lundi, 6. aot 2001 3:17 15

Partie II

seulement le nom, mais aussi le type (bouton de commande, zone de texte, feuille, etc.).
Le Tableau 2.1 propose une liste de prxes couramment utiliss dans les noms dobjets
Visual Basic. Vous pourrez vous y rfrer lorsquil vous faudra nommer des objets, dans
les jours et les leons qui vont suivre. Quand un projet contient plusieurs contrles, ces
noms vous aident en dterminer le type et la fonction.
Tableau 2.1 : Prxes courants placer en tte des noms dobjets

>
:

Prxe

Type dobjet

cbo

Zone de liste droulante modiable (ComboBox)

chk

Case cocher

cmd

Bouton de commande

dir

Zone de liste des dossiers

drv

Zone de liste des lecteurs

fil

Zone de liste des chiers

fra

Frame

frm

Feuille

grd

Grille

hsb

Barre de dlement horizontale

img

Image

lbl

Label

lin

Ligne

lst

Zone de liste

mnu

Menu

mod

Module

ole

OLE

opt

Bouton doption

pic

Zone dimage

42

Prog VB6 FM1A Page 43 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

Tableau 2.1 : Prxes courants placer en tte des noms dobjets (suite)
Prxe

Type dobjet

res

Ressource

shp

Forme

tmr

Timer

txt

Zone de texte

typ

Types de donnes dnis par lutilisateur

vsb

Barre de dlement verticale

Info

Faire
Nemployez pas de prxe dans les noms de chiers attribus aux objets. Les
prxes de noms dobjets Visual Basic doivent toujours tres saisis en
minuscules.
Ne pas faire
Souvenez-vous que vous pouvez dplacer, redimensionner et fermer chaque
fentre Visual Basic. Selon ce que vous souhaitez voir du contenu dune
fentre, vous pouvez lajuster pour faire de la place dautres fentres.

Obtenir de laide
Visual Basic propose toute une srie doutils en ligne destins vous aider. Avant de
crer votre application, comme la dernire section de ce Chapitre vous invite le faire,
vous devez vous familiariser avec les diverses options daide et apprendre y accder.

Laide locale
Dans la plupart des cas, lenvironnement Visual Basic vous offre toute laide ncessaire
sans quil vous soit besoin daller voir ailleurs (sauf dans ce livre, bien sr !). La
premire option du menu Aide, Sommaire, afche une fentre daide Windows base de
HTML ; cet cran est reproduit en Figure 2.6. Le panneau gauche de la fentre liste les
diffrents manuels en ligne que vous pouvez ouvrir et lire. Le panneau de droite propose
un tour des rubriques daide, avec pour guide un certain Dr Gui (GUI est le sigle de
graphical user interface, interface utilisateur graphique).

43

<
:

Prog VB6 FM1A Page 44 Lundi, 6. aot 2001 3:17 15

Partie II

Info

Info

ntion
Atte

Le systme daide Visual Basic est fond sur Books Online, base de donnes
de rfrence fournie avec les produits Microsoft plus anciens. Les CD-ROM
MSDN sont ncessaires pour accder laide en ligne.
MSDN signie Microsoft Developers Network (rseau des dveloppeurs
Microsoft), et recouvre un ensemble darticles en ligne, de CD-ROM et de
lettres dinformation, diffuss auprs des programmeurs depuis quelques
annes. Laide Visual Basic fait maintenant partie de MSDN. Les crans
MSDN ne sont disponibles quune fois labonnement souscrit. Pour vous
abonner linformation en ligne MSDN, cliquez sur le menu ?, sur
Sommaire, puis choisissez MSDN Online.
Laspect du systme daide chez vous peut tre lgrement diffrent, selon la
date de distribution de votre logiciel Visual Basic 6. Les crans daide
varient parfois dune dition lautre des produits Microsoft.

Figure 2.6
Laide Visual Basic
est l pour vous sortir
du ptrin.

La bote de dialogue Aide propose diffrente options dassistance en ligne ou immdiate :

>
:

Sommaire. Cette option propose une aide organise en livres, tels que "Documentation Visual Basic", "Outils et technologies", etc.

Index. Cette option permet de rechercher de laide partir dun ensemble de mots
cls indexs sur les rfrences de loption Sommaire.

44

Prog VB6 FM1A Page 45 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

Rechercher. Cette option permet de rechercher une chane de caractres prcise


dans un article.

Favoris. Cette option vous permet de stocker les rubriques daide que vous avez
juges particulirement utiles.

Vous tes-vous jamais demand pourquoi un systme de dveloppement aussi vaste que
Visual Basic nest pas livr avec un pais et pesant manuel ? En fait, Visual Basic est bel
et bien livr avec un manuel, plusieurs mme ; mais il sagit dune documentation en
ligne, comme le systme daide MSDN. Il suft de cliquer pour ouvrir lun des "livres"
du panneau gauche, et atteindre un chapitre et une page. Cette page safche dans le
panneau droit de la fentre daide.
ce
Astu

Les crans daide safchent dans une fentre indpendante de la fentre


Visual Basic. Vous pouvez donc garder les deux ouvertes, et basculer de Visual
Basic la rubrique daide en appuyant sur Alt-Tab, ou en cliquant sur les
boutons correspondants de la Barre de tche.

Le systme daide offre des rfrences sur Visual Basic, les connexions aux bases de
donnes, la programmation ActiveX, et dautres questions techniques propos
desquelles vous aurez besoin dinformation able dans le cours de vos travaux. Il faut se
gurer le systme daide comme un jeu complet douvrages de rfrence coteux qui,
sils taient livrs sous la forme papier avec Visual Basic, augmenteraient considrablement le prix du logiciel, tout en rendant malaise la recherche de sujets spciques.
A propos de Microsoft Visual Basic est une autre entre du menu Aide, qui afche une
bote de dialogue A propos classique indiquant le numro de version de Visual Basic, le
numro de srie et le nom denregistrement. Lorsque vous cliquez sur le bouton Infos
systme, le programme analyse votre systme puis afche la bote de dialogue reproduite
en Figure 2.7. Ces informations systme concernent aussi bien le matriel que le logiciel.
Au Chapitre 20, vous apprendrez ajouter une aide en ligne vos applications.

Le support technique
En slectionnant loption Support technique du menu Aide, vous afchez une bote de
dialogue qui explique comment contacter le support technique de Microsoft pour une
assistance plus personnalise. Il se peut en effet que le systme daide en ligne ne
rponde pas assez un problme prcis. Si, par exemple, vous constatez un comportement trange de Visual Basic, rvlant un bogue dans le logiciel lui-mme, il faut en
rfrer Microsoft directement. (Pour ce type de problme, toutefois, commencez
toujours par rinstaller Visual Basic an de voir si le dysfonctionnement persiste. Cest
sans doute le conseil quils vous donneront, et vous gagnerez ainsi du temps.)

45

<
:

Prog VB6 FM1A Page 46 Lundi, 6. aot 2001 3:17 15

Partie II

Figure 2.7
Le bouton Infos
systme lance une
analyse de fond
en comble de
votre systme.

Info

Pourquoi ce type dinformation est-il ncessaire pour contacter le support


technique ? Aprs tout, tout ce dont vous avez besoin, cest dun numro de
tlphone et des horaires douverture. Il se trouve que Microsoft offre
plusieurs niveaux de support technique, du service gratuit et limit labonnement annuel ; la fentre daide vous donne un rsum des options disponibles. Du reste, les coordonnes du support technique ne sont naturellement
pas les mmes dun pays lautre.

Laide en ligne
La commande Microsoft sur le Web du menu Aide vous permet de choisir entre diverses
options de support en ligne. (Toutes requirent videmment un accs Internet.) Loption
Support technique charge la page Web Microsoft ddie Visual Basic. Cette page, soit
dit en passant, gagne tre souvent visite, mme si vous ne recherchez pas daide
prcise. Vous y trouverez un nombre apprciable dinformations de mise jour, de
corrections de bogues, dastuces et de solutions, des exemples de code, ainsi quune
slection de liens actualiss. La commande Microsoft sur le Web permet galement
daccder la page daccueil de Microsoft, deffectuer une recherche sur le rseau, et
mme denvoyer Microsoft des commentaires ou des conseils propos de Visual
Basic.
ce
Astu

>
:

46

Visitez souvent le site Forum aux questions ; vous y trouverez une liste de
rponses aux questions les plus courantes lies la programmation Visual
Basic.

Prog VB6 FM1A Page 47 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

Apprivoiser lcran
Avant de terminer votre premire journe dapprentissage, vous avez cr une application Visual Basic autonome et fonctionnelle. Pour tre plus prcis : vous avez cr une
application avec laide de lassistant Cration dapplications, qui a fait tout le boulot. Il
sagit maintenant daller plus loin et de crer une application complte partir de zro.
Vous comprenez mieux quauparavant lenvironnement Visual Basic, et vous tes en
mesure de trouver de laide si ncessaire. Avant de suivre les tapes de la section
suivante pour crer une nouvelle application, prenez le temps de charger une application
existante depuis lun des chiers exemples livrs avec Visual Basic. Vous pourez ainsi
vous familiariser avec les fentres qui safchent. Procdez comme suit :
1. Lancez Visual Basic.
2. Insrez dans le lecteur le CD-ROM 1 de MSDN.
3. Cliquez sur longlet Existant et accdez au dossier Samples\Vb98\Controls via la
bote de dialogue Ouvrir un projet.
4. Double-cliquez sur licne Controls pour ouvrir le projet nomm Controls. Selon
vos paramtres dafchage Windows, lextension .VBP peut ne pas apparatre dans la
bote de dialogue Ouvrir un projet. Dans tous les cas, que vous voyiez ou non
lextension dans les botes de dialogue, vous pouvez distinguer les types de chiers
daprs licne qui se trouve gauche de leur nom. La bote de dialogue Ouvrir un
projet nafche que les chiers de projets ( moins que vous ne modiez la slection
dans la liste droulante Type de chier). Licne que vous voyez vis--vis du projet
Controls est licne qui reprsente tous les chiers de projets Visual Basic.
5. Une fois le projet Controls ouvert, une bote de dialogue safche et demande si
vous souhaitez ajouter au projet quelque chose du nom de SourceSafe. Pour tous les
exercices de ce livre, vous rpondrez non cette question. Deux autres botes de
dialogue relies SourceSafe apparaissent ensuite ; cliquez sur OK pour les fermer.
Info

ntion
Atte

SourceSafe est un outil de Visual Studio (disponible pour tous les langages
de la suite) qui permet de garder la trace des diffrentes versions de vos
programmes sources.
Le programme source est lensemble du code et des lments visuels qui
constituent lapplication que vous crivez. Ce programme source nest pas
distribu, car il nest que votre modle de travail. Seule lapplication nalise et compile doit tre distribue.

47

<
:

Prog VB6 FM1A Page 48 Lundi, 6. aot 2001 3:17 15

Partie II

6. Louverture du projet Controls ne change pas grand-chose lcran Visual Basic.


Lapplication Controls ne sexcute pas, car vous navez fait que charger le projet
depuis le disque. Pour lancer lapplication (de faon interprte), choisissez Excution, Excuter ; le rsultat est montr en Figure 2.8.
Figure 2.8
Le programme
Controls sexcute
dans lenvironnement
Visual Basic.

La fentre du programme Controls

Info

ce
Astu

Lorsque vous excutez une application interprtativement, la fentre du


programme demeure dans lenvironnement Visual Basic actif, de sorte que
vous pouvez lui apporter des modications ou corriger des erreurs en cours
de route. Une fois compil, le programme sexcute directement dans
Windows, hors de lenvironnement Visual Basic.
Plutt que de passer par la commande menu Excution, Excuter, vous
pouvez lancer le programme en appuyant sur F5 ou en cliquant sur le
bouton de barre doutils Excuter.

7. Le programme Controls offre une dmonstration de plusieurs des contles disponibles dans la Bote outils Visual Basic. Cliquez sur un bouton, puis testez les
options qui apparaissent.

>
:

48

Prog VB6 FM1A Page 49 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

8. Aprs avoir essay les diverses options du programme, cliquez sur le bouton Arrt
pour interrompre lexcution du programme et pour fermer la fentre. Vous voil de
retour dans lenvironnement Visual Basic. A ce point, le programme Controls est
toujours charg dans lenvironnement, mais lapplication elle-mme nest pas
active. Vous tes maintenant libre dtudier les diverses fentres Visual Basic.
9. Jetez un il la fentre Projet. Vous constatez que le programme Controls est
constitu de feuilles uniquement. Le code existe bel et bien (cliquez sur le bouton
Code pour afcher la fentre Projet ; cliquez de nouveau sur la fentre Afcher
lobjet pour revenir la liste des feuilles), mais il rside dans chacun des sept
chiers de feuilles qui accompagnent le projet.
10. Dans la fentre Projet, cliquez sur le nom dune feuille pour la faire apparatre dans
la zone ddition de la fentre Feuilles. La feuille est semblable ce qui apparaissait
lors de lexcution du programme. Consultez la fentre Prsentation des feuilles (si
vous ne la voyez pas, slectionnez Afchage, Fentre Prsentation des feuilles) pour
connatre la position de la feuille sur lcran tel quil apparatra lors de lexcution.
11. Faites glisser licne miniature de la feuille depuis la fentre Prsentation des
feuilles jusqu un emplacement diffrent. Si vous lancez le programme, la fentre
de la feuille en question apparatra l o vous lavez fait glisser.
12. Examinez la fentre Proprits, qui afche les valeurs de proprits du contrle
slectionn. Gardez lesprit que le contenu de la fentre Proprits ne concerne que le
contrle individuel slectionn dans la fentre Feuilles. Sur la Figure 2.9, la fentre
Proprits afche les proprits du bouton doption slectionn (entour de huit
poignes de redimensionnement).
13. Faites dler les valeurs de proprits pour visualiser toutes les proprits du
contrle slectionn.
14. Cliquez sur un autre contrle de la feuille et examinez la fentre Proprits mise
jour. Lorsque vous slectionnez un contrle en cliquant dessus, des poignes de
redimensionnement apparaissent tout autour, et la fentre Proprits est mise jour
pour reter les proprits dudit contrle.
Laissez le projet ouvert pour la prochaine section. En revanche, vous pouvez fermer les
barres doutils Edition et Editeur de code de feuille (si elles sont afches), car nous
nen aurons pas besoin. Maintenant que vous avez fait connaissance de lenvironnement
Visual Basic, vous tes prt y chafauder vos propres crations.

49

<
:

Prog VB6 FM1A Page 50 Lundi, 6. aot 2001 3:17 15

Partie II

Figure 2.9
La fentre Proprits
afche les valeurs
de proprits du
contrle slectionn.

Contrle
slectionn

Poignes de
redimensionnement

Valeurs de proprits
du contrle slectionn

Crer une application partir de zro


Cette section conclut le chapitre en vous guidant dans la cration dune application.
Vous ne comprendrez peut-tre pas tout ce qui va se passer ; mais vous allez tout de
mme au bout de lexercice, vous nen serez que mieux par pour la suite. Cette
premire application est simple, mais elle illustre bien la facilit avec laquelle on cre
les programmes Visual Basic. Cest dans la suite de cet apprentissage que vous approfondirez les dtails de ce que nous ne faisons que prsenter aujourdhui.

Configurer la feuille
Notre premire application se contentera dafcher une image et un bouton de
commande. Le programme modie limage lorsquon clique sur le bouton. Pour crer
cette simplissime application, suivez ces tapes :
1. Slectionnez Fichier, Nouveau projet pour afcher la bote de dialogue Nouveau
projet. Si une application est dj ouverte, Visual Basic demande si vous souhaitez
enregistrer les modications. Cliquez sur Non.

>
:

50

Prog VB6 FM1A Page 51 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

2. Cliquez sur licne EXE standard. Lenvironnement Visual Basic ne contient, alors,
quune seule feuille nomme Form1 (ce quindique la barre de titre). La feuille
safche sur larrire-plan de la zone ddition, blanche, de la fentre Feuilles.
3. Cliquez sur le bouton Agrandir pour donner la zone ddition de la fentre Feuilles
(cest--dire larrire-plan blanc, et non la feuille grise elle-mme) sa taille maximale. Ce qui libre assez despace pour agrandir la feuille.
Info

Des poignes de redimensionnement apparaissent autour de la feuille parce


que la feuille est le seul objet prsent dans la zone ddition de la fentre
Feuilles. Vous pouvez remarquer que la fentre Proprits afche les
proprits de la feuille. Comme tout objet, chaque feuille a des valeurs de
proprits paramtrables.

4. Faites glisser vers le coin infrieur droit de lcran la poigne de redimensionnement


situe en bas droite de la feuille. Au fur et mesure, vous pouvez voir, droite de
la barre doutils, les dimensions de la feuille se modier. Agrandissez la feuille
jusqu une taille denviron 7400 twips sur 5200. Cette opration dnit larrireplan du programme ; la Figure 2.10 montre le rsultat. (La fentre Prsentation des
feuilles peut apparatre sous la fentre Proprits.)
Figure 2.10
En redimensionnant
la fentre Feuilles,
vous redimensionnez
la fentre
dapplication
de votre programme.

Coordonnes
de position

Coordonnes
de taille

Fentre Feuilles

51

<
:

Prog VB6 FM1A Page 52 Lundi, 6. aot 2001 3:17 15

Partie II

ition
Dfin

Info

Le twip est une mesure dafchage. On peut se reprsenter le twip comme un


point de lcran ; mais diffrents moniteurs et cartes vido donnent diffrentes rsolutions, donc un nombre diffrent de points. Le twip est une unit qui
mesure, de faon indpendante de la rsolution relle, un point imaginaire
de lcran (point plus petit que ne le permettent les rsolutions les plus
hautes). En consquence, une feuille mesurant 7400 twips noccupera pas
7400 points rels de lcran (ou pixels).
En positionnant et en dimensionnant les fentres Feuilles, vriez les coordonnes correspondantes droite de la barre doutils. Ces valeurs sont afches par paires. La premire valeur des coordonnes de position quivaut
au nombre de twips entre le bord gauche de lcran et le ct de la fentre.
La seconde valeur quivaut au nombre de twips entre le bord suprieur de
lcran et le haut de la fentre. La seconde paire de valeurs, les coordonnes
de taille, quivalent au nombre de twips que la fentre occupe, en largeur et
en hauteur respectivement. Les proprits correspondant aux coordonnes
de position sont nommes Left et Top. Les proprits correspondant aux
coordonnes de taille sont nommes Width et Height. Visual Basic met automatiquement jour ces valeurs dans la fentre Proprits lorsque vous
dplacez ou redimensionnez la feuille dans la zone ddition de la fentre
Feuilles.

5. Slectionnez Afchage, Fentre Prsentation des feuilles pour afcher la fentre.


Dans la fentre Prsentation des feuilles, centrez lcran miniature de sorte que la
fentre dapplication se place au milieu de lcran lorsque le programme dmarre.
Bien que la fentre Prsentation des feuilles elle-mme ne change pas, les coordonnes de position reteront la modication.
6. Fermez la fentre Prsentation des feuilles an de laisser de la place aux autres
fentres.

ce
Astu

ition
Dfin

>
:

52

Les points qui constellent la feuille forment la grille. Lafchage de cette


grille peut tre activ ou dsactiv : choisissez Outils, Options, cliquez sur
longlet Gnral, puis cochez ou dcochez la case Afcher la grille. La grille
napparatra pas lors de lexcution du programme ; elle nest l que pour
vous aider placer et dimensionner les contrles sur la feuille.
La grille est la trame de points qui constitue larrire-plan de la fentre
Feuilles. La densit de points de la grille peut tre paramtre par la
commande Outils, Options.

Prog VB6 FM1A Page 53 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

7. Attribuez la feuille un nom plus parlant que Form1. Cette opration vous permettra
au passage de travailler dans la fentre Proprits. Le nom de la feuille slectionne
est dni dans la proprit (Name), qui est mis entre parenthses an de maintenir le
nom au sommet de la liste alphabtique des proprits. (A partir de maintenant, nous
ferons abstraction de ces parenthses.) Si la proprit Name nest pas encore visible,
faites dler la fentre Proprits ; notez que la valeur de Name est actuellement
Form1.
8. Slectionnez la proprit Name de la feuille et tapez frmMyFirst. Le nouveau nom
safche aussitt droite de la proprit Name, ainsi que sur la barre de titre de Visual
Basic.
ce
Astu

Vous modierez et attribuerez les diffrentes valeurs de la fentre Proprits


de la mme manire que vous venez de changer le nom de la feuille. Faites
dler la fentre jusqu la proprit dsire, slectionnez-la, puis saisissez
la nouvelle valeur (ou bien choisissez parmi les options proposes dans les
listes droulantes).

9. Modiez la barre de titre de la feuille : slectionnez la proprit Caption et tapez


Bonne Journe. La proprit Caption dnit ce qui safche dans la barre de titre
de la feuille lorsque lutilisateur lance le programme. Le nouveau nom apparat la
fois dans la fentre Proprits et sur la barre de titre de la feuille.
10. Avant daller plus loin, il est prudent denregistrer la feuille sur le disque. Choisissez
Fichier, Enregistrer le projet. Cette commande enregistre tous les chiers inclus
dans le projet en cours (lequel ne contient pour linstant quune seule feuille), ainsi
que les chiers de description du projet sous extension .VBP. Visual Basic demande
dabord le nom de chier qui doit tre attribu la feuille. La valeur de la proprit
Name de la feuille sert de nom par dfaut. Si vous acceptez ce nom par dfaut, ce que
nous vous invitons faire, Visual Basic y ajoute lextension .FRM. (Si votre projet
contenait plusieurs feuilles, modules ou autres types dobjets stocks dans des
chiers, vous auriez eu spcier un nom pour chacun.) Visual Basic senquiert
ensuite du nom de projet pour le chier de description. Nommez le projet HappyApp,
puis enregistrez. Sil vous est propos dajouter le projet la bibliothque SourceSafe, rpondez Non.
Info

Le chier de description de projet est ce que vous chargerez pour travailler


sur lapplication par la suite. Lorsque vous ouvrez ce chier de description,
Visual Basic charge tous les chiers associs au projet, et en afche les noms
dans la fentre Projet.

53

<
:

Prog VB6 FM1A Page 54 Lundi, 6. aot 2001 3:17 15

Partie II

Ajouter les dtails


Maintenant que larrire-plan de lapplication est cr, il vous reste ajouter les dtails,
cest--dire disposer les contrles sur la feuille. Ce qui se fait gnralement de la
manire suivante :
1. Slectionnez le contrle dans la Bote outils.
2. Placez le contrle la position voulue.
3. Dimensionnez le contrle.
4. Dnissez les valeurs de proprits du contrle.
5. Activez le contrle laide de code Visual Basic, si ncessaire.
Les tapes suivantes vous enseignent slectionner les contrles dans la Bote outils et
les disposer sur la feuille. Dans la plupart des cas, vous procderez de lune de ces deux
manires :

Double-cliquez sur licne du contrle dans la Bote outils. Visual Basic place
alors ce contrle au centre de la feuille. Vous pouvez ensuite laffecter la position
choisie, et le redimensionner en faisant glisser les poignes de redimensionnement.

Cliquez sur licne du contrle dans la Bote outils, puis dplacez vers lemplacement
voulu le curseur cruciforme qui apparat. L, cliquez, puis maintenez le bouton en
dplaant la souris ; vous dimensionnez le contrle. Lorsque le contrle a la position et
la taille souhaites, lchez le bouton de la souris.

Les tapes qui suivent enrichissent lapplication cre la section prcdente :


1. Double-cliquez sur le contrle Label pour placer un label au centre de votre feuille.
Sur le contrle Label gure la lettre A, comme nous lavons vu la section sur la barre
doutils. (Rappelez-vous que les info-bulles vous indique la fonction des icnes que
vous ne reconnaissez pas.) Le label est maintenant loutil slectionn dans la zone
ddition de la fentre Feuilles, et des poignes de redimensionnement apparaissent
tout autour. La fentre Proprits, quant elle, sactualise pour afcher les proprits
du label ; sur la barre doutils, les coordonnes de position et de taille retent les
nouvelles mesures du contrle.
On se sert dun label pour afcher du texte sur une feuille. Dans ce cas prcis, le
label constituera une zone de titre pour lapplication.
2. Faites glisser le label sur la feuille jusqu ce quil se situe environ 1320 twips du
bord gauche de la fentre Feuilles et 120 twips du bord suprieur. Guidez-vous
laide des coordonnes afches sur la barre doutils.

>
:

54

Prog VB6 FM1A Page 55 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

ce
Astu

A moins que vous ne modiez loption Aligner les contrles sur la grille
(onglet Gnral de la bote de dialogue Outils, Options), Visual Basic aligne
automatiquement les contrles sur les points les plus proches, an que
lensemble soit proprement ordonn.

3. Double-cliquez sur le contrle Bouton de commande de la Bote outils, an de


placer un bouton de commande au centre de la feuille.
4. Cherchez sur la Bote outils le contrle Image, puis faites un simple clic sur son
icne (un double clic centrerait automatiquement le contrle). Placez le curseur sur
la feuille et dessinez le contrle Image, en essayant de lancrer environ 2520 twips
du bord gauche et 2880 twips du bord suprieur. Donnez limage une taille
approximative de 2175 twips en largeur et 1825 twips en hauteur. Si vous ne
dplacez pas les poignes trop rapidement, une info-bulle safche pour vous indiquer les coordonnes de limage. Lorsque lobjet a atteint la taille voulue, relchez
le bouton de la souris. La Figure 2.11 montre lcran cette tape. Lorsque vous
excuterez le programme, le contrle afchera une image.
Figure 2.11
Votre application
prend forme.

Label

Bouton de commande Contrle Image

55

<
:

Prog VB6 FM1A Page 56 Lundi, 6. aot 2001 3:17 15

Partie II

ce
Astu

En suivant les tapes qui prcdent, vous placez le contrle Image approximativement la position demande. Pour lui affecter les coordonnes de
position et de taille exactes, il suft de donner les valeurs spcies aux
proprits correspondantes : Left = 2520, Top = 2880, Width = 2175 et
Height = 1825. A lavenir, cest par une notation de ce type que nous vous
indiquerons les valeurs de proprits. Vous savez maintenant que, pour
assigner de nouvelles valeurs, il suft de cliquer sur le nom de la proprit
concerne et de saisir directement.
Les coordonnes de position et de taille sont toujours spcies en twips, et
par paires. Vous les verrez souvent nonces entre parenthses, la manire
de points cartsiens : (2520, 2880).

5. Mme si vous ne comprenez pas encore chacune des proprits, vous tes en mesure
de leur attribuer des valeurs. Il sagit, prsent, de dnir de nouvelles valeurs de
proprits pour la feuille et ses contrles an de naliser laspect de lapplication.
Lorsque cela sera fait, il restera ajouter le code propre connecter les divers
composants et les faire fonctionner ensemble.
Le Tableau 2.2 prsente une liste des valeurs de proprits quil faut maintenant
dnir pour les trois contrles et la feuille elle-mme. Rappelez-vous quil faut
slectionner la feuille ou le contrle spcique avant de pouvoir en modier les
valeurs de proprits. Pour slectionner une feuille, cliquez nimporte o lintrieur ou sur la barre de titre , mais pas sur lun des contrles. La fentre Proprits
sactualise pour renvoyer les nouvelles valeurs. Cliquez dabord sur le label, le
bouton de commande ou limage pour slectionner un contrle, et modiez-le en
slectionnant une proprit, puis en saisissant la nouvelle valeur.
ntion
Atte

>
:

56

Au premier abord, le paramtrage des informations de police pour un


contrle peut sembler confus. Lorsque vous slectionnez la proprit Font
dun contrle, des points de suspension apparaissent aprs la valeur. Ces
points de suspension indiquent que vous pouvez attribuer cette proprit
plus dune valeur ; en cliquant sur les points, vous afchez la bote de
dialogue reproduite en Figure 2.12. Une fois que vous avez dni les valeurs
dans cette bote de dialogue et valid par OK, les valeurs de diverses
proprits lies la police se modient en consquence.

Prog VB6 FM1A Page 57 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

Figure 2.12
La bote de dialogue
Police vous permet
de dnir plusieurs
valeurs pour
la proprit Font.

Tableau 2.2 : Affectez les valeurs de proprits suivantes la feuille


et aux contrles de lapplication
Contrles

Proprits

Valeurs de proprits

Feuille

Max Button

False (ouvrez la liste droulante pour afcher les


valeurs)

Label

Alignment

Center (ouvrez la liste droulante pour afcher


les valeurs)

Label

Name

lblHappy

Label

Caption

Bonne journe!

Label

Font

Courier New

Label

Font style

Bold

Label

Size

36

Label

Left

1320

Label

Height

1695

Label

Top

120

57

<
:

Prog VB6 FM1A Page 58 Lundi, 6. aot 2001 3:17 15

Partie II

Tableau 2.2 : Affectez les valeurs de proprits suivantes la feuille


et aux contrles de lapplication (suite)
Contrles

Proprits

Valeurs de proprits

Label

Width

4695

Image

Name

imgHappy

Image

Stretch

True

Bouton de commande

Name

cmdHappy

Bouton de commande

Caption

Cliquez ici

ce
Astu

Vous pouvez, dans le cours mme de lcriture, excuter lapplication pour


voir un peu ce que a donne. Si, par exemple, vous appuyez maintenant sur
F5 (raccourci pour la commande Excuter), Visual Basic analyse le
programme et afche une fentre dapplication active incluant un bouton de
commande sur lequel vous pouvez cliquer. Rien ne se passe lorsque vous
cliquez sur le bouton, sinon que le bouton sanime pour gurer le clic. Par
ailleurs, le contrle Image que nous avons plac ne contient pour linstant
rien du tout. Nous rglerons ces deux problmes mineurs dans la section
suivante. Pour quitter le programme, cliquez sur le bouton de fermeture de
la fentre dapplication. La prochaine leon vous apprendra ajouter des
"portes de sorties" plus commodes.

Finaliser par le code


Grce aux instructions Visual Basic que nous allons maintenant ajouter, votre application va devenir tout fait fonctionnelle, quoique simple. Cette procdure peut vous
sembler trange, car il sagit de taper des codes quelque peu sotriques dans une fentre Code qui safche de faon impromptue. Observez les quelques tapes qui suivent ;
les prochains chapitres vous apprendront plus de subtilits sur la question.
1. Double-cliquez sur la forme, soit quelque part sur la grille dans la fentre Feuilles.
La feuille disparat et la fentre Code safche avec ces deux lignes :
Private Sub Form_Load()
End Sub

>
:

58

Prog VB6 FM1A Page 59 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

Ces lignes font partie des quatre lignes indispensables au code dune feuille.
La fentre Feuilles fonctionne comme un petit traitement de texte dans lequel vous
pouvez insrer, supprimer et modier les diffrentes instructions contenues dans le
programme.
Le code apparat sous forme de procdures ; chaque procdure ncessite
une ligne de dbut et une ligne de n, qui en dsignent les points de dpart
et darrt. Pour la plupart des procdures, Visual Basic ajoute automatiquement ces deux lignes.

Info

ition
Dfin

Une procdure est une section de code Visual Basic qui contient des instructions charges dune tche prcise ; par exemple, centrer une fentre
Feuilles.

2. Vous allez maintenant saisir vos premires lignes de code. Insrez trois espaces au
dbut de chaque ligne, de sorte quelles soient lgrement dcales par rapport
aux lignes de dbut et de n. Cet ensemble de renfoncements, que les programmeurs nomment indentation, permettent de circonscrire chaque procdure
lintrieur dune longue succession. Le code qui suit contraint la fentre dapplication safcher au centre de lcran, quelle que soit la rsolution utilise.
frmMyFirst.Left = (Screen.Width frmMyFirst.Width) / 2
frmMyFirst.Top = (Screen.Width frmMyFirst.Height) / 2
A peine avez-vous commenc de taper la premire ligne que Visual Basic afche un
complment automatique dinstructions (voir Figure 2.13). Lorsque Visual Basic
"pressent" que vous allez spcier des valeurs de proprits, il propose sous forme
de liste droulante les diffrentes options disponibles pour le contrle ; vous pouvez
ainsi choisir dans la liste plutt que de saisir le nom de la proprit en entier. Ds
que vous avez slectionn une proprit et valid en appuyant sur la barre despace,
Visual Basic insre le nom complet, et vous pouvez poursuivre votre saisie.
3. Dans la fentre Projet, cliquez sur le bouton Afcher lobjet an de revenir la fentre
Feuilles.
4. Double-cliquez sur le bouton de commande pour ouvrir la fentre Code de nouveau.
Au code initial vient sajouter un nouvel ensemble dinstructions de dbut et de n ;
il sagit dune nouvelle procdure destine grer le bouton de commande. Entre
ces deux nouvelles lignes, tapez le code suivant, toujours prcd de trois espaces :
imgHappy = LoadPicture("\Program Files\Microsoft Visual Studio\
Common\Graphics \Bitmaps\Assorted\Happy.bmp")

59

<
:

Prog VB6 FM1A Page 60 Lundi, 6. aot 2001 3:17 15

Partie II

Figure 2.13
Visual Basic acclre
la saisie du code.

Alors que vous tapez la parenthse ouvrante aprs LoadPicture, Visual Basic
propose une aide contextuelle semblable au Complment automatique dinstructions
que nous avons dj vu. Certaines instructions Visual Basic, notamment celles que
lon crit entre parenthses, requirent que vous saisissiez une ou plusieurs valeurs.
Visual Basic proposant automatiquement le format de ces valeurs, vous saurez
toujours combien il en faut. A mesure que vous progresserez dans votre connaissance du langage, vous comprendrez mieux la ncessit de ces valeurs. Dans un
langage aussi complet que Visual Basic, laide contextuelle propose savre dune
grande utilit.
5. Excutez le programme et cliquez sur le bouton de commande : une image apparat (voir
Figure 2.14). Bravo ! Vous avez russi crer une application complte sans recourir
lassistant Cration dapplications. Cette application afche une image lorsquon clique
sur un bouton ; elle contient du code, et vous en avez paramtr chacun des contrles.
6. Cliquez sur le bouton de fermeture pour quitter le programme. Assurez-vous de bien
sauvegarder votre projet avant de quitter Visual Basic.

>
:

60

Prog VB6 FM1A Page 61 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

Figure 2.14
Votre application
afche une image
lorsquon clique
sur le bouton.

En rsum
Si, dans ce chapitre, nous nous sommes attach dcrire lenvironnement Visual Basic,
cest que vous ne deviendrez un programmeur Visual Basic efcace quaprs avoir
compris le jeu des diverses fentres et interfaces. Visual Basic propose plusieurs niveaux
daide, incluant laide en ligne, le support Web et un support technique personnalis
disponible en plusieurs formules. Vous avez ainsi une assistance prcieuse porte de
main, au cas o un aspect de linterface ou du langage Visual Basic vous poserait un
problme.
Pour crer une application, il faut crer un nouveau projet, ajouter des contrles dans la
fentre Feuilles, dnir les valeurs de proprits de la feuille et des contrles, et activer
ces contrles laide du code. Le projet daujourdhui tait exceptionnellement simple,
en raison notamment du peu de lignes de code requises : trois.
La leon de demain rpondra quelques questions que vous vous posez propos des
contrles et de leurs proprits.

61

<
:

Prog VB6 FM1A Page 62 Lundi, 6. aot 2001 3:17 15

Partie II

Questions-rponses
Q Quelles doivent tre les dimensions de ma fentre Feuilles ?
R Cest la nalit de lapplication qui doit dcider de la grandeur de la fentre Feuilles
et du nombre de feuilles requis. Pour des programmes simples, une feuille est gnralement sufsante ; la taille de la feuille, quant elle, dpend du nombre de contrles
quelle doit recevoir, et de la nature du programme.
Nous aurions pu, dans ce chapitre, crer une feuille de taille maximale ; mais, avec
seulement trois contrles, cet t tout fait dmesur.
Q A quoi exactement sert le code que nous avons crit ?
R Le code est ncessaire au bon fonctionnement de lapplication. La ligne contenant
le mot cl LoadPicture est indispensable, car cest elle qui lance le chargement de
limage lorsquon clique sur le bouton de commande. Les deux autres lignes, que
nous avons ajoutes aprs avoir double-cliqu sur la fentre Feuilles pour ouvrir la
fentre Code, servent centrer la forme quelles que soient la taille et la rsolution
de lcran utilis.
Q Si cest le code qui centre la fentre Feuilles, tait-il ncessaire dutiliser la fentre Prsentation des feuilles ?
R Quelque position que vous donniez la feuille dans la fentre Prsentation des
feuilles, les deux lignes de la procdure centrent automatiquement la feuille au
lancement du programme.
La fentre Prsentation des feuilles est une bauche qui vous donne une ide de
lemplacement de la fentre Feuilles lorsque la feuille est charge. Pour un contrle
plus serr, et notamment si vous ntes pas certain de la taille de lcran sur lequel
sera excut le programme, la feuille doit tre positionne laide du code.

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices grce
auxquels vous mettrez en pratique ce que vous avez appris. Il convient de comprendre
les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez
ces rponses lAnnexe A.

>
:

62

Prog VB6 FM1A Page 63 Lundi, 6. aot 2001 3:17 15

Chapitre 2 : Lenvironnement et les outils Visual Basic

Quiz
1. Quelle est la diffrence entre la Bote outils et la barre doutils ?
2. Quel est le nom du service daide fourni sur abonnement aux programmeurs
Microsoft ?
3. La fentre Feuilles ne peut contenir quune feuille la fois. Vrai ou faux ?
4. Que se passe-t-il lorsquon clique sur un contrle de la Bote outils ?
5. Que se passe-t-il lorsquon double-clique sur un contrle de la Bote outils ?
6. Cest depuis la fentre Bote outils que lon dnit les proprits dun contrle. Vrai
ou faux ?
7. Comment Visual Basic dtermine-t-il de quel contrle les proprits doivent tre
afches dans la fentre Proprits ?
8. Que signient les points de suspension dans une valeur de la fentre Proprits ?
9. Quel est le nom de la proprit qui spcie le titre dun bouton de commande ?
10. Pourquoi faut-il changer le nom par dfaut des contrles ?

Exercice
Chargez lapplication cre aujourdhui pour pouvoir la modier. Ajoutez un peu de
couleur en appliquant du bleu larrire-plan de la feuille. Placez galement sur la
feuille un nouveau bouton de commande, labelis Quitter, et spciez une proprit
Name adquate pour ce contrle. Dans la nouvelle procdure qui safche dans la fentre
Code, ajoutez la ligne suivante, qui gre le nouveau bouton :
End

Excutez lapplication, puis cliquez sur le bouton Quitter. Nest-ce pas une faon plus
lgante de prendre cong dune application ?

63

<
:

Prog VB6 FM1A Page 64 Lundi, 6. aot 2001 3:17 15

Prog VB6 FM1A Page 65 Lundi, 6. aot 2001 3:17 15

Chapitre

Gestion des contrles


Maintenant que vous avez cr deux applications, lune avec lassistant Cration dapplications et lautre la force de votre poignet (faon de parler), il est temps dtudier le
fonctionnement interne de Visual Basic. Les travaux pratiques des deux premiers chapitres
ont dmontr la facilit avec laquelle on peut crer des programmes, et ils vous ont donn
un aperu de lenvironnement Visual Basic. A partir daujourdhui, vous allez commencer
comprendre de quelle faon les composants fonctionnent ensemble notamment les
contrles et leurs proprits.
Voici ce que nous dcouvrirons aujourdhui :

les proprits des contrles courants ;

pourquoi les contrles ont autant de proprits ;

les outils communs de la Bote outils ;

comment les touches de raccourcis acclrent la saisie des donnes ;

comment le focus aide lutilisateur slectionner les contrles ;

le fonctionnement des procdures.

65

Prog VB6 FM1A Page 66 Lundi, 6. aot 2001 3:17 15

Partie II

Etude des contrles


La Bote outils contient un ensemble de contrles dont vous vous servez dans vos
applications. Dans la Bote outils, les contrles sont en nombre illimit : vous pouvez
double-cliquer sur le contrle Image autant de fois que votre application le ncessite ;
chaque fois, un nouveau contrle est cr sur la feuille.
La varit des contrles (ou outils) disponibles dans la Bote outils dpend des
exigences de votre application. Dans le cadre de votre apprentissage, la Bote outils
contiendra, en gnral, le mme jeu doutils que nous avons vu dans la leon dhier. Il
sagit des contrles standards que Visual Basic charge lorsque vous crez une nouvelle
application.
ntion
Atte

Info

Un contrle nest pas accessible votre application tant quil napparat pas
dans la Bote outils. Vous ne pouvez donc pas, par exemple, ajouter sur votre
feuille un contrle de navigation Internet si ce contrle nest pas propos par
la Bote outils. Si vous utilisez lassistant Cration dapplications, il ajoutera la Bote outils tous les contrles requis pour gnrer le projet.
Si, dans une des leons de ce livre, il est fait rfrence un contrle absent de
la Bote outils standard, nous vous expliquerons comment vous le procurer.

Comme le montre la Figure 3.1, la Bote outils peut devenir passablement encombre
partir dun certain nombre de contrles. Une telle Bote outils accapare beaucoup
despace dans votre fentre. Pour librer de lespace gauche de votre cran, vous
pouvez dplacer la Bote outils en en faisant glisser la barre de titre vers une nouvelle
position. La fentre Bote outils peut galement tre redimensionne.
Info

Info

>
:

66

Ne pas faire
Evitez de donner la Bote outils une taille si rduite quelle en devienne
invisible. Si la Bote outils est si petite que des contrles ne puissent plus
tre vus, aucune barre de dlement ne safchera. Pour utiliser les outils
situs au-del des limites de la fentre, il faut tendre la fentre jusqu ce
quils redeviennent accessibles.
Les puristes Visual Basic appliquent aux jeux de contrles disponibles une
terminologie plus stricte. Les contrles qui apparaissent en premier dans la
Bote outils sont nomms contrles intrinsques. Les contrles ActiveX,
dextension .OCX, sont des contrles externes qui peuvent tre ajouts la
Bote outils. Les contrles insrables sont des contrles crs dans des
applications externes, telles que Microsoft Excel.

Prog VB6 FM1A Page 67 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

Figure 3.1
La fentre Bote
outils doit tre dune
taille raisonnable.

Les proprits sont les mmes pour la plupart des contrles. Le Tableau 3.1 liste les
proprits les plus courantes. Vous comprendrez sans doute pourquoi ces proprits
sappliquent tant de contrles. Tous les contrles doivent avoir une position sur lcran
(dnie par les proprits Left et Top), et la plupart ont des couleurs de premier et
darrire-plan, ainsi que des proprits de police, pour ceux qui incluent du texte.
Tableau 3.1 : Proprits communes plusieurs contrles Visual Basic
Proprits

Description

Alignment

Dtermine si le texte du contrle, tel quun label ou un bouton de commande,


apparat comme align gauche, centr ou align droite.

BackColor

Spcie la couleur de larrire-plan du contrle. Vous choisissez cette couleur


dans une palette en ouvrant la liste droulante de la proprit.

BorderStyle

Dtermine si le contrle est entour dune bordure.

Caption

Contient le texte afch sur le contrle.

Enabled

Dnie via une liste droulante, cette proprit sera True (vraie) si le contrle
doit tre accessible lutilisateur, et False (fausse) si le contrle ne doit pas tre
accessible. Cette proprit permet dactiver et de dsactiver les contrles selon
quon les veut ou non disponibles lors de lexcution du programme.

67

<
:

Prog VB6 FM1A Page 68 Lundi, 6. aot 2001 3:17 15

Partie II

Tableau 3.1 : Proprits communes plusieurs contrles Visual Basic (suite)


Proprits

Description

Font

Afche une bote de dialogue dans laquelle vous paramtrez pour le texte dun
contrle divers attributs de police, tels que la taille ou le style.

ForeColor

Spcie la couleur de premier plan du contrle. Vous choisissez cette couleur


dans une palette en ouvrant la liste droulante de la proprit.

Height

Spcie la hauteur en twips du contrle.

Left

Dnit, partir du bord gauche de la feuille, lorigine horizontale du contrle.


Pour une feuille, la proprit Left dnit la distance (en twips) au bord
gauche de lcran.

MousePointer

Dtermine la forme que prend le curseur lorsque lutilisateur dplace la souris


sur le contrle.

Name

Spcie le nom du contrle. Come nous lavons vu dans la leon dhier, la


fentre Proprits afche la proprit Name entre parenthses an quelle
apparaisse en premier dans la liste.

ToolTipText

Contient le texte qui apparat lorsque lutilisateur maintient le curseur sur un


contrle (info-bulle).

Top

Dnit, partir du bord suprieur de la feuille, lorigine verticale du contrle.


Pour une feuille, la proprit Left dnit la distance (en twips) au bord
suprieur de lcran.

Visible

Dnie via une liste droulante, cette proprit sera True (vraie) si le contrle
doit tre visible sur la feuille, et False (fausse) si le contrle doit tre masqu.

Width

Spcie la largeur en twips du contrle.

Rappelez-vous que les valeurs de proprits sont dnies pour chaque contrle avant
mme que vous ne les modiiez. Ds que vous placez un contrle, Visual Basic lui
applique un jeu de valeurs de proprits prdtermin (les valeurs les plus courantes).
Visual Basic affecte galement aux contrles des noms et libells, par dfaut, que vous
souhaiterez sans doute modier. Les valeurs par dfaut fonctionnent trs bien dans la
plupart des cas. Vous naurez jamais changer toutes les valeurs de proprits par dfaut
dun contrle.
Comme nous lavons vu, les proprits des contrles peuvent tre paramtres lors de
lcriture du programme. Mais vous pouvez galement dnir et modier les valeurs
de proprits dans le cours mme de lexcution du programme. Par exemple, la

>
:

68

Prog VB6 FM1A Page 69 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

proprit Enabled est souvent modie pendant lexcution pour quun contrle ne soit
plus accessible lutilisateur. Vous pouvez ainsi dsactiver un bouton de commande qui
gnre un rapport jusqu ce que lutilisateur ait donn le contenu du rapport.
ntion
Atte

ce
Astu

La fentre Proprits nafche pas toutes les proprits de tous les contrles. Ny apparaissent pas les proprits seulement dnissables dans le code
Visual Basic.
Certaines proprits, telles que Alignment, peuvent sembler trange, du fait
que, dans leur liste droulante, les valeurs sont prcdes dun chiffre. Alignment, par exemple, prend lune de ces trois valeurs : 0-Left Justify, 1Right Justify et 2-Center. Vous pouvez slectionner ces valeurs laide de
la souris sans tenir compte des chiffres ; vous pouvez galement, aprs avoir
ouvert la liste droulante dune proprit, taper le chiffre correspondant la
valeur voulue. Ces chiffes sont tout aussi pratiques lorsque vous dnissez les
proprits dun contrle dans le code Visual Basic : il suft dattribuer la
valeur numrique, au lieu de saisir la valeur entire (comme 0-Left
Justify). Ces chiffres constituent des raccourcis utiles lors de lcriture du
code, comme nous le verrons dans les leons suivantes.

Les sections suivantes dcrivent les contrles standards les plus utiles, ainsi que
plusieurs des proprits importantes associes ces contrles. Nous ne vous prsenterons pas aujourdhui tous les contrles de la Bote outils, mais seulement ceux que
vous utiliserez lors de vos premires expriences en Visual Basic.
Nous ne donnerons pas non plus un compte rendu exhaustif de toutes les proprits,
parce que certaines de ces proprits ne sont que trs rarement utilises. Bien des
programmeurs Visual Basic ne connaissent mme pas toutes les proprits disponibles
pour un contrle. En gnral, si vous souhaitez donner un contrle un aspect prcis, il
existe une proprit qui vous permet de le faire. Le tour dhorizon des contrles et de
leurs proprits que nous vous proposons maintenant vous aidera mieux comprendre
la fonction des contrles, et les diverses proprits qui leur sont associes.
ce
Astu

Certains programmeurs prfrent que la fentre Proprits afche les


proprits par catgories. Pour appliquer un tel classement, cliquez sur
longlet Par catgories de la fentre Proprits (voir Figure 3.2).

69

<
:

Prog VB6 FM1A Page 70 Lundi, 6. aot 2001 3:17 15

Partie II

Figure 3.2
Vous pouvez classer
les proprits an
de les localiser plus
rapidement.

Les proprits de la feuille


Nombre des proprits de feuille correspondent aux proprits de contrles prsentes
au Tableau 3.1. La feuille, en revanche, a cela de particulier quelle napparat pas sur
une feuille, mais directement sur lcran de lutilisateur. Cest pourquoi les proprits
Left, Top, Width et Height de la feuille sont xes par rapport aux bords de lcran, et
non par rapport au bord dune fentre Feuilles.
Les proprits de feuille suivantes ont aussi leur importance :

>
:

BorderStyle. Dtermine la raction de la fentre lorsque lutilisateur cherche la


redimensionner. Les valeurs possibles incluent 0-None, qui donne une fentre sans
bordure ni barre de titre ; 1-Fixed Single, qui donne une fentre non redimensionnable (lutilisateur peut fermer la fentre, mais ni la redimensionner, ni la rduire, ni
lagrandir) ; 2-Sizable, valeur par dfaut qui donne une fentre redimensionnable
classique, avec boutons Agrandir et Rduire.

ControlBox. Les valeurs True et False de cette proprit dterminent lafchage du


menu Systme de la feuille.

70

Prog VB6 FM1A Page 71 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

ition
Dfin

Le menu Systme est le menu qui apparat lorsquon clique sur licne
situe dans le coin suprieur gauche de la fentre. Ce menu propose les
options classiques de dplacement, redimensionnement, rduction, agrandissement et fermeture.

Icon. Spcie un chier dicne pour le bouton qui reprsentera lapplication sur la
Barre des tches Windows.

MaxButton. Dtermine lafchage sur la fentre dun bouton actif Agrandir.

MinButton. Dtermine lafchage sur la fentre dun bouton actif Rduire. (Si vous
donnez la valeur False aux proprits MaxButton et MinButton, aucun des deux
boutons napparatra.)

Movable. Dtermine si lutilisateur est libre de dplacer la feuille ou si cette feuille


doit rester en place.

ShowInTaskbar. Les valeurs True et False de cette proprit dterminent lafchage


de lapplication sur la barre des tches Windows.

StartUpPosition. Offre un moyen rapide de dnir la position de dpart de la feuille


sur lcran. Lune des valeurs les plus utiles est 2-CenterScreen, qui centre automatiquement la feuille ds sa premire apparition.

WindowState. Dtermine la taille (normale, agrandie, rduite) de la feuille. Cette


proprit est utile pour afcher par dfaut la feuille rduite.

Loutil Pointeur
Loutil pointeur est le seul lment de la Bote outils qui ne soit pas un contrle. Le
pointeur, et cest en fait sa seule utilit, permet de se dbarrasser du curseur cruciforme,
qui apparat quand vous slectionnez un contrle de la Bote outils.

Le contrle Label
Le contrle Label permet dafcher du texte. Votre utilisateur ne peut naturellement pas
changer le texte dun label. Mais vous pouvez, vous, modier le label en cours dexcution,
dans le code. (Voir le Chapitre 5 pour plus de dtails.) Les programmeurs ont souvent
recours aux labels pour des titres, des invites ou des descriptions. Si, par exemple, vous
souhaitez que lutilisateur saisisse une valeur dans un autre contrle, tel quune zone de
texte, vous placez ct de cette zone de saisie un label dcrivant la valeur demande.
Sans le label, lutilisateur ne saurait quelle valeur entrer.

71

<
:

Prog VB6 FM1A Page 72 Lundi, 6. aot 2001 3:17 15

Partie II

AutoSize et WordWrap sont deux proprits qui affectent lafchage du texte sur un label.
Si vous donnez AutoSize la valeur True, la taille du label sajuste horizontalement
pour afcher la totalit du texte. Lorsque WordWrap a la valeur True, Visual Basic
maintient la largeur du label, mais ltend verticalement pour afcher autant de lignes
que ncessaire.
La Figure 3.3 montre trois versions dun mme label, avec une proprit Caption identique, mais avec des combinaisons diffrentes des proprits AutoSize et WordWrap.
ntion
Atte

Cela peut paratre tonnant, mais, pour que WordWrap fonctionne, AutoSize
doit aussi avoir la valeur True. En effet, Visual Basic doit pouvoir tendre le
label horizontalement, ne serait-ce quun petit peu, au cas o un mme mot
serait plus large que le label lui-mme.

Figure 3.3
Les proprits
AutoSize et WordWrap
affectent lafchage
du texte sur un label.

Le contrle TextBox
On a recours aux zones de texte (text boxes) lorsque lutilisateur doit taper quelque chose
rponse une invite ou informations diverses. Il est souvent plus facile pour les utilisateurs de se voir proposer une valeur par dfaut, ce que Visual Basic vous permet de
faire. Si, par exemple, vous demandez lutilisateur de taper une date, vous pouvez
afcher par dfaut la date du jour, de sorte que lutilisateur naura pas la ressaisir.
Les zones de texte ne conviennent pas aux questions appelant des rponses du type
oui/non. Pour inviter lutilisateur choisir entre deux valeurs ou rpondre par oui ou

>
:

72

Prog VB6 FM1A Page 73 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

par non, dautres contrles sont plus appropris comme les contrles OptionButton
(bouton doption) ou ListBox (zone de liste droulante), que nous tudierons de manire
plus approfondie aux Chapitres 5 et 6.
Info

Info

Faire
A ct du contrle TextBox, il est bon dindiquer dans un label la valeur
attendue. Pour une demande de nom et adresse, par exemple, placez avant le
contrle TextBox un label du type Entrez votre nom :. Vos utilisateurs
sauront ainsi prcisment ce que lon attend deux.
Vous devez faire le distinguo entre la phase de cration (designtime) et la
phase dexcution (runtime). La phase de cration est la priode pendant
laquelle vous crivez et maintenez une application. La phase dexcution est
celle o lutilisateur exploite votre application. La valeur que vous dnissez
pour la proprit Text dune zone de texte lors de la phase de cration sera
la valeur par dfaut pour lutilisateur lors de la phase dexcution. Cet utilisateur pourra alors modier la valeur de la zone de texte, en la rcrivant ou
en la modiant.

Pour paramtrer les zones de texte de votre feuille, vous vous servirez des proprits
suivantes :

Alignment. Dtermine lalignement du texte dans une zone de texte dont la proprit
MultiLine est dnie comme True. La proprit Alignment est sans utilit pour une
zone de texte qui ne contient quune ligne.

Locked. Dtermine si lutilisateur peut, dans une zone de texte, entrer une nouvelle
valeur ou modier la valeur par dfaut. Si la valeur de Locked est True, lutilisateur
ne peut intervenir sur le texte tant que le programme nattribue pas, en cours
dexcution, la valeur False.

MaxLength. Spcie le nombre maximal de caractres que la zone de texte peut


contenir. La valeur 0 indique une longeur illimite.

MultiLine. Lorsque sa valeur est True, cette proprit spcie que la zone de texte
peut recevoir plus dune ligne de texte. Une barre de dlement verticale apparat si
lutilisateur entre plus de texte que ne peut en contenir une seule ligne moins
que vous nayez dsactiv les barres de dlement avec la proprit ScrollBars. La
proprit Alignment, dont la valeur par dgaut est 0-Left Justify, dtermine
lalignement du texte.

PasswordChar. Dsigne un caractre, comme lastrisque, qui apparatra en lieu et


place des caractres taps par lutilisateur dans la zone de texte. Ainsi, si lutilisateur
entre un mot de passe, seuls des astrisques apparatront lcran, de sorte quaucun

73

<
:

Prog VB6 FM1A Page 74 Lundi, 6. aot 2001 3:17 15

Partie II

indiscret ne puisse le lire par-dessus son paule. Bien que seuls des astrisques apparaissent, cest le mot de passe rellement tap par lutilisation qui sera enregistr.

ScrollBars. Dtermine si des barres de dlement apparatront dans la zone de texte,


et combien. Lorsque la valeur est 0-None, aucune barre de dlement ne safche. 1Horizontal nautorise que les barres de dlement horizontales. 2-Vertical nautorise que les barres de dlement verticales. 3-Both afche des barres de dlement
verticales et horizontales.
ntion
Atte

Pour que des barres de dlement apparaissent dans la zone de texte, la


proprit MultiLine doit avoir la valeur True.

Text. Spcie le texte qui apparat par dfaut dans la zone de texte.

Les zones de texte et les champs de formulaires appellent un curseur spcial. Votre utilisateur saisit et modie le texte laide dun curseur de texte. Lorsquon clique sur le
contenu dune zone de texte, le curseur de texte sactive pour en permettre la modication.
ition
Dfin

ce
Astu

Le curseur de texte, galement nomm point dinsertion, est une barre verticale pour saisir ou modier du texte dans des contrles tels que les zones de
texte.
Chargez et excutez lapplication Controls depuis le dossier Samples\
VB98\Controls de MSDN. Slectionnez loption TextBox pour vous entraner un peu. Lcran qui safche est reproduit en Figure 3.4. Vous pourrez
ainsi vous familiariser avec les zones de texte monolignes et multilignes,
ainsi quavec les curseurs de texte et les barres de dlement. Lapplication Controls dmontre galement que lon peut effectuer dans et depuis
une zone de texte les oprations Windows standards de copier, couper et
coller.

Le contrle CommandButton
Les applications contiennent presque toujours des boutons de commande. Les boutons
de commande permettent lutilisateur dindiquer quune rponse est prte, que
limprimante est recharge en papier, ou quil souhaite quitter le programme. Comme
nous lavons vu au chapitre prcdent, Visual Basic prend en charge lanimation du
bouton qui signale graphiquement le clic.

>
:

74

Prog VB6 FM1A Page 75 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

Figure 3.4
Lapplication
exemple Controls
met en uvre
les divers types
de zones de texte.

ition
Dfin

ce
Astu

Une touche de raccourci est une touche qui, combine la touche Alt,
dclenche une rponse du programme. Par exemple, les options de barre de
menus ont toutes une touche de raccourci : Alt-F pour le menu Fichier, etc.
Dans une option de barre de menus ou dans le label dun bouton de
commande, la lettre souligne indique la touche de raccourci correspondante.
Les boutons de commande ne servent pas quaux clics de souris. Vous
pouvez assigner au label du bouton de commande une touche de raccourci.
Lutilisateur pourra ainsi enclencher le bouton de commande en appuyant
sur la combinaison de touches correspondantes, telle que Alt-R. Cest dans la
proprit Caption du bouton que la touche de raccourci est dnie. Outre
les touches de raccourci, lutilisateur peut enclencher le bouton de
commande en appuyant sur Entre ; il faut pour cela que le bouton soit le
contrle slectionn ou que sa proprit Default ait la valeur True (voyez
la section sur le focus pour plus dinformations). Vous pouvez enn
attribuer un bouton de commande la touche Echap, par exemple pour les
boutons du type Quitter ou Annuler (dans ce dernier cas, cest la proprit
Cancel qui gre la touche Echap).

Voici quelques proprits utiles pour la programmation des boutons de commande :

Cancel. Dtermine la raction du bouton de commande la touche Echap. Si la


valeur est True, lutilisateur peut enclencher le bouton de commande par la touche
Echap, exactement comme sil avait cliqu. Un seul bouton sur la feuille peut avoir la
proprit Cancel dnie comme True. Si vous spciez cette valeur de proprit
pour plus dun bouton, Visual Basic ne retient que le dernier, dnissant tous les
autres comme False.

75

<
:

Prog VB6 FM1A Page 76 Lundi, 6. aot 2001 3:17 15

Partie II

Caption. Contient le texte qui apparatra sur le bouton de commande. Pour dnir
une lettre comme touche de raccourci, il suft de la faire prcder dune esperluette
(&). Ainsi, une proprit Caption de valeur &Quitter donnera un bouton comme
celui qui est reprsent en Figure 3.5. Lutilisateur pourra, au choix, enclencher ce
bouton en cliquant dessus ou en appuyant sur Alt-Q.

Figure 3.5
On dnit une touche de raccourci en plaant, dans la valeur de Caption,
une esperluette & avant la lettre choisie (la touche de raccourci est
souligne sur le bouton).

Default. Dtermine la raction du bouton de commande la touche Entre. Si la


valeur est True, lutilisateur peut enclencher le bouton en appuyant sur Entre
moins quil nait mis le focus sur un autre contrle (voir section suivante). Si vous
spciez cette valeur de proprit pour plus dun bouton, Visual Basic ne retient que
le dernier, dnissant tous les autres comme False. Le bouton dont la proprit
Default a pour valeur True est slectionn par dfaut lafchage de la feuille.

Picture. Spcie limage qui apparatra sur le bouton la place dun libell. Il faut
pour cela que la proprit Style ait t pralablement dnie comme 1-Graphical.

Style. Cette proprit dtermine si le bouton doit afcher un libell (valeur 0-Standard) ou une image (valeur 1-Graphical).
ce
Astu

Prenez garde dattribuer la mme touche de raccourci plus dun contrle.


Si tel tait le cas, Visual Basic ne retiendrait que le premier contrle dans
lordre du focus (voir section suivante), et la touche de raccourci deviendrait inoprante pour les autres contrles.

Le contrle Image
Comme vous avez plac une image sur lapplication cre au chapitre prcdent,
une brve prsentation du contrle Image est de rigueur ici. Le contrle Image est, avec
le contrle PictureBox, lun des contrles qui afchent des images. Les proprits de ce
contrle dterminent le chier graphique utiliser, et spcient si la taille du contrle
doit sajuster celle du chier, ou si la taille du chier doit sajuster celle du contrle. Vous
en apprendrez plus sur les contrles Image et PictureBox au Chapitre 14.
Visual Basic propose, bien sr, beaucoup dautres contrles, que vous dcouvrirez au l
de votre apprentissage. Les sections suivantes dcrivent de quelle manire lutilisateur
enclenche un contrle par lintermdiaire du clavier.

>
:

76

Prog VB6 FM1A Page 77 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

Le focus
Sur une mme feuille, un seul contrle peut avoir le focus la fois. Lordre dans lequel
les contrles auront le focus dpend de celui dans lequel vous les avez placs sur la
feuille, ou plus exactement dans lordre spci dans la proprit TabIndex de chaque
contrle. Tous les contrles ne peuvent pas avoir le focus. Cest un privilge rserv aux
contrles qui appellent une interaction avec lutilisateur. Ainsi, un contrle Label ne
pourra pas avoir le focus, car lutilisateur ne peut en aucun cas intervenir sur son
contenu.
ition
Dfin

Info

ce
Astu

Le focus, ou focus de contrle, dsigne le contrle actuellement slectionn.


Visual Basic signale le focus en mettant le contrle en surbrillance, ou en
lentourant dun cadre pointill.
Notez que la touche de raccourci pour le troisime bouton est Alt-A, et non
Alt-M. La touche M tant dj attribue au bouton du milieu (sa proprit
Caption a pour valeur &Moyen), le programmeur a d en attribuer une autre
au troisime bouton.
Rappelez-vous que le contrle pour lequel la proprit Default a pour
valeur True aura automatiquement le focus lafchage de la feuille. Naturellement, lutilisateur peut toujours mettre le focus sur un autre contrle.

Examinez la Figure 3.6. Le bouton de commande du milieu se distingue par le cadre


pointill qui lentoure. Cest gnralement de cette manire que Visual Basic signale le
contrle qui a le focus. L, si lutilisateur appuie sur Entre, le bouton de commande
central senclenche, car il a le focus. Lutilisateur peut aussi bien, en appuyant sur Tab
ou sur Maj-Tab, mettre le focus sur un autre contrle. Si donc il appuie sur Tab, le focus
passe au troisime bouton, qui peut alors senclencher en raction la touche Entre.
Figure 3.6
Le contrle encadr
est celui qui a
le focus. Lutilisateur
peut, aussi bien,
mettre le focus sur
un autre contrle
avant dappuyer
sur Entre.
Le cadre pointill indique le focus courant

77

<
:

Prog VB6 FM1A Page 78 Lundi, 6. aot 2001 3:17 15

Partie II

Tous les contrles ont une proprit TabIndex. A mesure que vous disposez les contrles
sur la feuille, Visual Basic dnit automatiquement la proprit TabIndex comme 0, 1, etc.,
attribuant un nombre unique et squentiel la proprit TabIndex de chaque contrle. Mme
les contrles qui, dordinaire, nappellent pas dinteraction avec lutilisateur, tels que les
labels, ont une proprit TabIndex. La proprit TabIndex dnit lordre du focus.
Vous ne placerez pas toujours les contrles en suivant lordre des valeurs de TabIndex.
Il vous arrivera notamment de placer un contrle entre deux autres. Il faudra peut-tre
modier lordre de TabIndex pour maintenir lordre de focus que vous dsirez. Par exemple, vous pouvez choisir de dplacer le focus selon lalignement vertical des contrles, ou
selon leur alignement horizontal ; en fonction de votre choix, la touche Tab provoquera un
dplacement du focus de haut en bas ou de gauche droite. Cet ordre de dplacement du
focus est spci par les valeurs de la proprit TabIndex pour chaque contrle.
ce
Astu

Si le prochain contrle recevoir le focus selon les valeurs de TabIndex


est un label, Visual Basic passe le focus au contrle suivant. Vous pouvez,
en consquence, proposer vos utilisateurs une touche de raccourci pour
une zone de texte. Examinez la Figure 3.7. Le label Nom : a une proprit
TabIndex de valeur plus grande que la zone de texte suivante. Nonobstant le
contrle qui a le focus, lorsque lutilisateur appuie sur Alt-F, Visual Basic
passe le focus au label, qui le repasse immdiatement au contrle suivant (la
zone de texte) parce que les labels ne peuvent avoir le focus. Ainsi, les
touches de raccourci que vous attribuez aux labels identient, en fait, les
zones de texte, et permettent aux utilisateurs den modier le contenu. Pour
cela, il faut naturellement que les proprits TabIndex de chaque paire
label/zone de texte aient des valeurs conscutives.

Figure 3.7
Lutilisateur peut
appuyer sur Alt-N
pour entrer son nom
dans la zone de texte.

>
:

78

Zone de texte qui


recevra le nom

Prog VB6 FM1A Page 79 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

Les procdures vnementielles


Les procdures vnementielles sont parfois dun abord difcile pour le programmeur
dbutant ; pourtant, le principe en est fort simple. Lorsque lutilisateur appuie sur un
bouton de commande ou tape dans une zone de texte, quelque chose doit en avertir
lapplication. Comme nous lavons vu dans le chapitre prcdent, Windows reoit des
vnements de plusieurs sources diffrentes. La plupart des vnements viennent directement de lutilisateur qui, via le clavier ou la souris, interagit avec une application en
cours dexcution.
Si un vnement est dclench et quil ne sagisse pas dun vnement systme, tel
quun clic sur le bouton Dmarrer, Windows passe lvnement lapplication. Si vous
avez crit une procdure vnementielle pour traiter cet vnement prcis, lapplication
y rpond. Si vous navez pas crit une telle procdure vnementielle, lvnement nest
pas trait et, pour ainsi dire, se perd.
Toutes sortes dvnements peuvent se produire : clic, double-clic, frappe au
clavier, etc. En outre, plusieurs contrles de la feuille peuvent rpondre aux mmes
types dvnements. Par exemple, un bouton de commande et une zone de texte peuvent
tous deux recevoir un vnement Click, lutilisateur pouvant cliquer sur lun comme sur
lautre. Il sensuit que vous ne devez pas seulement crire une procdure vnementielle
pour un vnement particulier, mais aussi spcier le contrle auquel cet vnement
revient.
Info

Pour votre comprhension gnrale de Visual Basic, il est capital de saisir


cette ncessit dcrire des procdures vnementielles pour tous les vnements et tous les contrles. Combien de procdures vnementielles Click
faudra-t-il crire pour grer les trois boutons de commande dune feuille ? Il
faudra en crire trois, puisque lutilisateur peut cliquer sur chacun des trois
boutons.
Si vous crivez une procdure Click sans laffecter un contrle particulier, le
programme ne pourra traiter de faon spcique les diffrents boutons de
commande. Une procdure Click spare doit tre crite pour chaque bouton
de commande. Lorsque lvnement Click est pass votre programme,
Windows passe galement le contrle qui a gnr cet vnement. Pour que
votre application puisse rpondre lvnement, vous devez avoir crit une
procdure vnementielle pour le contrle et pour lvnement.

79

<
:

Prog VB6 FM1A Page 80 Lundi, 6. aot 2001 3:17 15

Partie II

Imaginons que votre application afche quatre boutons de commande sur une feuille.
Voici ce qui se passe :
1. Lorsque lutilisateur clique sur lun des boutons, Windows reconnat quun vnement vient de se produire.
2. Windows analyse cet vnement et constate quil relve de votre application.
3. Windows passe lenvironnement et le contrle votre application.
4. Si votre application dispose dune procdure pour le contrle qui a reu lvnement,
le code de cette procdure (que vous aurez crit dans la fentre Code) sexcute.
Info

Le code de la procdure vnementielle sexcutera si et seulement si


lvnement correspondant a lieu. Cette qualit fait de Visual Basic un
systme trs ractif : vous crivez toutes sortes de procdures vnementielles qui attendront sagement quun vnement prcis les appelle ; cest ce
moment quelle se mettront au travail, indpendamment de toute autre activit du programme.

Les vnements des contrles courants


Nous vous prsentons ici les vnement les plus courants, lis aux contrles que vous
connaissez dj. Les feuilles comme les contrles peuvent recevoir des vnements.
Voici quelques vnements de feuilles susceptibles de se produire lors de lexcution :

Activate. Se produit lorsquune feuille a le focus. Dans une application qui contient
plusieurs feuilles, lvnement Activate a lieu quand lutilisateur a une feuille diffrente en cliquant dessus ou en la slectionnant depuis un menu.

Click. Se produit lorsque lutilisateur clique quelque part sur la feuille. Si lutilisateur clique sur une feuille partiellement cache par la feuille qui a le focus, les deux
vnements, Click et Activate, se produisent.
Info

>
:

Lorsque lutilisateur clique du bouton droit sur la feuille, cest galement un


vnement Click qui se dclenche. En progressant dans votre apprentissage, vous apprendrez dterminer lequel des deux boutons de la souris a
t employ pour le clic.

DblClick. Se produit lorsque lutilisateur double-clique sur la feuille.

Deactivate. Se produit lorsque le focus passe une autre feuille. En fait, lorsque
lutilisateur slectionne une autre feuille, il se produit la fois un vnement Activate
et un vnement Deactivate. Vous avez le choix dcrire une procdure vnemen-

80

Prog VB6 FM1A Page 81 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

tielle pour les deux vnements sur chaque feuille, pour un seul des deux vnements
sur lune des deux feuilles, ou une combinaison des deux, selon les besoins de votre
application.

Initialize. Se produit lorsquune feuille est gnre pour la premire fois.

Load. Se produit au moment prcis o la feuile est charge dans la mmoire active et
safche lcran.

Paint. Se produit lorsque Windows doit, suite une action de lutilisateur, redessiner
la feuille pour faire apparatre une partie de la feuille qui tait cache par un autre
objet, tel quune icne.

Resize. Se produit lorsque lutilisateur change la taille de la feuille.

Unload. Se produit lorsque lapplication provoque, par excution dune partie du


code, le dsafchage dune feuille. Lorsquune application se termine, toutes les
feuilles charges sont dcharges ; vous devrez donc crire une procdure vnementielle Unload pour chaque feuille si vous souhaitez que la fermeture de lapplication saccompagne dune sauvegarde des chiers et dun "nettoyage" de la mmoire
et de lcran.

Voici les vnements les plus courants pour les contrles TextBox :

Change. Se produit lorsque lutilisateur modie le texte.

Click. Se produit lorsque lutilisateur clique sur la zone de texte.

DblClick. Se produit lorsque lutilisateur double-clique sur la zone de texte.


Info

Rappelez-vous quil existe beaucoup plus de contrles que vous nen dcouvrez
aujourdhui. Des vnements disponibles pour la plupart des contrles, tels
que les vnements lis la souris et au clavier, seront traits plus loin dans ce
livre. Nous nous contentons pour linstant des vnements qui vous seront les
plus utiles lors de vos premiers dveloppements.

La plupart de ces vnements de zones de texte sappliquent galement aux labels. Mais
les labels, de par leur nature, dclenchent les vnements dune manire lgrement
diffrente. Par exemple, le contrle Label supporte lvnement Change, mme si lutilisateur ne peut intervenir directement sur un label. Cest que le code Visual Basic peut,
lui, modier un label ; et, lorsque cela se produit, un vnement Change a lieu.
Le contrle Image supporte le mme jeu dvnements que le contrle Label. Les deux
sont en effet trs semblables, cela prs que le contrle Image afche une image au lieu
de texte.

81

<
:

Prog VB6 FM1A Page 82 Lundi, 6. aot 2001 3:17 15

Partie II

Le contrle CommandButton supporte les mmes vnements que le contrle TextBox.


En programmant les vnements de boutons de commande, gardez ceci lesprit :

Dans le cas o une feuille contient un seul bouton de commande, la frappe de la


barre despace, lorsque le bouton a le focus, dclenche la procdure vnementielle
dudit bouton.

Si la proprit Cancel dun bouton de commande est dnie comme True, la frappe
de la touche Echap dclenche lvnement Click.

La frappe des touches de raccourci peut dclencher lvnement Click dun bouton
de commande.
Info

Tous les vnements dune application ne viennent pas forcment dune action
de lutilisateur. Les vnements peuvent tre dclenchs depuis le code Visual
Basic. Par exemple, vous demandez lutilisateur de cliquer sur un bouton de
commande lorsquil est prt visualiser le rsultat dun calcul. La procdure
vnementielle Click du bouton de commande provoque le calcul et lafchage
de ce rsultat. Mais votre code stipule aussi que, au-del dun certain temps, le
mme vnement Click soit automatiquement dclench. Lvnement peut
donc se produire, et le rsultat apparatre, avec ou sans lintervention de lutilisateur.

Ecrire des procdures vnementielles


Les procdures vnementielles sont constitues de code Visual Basic. Plus prcisment,
les procdures vnementielles sont des sections de code charges de grer un vnement
dun contrle particulier. Un mme contrle peut avoir plusieurs procdures vnementielles selon quil doive rpondre diffrents types dvnements.
Le nom de la procdure vnementielle permet Visual Basic de dterminer deux
choses :

Quel contrle dclenchera la procdure.

Quel vnement dclenchera la procdure.

Voici le format de tous les noms de procdures vnementielles :


ControlName_EventName ( )

Lunderscore, ou caractre de soulignement, spare le nom du contrle de celui de


lvnement ; il est indispensable. Toutes les procdures vnementielles sont nommes de

>
:

82

Prog VB6 FM1A Page 83 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

cette manire. Selon, ce format, une procdure nomme cmdExit_DblClick () sexcutera


si et seulement si lvnement DblClick du bouton de commande cmdExit se produit.
Pour ce qui est des parenthses, vous apprendrez y mettre les valeurs adquates en
progressant dans votre apprentissage. Mme quand elles sont vides, comme dans
lapplication du chapitre prcdent, les parenthses sont tout aussi indispensables que
lunderscore. Elles permettent notamment de distinguer les noms de procdures vnementielles des noms de contrles mme si elles ne font pas partie du nom lui-mme.
Le code contenu dans la procdure vnementielle cmdExit_DblClick () ne sexcute
que si lutilisateur double-clique sur le bouton de commande cmdExit. Si ce devait tre
la seule procdure vnementielle que contienne le code, lapplication ignorerait tout
autre vnement que DblClick sur cmdExit. Si, par exemple, lutilisateur se contente de
cliquer sur le bouton, rien ne se passe : la procdure vnementielle attend un doubleclic.
La plupart des procdures vnementielles que vous crirez lors de vos premiers pas en
Visual Basic commenceront par les mots Private Sub. Le mot cl Private est toutefois
optionnel ; si vous ne le spciez pas, Visual Basic considre par dfaut que la procdure
est "prive".
Visual Basic supporte deux types de procdures : les fonctions et les sous-routines.
Les procdures vnementielles sont toutes des sous-routines. Le corps dune procdure
vnementielle peut tre de plusieurs centaines de lignes, quoiquil faille toujours crire
aussi court que possible. Si vous en venez crire une procdure exceptionnellement
longue, essayez de la fractionner en procdures plus petites ; la maintenance du
programme nen sera que plus facile. Le Listing 3.1 donne un exemple de ce quoi
ressemblerait cmdExit_DblClick () dans une application.
Info

Ces nombres qui commencent chaque ligne du Listing 3.1, vous les retrouverez toujours dans la suite de louvrage. Ces nombres ne font pas partie du
programme ; il ne sagit que dune numrotation de rfrence qui nous
permettra, dans les leons, de vous renvoyer une ligne prcise et immdiatement identiable.

Listing 3.1 : Une procdure vnementielle qui sexcute lorsque lutilisateur


double-clique sur le bouton de commande

1: Private Sub cmdExit_DblClick ( )


2:
lblTitle.Caption = "Nouvelle page"
3:
intTotal = intCustNum + 1
4: End Sub

83

<
:

Prog VB6 FM1A Page 84 Lundi, 6. aot 2001 3:17 15

Partie II

Info

La fonction est un peu comme le lanceur au base-ball : elle ne fait


quenvoyer une valeur, dite valeur renvoye, vers un autre coin du
programme. Le mot cl Function distingue ce type de procdures des sousroutines. La sous-routine, indique par le mot cl Sub, ne renvoie pas de
valeur, mais effectue une tche prcise travers le code. Rappelons-le : les
procdures vnementielles sont toutes des sous-routines. Vous saisirez
mieux la distinction entre fonctions et sous-routines en progressant dans vos
exercices.

La premire ligne de ce listing en dit beaucoup sur la procdure vnementielle. Elle


indique dabord que la procdure est prive, cest--dire uniquement accessible au module
dapplication courant. Elle indique galement quil sagit dune sous-routine, et donc
quaucune valeur nen sera renvoye. Daprs le nom lui-mme, on sait que le contrle
concern est le bouton de commande (dsign par le prxe cmd) que le programmeur a
nomm cmdExit. On sait enn que la procdure vnementielle ne rpond quaux
doubles-clics sur ce bouton de commande.
Le corps de la procdure vnementielle noccupe que deux lignes. Vous navez pas
vous en soucier pour linstant. La dernire ligne du code referme la procdure et vous
permet, ainsi qu Visual Basic, de savoir o elle nit. (Les fonctions, quant elles, se
terminent toutes par linstruction End Function.)
Cest dans le fentre Code que vous tapez tout le code. La fentre Code fonctionne comme un
simple traitement de texte. Lorsque vous tes prt crire votre procdure vnementielle,
vous pouvez accder la fentre Code de plusieurs manires : en slectionnant le contrle
auquel la procdure est destine, puis en choisissant Afchage, Code ; en cliquant sur le
bouton Afcher lobjet de la fentre Proprits. Mais la mthode la plus simple, cest de
double-cliquer sur le contrle. Visual Basic ouvre automatiquement la fentre Code pour cet
objet, anticipe sur vos intentions en vous proposant les vnements le plus couramment attribus, et crit mme la premire et la dernire ligne de la procdure pour vous ! Cest prcisment ce qui sest pass dans lapplication du chapitre prcdent, lorsque vous avez doublecliqu sur le bouton de commande. Estimant que lvnement le plus probable pour un tel
contrle est lvnement Click, Visual Basic a afch dans la fentre Code ces deux lignes :
Private Sub cmdHappy_Click ()
End Sub

Visual Basic a mme plac le curseur dinsertion entre les deux lignes, de sorte quil ne
vous reste qu taper le corps de la procdure. Lorsque vous en avez termin, vous pouvez
crire en dessous une autre procdure vnementielle (auquel cas, vous devrez taper vousmme la premire et la dernire ligne), ou cliquer de nouveau sur le bouton Afcher lobjet
de la fentre Proprits pour revenir la fentre Feuilles.

>
:

84

Prog VB6 FM1A Page 85 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

Info

Si lanticipation de Visual Basic tait fausse, et que vous souhaitiez crire


une procdure vnementielle diffrente de celle qui vous est propose, il
suft de changer le nom, par exemple pour cmdHappy_DblClick (), et de
complter le reste.

La Figure 3.8 montre une fentre Code afchant le code de plusieurs procdures vnementielles. La fentre Code spare les procdures, et supporte les oprations Windows
standards de copier, couper. En revanche, et contrairement un vrai traitement de texte,
la fentre Code ne gnre pas de retours la ligne automatiques. La raison en est que
chaque instruction Visual Basic doit constituer une ligne propre. Une ligne extraordinairement longue peut tre continue la ligne suivante, condition de placer un underscore la n de la premire ligne Ce signe indique Visual Basic que les deux lignes
doivent tre traites comme une seule ; vous, de votre ct, vous pouvez visualiser la
totalit de linstruction sans recourir la barre de dlement.
Figure 3.8
La fentre Code
fonctionne comme
un traitement de texte
pour procdures.

Lignes sparant
les procdures

85

<
:

Prog VB6 FM1A Page 86 Lundi, 6. aot 2001 3:17 15

Partie II

Les projets bonus


Vous avez eu droit beaucoup de thorie. Si ce chapitre a rpondu certaines de vos
questions, il en a sans doute soulev de nouvelles. Pour mettre les choses en perspective,
vous trouverez, entre ce chapitre et le suivant, une section spciale qui propose un projet
bonus sur les contrles, proprits et vnements. Ce projet vous invite crer de
nouveau une application partir de zro an de mettre en pratique les enseignements de
ce chapitre. Vous ny rencontrerez pas dinstructions aussi dtailles que dans lapplication du chapitre prcdent, parce que vous tes maintenant familiaris avec le fonctionnement de Visual Basic. Dautres projets bonus vous seront proposs, entre certains
chapitres de ce livre, an daffermir les connaissances acquises. Considrez-les comme
des devoirs faire pour le jour suivant.

En rsum
Ce chapitre tait plus thorique que les deux premiers. Vous devriez maintenant tre en
mesure de mieux comprendre les contrles, les proprits et les vnements. La nature
des procdures devrait galement vous apparatre plus clairement, mme sil vous reste
peu prs tout apprendre du code Visual Basic. Vous avez retenu quune procdure
vnementielle doit exister pour chacun des contrles et des vnements auxquels vous
souhaiter faire ragir votre programme. Sans procdure vnementielle adquate,
lvnement serait ignor.
Le chapitre suivant vous enseigne ajouter des menus votre application an den faciliter lutilisation.

Questions et rponses
Q Pourquoi faut-il indenter le corps des procdures vnementielles ?
R En fait, vous devez indenter le corps de toutes les procdures. Lindentation nest
pas obligatoire en soi, mais elle vous permet de distinguer les vnements les uns
des autres dans les longues lignes de code. La fentre Code vous facilite dj la
tche en sparant les procdures par des lignes. Mais, lorsque vous imprimerez un
listing pour ltudier, lindentation vous permettra de reprer les procdures individuelles.

>
:

86

Prog VB6 FM1A Page 87 Lundi, 6. aot 2001 3:17 15

Chapitre 3 : Gestion des contrles

Q Puis-je inventer des noms de procdures vnementielles ?


R La seule chose que vous puissiez changer dans le nom dune procdure vnementielle,
cest le nom du contrle qui dclenche la procdure. Rappelez-vous que le format
spcique employ dans les noms de procdures vnementielles permet Visual Basic
de dterminer les contrles et les vnements censs dclencher la procdure. Vous
tes libre de nommer comme bon vous semble les autres types de procdures, sousroutines ou fonctions, mais vous devrez toujours respecter, pour les procdures
vnementielles, le modle de noms prsent aujourdhui.

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous assurerez votre comprhension des sujets traits dans le chapitre, et des exercices qui vous
amneront mettre en pratique ce que vous avez appris. Il convient de comprendre les
rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez ces
rponses lAnnexe A.

Quiz
1. Quest-ce quune touche de raccourci ?
2. Les proprits supportent de multiples vnements. Vrai ou faux ?
3. Pourquoi affecter lvnement Cancel un bouton de commande ?
4. Comment reconnat-on le contrle qui a le focus ?
5. Comment lutilisateur dplace-t-il le focus dun contrle lautre ?
6. Quelle proprit dnit lordre du focus ?
7. Devinette : LoadPicture () est-ce une sous-routine, une fonction ou une procdure
vnementielle ?
8. Lorsque vous double-cliquez sur un contrle dans la fentre Feuilles, Visual Basic
gnre automatiquement la premire et la dernire ligne de la procdure vnementielle Click. Vrai ou faux ?
9. On peut dclencher un vnement, tel que DblClick, depuis le code Visual Basic.
Vrai ou faux ?
10. A quoi sert la proprit PasswordChar ?

87

<
:

Prog VB6 FM1A Page 88 Lundi, 6. aot 2001 3:17 15

Partie II

Exercices
1. Ecrivez la premire ligne de la procdure vnementielle Load pour une feuille
nomme frmMyApp.
2. Chasse au bogue : pourquoi les lignes qui suivent ne forment-elles pas une procdure vnementielle ?

1: Private Function txtGetName_KeyDown ()


2:
Lancer le rapport
3:
Call ReportPrint
4:
lblWarning.Caption = "Tenez-vous prt"
5: End Function

3. Crez une application contenant trois zones de texte multilignes. Donnez ces
zones de texte une hauteur sufsante pour pouvoir afcher trois ou quatre lignes de
texte. Intgrez une barre de dlement horizontale la premire zone de texte, une
barre de dlement verticale la deuxime, et les deux types de barres de dlement
la troisime. Pour chacune des trois zones de texte, spciez le contenu par dfaut
Tapez ici. Ajoutez votre application un bouton de commande Quitter qui permette
lutilisateur de fermer le programme en appuyant sur Alt-Q.

>
:

88

Prog VB6 FM1A Page 89 Lundi, 6. aot 2001 3:17 15

PB1
Contrles, proprits
et vnements
Intercals et l entre les chapitres de ce livre, les sections "Projet bonus" vous aideront approfondir et mettre en pratique les connaissances acquises. Vous y trouverez
des listings dapplications compltes. Prenez le temps de crer ces applications ; elles
vous familiariseront avec lenvironnement Visual Basic et vous feront avancer dans la
matrise des techniques de programmation.
Lapplication de ce premier projet bonus met en uvre la proprit de zones de texte
PasswordChar. Le programme se sert de cette proprit pour demander et valider un mot
de passe. Si lutilisateur entre un mot de passe correct, une image apparat.
Faites des expriences sur les programmes des projets bonus. A mesure que vous
progresserez, vous pourrez modier ces applications pour vrier une supposition ou
vous exercer lcriture de code. Vous ne comprendrez sans doute pas tout du code
saisir pour cette application. Mais rien ne presse, et vous serez bientt mme de
lanalyser.
ce
Astu

Le mot de passe pour cette application est SSM. Mais ne le dites personne

89

Prog VB6 FM1A Page 90 Lundi, 6. aot 2001 3:17 15

Partie II

Les lments visuels


La Figure PB1.1 montre la fentre Feuilles de lapplication que vous allez crer. Vous
savez dj placer des contrles sur une feuille. Le Tableau PB1.1 fournit tous les contrles et les proprits ncessaires. Suivez, pour commencer, les tapes classiques de la
cration dapplication :
1. Slectionnez Fichier, Nouveau projet.
2. Slectionnez licne EXE standard.
3. Donnez aux proprits de la feuille les valeurs listes dans le Tableau PB1.1
4. Placez sur la feuille les contrles mentionns et dnissez leurs proprits. Pour
toutes les proprits qui napparaissent pas dans le tableau, laissez les valeurs par
dfaut.
Figure PB1.1
Cette application
utilise la proprit
PasswordChar du
contrle zone de texte.

Info

Vous ntes pas oblig de dnir les proprits dun contrle ds quil est
plac sur la feuille. Vous pouvez commencer par placer tous les contrles,
pour ensuite dnir les proprits de chacun.

Tableau PB1.1 : Contrles et proprits utiliser pour lapplication

>
:

Contrle

Proprit

Valeur

Feuille

Name

frmPassword

Feuille

Caption

Essayez un mot de passe

90

Prog VB6 FM1A Page 91 Lundi, 6. aot 2001 3:17 15

Projet bonus 1 : Contrles, proprits et vnements

Tableau PB1.1 : Contrles et proprits utiliser pour lapplication (suite)


Contrle

Proprit

Valeur

Feuille

Height

5610

Feuille

Width

8475

Image

Name

imgPassword

Image

BorderStyle

1-Fixed Single

Image

Height

1890

Image

Left

3000

Image

Stretch

True

Image

Top

2640

Image

Width

2295

Label

Name

lblPrompt

Label

BorderStyle

1-Fixed Single

Label

Caption

Tapez votre mot de passe ici

Label

Font

MS Sans Serif

Label

Font Size

14

Label

Font Style

Bold

Label

Height

855

Label

Left

2520

Label

Top

600

Label

Width

3375

Zone de texte

Name

txtPassword

Zone de texte

Height

375

Zone de texte

Left

3360

Zone de texte

PasswordChar

91

<
:

Prog VB6 FM1A Page 92 Lundi, 6. aot 2001 3:17 15

Partie II

Tableau PB1.1 : Contrles et proprits utiliser pour lapplication (suite)


Contrle

Proprit

Valeur

Zone de texte

Text

(Laissez vide en effaant la valeur par dfaut)

Zone de texte

Top

1800

Zone de texte

Width

1695

Bouton de commande

Name

cmdTest

Bouton de commande

Caption

&Tester le mot de passe

Bouton de commande

Left

6360

Bouton de commande

Top

3000

Bouton de commande #2

Name

cmdExit

Bouton de commande #2

Caption

E&xit

Bouton de commande #2

Left

6360

Bouton de commande #2

Top

3720

Ajouter le code
Une fois cre la fentre Feuilles, vous tes prt entrer le code. Le Listing PB1.1 fournit ce code. Notez lexistence de deux procdures vnementielles : cmdExit_Click() et
cmdTest_Click(). Chacune de ces deux procdures rpond lvnement Click pour un
bouton particulier. Lorsque lutilisateur clique sur le bouton de commande cmdExit,
cmdExit_Click() sexcute. Lorsque lutilisateur clique sur le bouton de commande
cmdTest, cmdTest_Click() sexcute.
ce
Astu

>
:

92

est lvnement le plus courant pour un bouton de commande. Vous


pouvez ouvrir rapidement une procdure vnementielle pour chaque
bouton de commande et laisser Visual Basic remplir la premire et la
dernire ligne. Pour saisir le corps (qui tiendra en une ligne) de la procdure vnementielle Click du bouton de commande cmdExit, double-cliquez
sur ce dernier dans la fentre Feuilles, puis saisissez la ligne de code. Procdez
de mme pour le bouton de commande cmdTest.
Click

Prog VB6 FM1A Page 93 Lundi, 6. aot 2001 3:17 15

Projet bonus 1 : Contrles, proprits et vnements

Listing PB1.1 : Ce code active la feuille de mot de passe

1: Private Sub cmdExit_Click()


2:
End
3: End Sub
4:
5: Private Sub cmdTest_Click()
6: Cette procdure vnementielle sexcute ds que
7: lutilisateur dcide de tester le mot de passe saisi
8:
If txtPassword.Text = SSM Then
9:
Mot de passe correct
10:
Beep
11:
Beep
Affiche limage
12:
imgPassword.Picture = LoadPicture(C:\Program Files\ _
13:
& Microsoft Visual Studio\Common\Graphics
\MetaFile\ _
14:
& Business\coins.wmf)
15:
lblPrompt.Caption = Aboule le fric !
16:
Else
17:
lblPrompt.Caption = Mot de passe incorrect Essayez encore
18:
txtPassword.Text =
Efface le mauvais mot de passe
19:
txtPassword.SetFocus
Met le focus sur la zone de texte
20:
End If
21: End Sub

Analyse
Naturellement, vous devez encore apprendre dchiffrer les instructions de programmation Visual Basic. Mais la petite explication du programme que nous vous proposons ici
constitue une excellente introduction au Chapitre 5, qui expose les fondements du code.
Les lignes 1 3 constituent la procdure vnementielle Click du bouton cmdExit.
Lorsque lutilisateur clique sur le bouton cmdExit, linstruction End provoque la fermeture de lapplication. Lapplication reste afche lcran, mme si lutilisateur a entr
le bon mot de passe, et jusqu ce quil clique sur le bouton de commande cmdExit (ou
quil ferme la fentre du programme).
En tapant le code, vous constaterez que Visual Basic utilise des couleurs diffrentes
selon le texte. Cette coloration de syntaxe est une fonction utile, notamment pour
localiser les bogues assez tt dans la phase dcriture. Plus vous programmerez, mieux
vous reconnatrez les couleurs spciques. Les mots cls Visual Basic, tels que les
commandes, sont toujours afchs en bleu. Les objets, tels que contrles et proprits,
sont toujours afchs en noir. Les autres lments de code apparaisent en vert. Ainsi, si
un mot cl apparat en vert, cest que Visual Basic ne le reconnat pas, et vous savez

93

<
:

Prog VB6 FM1A Page 94 Lundi, 6. aot 2001 3:17 15

Partie II

immdiatement que vous avez tap quelque chose dincorrect. Le jeu de couleurs peut
tre modi depuis la page Format de lditeur du menu Outils, Options.
La syntaxe est lensemble des rgles dcriture dun langage de programmation. Si vous
orthographiez mal une commande ou oubliez un signe de ponctuation, une erreur de
syntaxe est gnre.
Visual Basic repre la plupart des erreurs de syntaxe ds que vous validez une ligne par
Entre. La Figure PB1.2 reproduit la bote de dialogue qui safche lorsquune ligne
incorrecte a t saisie. (La bote de dialogue ne parle pas toujours derreur de syntaxe ;
le message derreur est parfois plus prcis et dsigne linstruction fautive.) Si vous localisez le problme (dans ce cas, il sagit dun signe "gale" en trop), cliquez sur OK et
corrigez. Si vous hsitez, cliquez sur le bouton Aide pour obtenir plus dinformations.
ntion
Atte

Visual Basic ne repre pas toujours avec justesse le problme dans une
instruction fautive. Dans la Figure PB1.2, le problme est bien circonscrit ;
mais il arrive que Visual Basic ne dsigne pas le problme exact, peut-tre
parce quil ne sen est rendu compte que quelques mots cls aprs. Auquel
cas, vous aurez dabord vrier vous-mme les dernires lignes avant de
remdier au problme.

Figure PB1.2
Visual Basic signale
les erreurs de syntaxe
ds que vous changez
de ligne.

Les lignes 6 et 7 illustrent la premire faon de documenter votre code. Comme nous
lavons vu au premier chapitre, la documentation est importante parce que vous aurez
srement revenir sur le programme par la suite ; et plus vous insrez de descriptions

>
:

94

Prog VB6 FM1A Page 95 Lundi, 6. aot 2001 3:17 15

Projet bonus 1 : Contrles, proprits et vnements

dtailles dans le code, plus vite vous comprendrez ce qui y est crit. Les lignes 6 et 7
sont des exemples de commentaires.
Visual Basic ignore compltement toute ligne qui commence par une apostrophe, signe
indiquant que ce qui suit nest pas du code. Rappelez-vous que les commentaires sont
destins aux humains, non aux ordinateurs.
Un commentaire est une note insre dans le code et qui en dcrit les sections. Un
commentaire plac tout en haut du code permet aussi au programmeur de donner son
nom et ses coordonnes. De cette faon, quiconque aura modier le programme
pourra, au besoin, se rfrer lauteur.
Info

Faire
Ajoutez en haut du code une ligne contenant la date et la description de toute
modication apporte au programme. Cette sorte de journal de maintenance
permettra, vous ou dautres, dtablir un suivi prcis des changements
implments, et facilitera la maintenance.

Les commentaires, sils ne concernent pas directement Visual Basic, doivent accompagner les instructions. Il convient dmailler le programme de descriptions en langage
clair, qui permettent de comprendre immdiatement la fonction de telle ou telle partie
du code. Comme le montre la ligne 11, un commentaire peut tre plac sur la mme
ligne quune instruction, si du moins elle nest pas trop longue. Essayez dagencer le
code et les commentaires de sorte que lon nait pas se servir des barres de dlement
dans la fentre Code. La modication et le dbogage du programme nen seront que
facilits.
ce
Astu

Visual Basic dispose doutils de "complment automatique". Par exemple,


lorsqu la ligne 8 vous tapez txtPassword.Text Visual Basic afche les
proprits disponibles pour la zone de texte, et cela ds que vous avez tap
le point. Tapez T puis e, et Visual Basic vous amne directement la
proprit Text. Il suft alors dappuyer sur la barre despace pour que le
nom Text apparaisse en entier dans le code. Evidemment, dans ce cas prcis,
vous nconomisez que deux caractres ; mais le gain de temps sera plus
apprciable pour des proprits telles que lblPrompt.Caption.

Les lignes 12, 13 et 14 constituent, en fait, une seule instruction Visual Basic. Linstruction est longue cause du chemin daccs du chier image spci. Vous pourriez aussi
bien mettre le tout sur une seule ligne, mais cette ligne excderait alors de loin la largeur
de la fentre Code. Visual Basic vous permet de poursuivre une mme ligne logique sur
plusieurs lignes physiques. Pour ainsi segmenter une instruction, il suft dinsrer une

95

<
:

Prog VB6 FM1A Page 96 Lundi, 6. aot 2001 3:17 15

Partie II

espace suivie dun underscore (_). Ce caractre, plac la n dune ligne, indique
Visual Basic que la ligne suivante nen est que la continuation.
ntion
Atte

Le chemin daccs spci la ligne 12 suppose que vous avez install avec
Visual Basic les chiers graphiques des exemples. Si tel nest pas le cas, le
chemin daccs ne conduira nulle part. Il vous faudra alors rechercher (
laide de loutil Windows du mme nom) le chier Coins.wmf sur vos CDROM dinstallation Visual Basic. Pour installer les images, insrez le
premier CD-ROM Visual Basic, et slectionnez Ajouter/Modier une option,
puis choisissez les chiers correspondants.

Lorsque la ligne fractionner est entre guillemets, la dmarche est plus dlicate. Vous devez
placer des guillemets avant lespace et lunderscore de bout de ligne, puis commencer la
ligne suivante par une esperluette (&), suivie de nouveaux guillemets, et ainsi de suite pour
toutes les lignes du commentaire. Vous comprendrez mieux le rle de lesperluette lorsque
nous tudierons, au Chapitre 5, les chanes de texte.
ce
Astu

En avanant dans votre connaissance du langage de programmation Visual


Basic, vous comprendrez pourquoi certaines instructions du Listing PB1.1 sont
plus indentes que dautres.

Un mot avant de terminer. Vous vous tes peut-tre demand pourquoi lutilisateur de
notre application doit cliquer sur un bouton de commande pour "Tester le mot de passe".
Pourquoi ne pas le laisser taper son mot de passe puis appuyer sur Entre, au lieu de se
servir de la souris ? Comme nous le verrons au Chapitre 7, la raction certaines
touches, telle la touche Entre, impliquerait du code supplmentaire. Cette application a
t voulue aussi simple que possible. Car il vous en reste pas mal apprendre

>
:

96

Prog VB6 FM1A Page 97 Lundi, 6. aot 2001 3:17 15

Chapitre

Cration de menus
La barre de menus offre un type spcial de contrles qui permettent lutilisateur de
slectionner des options et dexcuter des commandes. Une option de menu peut faire
double emploi avec un contrle de la feuille. Par exemple, la fentre dapplication peut
contenir un bouton Quitter, tout en proposant loption de menu Fichier, Quitter. Dans les
deux cas, la commande provoque la fermeture de lapplication. Une option de menu
reprend galement la fonction dun bouton de barre doutils. Enn, loption de menu
peut tre le seul moyen dexcuter une tche prcise. Avec Visual Basic, la cration de
menus est fort simple.
Voici ce que nous tudierons aujourdhui :

les menus gnrs par lassistant Cration dapplications ;

les diffrents types doptions de menu qui vous sont proposs ;

la cration de barre de menus, de menus droulants et de sous-menus ;

les procdures vnementielles de menus ;

lcriture rapide de procdures vnementielles laide des listes droulantes Objet


et Procdure de la fentre Code.

97

Prog VB6 FM1A Page 98 Lundi, 6. aot 2001 3:17 15

Partie II

Crer des menus avec lassistant Cration


dapplications
Vous avez pu voir, dans le cadre du premier chapitre, lassistant Cration dapplications
en action. La Figure 4.1 montre lcran de lassistant Cration dapplications depuis
lequel vous pouvez crer des barres de menus.
Figure 4.1
Lassistant Cration
dapplications permet
de gnrer facilement
des barres et options
de menu standards.

Une fois que vous avez fait votre choix parmi les options de menu et sous-menus
proposs, lassistant gnre lapplication et y intgre les contrles correspondants.
ce
Astu

Lavantage des menus, cest que la plupart des utilisateurs savent les utiliser. Les utilisateurs manipulent spontanment les options de menu quils
connaissent.

Pour peu que vous ayez quelque exprience des applications Windows classiques, vous
reconnatrez les options de menu proposes par lassistant Cration dapplications.
Les menus tels que Fichier, Edition, Fentre, apparaissent dans de nombreux programmes Windows ; les options de menu disponibles, telles que Fichier, Quitter, sont tout
aussi traditionnelles.
Mme si vous ne fournirez sans doute jamais autant doptions de menu et de sous-menu
que des applications de masse telles que Microsoft Word, il sagit dun bon modle pour
la conception de vos menus. A peu prs tous les programmes Windows incluent une
option Fichier, Quitter ; de mme pour les options Edition, Copier ou Edition, Couper.
Bien sr vos applications rpondent des objectifs spciques, et nont donc pas
"coller" aux standards Windows. Toutefois, inspirez-vous de ces standards aussi souvent

>
:

98

Prog VB6 FM1A Page 99 Lundi, 6. aot 2001 3:17 15

Chapitre 4 : Cration de menus

que possible. Les utilisateurs nen apprivoiseront que plus facilement vos applications. Et
plus vite ils sy habitueront, plus ils auront tendance les utiliser et plus vous aurez de
clients dles.
Lassistant Cration dapplications facilite considrablement la construction des menus.
Cest pourquoi vous devriez aussi souvent que possible vous en servir pour les applications ncessitant un systme de menus complexe. Les sections qui suivent montrent
quil est facile de crer des menus laide des outils Visual Basic. Mais cest encore
plus facile avec lassistant Cration dapplications : tout ce que vous avez faire, cest
de cliquer sur loption inclure dans lapplication nale. Mme si vous ne prvoyez pas
de barre doutils, ni rien de ce que propose lassistant Cration dapplications, il vous
permettra de partir dune application aux menus tout faits, et pour lesquels il ne restera
qu ajouter les dtails et les options de menu spciques requis par votre projet.
ce
Astu

Consultez, dans laide en ligne MSDN, le livre The Windows Interface Guide
to Software Design. Le chapitre "Menus, controls, and toolbars" dcrit les
standards Windows en la matire. En suivant ces grandes lignes, vous
vous assurez que votre application sera conforme, et aussi familire aux
utilisateurs que possible.

Introduction aux menus


Les menus Windows ne vous sont assurment pas inconnus, ne serait-ce que ceux de
Visual Basic, que vous avez eu utiliser dans le cadre des chapitres prcdents. La
Figure 4.2 montre le menu Fichier de Visual Basic droul, et en dtaille chacune des
options. Mme si vous tes rompu aux programmes Windows, prenez le temps dtudier
les lgendes de la gure ; elles indiquent la terminologie employe par Visual Basic pour
dsigner les diffrentes options. La suite de ce chapitre explique comment inclure ces
lments dans vos propres menus.
Info

Si une option de menu de votre application doit afcher une bote de dialogue, terminez le libell de loption par des points de suspension (voir
Figure 4.2). Lorsque vous crez un menu sous-menus, Visual Basic se
charge dajouter la petite che noire.

Certaines options de menu donnent sur des menus additionnels. La Figure 4.3 montre le
menu Afchage de Visual Basic, dans lequel loption Barres doutils afche un sousmenu. Notez que, dans ce sous-menu, une option est coche. Cela indique que lutilisateur peut activer et dsactiver loption en la slectionnant. Le Crateur de menus permet
de crer des options de menu classiques ou cochables.

99

<
:

Prog VB6 FM1A Page 100 Lundi, 6. aot 2001 3:17 15

Partie II

Figure 4.2
Visual Basic
exploite les standards
Windows en matire
de menus et
doptions de menu.

Barre de menus Touche de raccourci

Libell

Sparateur

Options
dsactives

Affiche
une bote
de dialogue

Raccourci
clavier

Figure 4.3
Visual Basic facilite
la cration de sousmenus.

Option coche

>
:

100

Sous-menu

Option
Options
slectionne actives

Prog VB6 FM1A Page 101 Lundi, 6. aot 2001 3:17 15

Chapitre 4 : Cration de menus

Le Crateur de menus
La Bote outils ne contient aucun outil qui permet de crer des menus. Il faut, pour
cela, recourir au Crateur de menus (voir Figure 4.4). Pour accder ce Crateur de
menus depuis la fentre Feuilles, il suft dappuyer sur Ctrl-E (raccourci pour Outils,
Crateur de menus).
Figure 4.4
Le Crateur de menus
permet dorganiser
les menus et sousmenus.

Liste des
lments
du menu

Proprits
du menu

Le Crateur de menus facilite la cration de menus pour vos applications. Le Crateur de


menus fonctionne en quelque sorte comme une fentre Proprits pour la barre de menus :
vous y spciez le nom des contrles ainsi que les libells qui apparatront sur le menu,
ainsi que dautres informations corrles. Le Crateur de menus est disponible dans les
logiciels de programmation Microsoft depuis plusieurs annes, et na que trs peu chang
depuis. Une telle longvit tmoigne de la simplicit et de lefcacit de cet outil.
La partie suprieure du Crateur de menus permet de spcier les proprits des contrles
correspondant chaque option de menu. Les options peuvent apparatre directement sur la
barre de menus, ou dans un sous-menu que lon droule. Dans la partie infrieure, la zone
de liste afche larborescence de votre systme de menus mesure que vous le construisez.

Fonctionnement du Crateur de menus


Le meilleur moyen dapprendre construire des menus laide du Crateur de menus,
cest sans doute de crer une application simple qui contienne divers menus. Parce que
vous ne matrisez pas encore les oprations sur chiers et autres concepts avancs de

101

<
:

Prog VB6 FM1A Page 102 Lundi, 6. aot 2001 3:17 15

Partie II

Visual Basic, cette application dexemple ne sera pas tout fait conforme aux standards
Windows. Mais cela nenlve rien lintrt de lexercice : reprendre les diffrentes
tapes de la cration de menus, et dmontrer la simplicit demploi du Crateur de menus.
Voici les objectifs de lapplication :

afcher un label au centre de la feuille ;

offrir une option de menu qui permette lutilisateur de changer la couleur de fond
du label ;

offrir une option de menu qui permette lutilisateur de changer le texte du label ;

offrir une option de menu qui permette lutilisateur de quitter lapplication ;

Ce programme, vous le voyez, sera fort simple, mais il nen implique pas moins la cration de menus fonctionnels.
Tout dabord, ouvrez une nouvelle application EXE standard en choisissant Fichier,
Nouveau projet. Assignez la feuille le nom frmMenu, puis changez la proprit Caption
pour quapparaisse sur la barre de titre Application Menus. Enn, redimensionnez la feuille
en donnant Height la valeur 6030 et Width la valeur 8415.
Ajoutez la feuille un label avec les proprits suivantes :

>
:

Proprit

Valeur

Name

lblMenu

Alignment

2-Center

BackColor

Red (cliquez sur longlet Palette de BackColor et slectionnez


le premier rouge)

BorderStyle

1-Fixed Single

Caption

Slectionnez une option de menu

Font Size

14

Font Style

Bold

Height

615

Left

1800

Top

2160

Width

4935

102

Prog VB6 FM1A Page 103 Lundi, 6. aot 2001 3:17 15

Chapitre 4 : Cration de menus

Info

Info

Votre PC peut afcher de quelques centaines plus dun million de


couleurs. A chaque couleur est associ un code numrique unique. Visual
Basic utilise pour ces valeurs le systme de numrotation hexadcimal. De
votre ct, vous pouvez vous contenter de slectionner les couleurs sur la
palette, ce qui est quand mme plus simple que de taper une valeur hexadcimale du genre &H000000FF&.
Le systme de numrotation hexadcimal, dit aussi base 16, est comme ces
deux noms lindiquent un systme de numrotation en base 16. Dans le
systme de numrotation le plus courant, en base 10, il ny a que dix chiffres :
de 0 9. En base 16, il y en a seize : de 0 9, plus A, B, C, D, E et F. Les
nombres hexadcimaux sont toujours prcds de &H an dindiquer Visual
Basic (ainsi quau programmeur) quil ne sagit pas dune base dcimale.
Une mme valeur numrique peut tre exprime en base 10 aussi bien quen
base 16 ; mais lhexadcimal, permet lexpression sous une forme plus
compacte de valeur plus grande. Dans le cas qui nous occupe, plus dun
million de combinaisons de couleurs sont possibles. La base 16 permet
dexprimer chaque ton par un nombre de chiffres moindre que ne lautoriserait la base 10.

La Figure 4.5 montre ce quoi votre cran devrait ressembler.


Figure 4.5
Le label a t plac ;
on le contrlera, par
la suite, avec des
options de menu.

103

<
:

Prog VB6 FM1A Page 104 Lundi, 6. aot 2001 3:17 15

Partie II

Vous tes maintenant prt crer le menu de lapplication. Cliquez sur la feuille, puis
faites Ctrl-E pour afcher le Crateur de menus. La plupart des champs du Crateur de
menus sont vides ; ils attendent les valeurs que vous spcierez pour chaque option.
ition
Dfin

Champs est un terme gnrique dsignant lemplacement dans lequel lutilisateur ou le programmeur saisit des valeurs ; les champs prennent gnralement la forme de zones de texte. Le Crateur de menus, comme la plupart
des botes de dialogue, contient de nombreux champs.

Voici ce qui doit apparatre sur la barre de menus que nous allons maintenant crer :

Fichier ;

Couleur ;

Message.

A ces menus devront tre attribues des touches de raccourci, de sorte que lutilisateur
puisse y accder via le clavier. Les lments que vous ajoutez dans le Crateur de menus
peuvent apparatre directement sur la barre de menus, ou bien dans un menu droulant,
selon les valeurs que vous spciez. Suivez ces tapes pour ajouter le menu chier la
barre de menus de lapplication :
1. Tapez &Fichier comme contenu de Caption. Comme dans toutes les autres valeurs
en Visual Basic, lesperluette indique que le F pourra tre utilis comme touche de
raccourci pour ce menu. A mesure que vous tapez le libell, Visual Basic le reproduit dans la zone de liste en bas du Crateur de menus.
2. Appuyez sur Tab pour passer au champ Name. Tab et Maj-Tab permettent de passer le
focus dun champ un autre.
3. Tapez mnuFile comme nom du contrle.
ce
Astu

Info

>
:

104

Gardez lesprit que les options de menu sont des contrles qui, comme
tous les contrles, ont une proprit Name.
Faire
Vous devez adopter pour lensemble des menus une convention de
dnomination cohrente. Apposez tous les noms de menus le prxe mnu,
suivi du nom du menu ; ainsi, le nom du contrle correspondant au menu
Fichier serait mnuFile (ou, en code francis, mnuFichier). Dans les noms
des options de menu, reprenez le prxe ainsi que le nom du menu ; ainsi, le
nom du contrle correspondant loption de menu Fichier, Quitter serait
mnuFileExit (ou, en code francis, mnuFichierQuitter).

Prog VB6 FM1A Page 105 Lundi, 6. aot 2001 3:17 15

Chapitre 4 : Cration de menus

4. Oubliez les autres champs et cliquez sur le bouton Suivant pour prparer le menu
suivant (bon apptit). En cliquant sur le bouton Suivant, vous indiquez que la
premire option est complte.
5. Dans le champ Caption de loption suivante, tapez &Couleur ; tapez mnuColor dans
le champ Name.
6. Cliquez sur Suivant.
7. Tapez &Message comme Caption et mnuMessage comme Name. Lcran du Crateur de
menus doit ressembler la Figure 4.6.
Figure 4.6
Vous venez de crer
les trois premires
options de menu.

Trois menus

Tester le menu
Les menus peuvent tre tests tout moment durant la cration. Cliquez sur OK pour
fermer le Crateur de menus. La fentre Feuilles afche la nouvelle barre de menus.
Appuyez sur F5 pour excuter lapplication. Comme vous navez pas encore cr les
sous-menus ni crit les procdures vnementielles, rien ne se passe lorsque vous
cliquez sur les menus. Mais ces menus sont bien l, attendant la suite des oprations.
Cliquez sur le bouton de fermeture de lapplication en cours dexcution (ou cliquez sur
le bouton Fin de la barre doutils Visual Basic), puis appuyez sur Ctrl-E pour revenir au
Crateur de menus.

105

<
:

Prog VB6 FM1A Page 106 Lundi, 6. aot 2001 3:17 15

Partie II

Ajouter un menu droulant


Vous pouvez, au choix, crer les menus droulants lors de la cration de la barre doutils,
ou les ajouter plus tard. Toutefois, si vous crez dabord la barre de menus complte
(comme nous lavons fait ici), il faudra insrer les options de menu leurs emplacements
respectifs dans larborescence. Le bouton Insrer du Crateur de menus est l pour a.

Info

Le bouton Insrer ajoute un menu ou une option de menu vierges. Avant de


cliquer sur Insrer, slectionnez loption de menu situe aprs lemplacement de la nouvelle option. Par exemple, pour ajouter une option au menu
Fichier, cliquez sur &Couleur dans la zone de liste, puis cliquez sur Insrer.
Visual Basic ajoute alors une ligne vierge entre &Fichier et &Couleur, dans
laquelle la nouvelle option viendra prendre place.

Visual Basic doit, dune manire ou dune autre, tre en mesure de distinguer les menus
comme tels davec les options de menu. Si vous insriez loption Quitter aprs Fichier
en utilisant la mme technique que dans les sections prcdentes, Visual Basic ajouterait
cette option entre Fichier et Couleur, sur la barre de menus mme, et non comme une
option du menu Fichier.
Avant dinsrer une nouvelle option, cliquez sur le bouton gurant une che pointe
vers la droite. Visual Basic ajoute des points de suspension aprs &Fichier, lesquels
indiquent que llment en question est une option de menu, et non un menu. Dans le
champ Caption, tapez &Quitter. Tout en tapant, vous voyez que le Crateur de menus
insre loption en bas de la zone de liste, indente par rapport aux autres. Pour un sousmenu qui viendrait simbriquer dans un menu existant, il faudrait cliquer deux fois sur
la che-droite, ce qui ajouterait deux sries de points de suspension.
ntion
Atte

Info

Un trop grand nombre de niveaux de sous-menus deviendrait vite confus.


Tenez-vous un maximum de deux niveaux un sous-menu accessible
depuis un menu, puis ventuellement un autre sous-menu dans le sous-menu.
Nous avons utilis, comme touche de raccourci de la commande Quitter, la
lettre Q. Pourquoi celle-l et pas une autre, outre quil sagit de linitiale ?
Parce que cest la touche de raccourci quutilisent les applications Windows
standards, et que ces standards doivent tre respects autant que possible.

Dans le champ Name de loption, tapez mnuFileExit. Le menu Fichier et son contenu
sont maintenant complets. Vous pouvez excuter le programme pour vrier le rsultat.

>
:

106

Prog VB6 FM1A Page 107 Lundi, 6. aot 2001 3:17 15

Chapitre 4 : Cration de menus

Naturellement, rien ne se passe lorsque vous slectionnez loption Quitter, car la procdure vnementielle requise nest pas encore crite.

Ajouter trois options cocher


Le deuxime menu, Couleur, proposera trois options : Bleu, Vert et Rouge. Ces couleurs
sexcluront mutuellement, le label ne pouvant tre de plusieurs couleurs la fois. Il
sagit donc de candidats idaux pour des options de menu cochables.
ition
Dfin

Une options de menu cochable est une option de menu qui afche une coche
lorsquelle est active.

La Figure 4.7 montre le menu droulant Couleur que nous allons maintenant crer.
Comme vous pouvez le voir, lune des options du menu est coche, les deux autres ne le
sont pas. En crant le menu Couleur, vous dnirez loption Rouge comme option
active par dfaut. Le label apparatra donc sur fond rouge jusqu ce que lutilisateur
slectionne une autre couleur.
Figure 4.7
Seule loption
de menu coche est
active.

ntion
Atte

Une seule couleur


peut tre coche
la fois

En fait, plusieurs options de menu peuvent tre coches la fois. Cest par une
programmation adquate de la procdure vnementielle que vous dterminez
le caractre exclusif de la slection. Ainsi, lorsque lutilisateur cochera une
option diffrente, loption originale sera automatiquement dsactive.

107

<
:

Prog VB6 FM1A Page 108 Lundi, 6. aot 2001 3:17 15

Partie II

Suivez ces tapes pour ajouter les options du menu Couleur :


1. Si vous laviez ferm, rouvrez le Crateur de menus.
2. Dans la zone de liste, cliquez sur loption &Message pour la slectionner.
3. Cliquez sur le bouton Insrer et sur la che-droite trois fois an dinsrer trois
lignes vierges pour les options.
4. Slectionnez la premire ligne vierge, o loption Bleu va prendre place.
5. Tapez &Bleu dans le champ Caption et mnuColorBlue dans le champ Name. Lorsque
lutilisateur excutera le programme pour la premire fois, loption Bleu ne sera pas
coche, indiquant par l quelle nest pas slectionne.
6. Cliquez sur Suivant pour insrer la prochaine option.
7. Tapez &Vert dans le champ Caption et mnuColorGreen dans le champ Name.
8. Cliquez sur Suivant pour insrer la prochaine.
9. Tapez &Rouge dans le champ Caption et mnuColorRed dans le champ Name.
10. Loption Rouge devra tre slectionne par dfaut lorsque lutilisateur lancera le
programme pour la premire fois. A cette n, cochez la case Checked du Crateur de
menus.
11. Fermez le Crateur de menus et lancez lapplication pour tester le menu Couleur.
La fentre devrait ressembler la Figure 4.7.
Vous pouvez non seulement proposer des options de menu, mais galement activer et
dsactiver ces options, dans le Crateur de menus, ainsi qu laide dinstructions Visual
Basic. La Figure 4.8 montre le menu Dbogage de Visual Basic avec plusieurs options
actives et plusieurs autres dsactives. Les options dsactives safchent en gris, de
sorte que lutilisateur nessaie mme pas de les slectionner.
En cochant la case Enabled du Crateur de menus, vous dnissez ds la phase de
cration que loption sera active par dfaut. Selon lapplication, vous activerez certaines options ds quelles deviennent disponibles, et vous dsactiverez celles que lutilisateur nest pas autoris slectionner. Par exemple, la plupart des traitements de texte
dsactive loption Coller du menu Edition jusqu ce que lutilisateur copie quelque
chose dans le Presse-papiers. Un menu dapplication nest, somme toute, quun
ensemble de contrles, dont les divers champs du Crateur de menus dnissent les
proprits. Le code Visual Basic peut donc modier la proprit Enabled de nimporte
quel lment de menu pour lui donner la valeur True ou False (cest ce que nous ferons
au prochain chapitre), de sorte que loption soit active et disponible, ou bien dsactive
et indisponible jusqu ce que lutilisateur lactive de nouveau.

>
:

108

Prog VB6 FM1A Page 109 Lundi, 6. aot 2001 3:17 15

Chapitre 4 : Cration de menus

Figure 4.8
La proprit Enabled
dtermine quelles
options seront
disponibles ou
indisponibles.

Options disponibles
Options indisponibles

Notez que le menu Dbogage, linstar de la plupart des autres menus, afche les raccourcis clavier droite des options de menu. F8 est le raccourci du mode Pas pas dtaill,
Maj-F8 celui du mode Pas pas principal. (Dans le cas des combinaisons de touches qui
lancent une option de menu, comme Ctrl-C pour Edition, Coller, on parle de raccourcis
clavier plutt que de touches de raccourci.) Pour affecter un raccourci clavier vos
options de menu, faites votre choix dans la liste droulante Shortcut. Pour la plupart des
raccourcis clavier, on utilise la touche Ctrl, comme dans Ctrl-C.

Info

Vous pouvez remarquer que sept des options du menu Dbogage (dont
certaines sont dsactives) prsentent leur gauche une icne. Ces icnes
renvoient au bouton correspondant de la barre doutils. Ainsi, il existe sur la
barre doutils Dbogage un bouton pour loption Pas pas dtaill. Les
icnes permettent aux utilisateurs de reprer les boutons qui correspondent
telle ou telle option de menu. Malheureusement, Visual Basic ne donne
aucun moyen dadjoindre des icnes vos propres options de menu (mais
des contrles externes sont disponibles cet effet).

Ajouter le menu Message


Le menu Message proposera trois options, dont une seule pourra tre slectionne la fois
(comme dans le menu Couleur). Loption coche dterminera le message afch dans le
label. A titre dexercice, vous allez formater le menu Message selon une manire diffrente
de la mthode classique. Le menu Message devra ressembler la Figure 4.9.
Notez dans le menu Message la barre sparatrice. Les barres sparatrices permettent de
grouper les options. Lutilisateur ne peut slectionner une barre sparatrice. Lorsque,
dans un menu droul, lutilisateur se dplace laide de la touche che-bas, la slection ne tient pas compte des barres sparatrices.

109

<
:

Prog VB6 FM1A Page 110 Lundi, 6. aot 2001 3:17 15

Partie II

Figure 4.9
La barre
sparatrice vous
permet de grouper
les options de menu.

Option active

Barre sparatrice

Suivez ces tapes pour ajouter le menu Message et y inclure une barre sparatrice :
1. Appuyez sur Ctrl-E pour afcher le Crateur de menus.
2. Dans la liste droulante, cliquez sur la ligne situe en dessous de &Message, o
loption suivante va prendre place.
3. Cliquez sur la che-droite pour imbriquer loption de menu dans le menu Message.
4. Tapez &Message initial dans le champ Caption et mnuMessageInitial dans le
champ Name.
5. Cochez la case Checked pour que loption soit slectionne par dfaut au dmarrage
du programme.
6. Cliquez sur Suivant. Notez que Visual Basic dcale automatiquement le nouvel
lment suivant en fonction de lindentation de llment prcdent. (Pour supprimer cette indentation et faire de loption un menu part entire, cliquez sur la
che-gauche ; pour faire remonter ou redescendre llment dans larborescence
et limbriquer dans un autre menu ou sous-menu, cliquez sur la che-haut ou sur
la che-bas.)
7. Dans le champ Caption de llment suivant, tapez un tiret simple (-). Cest le petit
nom de la barre sparatrice. Lorsquun lment a pour Caption un tiret simple,
Visual Basic le transforme en barre sparatrice.
8. Dans le champ Name de la barre sparatrice, tapez mnuMessageSep1. Les barres
sparatrices sont des objets part entire et, ce titre, requirent un nom unique.
Les barres sparatrices suivantes du menu message pourront tre nommes
mnuMessageSep2, mnuMessageSep3, etc.

>
:

110

Prog VB6 FM1A Page 111 Lundi, 6. aot 2001 3:17 15

Chapitre 4 : Cration de menus

ntion
Atte

Les barres sparatrices ne peuvent tre coches ni dsactives, ni avoir de


raccourcis clavier.

9. Cliquez sur Suivant.


10. Tapez &VB, cest simple ! dans le champ Caption et mnuMessageSimple dans le
champ Name, puis cliquez sur suivant.
11. Pour loption suivante, tapez &La programmation, cest le pied ! dans le champ
Caption et mnuMessageProgramming dans le champ.
Lcran de votre Crateur de menus devrait ressembler la Figure 4.10. Fermez-le, puis
excutez lapplication pour tester le menu. Nous avons presque ni. Il ne reste qu
ajouter le code qui rendra le menu oprant.
Figure 4.10
Votre menu est
maintenant termin.

ce
Astu

Lassistant Cration dapplications vous permet dajouter des barres sparatrices aux menus quil gnre. Il suft pour cela de slectionner loption
[Separator].

Finaliser le menu laide du code


Pour que le menu que nous venons de crer soit oprant, il reste lui affecter les procdures vnementielles adquates. Pas plus que dans les chapitres prcdents, vous ne
devez vous inquiter des dtails du code prsent ici. Il sagit, pour linstant, de bien
comprendre les grandes lignes. Les menus et leurs options ne sont que des contrles
qui dclenchent des vnements lexcution. Les utilisateurs interagiront avec votre
application par lintermdiaire des menus. Chaque fois quun utilisateur slectionne un

111

<
:

Prog VB6 FM1A Page 112 Lundi, 6. aot 2001 3:17 15

Partie II

menu, un vnement Click est dclench, et la procdure vnementielle correspondante


sexcute.
Comme nous lavons vu au chapitre prcdent, le contrle correspondant loption de
menu mnuFileExit requiert, pour rpondre lvnement Click, une procdure vnementielle mnuFileExit_Click (). Et ainsi des autres options. Le Listing 4.1 fournit le
code complet ncessaire notre application. Ce code peut tre entr de plusieurs
manires :

Vous pouvez crire une procdure vnementielle la fois. Dans la fentre Feuilles,
slectionnez loption de menu laquelle vous souhaitez affecter le code. Visual
Basic ouvre la fentre Code et insre automatiquement les lignes dencadrement de
la procdure. Il ne reste qu taper le corps. Lorsque vous en avez termin, fermez la
fentre Code, puis cliquez sur la prochaine option de menu programmer ; et ainsi
de suite.
ition
Dfin

Aprs avoir entr la premire procdure vnementielle selon cette mthode, vous
pouvez slectionner loption de menu suivante directement depuis la fentre Code.
Vous pouvez voir, tout en haut de cette fentre, deux listes droulantes : la liste Objet et
la liste Procdure. La Figure 4.11 montre une liste Objet ouverte. Dans la liste Objet,
slectionnez la prochaine option de menu pour laquelle une procdure vnementielle doit tre crite. Visual Basic insre les lignes dencadrement de cette procdure juste en dessous de la prcdente. Tapez le corps. Continuez ainsi jusqu ce
que toutes les procdures vnementielles des options de menu soient programmes.
Info

>
:

Les lignes dencadrement, "wrappers" en anglais, sont la premire et la


dernire ligne dune procdure. Le chapitre prcdent vous avait prsent le
format de ces lignes dencadrement, et avait expliqu leur ncessit.

Dans cette application, tous les objets, hormis le label, sont des contrles
de menu. Les contrles de menu ne supportent que les vnements
Click ; aussi la liste Procdure nafche-t-elle que lvnement Click.
Lorsque vous manipulez des contrles supportant dautres types dvnements, la liste Procdure est naturellement plus riche. Par exemple, si
vous slectionniez le contrle du label dans la liste Objet, puis que vous
ouvriez la liste Procdure, les noms dvnements proposs seraient bien
plus nombreux, parce que le contrle Label supporte plusieurs types
dvnements.

Vous pouvez enn ouvrir la fentre Code et saisir le code du dbut la n. Cette
mthode est un peu plus longue, car vous devez taper vous-mme les lignes dencadrement.

112

Prog VB6 FM1A Page 113 Lundi, 6. aot 2001 3:17 15

Chapitre 4 : Cration de menus

Figure 4.11
Les lignes
dencadrement de
la nouvelle procdure
peuvent tre appeles
depuis la fentre
Code.

Liste Procdure

Liste Objet

ce
Astu

Les listes Objet et procdure de la fentre Code sont aussi utiles pour localiser du code que vous avez dj entr, mais que vous souhaitez consulter ou
modier. Imaginons, par exemple, une application qui contient de multiples
procdures vnementielles pour plusieurs types de contrles. Vous voulez
atteindre la procdure DblClick dun bouton de commande spcique.
Slectionnez, dans la liste Objet, le contrle correspondant, puis choisissez
lvnement DblClick dans la liste Procdure : Visual Basic afche le code
de cette procdure dans la fentre Code. Magique !

Listing 4.1 : Le code du menu contrle la couleur et le contenu du label

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:

Private Sub mnuColorBlue_Click()


Colore le label en bleu et coche loption de menu

Bleu. Sassure que les options Vert

et Rouge sont toutes les deux dsactives.


lblMenu.BackColor = vbBlue
mnuColorBlue.Checked = True
mnuColorGreen.Checked = False
mnuColorRed.Checked = False
End Sub
Private Sub mnuColorGreen_Click()

113

<
:

Prog VB6 FM1A Page 114 Lundi, 6. aot 2001 3:17 15

Partie II

Listing 4.1 : Le code du menu contrle la couleur et le contenu du label (suite)

>
:

12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:

114

Colore le label en vert et coche loption de menu

Vert. Sassure que les options Bleu

et Rouge sont toutes les deux dsactives.


lblMenu.BackColor = vbGreen
mnuColorBlue.Checked = False
mnuColorGreen.Checked = True
mnuColorRed.Checked = False
End Sub
Private Sub mnuColorRed_Click()
Colore le label en rouge et coche loption de menu

Rouge. Sassure que les options Bleu

et Vert sont toutes les deux dsactives.


lblMenu.BackColor = vbRed
mnuColorBlue.Checked = Fasle
mnuColorGreen.Checked = False
mnuColorRed.Checked = True
End Sub
Private Sub mnuFileExit_Click()
Termine le programme
End
End Sub
Private Sub mnuMessageInitial_Click()
Restaure le texte initial du label et

coche loption de menu correspondante.

Sassure que les autres options sont dsactives.


lblMenu.Caption = "Slectionnez une option de menu"
mnuMessageInitial.Checked = True
mnuMessageProgramming.Checked = False
mnuMessageSimple.Checked = False
End Sub
Private Sub mnuMessageProgramming_Click()
Change le texte du label et coche

loption de menu correspondante.

Sassure que les autres options sont dsactives.


lblMenu.Caption = "La programmation, cest le pied !"
mnuMessageInitial.Checked = False
mnuMessageProgramming.Checked = True
mnuMessageSimple.Checked = False
End Sub
Private Sub mnuMessageSimple_Click()
Change le texte du label et coche

loption de menu correspondante.

Sassure que les autres options sont dsactives.


lblMenu.Caption = "VB, cest simple !"

Prog VB6 FM1A Page 115 Lundi, 6. aot 2001 3:17 15

Chapitre 4 : Cration de menus

61:
mnuMessageInitial.Checked = False
62:
mnuMessageProgramming.Checked = False
63:
mnuMessageSimple.Checked = True
64: End Sub

Encore une fois, ne vous souciez pas des dtails du code. Mais assurez-vous de bien
saisir le fonctionnement des procdures avant daller plus loin. A partir du chapitre
suivant, vous commencerez comprendre les subtilits du langage Visual Basic ; et une
bonne comprhension des procdures vnementielles vous sera alors indispensable.
Excutez le programme et testez-le. Slectionnez plusieurs reprises les diverses
options des menus Couleur et Message an de vrier que les coches suivent bien vos
slections et que le label rete bien les changements. Vous pouvez changer la couleur
et le texte dans nimporte quel ordre.

En rsum
Ce chapitre vous a prsent le fonctionnement des menus Visual Basic. Le Crateur de
menus fonctionne un peu comme la fentre Proprits, et vous permet de dnir facilement les proprits des contrles du menu. Le Crateur de menus vous permet
galement de grer les proprits Checked et Visible, ainsi que dattribuer des raccourcis clavier aux diverses options de menu.
Le chapitre suivant vous invite plonger dans les profondeurs du langage de programmation Visual Basic. Vous dcouvrirez de quelle manire Visual Basic reconnat et
stocke les donnes, et apprendrez dnir les valeurs de proprits lors de lexcution
laide du code.

Questions-rponses
Q Pourquoi la barre de menus ne gnre-t-elle pas dvnements Click ?
R En fait, cest ce quelle fera si aucun contenu droulant nest dni pour le menu
slectionn. Si lutilisateur slectionne un menu qui ne contient ni options ni sousmenus, un vnement Click est gnr. Si, par contre, le menu se droule pour
afcher des options ou des sous-menus, cette action prend le pas sur lvnement
Click.

115

<
:

Prog VB6 FM1A Page 116 Lundi, 6. aot 2001 3:17 15

Partie II

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez ces rponses lAnnexe A.

Quiz
1. Comment sappelle la bote de dialogue qui vous aide dans la cration des menus ?
2. Les options de menu sont des contrles. Vrai ou faux ?
3. Quel est lvnement que toutes les options de menu supportent ?
4. Dans quel contexte utilise-t-on lexpression raccourci clavier ?
5. A quoi servent les raccourcis clavier dans lutilisation des menus ?
6. Quel vnement les options de menu gnrent-elles si lutilisateur y accde par un
raccourci clavier ?
7. Le Crateur de menus vous aide concevoir le systme de menu et crer les procdures vnementielles Click des options de menu. Vrai ou faux ?
8. Quel est leffet de la proprit Checked pour une option de menu ?
9. Plusieurs options de menu peuvent tre coches en mme temps. Vrai ou faux ?
10. Dans le Listing 4.1, quoi servent les lignes 57, 58 et 59 ?

Exercices
1. Expliquez la diffrence entre ces deux oprations du Crateur de menus : entrer un
menu comme tel et entrer une option de menu.
2. Chasse au bogue. Manuel a des problmes avec ses menus : les options restent
coches mme lorsque lutilisateur en slectionne dautres. Quel conseil donneriezvous au pauvre Manuel ? (Vous navez pas crire de code.)
3. Attribuez des raccourcis clavier chacune des options de menu cres aujourdhui.
Assurez-vous que ces raccourcis clavier soient bien tous uniques.

>
:

116

Prog VB6 FM1B Page 117 Lundi, 6. aot 2001 3:26 15

Chapitre

Analyse des donnes


Ici commence votre voyage au cur du langage de programmation Visual Basic. Au lieu
de manipuler des objets graphiques tels que les boutons de commande, vous allez maintenant taper les lignes de code qui feront de vos programmes des applications fonctionnelles et "intelligentes". Nous commencerons par tudier les donnes Visual Basic.
Dans le chapitre suivant, vous apprendrez travailler sur ces donnes laide des
commandes et des contrles de la feuille.
Voici ce que nous tudierons aujourdhui :

lutilisation avance de la fentre Code ;

les types de donnes qui peuvent tre dclars ;

la distinction entre les types de donnes ;

les conditions de stockage des donnes Visual Basic ;

comment dclarer et assigner des valeurs aux variables ;

lordre de prsance des oprateurs de calcul.

117

Prog VB6 FM1B Page 118 Lundi, 6. aot 2001 3:26 15

Partie II

Notions prliminaires
Avant dentrer dans le vif du code, quelques considrations prliminaires simposent.
Vous devez comprendre de faon plus approfondie les rapports quentretiennent le code
et les divers contrles et feuilles dune application. Tout dabord, rappelez-vous que la
fentre Projet permet dafcher et de grer lensemble des chiers associs votre
application. Les procdures vnementielles que vous crivez dans la fentre Code ne
ncessitent pas de chiers propres. Elles sont stockes mme leurs contrles respectifs. Les projets que nous avons tudis jusquici ne contenaient chaque fois quune
seule feuille, laquelle incluait les divers contrles et procdures vnementielles correspondantes. Comme vous allez le voir, les feuilles ne contiennent pas que des procdures
vnementielles, mais galement du code "gnral".
Nous avons vu au chapitre prcdent que le code se prsente sous la forme de procdures, et que Visual Basic supporte deux types de procdures : les sous-routines et les
fonctions. Les procdures vnementielles tombent dans la catgorie des sous-routines.
Vous apprendrez bientt crire des procdures de type fonctions. Quand une procdure
nest pas une procdure vnementielle affecte un contrle particulier, le code prend
la forme spare dun module. La fentre Projet afche les modules du projet en cours
(quand il en contient).
ition
Dfin

Un module est un chier contenant du code de procdures. Le chier qui


contient la feuille et son code est un module de feuille. Vous avez donc, sans
le savoir, dj travaill avec des modules.

Un projet qui contient plusieurs feuilles contient plusieurs modules de feuilles. En effet,
les contrles de chaque feuille devant rpondre des vnements prcis, chaque feuille
a son propre code stock dans un module de feuille. Lorsque vous incluez plusieurs
feuilles un projet, vous devez dabord dterminer la feuille qui apparatra en premier
au dmarrage de lapplication. La premire feuille cre est la feuille de dmarrage par
dfaut, mais vous pouvez en dsigner une autre en slectionnant, dans le menu Projet, la
commande Proprits de [projet], ou [projet] est le nom du projet en cours. Visual Basic
afche alors la bote de dialogue Proprits du projet (voir Figure 5.1). Vous apprendrez
bientt programmer lapplication de sorte quune feuille secondaire safche au
moment voulu.

>
:

118

Prog VB6 FM1B Page 119 Lundi, 6. aot 2001 3:26 15

Chapitre 5 : Analyse des donnes

Figure 5.1
Dans la bote de
dialogue Proprits
du projet, vous
spciez la feuille
de dmarrage.

Nom de la feuille
de dmarrage

Le contenu de la fentre Code


Les notions dj acquises en matire de procdures vnementielles vont maintenant
vous servir tudier les fondements du langage de programmation Visual Basic. Avant
daller plus loin, toutefois, vous devez comprendre que les modules de feuilles ne
contiennent pas seulement des procdures vnementielles, mais aussi des sections de
dclarations.
Info

Les sections de dclarations rservent de lespace et attribuent un nom


aux zones de donnes utilises dans le reste du module. Les contrles nont
pas tre dclares dans ces sections. Mais vous aurez souvent, en revanche, dclarer les autres zones de donnes Visual Basic.

Les sections de dclarations apparaissent toujours en haut de chacun des modules qui
contiennent le code. Elles apparaissent donc avant toute procdure vnementielle. Tout
code entr avant la premire procdure vnementielle dun module est considr
gnral, plutt que li un contrle spcique. Pour commencer, vous dclarerez des
donnes dans cette zone, traitant ainsi la zone entire comme une section de dclarations. Lorsque vous serez plus avanc, vous y crirez galement des procdure
gnrales.
La fentre Code reproduite en Figure 5.2 devrait vous aider mettre tout a en perspective.
Les dtails ne sont pas importants pour linstant ; seule compte lide gnrale. Dans le
texte slectionn, la section de dclarations souvre sur linstruction Option Explicit.
Notez le contenu afch des listes Objet et procdure de la fentre Code : (General) et

119

<
:

Prog VB6 FM1B Page 120 Lundi, 6. aot 2001 3:26 15

Partie II

(Declarations). Grce aux indications de ces deux listes, vous savez toujours dans quelle
catgorie de programmation tombe une ligne de code.
Figure 5.2
La fentre Code
contient plusieurs
sections.

Sections de
dclarations

Procdures
gnralistes
Dbut des
procdures
vnementielles

Les deux procdures suivantes ne sont pas des procdures vnementielles. Ce qui se
voit leur nom : rappelez-vous que le nom des procdures vnementielles doit toujours
contenir un underscore qui spare le nom du contrle de celui de lvnement. Si vous
cliquiez dans la procdure Update_Count(), la liste Objet afcherait encore (General),
parce que le code fait partie de la section gnrale du module. La liste Procdure, en
revanche, afcherait Update_Count, le nom de la procdure slectionne.
Voil pour le tableau gnral. Nous entrons maintenant dans le vif du sujet.

Les donnes en Visual Basic


Les calculs peuvent impliquer diffrents types de donnes. Par exemple, vous pouvez
travailler sur des noms, des adresses, des sommes dargent, de grands et de petits
nombres, et des donnes logiques du type vrai/faux, oui/non, etc. An de rpondre tous
les besoins des diffrents programmes, Visual Basic supporte plusieurs types de
donnes.
Comme la plupart des langages de programmation, Visual Basic est assez tatillon sur la
question des donnes. Vous devez donc vous plier ses exigences en la matire. Il est
notamment obligatoire, avant de manipuler des donnes, den spcier la nature exacte.
Apprendre programmer en Visual Basic, cest avant tout sinitier aux diffrents types
de donnes. Visual Basic en reconnat douze.

>
:

120

Prog VB6 FM1B Page 121 Lundi, 6. aot 2001 3:26 15

Chapitre 5 : Analyse des donnes

Les donnes numriques


En rgle gnrale, les donnes numriques relvent dune de ces deux catgories :

Entiers. Nombres entiers sans dcimale, tels que 614, 0, 934 ou 3 918 938. Les
entiers peuvent exprimer un ge, un numral, un nombre dannes, etc. En anglais,
"entier" se dit integer.

Dcimaux. Nombres dcimaux pouvant exprimer une valeur fractionnaire, tels que
8.709, 0.005 ou 402.35534. Les dcimaux peuvent exprimer une temprature, une
somme dargent, un taux dintrt, etc. Les dcimaux exigent la virgule, mme si la
partie dcimale, situe aprs la virgule, est zro.

Les valeurs numriques dexemple sont appeles littraux, ou parfois constantes, parce
quils ne changent jamais. La valeur 614 sera toujours 614. Dans une section ultrieure sur
les variables, vous apprendrez dclarer les valeurs changeantes.
ntion
Atte

Visual Basic stocke et traite diffremment les entiers et les dcimaux, mme
si la diffrence nest pas toujours vidente pour nous autres humains. Par
exemple, 8 nest pas la mme chose, pour Visual Basic, que 8.00.

Certains types de donnes consomment plus de mmoire et sont moins efcaces, tandis
que dautres consomment moins de mmoire et sont plus rapides calculer. On ne peut
jamais juger " lil" du poids en mmoire dun nombre. Le nombre 29 999 occupe
autant de mmoire que le nombre 701.
ce
Astu

En vous initiant aux types de donnes supports par Visual Basic, vous
apprendrez aussi combien de mmoire requiert chacun des types. Bien que
les questions de mmoire ne soient pas aujourdhui moins problmatiques
quauparavant, le programmeur souhaite toujours que son application
sexcute le plus rapidement possible. Si donc vous avez le choix entre
plusieurs types de donnes pour une valeur, privilgiez le moins coteux en
mmoire.

Le Tableau 5.1 dcrit les huit types de donnes numriques supports par Visual Basic, le
poids en mmoire de chacun, et la plage de valeurs couverte. Cest en fonction de ces
deux derniers critres quil convient doprer ses choix. Si, par exemple, vous devez
exprimer un nombre ngatif, le type Byte est exclu. En revanche, pour exprimer des ges
de personnes, le type Byte sera le plus appropri.
Info

En anglais, byte signie "octet", une unit de stockage en mmoire valant


huit bits.

121

<
:

Prog VB6 FM1B Page 122 Lundi, 6. aot 2001 3:26 15

Partie II

Certaines valeurs du Tableau 5.1 sont exprimes en notation scientique.


Info

Info

La notation scientique permet dexprimer de faon abrge (et approximative) des valeurs dcimales trs petites ou trs grandes. Le E signie exposant.
On utilise alors le type de donnes Single, pour "prcision simple". La notation scientique de haute prcision emploie un D, pour "prcision double" ; le
type de donnes sera alors Double. Le E et le D peuvent aussi bien tre crits
en minuscules. Pour obtenir lquivalent numrique dune valeur en notation
scientique, on multiplie le nombre situ gauche du E ou du D par 10 la
puissance du nombre de droite. Si lexposant est ngatif (le E ou le D est suivi
dun signe moins), on divise le nombre situ gauche du E ou du D par 10
la puissance du nombre de droite. Par exemple, 5.83E+5 gale 5.83 105,
soit 5.83 100 000, soit une valeur Single de 583 000. Dans ce cas prcis,
videmment, on ne gagne pas grand-chose utiliser la notation scientique.
Mais, dans le cas dune valeur de 5.83E+125 (583 suivi de 123 zros),
lavantage est vident. Le nombre 3.2D6 gale 3.2/1 000 000,
soit .0000032 dans une zone de stockage Double.

Tableau 5.1 : Les huit types de donnes numriques supports par Visual Basic
Type

Stockage

Plage

Byte

1 octet

De 0 255

Integer

2 octets

De 32 768 32 767

Long

4 octets

De 2 147 483 648 2 147 483 647

Single

4 octets

De 3.402823E+38 1.401298E45 pour les valeurs ngatives


1.401298E45 3.402823E+38 pour les valeurs positives.

Double

8 octets

De 1.79769313486232E+308 4.94065645841247E324
pour les valeurs ngatives ; de 4.94065645841247E324
1.79769313486232E+308 pour les valeurs positives.

Currency

8 octets

De 922 337 203 685 477.5808 922 337 203 685 477.5807
(cette extrme prcision garantit lexactitude deux dcimales prs
des calculs comptables et nanciers).

Decimal

12 octets

+/79 228 162 514 264 337 593 543 950 335 sans dcimale ;
+/7.9228162514264337593543950335 avec jusqu 28 dcimales
aprs la virgule. (Le type de donnes Decimal nest pas encore

compltement support par Visual Basic, mais il assure la


compatibilit avec des versions ultrieures.)

>
:

122

; de

Prog VB6 FM1B Page 123 Lundi, 6. aot 2001 3:26 15

Chapitre 5 : Analyse des donnes

Si la question des types de donnes vous semble obscure ou secondaire, cest que nous
navons pas encore tudi les zones de stockage des donnes ; ce sera lobjet de la
section sur les variables. Lorsque vous tapez la valeur littrale 8.3 dans un programme,
il nest pas ncessaire de spcier que ce littral est de type Single. Ce dont vous devez
vous soucier, en revanche, cest du type de zone mmoire utilis pour stocker cette valeur.
Vous ne pouvez stocker 8.3 comme un entier et esprer que Visual Basic traite la
valeur adquatement.
Il peut tre utile, quand vous utilisez un littral, de spcier le type de donnes correspondant. Imaginons, par exemple, que la valeur 8.3 est incluse dans un calcul
mathmatique de haute prcision, combine des valeurs Double. Si Visual Basic
suppose que 8.3 est de type Single, le rsultat pourrait ne pas prsenter autant de
dcimales que lexige la prcision souhaite. La solution est dadjoindre la valeur un
sufxe spcique qui indique Visual Basic de traiter le littral selon son type propre.
Ainsi, si vous tapez 8.3#, Visual Basic traitera dans le calcul cette valeur comme
Double, et donnera au rsultat la plus grande prcision dcimale possible.
Tableau 5.2 : Sufxes Visual Basic dsignant les types des littraux
Sufxe

Type de donnes

&

Long

Single

Double

Currency

ntion
Atte

Le E et le D de la notation scientique rprsentent respectivement


Single et Double. Il est donc inutile dadjoindre des sufxes de

les types
types de

donnes aux littraux exprims sous cette forme.

ce
Astu

Enn une bonne nouvelle. En dpit de la lourdeur thorique de cette section,


vous navez pas vraiment vous inquiter des types de donnes lorsque vous
travaillez sur des valeurs littrales. Si vous devez attribuer un nombre la
proprit dun contrle, allez-y franco. Cest seulement dans des cas
spciaux, tels que des calculs mathmatiques ou scientiques pour lesquels
une trs haute prcision est requise, que vous aurez vous soucier du type
des littraux employs.

123

<
:

Prog VB6 FM1B Page 124 Lundi, 6. aot 2001 3:26 15

Partie II

Autres types de donnes


Les types de donnes non numriques sont plus faciles comprendre que les types numriques, surtout si vous ntes pas spcialement fort en maths. Si le BASIC et ses avatars
sont rests dans la course depuis tant dannes, malgr la prolifration de langages
prtendument "plus puissants", cest sans doute en raison de sa capacit traiter efcacement le texte. Le BASIC, et donc aussi Visual Basic, laisse tous les autres langages loin
derrire lui quand il sagit de traiter les chanes de texte.
ition
Dfin

Une chane est une srie de caractres (une chane de zro caractre est
encore une chane). Si ces caractres peuvent tre des chiffres, le contenu
dune chane ne peut jamais tre utilis dans un calcul. En revanche, il est
possible de se servir des chanes pour des noms, des adresses, des codes, des
numros de scurit sociale, etc. En fait, on y met peu prs tout. Les types
de donnes numriques, quant eux, ne sont utiles qu des ns de calcul,
ou dans les cas dinformations numriques strictes, telles que des sommes
dargent.

Outre les donnes de chane, Visual Basic supporte plusieurs autres types de donnes,
tels que les dates, les variables boolennes, etc.
ition
Dfin

On appelle boolennes, daprs le nom du mathmaticien George Boole, les


variables qui ne prennent que deux valeurs, exclusives lune de lautre. Ces
valeurs sont souvent reprsentes comme "vrai" et "faux", bien que lon
puisse aussi bien parler de "oui" et "non".

Tableau 5.3 : Types de donnes non numriques supports par Visual Basic
Type de donnes
String

(longueur xe)

String (longueur

>
:

Stockage

variable)

Plage

Longueur de la chane De 1 environ 65 400 caractres


Longueur + 10 octets

De 0 2 milliards de caractres

Date

8 octets

Du 1er janvier 100 au 31 dcembre 9999

Boolean

2 octets

True

Object

4 octets

Tout objet incorpor

ou False

Variant

(numerique)

16 octets

Toute valeur aussi grande quune Double

Variant

(texte)

Longueur + 22 octets

Comme les String longueur variable

124

Prog VB6 FM1B Page 125 Lundi, 6. aot 2001 3:26 15

Chapitre 5 : Analyse des donnes

Les littraux de chanes doivent toujours tre crits entre guillemets. Les chanes peuvent
contenir nimporte quels caractres. Les littraux suivants sont tous des chanes valides :

"Hilare or de cymbale des poings irrits"


"44-51-54-48"
"666, rue de la Bte"
""

Tout ce qui est entre guillemets est une chane, mme la chane nulle de la dernire ligne.
ition
Dfin

Une chane nulle est une chane dune longueur de zro octet, dont on se sert
parfois pour rinitialiser le contenu dune chane (lui donner la valeur
zro). La valeur spciale Null reprsente ce type de chanes. Visual Basic
supporte aussi une valeur de chane spciale dite chane vide, reprsente
par le mot cl Empty. Les chanes vides sont semblables aux chanes nulles,
mais sont traites dune manire un peu diffrente : une proprit de
contrle qui contient le mot cl Empty sera interprte comme nayant
encore jamais t initialise par quelque valeur que ce soit, pas mme une
chane nulle.

La diffrence entre les chanes de longueur xe et les chanes de longueur variable


deviendra de plus en plus cruciale mesure que vous approfondirez les mthodes Visual
Basic de stockage des donnes.
Les littraux, comme une date ou une heure, doivent tre prcds de deux dises (#).
Visual Basic autorise peu prs tous les formats de date et dheure. Ces formats
dpendent des paramtres internationaux dnis sur votre PC. Les littraux suivants
constituent tous des dates et des heures valides :

#4 juillet 1776#
#7:11 pm#
#19:11:22#
#1-2-2003#
#5-Dc-99#

Le type de donnes Boolean est appropri aux valeurs de proprits qui ne peuvent
recevoir que les valeurs mutuellement exclusives True et False ; par exemple, une
valeur de proprit Enabled.
Le type de donnes Variant est employ pour toutes sortes de donnes, lexception
des chanes de longueur xe. Le type Variant est utile divers titres, notamment
lorsquune zone de stockage doit recevoir des donnes de types diffrents. Une zone de
stockage Variant peut ainsi servir de zone de stockage temporaire pour des donnes qui
seront ultrieurement places dans une zone de stockage plus spcique.

125

<
:

Prog VB6 FM1B Page 126 Lundi, 6. aot 2001 3:26 15

Partie II

Info

Vous ne pouvez pas ne pas avoir entendu parler du fameux bogue de lan
2000. An dconomiser de lespace mmoire, les programmeurs ont,
pendant de nombreuses annes, enregistr les dates sous un format deux
chiffres. Pour les programmes conus de cette faon, des problmes sont
susceptibles de se produire lorsque lanne deux chiffres passera de 99 ...
00. Rassurez-vous, Visual Basic passera le cap de lan 2000 ; son format de
reprsentation interne des dates tient compte du millsime. Vos programmes
Visual Basic ne devraient donc souffrir daucun dysfonctionnement minuit,
le 31 dcembre 1999.
Nanmoins, certains programmeurs Visual Basic recourant des bidouillages destins pargner du temps et de lespace mmoire, certains codes
peuvent cesser de fonctionner cette date. En tant que nouveau venu dans le
domaine de la programmation, gardez lesprit ce problme, et travaillez
toujours sur des annes quatre chiffres.

Les variables
Les variables reoivent diffrentes valeurs. Si ses valeurs peuvent changer, cest que la
variable nest rien de plus quune zone de stockage, une sorte de bote capable de contenir
une seule valeur la fois. Lorsque vous affectez une variable une nouvelle valeur, la
valeur prcdente est remplace. La valeur du littral 54 ne changera jamais ; mais si vous
stockez ce littral dans une variable, la valeur 54 ne sy maintiendra que tant que
vous naffectez pas une nouvelle valeur.
ition
Dfin

Une variable est une zone de stockage temporaire en mmoire, dsigne par
un nom unique. Les variables reoivent les valeurs et les calculs intermdiaires attribus aux contrles de la feuille et gnrs par eux.

Vous seul dcidez du nom des variables de votre code. Deux variables diffrentes ne
peuvent prendre le mme nom dans une mme procdure, car Visual Basic ne saurait
alors les distinguer. A la diffrence des proprits de contrles, dj nommes dans le
langage, les variables ont pour seul nom celui que vous leur donnez. Avant de pouvoir
utiliser une variable, il faut la dclarer, cest--dire indiquer Visual Basic son nom et
le type de donnes quelle contiendra. Les variables ne peuvent contenir que le type de
donnes pour lequel elles ont t dclares. Ainsi, une variable dclare comme Byte
ne pourra pas contenir une valeur de chane. (Les variables dclares comme Variant
font toutefois exception cette rgle.)

>
:

126

Prog VB6 FM1B Page 127 Lundi, 6. aot 2001 3:26 15

Chapitre 5 : Analyse des donnes

Dclaration des variables


On dclare les variables avec linstruction Dim, qui en dnit le nom et le type de
donnes. Pour chaque variable utilise, il doit y avoir une instruction Dim. On peut, en
fait, droger cette rgle, mais il en rsulte alors des programmes bcls susceptibles
de gnrer des erreurs. On afche, via le menu Outils, Option de Visual Basic, la bote de
dialogue obtenue par la commande de menu Outils, Options de Visual Basic, dans
longlet Editeur, loption Dclaration des variables obligatoire engage Visual Basic
exiger la dclaration initiale. La section de dclarations du code inclut par dfaut
linstruction suivante :
Option Explicit

Cette instruction indique Visual Basic que la suite du code contient les dclarations de
toutes les variables du module courant. Par exemple, si vous orthographiez mal un nom
de variable dans le code, Visual Basic sen avisera aussitt. Si vous nexigez pas la
dclaration explicite des variables, Visual Basic traitera simplement les variables fautives
comme non initialises, et les calculs impliquant ces variables renverront des rsultats
errons.
Info

Si vous nexigez pas la dclaration explicite des variables, Visual Basic


considre toute variable non dclare comme de type Variant.

Voici le format de linstruction Dim :


Dim VarName As DataType

VarName est le nom assign la variable ; DataType est lun des types de donnes prsents aux Tableaux 5.1 et 5.3. Si vous dclarez une variable lintrieur dune procdure
(quil sagisse ou non dune procdure vnementielle), ce doit tre tout de suite aprs
la premire ligne dencadrement. La variable est alors disponible pour toute la procdure, et seulement pour cette procdure. Les autres procdures nont aucun accs la
variable, qui ainsi reste locale, cest--dire valable uniquement pour la procdure qui la
contient. Si, en revanche, vous dclarez une variable dans la section de dclarations du
module, cette variable sera disponible pour toutes les procdures du module. La variable
est alors globale pour le module. Toutefois, aucun autre module de lapplication ny
aura accs. Il est possible de dclarer des variables globales pour un projet entier ; mais
plus vos variables seront locales, moins vous risquez dutiliser une mme variable pour
deux emplois diffrents.

127

<
:

Prog VB6 FM1B Page 128 Lundi, 6. aot 2001 3:26 15

Partie II

Info

Deux variables peuvent porter le mme nom tout en tant bien distinctes,
pour autant quelles soient dclares localement dans des procdures diffrentes. En outre, deux procdures peuvent se partager une variable dclare
localement pour une seule des procdures. Cest au Chapitre 8 que vous
apprendrez partager les variables locales.

Si vous restez matre de vos variables, il convient nanmoins de respecter certaines


rgles de dnomination :

Tous les noms de variables doivent commencer par une lettre de lalphabet.

Les noms doivent contenir des lettres ou des chiffres.

Les noms ne doivent pas dpasser 255 caractres.

Employez pour les noms un jeu limit de caractres spciaux. Le plus sr est de sen
tenir lunderscore (_). En nutilisant que des chiffres, des lettres et lunderscore,
vous navez pas vous soucier des caractres spciaux non autoriss. Notamment, les
noms de variables ne doivent pas contenir despaces.

Voici maintenant, en matire de dnomination, les conventions gnrales prouves et


approuves par la communaut des programmeurs :

Incluez dans les noms de variables un prxe dsignant le type de donnes. Cela
vous pargnera de consulter la section de dclarations du programme pour dterminer le type de donnes dune variable, et ainsi vous risquerez moins de vous
tromper. Le Tableau 5.4 prsente les prxes de noms de variables couramment
utiliss.
Info

>
:

On peut stocker des valeurs dun certain type dans des variables dclares
pour un type diffrent, condition que les deux types soient compatibles,
notamment en taille. Par exemple, vous pouvez stocker une valeur de type
Byte dans une variable de type Integer, parce que ce dernier type couvre une
plage de valeurs plus grande que le type Byte.

Employez des noms explicites, tels que curTotal, plutt que des noms ambigus tels
que a ou curX1. La documentation du code nen sera que facilite.

Servez-vous des lettres capitales pour sparer les parties du nom. (Dans cet ouvrage,
nous nutiliserons pour les noms de variables que les lettres et les chiffres ; certains
programmeurs prfrent toutefois recourir lunderscore, comme dans curTotal
_General.)

128

Prog VB6 FM1B Page 129 Lundi, 6. aot 2001 3:26 15

Chapitre 5 : Analyse des donnes

Tableau 5.4 : Prxes dcrivant le type de donnes dune variable


Prxe

Type de donnes

Exemple

bln

Boolean

blnBoutonEnabled

byt

Byte

bytLength

cur

Currency

curSales98

dte

Date

dteOverdue

dbl

Double

dblScientificAmt

int

Integer

intYear1998

lng

Long

lngWeatherDistance

obj

Object

objWorksheetAcct99

sng

Single

sngSales1stQte

str

String

strFirstName

vnt

Variant

vntValue

Voici quelques dclarations de variables possibles :

Dim
Dim
Dim
Dim
Dim

intTotal As Integer
curSales99 As Currency
dteFinal As Date
strName As String
blnIsChecked As Boolean

Le nom des variables de type Boolean doit voquer une question laquelle on rpondrait par oui ou non (ou par vrai ou faux, True ou False), comme pour lexemple blnIsChecked (blnEstCoche en franais).
Vous pouvez galement, en les sparant par des virgules, dclarer plusieurs variables
dans une mme dclaration Dim ; mais il faut alors inclure la clause As DataType pour
chaque variable :
Dim intTotal As Integer, curSales99 As Currency

En labsence de clause As DataType, Visual Basic dclare lui-mme la variable comme


Variant. Ainsi, ces deux instructions sont quivalentes :
Dim vntControlVal As Variant
Dim vntControlVal

129

<
:

Prog VB6 FM1B Page 130 Lundi, 6. aot 2001 3:26 15

Partie II

ntion
Atte

Mme si vous dclarez une variable Variant, spciez toujours la clause As


Variant an de clarier vos intentions.

Dclaration des chanes


La dclaration des variables est un peu subtile, car le type de donnes String est applicable deux sortes de chanes : longueur xe et longueur variable. Les chanes
longeur variable sont les plus courantes. Elles sont aussi plus faciles dclarer en ce
quelle suivent le mme format de dclaration Dim que les autres. Voici deux exemples
de dclarations de variables longueur variable :
Dim strCityName As String
Dim strStateName As String

Les variables strCityName et strStateName peuvent toutes deux contenir des chanes de
nimporte quelle longueur. Si, dans strCityName, vous stockez dabord "Paris", et que
y vous stockiez par la suite "Iekaterinenbourg", la chane sajustera aux diffrentes
valeurs. Cest sur des chanes longueur variable que vous travaillerez le plus souvent.
Aussi ce livre ne sattardera-t-il pas sur les chanes longueur xe, moins que la
longueur ne soit importante, comme cest notamment le cas avec les chiers. Vous
pouvez aussi limiter le nombre de caractres susceptibles dapparatre sur un label, ou
sur tout autre contrle, en y assignant une chane de longueur xe.
Info

Les guillemets ne font pas partie de la chane, mais servent uniquement


dlimiter le contenu littral.

Voici le format des instructions Dim par lesquelles on dclare les chanes longueur
xe :
Dim VarName As String * Length

Loption * Length indique Visual Basic que la chane dclare ne devra jamais occuper
plus de caractres que ne le spcie Length (longueur). Voici la dclaration section de
dclaration dune variable dont on veut limiter la chane un maximum de cinq
caractres :
Dim strZipcode As String * 5

Si vous tentez de stocker plus de caractres que ne le permet une chane longueur xe,
Visual Basic ne retiendra que le nombre spci de caractres, et le reste se perdra dans
le nant numrique. De tels bogues sont souvent difciles retracer.

>
:

130

Prog VB6 FM1B Page 131 Lundi, 6. aot 2001 3:26 15

Chapitre 5 : Analyse des donnes

Stockage des donnes


Une fois la variable dclare, vous pouvez y stocker des donnes. Les instructions
daffectation sont le moyen le plus simple de stocker les donnes dans des variables.
Voici le format dune instruction daffectation :
ItemName = Expression

ItemName (nom de llment) peut dsigner une variable dclare (ce cera gnralement
le cas dans ce chapitre), mais galement une valeur de proprit. Expression peut tre :

une expression mathmatique ;

un littral ;

une variable ;

une expression logique ou de chane ;

une valeur de proprit (les proprits de contrles sont de type Variant, mais Visual
Basic les convertit dans un format prcis lorsquelles sont stockes dans des variables) ;

une expression mathmatique, logique ou de chane, qui contient une combinaison


de littraux, de variables et de valeurs de proprits.

Le concept dexpression peut vous sembler obscur ce point ; disons quest expression
tout ce qui peut devenir une valeur. Voici quelques exemples dinstructions daffectation
valides :

curSales = 5712.75
strFirstName = "Idulphe"
blnPassedTest = True
blnIsEnabled = lblTitle.Enabled
dblValue = 45.1#
intCount = intNumber
dteOld = #4-1-92#
sngOld97Total = sngNew98Total 1000.00

La premire instruction daffectation est assez rvlatrice. La valeur 5712.75 est


stocke dans une variable nomme curSales. Un sufxe peut tre ajout aprs un
littral, comme dans la cinquime affectation, an de spcier le type de donnes pour
les cts de lexpression. Dans ce cas, en revanche, 45.1 est plus petit quun type
Double ; si vous omettiez le sufxe, Visual Basic ferait automatiquement la conversion.
Aux variables dclares comme Boolean ne sont affectes que les valeurs True ou
False, ou une valeur de proprit contenant True ou False. Notez, la dernire affectation, la prsence du signe moins. La prochaine section vous apprendra crire les
expressions mathmatiques.

131

<
:

Prog VB6 FM1B Page 132 Lundi, 6. aot 2001 3:26 15

Partie II

Info

Visual Basic supporte encore un ancien format dinstructions daffectation


qui commence par le mot cl Let. Les instructions suivantes ont exactement
le mme effet :
Let intCount = 1
intCount = 1

Dans les quatre premiers chapitres, vous avez appris stocker des valeurs de proprits
laide du code Visual Basic. Cest galement ce quoi servent les instructions daffectation. Les instructions suivantes changent la valeur afche par un label lblTitle :
lblTitle.Caption = "La tche est termine"

Tous les contrles ont des proprits par dfaut ; cest ces proprits par dfaut que
Visual Basic affectera automatiquement les valeurs pour lesquelles vous ne spcifez pas
de proprit. La proprit par dfaut dun contrle Label est Caption ; aussi laffectation
suivante est-elle quivalente la prcdente :
lblTitle = " La tche est termine "

ce
Astu

Les affectations aux proprits par dfaut demandent moins dcriture. Mais,
encore une fois, plus votre code est explicite, plus la documentation sera
facile, et plus il sera clair pour les lecteurs ventuels. Spciez toujours le
nom de la proprit concern par laffectation, mme sil sagit de la proprit
par dfaut. De cette faon, les instructions ne prteront aucune ambigut.

Ds quune instruction affecte une valeur un contrle, ce contrle est mis jour sur la
feuille. Ainsi, si vous affectez une nouvelle valeur un label, le label afche automatiquement le nouveau contenu.

Les oprateurs Visual Basic


Visual Basic supporte de nombreux oprateurs mathmatiques et de chanes. Le
Tableau 5.5 prsente les plus courants. Ces oprateurs vous serviront dans les expressions
impliques dans des calculs, ainsi que pour le traitement des donnes.
Info

>
:

132

Les oprateurs traitent les donnes en calculant ou en combinant des rsultats. La plupart des oprateurs sont des symboles, tandis que dautres, tel
Mod, ressemblent plus des commandes Visual Basic.

Prog VB6 FM1B Page 133 Lundi, 6. aot 2001 3:26 15

Chapitre 5 : Analyse des donnes

Tableau 5.5 : Oprateurs courants utiliss pour le calcul et le traitement


des donnes
Oprateur

Signication

Exemple

Rsultat

Puissance

2 ^ 3

Multiplication

2 * 3

Division

6 / 2

Addition

2 + 3

Soustraction

6 3

Mod

Modulo

11 Mod 3

Division entire

11 \ 3

Concatnation de chanes

"Bon" & "jour"

"Bonjour"

ou &

La puissance multiplie un nombre par lui-mme autant de fois que le spcie


lexposant. Ainsi, 2 ^ 3, 2 la puissance 3, est gal 2 2 2, cest--dire 8. Le
calcul exponentiel peut tre appliqu aux valeurs fractionnaires. Lexposant peut tre
ngatif ; on obtient alors la ne puissance du nombre. Le fonctionnement des oprateurs de multiplication et de division va de soi : lexpression 10 / 2 donne 5, tandis
que 10 * 3 donne 30.
Loprateur Mod renvoie le reste dune division entire. Seules des valeurs de type Integer
apparaissent de chaque ct de Mod. Si vous entrez des valeurs de types diffrents, Visual
Basic la convertira et larrondira en nombre entier avant de traiter lopration. Par exemple, 11 Mod 3 renvoie 2, puisque 11 divis par 3 gale 3, reste 2. Loprateur de division
entire, \ (notez quil sagit de la barre oblique inverse, ou backslash, et non dun slash),
renvoie le quotient dune division, ignorant le reste. Ainsi, 11 \ 3 donne 3, puisque
11 divis par 3 gale 3, reste 2. (Avec loprateur /, 11 divis par 3 donnerait une valeur
fractionnaire du genre 3,666.)
Loprateur de laddition est un oprateur surcharg, cest--dire capable effectuer deux
oprations diffrentes selon les donnes qui lentourent. Lorsque ce sont des chanes que
vous placez de chaque ct des signes + ou &, Visual Basic met bout bout les deux
chanes, et traite le tout comme une seule et mme chane ; cela sappelle la concatnation. Visual Basic najoute rien entre les chanes concatnes ; si donc vous voulez une
espace, il faut linclure comme troisime chane entre les deux autres.

133

<
:

Prog VB6 FM1B Page 134 Lundi, 6. aot 2001 3:26 15

Partie II

ition
Dfin

ition
Dfin

Un oprateur surcharg est un oprateur qui permet des oprations diffrentes, selon le contexte.

La concatnation est la mise bout bout de plusieurs chanes en une mme


chane.

Laffectation suivante concatne les valeurs de deux labels en une seule chane variable,
et place une espace au milieu.
strCompleteName = lblFirst.Caption & " " & lblLast.Caption

ce
Astu

An dviter toute confusion avec loprateur daddition lors de la maintenance du code, nutilisez loprateur & que pour des concatnations de chanes.

Lordre des oprateurs


Visual Basic effectue les calculs selon un ordre strict prdni, illustr dans le
Tableau 5.6. La puissance passe en premier, puis vient la multiplication, puis la division,
et ensuite seulement laddition et la soustraction, moins que des parenthses ne viennent modier cet ordre.
Tableau 5.6 : Visual Basic respecte lordre des oprateurs dans les calculs
Priorit

Oprateur

Exemple

Rsultat

Parenthses ()

(2 + 3) * 7

35

2 ^ 3 + 1

*, /, \, Mod

2 + 3 * 7

23

+,

10 4 * 2 + 1

Sauf parenthses, les rsultats intermdiaires des multiplications ou des divisions dune
expression sont toujours calculs avant les additions ou les soustractions. La puissance a
prsance sur toutes les autres oprations.
Si une mme expression contient la fois une multiplication et une division, Visual
Basic les traite de gauche droite, sauf sil y a des parenthses. Ainsi, lexpression 10 /
2 * 3 renvoie le rsultat 15 : Visual Basic divise dabord 10 par 2, ce qui donne 5, puis

>
:

134

Prog VB6 FM1B Page 135 Lundi, 6. aot 2001 3:26 15

Chapitre 5 : Analyse des donnes

multiplie par 3 ce rsultat, ce qui donne 15. De mme, dans une expression sans autres
oprateurs ni parenthses, les additions et les soustractions sont calcules de gauche
droite.
En cas de parenthses imbriques, Visual Basic traite dabord les parenthses intrieures.
Ainsi, dans lexpression (10 + 2 (8 3)) + 1, Visual Basic commence par calculer (8 3).

En rsum
Ce chapitre vous a donn quelques notions prliminaires des subtilits du code Visual
Basic. Vous avez dabord tudi comment les sections de dclarations sinscrivent dans
le code gnral de lapplication, avant dapprofondir votre connaissance du langage,
notamment en ce qui concerne les types de donnes.
Comme nous lavons vu, Visual Basic supporte plusieurs types de donnes. Vous devez
non seulement apprendre les distinguer, mais aussi dclarer convenablement les
divers types de donnes sur lesquels vous travaillerez. Les variables servent stocker
provisoirement des donnes lors de lexcution dun programme. Mais avant dutiliser
une variable, il faut la nommer et la dclarer. Les diffrents oprateurs Visual Basic vous
permettent deffectuer des calculs mathmatiques, dont les rsultats pourront tre
stocks dans des variables.
Le prochain chapitre vous emmne un peu plus loin dans les profondeurs de Visual Basic.
Vous y dcouvrirez une nouvelle srie doprateurs, qui permettent de comparer les
donnes. Vous tudierez galement les nouveaux contrles et instructions qui exploitent ces
oprateurs.

Questions-rponses
Q Pourquoi Visual Basic ne calcule-t-il pas tous les oprateurs de gauche
droite ?
R Visual Basic ne fait que se plier lantique hirarchie des oprateurs algbriques. Cest
la faute des mathmaticiens ! Plus srieusement, lordre des oprateurs permet dviter
toute ambigut dans le code. En fait, vous navez pas forcment vous soucier de cette
hirarchie : vous pouvez imposer votre propre ordre, en utilisant les parenthses mme
l o elles ne sont pas ncessaires. Par exemple, laffectation suivante donne exactement
le mme rsultat avec ou sans les parenthses, lesquelles ne sont l que pour ter toute
ambigut :
intValue = (8 * 9) + intResult

135

<
:

Prog VB6 FM1B Page 136 Lundi, 6. aot 2001 3:26 15

Partie II

Q Pourquoi faut-il prfrer les variables locales aux variables globales ?


R Vos progrs en programmation vous amneront mieux comprendre ce problme.
La rgle de facto veut que les variables locales soient toujours plus claires et plus
sres que les variables globales. Les procdures doivent tres aussi pures que
possible. Elle ne doivent avoir accs quaux variables strictement ncessaires. Ce
cloisonnement permet de se prmunir contre les bogues pernicieux, et souvent trs
difcles localiser, que les variables globales sont susceptibles dengendrer.
En revanche, comme vous lavez sans doute dj compris, les contrles sont globaux
pour tout le projet. Pour que les contrles dune feuille soient accessibles tout le code
dun projet, il faut que chaque procdure puisse lire ou modier les valeurs de proprits
de ces contrles.

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez ces rponses lAnnexe A.

Quiz
1. Quel type de code contient la section de dclarations dun programme ?
2. Comment faire en sorte quune procdure puisse accder une variable locale dune
autre procdure ?
3. La valeur dun littral ne change jamais. Vrai ou faux ?
4. La valeur dune variable ne change jamais. Vrai ou faux ?
5. Pourquoi Visual Basic supporte-t-il deux types doprateurs de division ?
6. Quest-ce quun oprateur surcharg ?
7. Quel oprateur doit-on de prfrence utiliser pour concatner des chanes ?
8. Quel type de donnes contient tous les autres types de donnes ?
9. Les prxes sont obligatoires dans les noms de variables. Vrai ou faux ?
10. Quelles sont les deux manires de sassurer que Visual Basic nautorise aucune variable non dclare ?

>
:

136

Prog VB6 FM1B Page 137 Lundi, 6. aot 2001 3:26 15

Chapitre 5 : Analyse des donnes

Exercices
1. Daprs vous, que fera Visual Basic de la dclaration de variable suivante ?
Dim intCnt As Integer, abc, curSales As Currency

2. Chasse au bogue : Marie essaie de calculer une moyenne laide de lexpression


suivante. Pouvez-vous laider ?
sngAvg = sngGrade1 + sngGrade2 + sngGrade3 / 3

3. Quel est le rsultat des formules suivantes ?

a.
b.
c.
d.
e.

1 + 2 * 4 / 2
(1 + 2) * 4 / 2
1 + 2 * (4 / 2)
9 \ 2 + 1
(1 + (10 (2 + 2)))

4. Ecrivez des instructions daffectation qui donnent lquivalent Visual Basic des
formules suivantes :
a. 3 + 3
a =
4+4
b.

x = (a b) * (a 2)2

c. a1/2
f=
b1/2
5. Le programme du premier Projet bonus sur les contrles, proprits et vnements,
incluait la procdure suivante :

1: Private Sub cmdTest_Click()


2: Cette procdure vnementielle sexcute ds que
3: lutilisateur dcide de tester le mot de passe saisi
4:
If txtPassword.Text = SSM Then
Mot de passe correct
5:
Beep
6:
Beep
Afficher limage
7:
imgPassword.Picture = LoadPicture(C:\Program Files\
8:
& Microsoft Visual Studio\Common\Graphics\MetaFile\
9:
& Business\coins.wmf)
lblPrompt.Caption = Aboule le fric !
10:
Else

137

<
:

Prog VB6 FM1B Page 138 Lundi, 6. aot 2001 3:26 15

Partie II

11:
12:
13:
14:
15:

lblPrompt.Caption = Mot de passe incorrect Essayer encore


txtPassword.Text =
Effacer le mauvais mot de
passe
txtPassword.SetFocus
Mettre le focus sur la zone
de texte
End If
End Sub

Etudiez cette procdure pour voir les affectations luvre. Mais surtout, comprenez-vous maintenant pourquoi les longues instructions fragmentes en plusieurs
lignes, telles que les lignes 7, 8 et 9, doivent inclure des esperluettes ?

>
:

138

Prog VB6 FM1B Page 139 Lundi, 6. aot 2001 3:26 15

PB2
Variables et expressions
Le code de ce Projet bonus met en uvre des dclarations de variables, des instructions
daffectation et des expressions. Maintenant que vous tes en mesure de concevoir une
feuille et dutiliser divers contrles, vous devez vous attaquer aux subtilits du code et
apprendre activer les contrles de lapplication laide dinstructions Visual Basic.
Cela commence par le traitement des donnes.
Le Listing PB2.1 illustre les concepts tudis au Chapitre 5. An que vous puissiez vous
concentrer sur le code, aucune feuille visuelle ny est dcrite. Si toutefois vous voulez
crer une feuille pour tester le code, il suft de crer une feuille simple contenant trois
labels, lblGrossPay, lblTaxes et lblNetPay, ainsi quun bouton de commande cmdCalcPay qui dclenchera le code. Votre feuille devrait ressembler la Figure PB2.1. Aprs
avoir effectu quelques calculs, le code afche les rsultats comptables dans les trois
labels.
Listing PB2.1 : Ce code met en uvre des variables et des instructions
daffectation

1:
2:
3:
4:
5:
6:
7:
8:
9:

Private Sub cmdCalcPay_Click()


Calcule les trois variables de la paye.
Dim intHoursWorked As Integer
Dim sngRate As Single, sngTaxRate As Single
Dim curTaxes As Currency, curGrossPay As Currency
Dim curNetPay As Currency
Initialise les variables
(En ralit, ces donnes viendraient de

139

Prog VB6 FM1B Page 140 Lundi, 6. aot 2001 3:26 15

Partie II

Listing PB2.1 : Ce code met en uvre des variables et des instructions


daffectation (suite)

10:
lutilisateur ou dun fichier).
11:
intHoursWorked = 40
Total des heures travailles.
12:
sngRate = 7.8
Paye par heure.
13:
sngTaxRate = 0.42
Pourcentage de prlvements.
14:
15:
Calcule les sommes
16:
curGrossPay = intHoursWorked * sngRate
17:
curTaxes = sngTaxRate * curGrossPay
18:
curNetPay = curGrossPay - curTaxes
19:
20:
Affiche les rsultats dans les labels
21:
lblGrossPay.Caption = curGrossPay
22:
lblTaxes.Caption = curTaxes
23:
lblNetPay.Caption = curNetPay
24: End Sub

Figure PB2.1
Vous pouvez crer
une feuille simple
pour tester ce code.

Analyse
Les lignes 1 et 24 sont les lignes dencadrement de la procdure vnementielle du
bouton de commande. Les lignes 2, 8, 15 et 20 sont des commentaires qui facilitent la
documentation et la maintenance du code. Les lignes 3 6 dclarent les variables. Trois
de ces variables sont de type Currency.
Les lignes 11, 12 et 13 affectent des valeurs aux trois variables. En situation relle, ces
donnes comptables seraient fournies par lutilisateur, voire reprises dun chier. Mais
vous navez pas encore tudi les entres utilisateur ni la manipulation de chiers ; du

>
:

140

Prog VB6 FM1B Page 141 Lundi, 6. aot 2001 3:26 15

Projet bonus 2 : Variables et expressions

reste, les instructions daffectation se prtent bien notre exemple. Notez que, lorsquun
littral est affect une variable de type Integer (ligne 11), il ny a pas de virgule
dcimale. En revanche, les valeurs assignes aux variables Single (lignes 12 et 13)
contiennent de telles virgules.
Les lignes 16, 17 et 18 effectuent le calcul de la paye. Les expressions tant courtes,
lordre des oprateurs na pas dimportance. Vous pouvez constater que ces expressions
contiennent des types de donnes diffrents ; toutes ces donnes sont pourtant compatibles
entre elles.
Enn, les lignes 21, 22 et 23 affectent les valeurs de variables aux labels. Une fois les
valeurs affectes, les contrles de la feuille se mettent jour et les labels afchent les
rsultats.
ntion
Atte

Linstruction daffectation ne fait que "copier" le contenu de lexpression


situe droite du signe = dans la variable ou le contrle situ gauche. Le
contenu de lexpression nest pas dplac. Par exemple, une fois que la
ligne 21 sest excute, la variable curGrossPay contient toujours sa valeur,
mais cette valeur est galement prsente dans la proprit Caption du label.

141

<
:

Prog VB6 FM1B Page 142 Lundi, 6. aot 2001 3:26 15

Prog VB6 FM1B Page 143 Lundi, 6. aot 2001 3:26 15

Chapitre

Oprateurs et
instructions de contrle
Ce chapitre traite encore des oprateurs Visual Basic, mais les oprateurs que vous allez
tudier ne servent pas aux calculs mathmatiques. Il sagit doprateurs logiques et
conditionnels destins comparer les donnes. Vous dcouvrirez galement des instructions de contrle grce auxquelles vos programmes rpteront une section de code autant
de fois que ncessaire, et interrogeront diverses conditions.
Voici ce que nous tudierons aujourdhui :

les oprateurs conditionnels qui permettent dinterroger les donnes ;

les oprateurs logiques qui permettent de combiner les oprateurs conditionnels ;

linstruction If ;

les boucles et leur utilit ;

la diffrence entre les quatre types de boucles Do ;

la diffrence entre les boucles For et Do.

143

Prog VB6 FM1B Page 144 Lundi, 6. aot 2001 3:26 15

Partie II

Les oprateurs conditionnels


Imaginons que vous ayez crire une application comptable. Cette application doit totaliser lensemble des sommes dues chaque fournisseur, puis imprimer le chque. Mais
quen est-il des fournisseurs avec lesquels la socit na pas ralis daffaires depuis la
dernire session de paiement ? Le programme doit-il imprimer un chque de 0,00 F ?
Evidemment non. Toutes les procdures que nous avons tudies jusquici se contentaient dexcuter une instruction aprs lautre. Grce aux oprateurs conditionnels et
aux instructions connexes que nous allons dcouvrir, vos programmes pourront modier
lordre dexcution des instructions selon les donnes en prsence. Ainsi, lapplication
comptable nimprimerait de chques que pour les fournisseurs auxquels vous devez de
largent.
Le Tableau 6.1 prsente ces nouveaux oprateurs Visual Basic. A la diffrence de ceux
que nous avons tudis au chapitre prcdent, aucun de ces oprateurs neffectuent
doprations mathmatiques. Il sagit doprateurs conditionnels qui comparent les
donnes. Grce eux, vos programmes Visual Basic seront plus intelligents. En comparant et en analysant les rsultats, le programme peut dcider par lui-mme, et sur la
seule base des donnes qui lui sont fournies, de ce quil convient de faire. En incluant
vos programmes oprateurs et instructions conditionnels, vous laissez Visual Basic
dcider, lors de lexcution, quelles sont les instructions excuter.
ition
Dfin

Les oprateurs conditionnels permettent de comparer une valeur une


autre. Grce aux oprateurs conditionnels, vous savez si une valeur est plus
petite, plus grande quune autre ou lui est gale.

Tableau 6.1 : Visual Basic supporte six oprateurs conditionnels

>
:

Oprateur

Description

Exemple

Rsultat

Egal

7 = 2

False

>

Suprieur

6 > 3

True

<

Infrieur

5 < 11

True

>=

Suprieur ou gal

23 >= 23

True

<=

Infrieur ou gal

4 <= 21

True

<>

Diffrent de

3 <> 3

False

144

Prog VB6 FM1B Page 145 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

Remarquez, dans le Tableau 6.1, la colonne des rsultats. Quel est le rsultat de 6 > 3 ?
Est-ce que 6 est plus grand que 3 ? Oui, et le rsultat de lexpression conditionnelle est
donc "vrai", True. Comme nous lavons vu au chapitre prcdent, Visual Basic supporte
le type de donnes Boolean, qui naccepte que les valeurs True ou False. Les mots cls
True et False sont utiliss dans le code pour affecter des valeurs aux variables boolennes et aux proprits de contrles.
Info

Nous avons vu que loprateur daddition tait surcharg. Cest galement le


cas de loprateur =. On lutilise dans les instructions pour affecter des
expressions aux variables et aux contrles. On lutilise aussi pour des comparaisons dgalit. Visual Basic fait la distinction entre les deux en fonction du
contexte dans lequel loprateur = apparat.

Avant demployer ces oprateurs dans votre code, assurez-vous den comprendre le
fonctionnement. Lexpression 23 >= 23 est True parce que 23 est suprieur ou gal 23.
Etudiez la colonne des rsultats du Tableau 6.1 pour bien saisir ce concept.
Les littraux ne sont pas les seules valeurs qui puissent apparatre de chaque ct dun
oprateur conditionnel. Cest aussi le cas des expressions, des variables, des contrles et
des combinaisons de tous ces lments. Visual Basic traite de multiples types de
donnes, et vos programmes doivent tester et comparer les donnes avant dexcuter le
code le plus appropri.
La prsence dune valeur Null dun ct ou de lautre dun oprateur conditionnel
constitue un cas particulier. Car Visual Basic ne renvoie alors, comme rsultat de la
condition, ni True ni False, mais... Null. Vous devez tre attentif ce que lune des
valeurs compares puisse tre Null. Dans ce cas, trois rsultats sont possibles : True,
False et Null. Parce que de tels rsultats peuvent tre droutants, Visual Basic dispose
dun outil appel fonctions internes, qui aide dtecter les valeurs Null ; vous tudierez
cet outil au Chapitre 8, "Sous-routines et fonctions". Notez que les oprateurs conditionnels considrent toute valeur Empty (correspondant un contrle ou une variable
qui na pas encore t initialis par quelque valeur que ce soit) comme gale zro, ou
comme une chane nulle si ce sont des chanes que lon compare.
Les oprateurs conditionnels comparent les chanes exactement de la mme manire
que les valeurs numriques. Les comparaisons de chanes suivent ces rgles gnrales :

Les lettres capitales valent moins que les minuscules ; ainsi, "BONJOUR" vient
avant "bonjour".

Les lettres se comparent selon lordre alphabtique ; ainsi, "A" vaut moins que "B",
et le nom "Walter" passe avant le nom "William".

Les nombres valent moins que les lettres ; ainsi, "3" est plus petit que "trois".

145

<
:

Prog VB6 FM1B Page 146 Lundi, 6. aot 2001 3:26 15

Partie II

Si ces rgles vous semblent obscures, rassurez-vous : Visual Basic compare la plupart
des chanes en suivant le mme ordre que votre carnet dadresses. Cette capacit
comparer les chanes permet vos programmes de classer les noms par ordre alphabtique, de tester les mots de passe, et danalyser les donnes.
ntion
Atte

Une instruction spciale peut apparatre dans la section de dclarations


dun module :
Option Compare Text

Cette instruction, ventuellement associe linstruction Option Explicit,


tudie au chapitre prcdent, a pour effet que les capitales et les minuscules
sont gales en comparaison. Si vos comparaisons ne doivent pas tenir
compte du style, incluez linstruction Option Compare Text dans votre
module. Cependant, un programme qui ne tient pas compte du style dans ses
comparaisons ne donnera pas, dans la plupart des cas, un classement
alphabtique able.
Info

ition
Dfin

Pour la comparaison des chanes, Visual Basic suit lordre prescrit par la
table ASCII moins que le module ne contienne linstruction Option
Compare Text.
La table ASCII (prononcer "aski") contient la liste de tous les caractres
disponibles sur le PC, et attribue un numro unique chacun de ces caractres. La valeur ASCII de la lettre "A" est 65, celle de la lettre "B" 66, etc.
Recherchez "ASCII" dans lindex de laide Visual Basic pour obtenir cette table
(voir Figure 6.1). LAnnexe C de cet ouvrage reproduit galement la
table ASCII.

Voici quelques exemples de comparaisons de chanes :

"abcdef" > "ABCDEF"


"Oui !" < "Oui ?"
"Bill vous regarde" = "Bill vous regarde"
"PC" <> "pc"
"Merci, Merci, Merci" >= "Merci, Merci"

Chacune de ces comparaisons de chanes renvoie le rsultat True.


Visual Basic supporte un autre oprateur conditionnel, Like, qui compare les valeurs sur
la base de caractres gnriques, ou "jokers". Vous avez sans doute dj eu affaire aux
jokers * et ? en travaillant sur des chiers. Ainsi, * symbolise nimporte quel nombre de
caractres (zro inclus), tandis que ? symbolise un seul caractre. Like reconnat un

>
:

146

Prog VB6 FM1B Page 147 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

Figure 6.1
Pour la comparaison
des chanes, Visual
Basic suit lordre
des codes ASCII.

troisime joker, #, qui symbolise tout chiffre. Nous vous donnons ci-dessous quelques
exemples dutilisation de Like. Les expressions conditionnelles suivantes renvoient
toutes le rsultat True :

"Simon & Schuster Macmillan" Like "Si*"


"Qtr???" Like "QtrOne"
"Total##" Like "Total98"
"X" Like "[XYZ]"

Le dernier exemple relve dun type spcial dexpression Like. Lorsque le caractre
correspond lun des caractres entre crochets, le rsultat renvoy est True. Les crochets
permettent dinterroger une srie de caractres. Compares la chane
"Code[12345]Rouge", les valeurs suivantes sont toutes True : "Code1Rouge", "Code2Rouge",
"Code3Rouge", "Code4Rouge", "Code5Rouge".
Info

En ralit, vos programmes Visual Basic compareront des variables et des


contrles dont le contenu est appel changer dans le cours de lexcution.
Les exemples ne comparent que des littraux an dillustrer le fonctionnement des oprateurs.

Pour ces expressions, loprateur = aurait renvoy la valeur False, car la condition
dgalit ne reconnat pas les jokers.

147

<
:

Prog VB6 FM1B Page 148 Lundi, 6. aot 2001 3:26 15

Partie II

Les donnes conditionnelles


Les valeurs compares doivent toujours relever de types de donnes compatibles.
Vous pouvez comparer entre eux des nombres de nimporte quels types de donnes. Vous
pouvez comparez entre eux des chanes ou des boolens. Mais vous ne devez jamais,
par exemple, comparer une chane un nombre, car le rsultat risquerait fort dtre
faux.
ntion
Atte

Les donnes de types Boolean, Currency, String, Date, et les diffrents


entiers (Byte, Integer et Long) peuvent tre compars entre eux et rpondre
une condition dgalit. Ce nest pas le cas des valeurs prcision simple
ou double, comme dans sngSales = sngGoal. A cause de la faon dont
Visual Basic stocke les donnes de prcision, la comparaison de deux
valeurs Single peut renvoyer un rsultat dingalit ; en effet, Visual Basic
arrondit de lui-mme les valeurs, ce qui fausse les rsultats. Pour tester
lgalit de deux variables de prcision, il faut soustraire lune de lautre et
mesurer la diffrence. De telles oprations savrent assez fastidieuses,
aussi vaut-il mieux les viter.

Le type de donnes Variant se prte plutt bien aux comparaisons conditionnelles. Vous
aurez souvent comparer la valeur dun contrle (une zone de texte, par exemple) une
variable ou un littral. Les proprits de contrles se comparent gnralement comme
des donnes Variant. Si un contrle ou une variable Variant contiennent une valeur
numrique, telle que 234.56, et que vous compariez cette valeur une variable numrique, Visual Basic procde en convertissant provisoirement la valeur Variant en
nombre. Si, en revanche, vous comparez un contrle ou une variable Variant une
chane, Visual Basic convertit provisoirement la valeur en chane, de sorte que la comparaison se fasse caractre par caractre, sur la base des codes ASCII. Ainsi, Visual Basic se
charge des dtails importuns qui, autrement, rendraient dlicates les comparaisons impliquant un type Variant.
ntion
Atte

>
:

148

Si vous comparez une valeur numrique une valeur Variant, et que cette
dernire ne puisse tre proprement convertie en nombre, Visual Basic gnrera une erreur dexcution. Faites attention aux donnes utilises. Les fonctions internes, dont nous parlerons au Chapitre 8, permettent dinterroger
les types de donnes.

Prog VB6 FM1B Page 149 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

Combinaison doprateurs conditionnels


et logiques
Techniquement, les six oprateurs conditionnels sufsent interroger nimporte quelle
condition. Mais on peut considrablement amliorer leur exibilit en les combinant
aux oprateurs logiques Visual Basic. Le Tableau 6.2 prsente ces oprateurs.
ition
Dfin

Les oprateurs logiques permettent de combiner plusieurs sries de comparaisons conditionnelles. A linstar de loprateur Mod, les oprateurs logiques
sont des mots cls, et non des symboles.

Tableau 6.2 : Visual Basic supporte quatre oprateurs logiques


Oprateur

Description

Exemple

Rsultat

And

Chaque terme de lexpression doit tre True

(2 < 3) And (4 < 5)

True

Or

Lun des deux termes doit tre True

(2 < 3 ) Or (6 < 7)

True

Xor

Seul lun des termes doit tre True

(2 < 3) Xor (7 > 4)

False

Not

Nie lexpression

Not (3 = 3)

False

Les oprateurs And et Or sont, de loin, les plus utiliss. Loprateur Xor permet de distinguer deux options sexcluant mutuellement. Ainsi, dans une situation o une seule
valeur doit tre True, comme lorsque lutilisateur doit slectionner son mois de naissance,
le rsultat False dune condition Xor indique que plus dune option (ou aucune) a t
slectionne. Enn, loprateur Not nie une expression True ou False. Notez que cet
oprateur doit tre utilis avec parcimonie, car il implique que lon fasse abstraction de
la logique en crivant ou en dboguant le code.
Lexpression suivante combine des oprateurs conditionnels loprateur logique And :
(curSales < curMinSales) And (intYrsEmp > 10)

Si le chiffre de vente courant (curSales) est infrieur au minimum requis (curMinSales)


et que le nombre dannes danciennet (intYrsEmp) soit suprieur 10, lexpression est
entirement True (et il y a du licenciement dans lair !). Il serait tout fait possible de
tester chaque condition sparment, mais loprateur And permet de regrouper le tout en
une mme expression.

149

<
:

Prog VB6 FM1B Page 150 Lundi, 6. aot 2001 3:26 15

Partie II

ntion
Atte

Ne combinez pas trop dexpressions conditionnelles avec des oprateurs


logiques ; votre code deviendrait confus. Il convient de fragmenter les
expressions trop complexes, telles que la suivante :
(a > 6) And (b < 1) Or Not(1 = c) Xor (d = 4)

Lordre des oprateurs affecte le placement et lexcution des oprateurs conditionnels


et logiques. Considrez lexpression suivante :
curSales * sngCommission > curHighSales / 10

Quelles oprations Visual Basic traitera-t-il en premier ? Va-t-il dabord comparer


sngCommission curHighSales pour ensuite multiplier le rsultat par curSales, puis
diviser ce dernier rsultat par 10 ? Cela naurait aucun sens, puisque loprateur > ne peut
renvoyer de rsultats que True ou False, et quun tel rsultat ne peut tre impliqu dans un
calcul mathmatique.
Le Tableau 6.3 expose lordre des oprateurs de faon plus complte que le chapitre
prcdent. Il dcrit le fonctionnement conjoint des oprateurs conditionnels et logiques
contenus dans une mme expression.
Tableau 6.3 : Ordre de prsance des oprateurs mathmatiques, conditionnels
et logiques

>
:

Priorit

Oprateur

Parenthses

*, /, \, Mod

+,

Oprateurs conditionnels tels que Like

Not

And

Or

Xor

150

Prog VB6 FM1B Page 151 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

ce
Astu

An que vos programmes soient aussi clairs que possible, placez les expressions entre parenthses ; vous viterez ainsi toute ambigut dans lordre
des oprations. Selon cette mthode, lexpression prsente plus haut
ressemblerait ceci :
(curSales * sngCommission) > (curHighSales / 10)

Les instructions If
If est lune des commandes Visual Basic les plus utilises. La commande If fait partie
dune instruction multiligne, linstruction If, dont voici le format :
If condition Then

Bloc dinstructions Visual Basic


End If

Ici, condition reprsente toute expression susceptible de renvoyer un rsultat True ou


False. Il peut sagir dune variable Boolean, dun contrle renvoyant une valeur True
ou False, ou dune expression plus longue incluant des oprateurs conditionnels et/ou
logiques.
Info

Visual Basic supporte toujours lancien format de If, hrit du BASIC, et


qui scrit sur une seule ligne :
If condition Then instruction

Comme les instructions If donnent presque toujours sur plusieurs instructions, le format multiligne est plus appropri et plus rpandu. Mme dans le
cas o le If ne dclenche quune seule instruction, le format multiligne est
plus appropri, car des instructions supplmentaires pourront plus facilement tre insres.
Info

Faire
Indentez le corps de linstruction If, de sorte reprer dun simple coup
dil son dbut et sa n. Pour chaque instruction If, il existe, plus loin dans
le programme, une instruction End If. Quelle que soit lindentation du
code, une instruction End If correspond toujours linstruction If la plus
rcente.

151

<
:

Prog VB6 FM1B Page 152 Lundi, 6. aot 2001 3:26 15

Partie II

Sans sen apercevoir, on emploie des instructions de type If tous les jours :

Si (If) je reois mon chque, alors (Then) je payerai mon loyer dans les temps.

Si (If) tu ranges ta chambre et (And) que tu nisses tes devoirs, alors (Then) tu sortiras jouer au foot.

Ainsi, les instructions Visual Basic If suivent un mode de raisonnement tout fait
commun. Elles fonctionnent de la manire suivante : le code contenu dans le corps de
linstruction ne sexcute que si et seulement si la condition est remplie. Considrez de
nouveau les raisonnements communs exposs ci-dessus. Si et seulement si vous touchez
votre salaire, vous pourrez payer votre loyer temps. Si vous ne recevez pas le chque,
eh bien... votre propritaire attendra. Le second raisonnement implique que deux conditions soient satisfaites : si tu ranges ta chambre et si tu nis tes devoirs, alors seulement
tu pourras aller taper dans le ballon.
Examinez linstruction If du Listing 6.1 :
Listing 6.1 : Comparaison de donnes avec instruction If

1:
2:
3:
4:
5:
6:
7:
8:

If (curSales > curSalesGoal) Then


Ce commercial explose ses objectifs
curSalaryBonus = 10000.00
lblSalesNote.Caption = "Objectifs exploss !"
lblSalesNote.BackColor = Red
lblSalesNote.FontBold = True
End If
Le code continue ici

Si la valeur de curSales (chiffre de vente) est suprieure la valeur de curSalesGoal


(objectifs), les quatre instructions (sans compter le commentaire) des lignes 3 6
sexcutent. Si la valeur est infrieure (ou mme gale, le patron est exigeant), les
lignes 3 6 ne sexcutent pas. Dans tous les cas, le programme se poursuit partir de la
ligne 8, aprs que linstruction If a fait ce quelle avait faire. Ainsi, ce sont les
donnes qui pilotent linstruction If, et le programme prend une dcision lors de
lexcution. Cette dcision concerne lexcution, ou non, dune partie du code, savoir
le corps de linstruction If.
Info

>
:

152

Dans une instruction If, les parenthses ne sont pas ncessaires autour de
la condition ; en revanche, elles dsignent clairement la condition interroger, et en cela clarient le code.

Prog VB6 FM1B Page 153 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

Les instructions Else


Nous venons de dcrire un format dinstruction If. Mais les programmeurs emploient
souvent un format plus tendu, qui ressemble cela :
If condition Then

Bloc dinstructions Visual Basic


Else

Bloc dinstructions Visual Basic


End If

Comme pour toutes les instructions multilignes, lindentation du corps est recommande, mais non obligatoire. Selon le premier format dinstruction If, le code sexcutait
si et seulement si la condition tait satisfaite ; mais rien nindiquait au programme ce
quil devait faire si la condition ntait pas satisfaite. Linstruction Else sert justement
cela. Une instruction If... Else contient deux corps distincts : lun qui ne sexcute
que si la condition est True, lautre qui ne sexcute que si la condition est False. Quelle
que soit la condition, le reste du programme se poursuit aprs que le test If... Else a
t effectu.
Le programme du premier Projet bonus, "Contrles, proprits et vnements", se
servait dune instruction If... Else pour tester la validit du mot de passe saisi. Cette
partie du code est reproduite dans le Listing 6.2.
Listing 6.2 : Test du mot de passe par une instruction If

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:

11:
12:
23:

If txtPassword.Text = SSM Then


Mot de passe correct
Beep
Beep
Afficher limage
imgPassword.Picture = LoadPicture(C:\Program Files\
& Microsoft Visual Studio\Common\Graphics\MetaFile\
& Business\coins.wmf)
lblPrompt.Caption = Aboule le fric !
Else
lblPrompt.Caption = Mot de passe incorrect Essayer encore
txtPassword.Text =
Efface le mauvais mot de passe
txtPassword.SetFocus
Met le focus sur la zone
de texte
End If

La ligne 1 vrie si la zone de texte contient le bon mot de passe. Si cest le cas, le corps
de linstruction If, soit partir de la ligne 2, sexcute. Linstruction Beep provoque
lmission dun bip par le haut-parleur du PC ; ainsi, si le mot de passe est correct, les
lignes 3 et 4 sexcutent, et lordinateur fait "bip bip". Les lignes 5, 6 et 7 afchent

153

<
:

Prog VB6 FM1B Page 154 Lundi, 6. aot 2001 3:26 15

Partie II

limage, tandis que la ligne 8 modie le contenu du label. Au terme de linstruction If,
cest--dire tout de suite aprs la ligne End If, le programme poursuit son excution.
Si toutefois le mot de passe saisi nest pas le bon, et donc que la condition ne soit pas
remplie, le corps de Else sexcute (lignes 10, 11 et 12) pour indiquer lutilisateur que
son mot de passe nest pas valide.
Comme le montre le Listing 6.3, on peut imbriquer les instructions If.
Listing 6.3 : Les instructions If imbriques permettent des comparaisons plus
pousses
If (curSales > 100000.00) Then

If (intHrsWorked > 40) Then

curBonus = 7500.00

Else

curBonus = 5000.00

End If

lblBonus.Caption = "Bon boulot !"


End If

Dans les instructions ainsi imbriques, chaque Else et chaque End If renvoie toujours
au If le plus rcent. Les diffrents niveaux dindentation appliqus aux If imbriqus
permettent de les circonscrire de faon claire.

Les instructions Exit


Il arrive parfois, selon les donnes, quune procdure (vnementielle ou autre) doive
tre prcipitamment interrompue. Cest ce que permet la combinaison des instructions
If et Exit.
Voici le format de linstruction Exit :
Exit Sub/Function/Do/For

Les slash indiquent que seul lun des mots cls peut suivre linstruction Exit ; tout
dpend de ce dont on veut sortir. Pour sortir dune procdure vnementielle (cest--dire
dune sous-routine, comme nous lavons vu au Chapitre 4), linstruction est Exit Sub.
Pour sortir dune fonction, ce serait Exit Function. Quant aux instructions Exit Do et
Exit For, elles seront expliques vers la n de ce chapitre.
Le Listing 6.4 interrompt la procdure vnementielle la ligne 3 si la condition spcie dans linstruction If est satisfaite.

>
:

154

Prog VB6 FM1B Page 155 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

Listing 6.4 : Linstruction Exit Sub permet dinterrompre une procdure

1: Private Sub cmdCalc ()


2:
If (txtSales.Text < 50000.00) Then
3:
Exit Sub
Interrompt la procdure
4:
Else
5:
Si le chiffre de vente est au moins
6:
de 50 000 F, excute linstruction
7:
suivante, qui affiche le bonus comme
8:
pourcentage des ventes.
9:
lblBonus.Caption = txtSales.Text * .05
10:
End If
11: End Sub

Instructions If... Else imbriques


Lorsque deux instructions If... Else sont imbriques lune dans lautre, linstruction
intrieure doit utiliser le mot cl ElseIf la place du simple If. Voyez le Listing 6.5.
Listing 6.5 : Le mot cl ElseIf permet de combiner les instructions If... Else
If (intHours <= 40) Then
curOverTime = 0.0
Interroge les heures entre 40 et 50,
et paye les 50 % dheures sup.
ElseIf (intHours <= 50) Then
curOverTime = (intHours - 40) * 1.5 * sngRate
Else
Au-del de 50, les heures doivent tre payes
doubles ; entre 40 et 50 heures, la prime
est de 50 %.
curOverTime = ((intHours - 50) * 2 + (10 * 1.5))
* sngRate
12: End If

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:

ition
Dfin

Une instruction imbrique est une instruction qui apparat lintrieur


dune autre.

Linstruction ElseIf de la ligne 5 commence un nouveau bloc If... Else. La ligne 1


vrie si le nombre dheures travailles (intHours) est infrieur ou gal 40 ; si tel nest
pas le cas, ce nombre doit logiquement tre suprieur 40. La ligne 5 vrie si le nombre
dheures est inclus entre 40 et 50 (si le nombre est infrieur 40, cette ligne ne sexcute
pas). La prime (curOverTime) de 50 % est alors calcule pour les heures supplmentaires.
Si la condition de la ligne 5 nest pas remplie, cest que ncessairement le nombre

155

<
:

Prog VB6 FM1B Page 156 Lundi, 6. aot 2001 3:26 15

Partie II

dheures travailles est suprieur 50. Lexpression de la ligne 11 calcule le paiement


200 % des heures situes au-del de 50, et le paiement 150 % des heures situes entre
40 et 50.
Ces instructions If... ElseIf... End If imbriques sont-elles particulirement difciles dboguer ? Certes, et cet exemple simple en est la parfaite illustration. La section
suivante dcrit les instructions Select Case, qui offrent une solution plus intressante.

Les instructions Select Case


Linstruction Select Case est la plus approprie pour vrier des conditions multiples.
Limbrication successive de trois ou quatre instructions If... Else complique considrablement le programme. On aboutit une logique discutable du genre : "Si cela est
vrai, alors si cela est vrai, alors si cela encore est vrai, alors faire cela ou cela, sinon..."
Linstruction Select Case vous pargne ces imbroglios inutiles. En voici le format :
Select Case expression

Case condition

Bloc dinstructions

[ Case condition1

Bloc dinstructions

[ Case condition2

Bloc dinstructions

[ Case conditionN

Bloc dinstructions

[Case Else

Bloc dinstructions
End Select

Visual Basic
Visual Basic]
Visual Basic]

Visual Basic]
Visual Basic]

Select Case choisit entre plusieurs conditions. Le nombre de ces conditions, indiqu
dans le corps [ Case condition#...], varie selon la situation. Si aucune des conditions
nest remplie, le corps de Case Else (sil y en a un) sexcute.
Malgr un format un peu droutant, Select Case est simple dutilisation. Examinez le
Listing 6.6.
Listing 6.6 : Les instructions Select Case comparent des valeurs multiples

>
:

1:
2:
3:
4:
5:
6:

156

Interrogation dune note scolaire


Select Case txtGrade.Text
Case "A"
lblAnnounce.Caption = "Trs bien"
Case "B"
lblAnnounce.Caption = "Bien"

Prog VB6 FM1B Page 157 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

7:
Case "C"
8:
lblAnnounce.Caption
9:
Case "D"
10:
lblAnnounce.Caption
11:
Case "E"
12:
lblAnnounce.Caption
13:
Case Else
14:
lblAnnounce.Caption
15: End Select

Info

= "Peut mieux faire"


= "Mdiocre"
= "Mauvais"
= "Note non valide"

Le type de donnes de expression doit tre repris par chaque condition de


Case. Le code du Listing 6.6 suppose que txtGrade.Text est une chane
contenant une lettre : en effet, cest bien une chane que les lignes 3, 5, 7, 9
et 11 comparent la valeur de txtGrade.Text.

Si la zone de texte txtGrade.Text contient la lettre "A", le corps du Case de la ligne 3


sexcute, et Visual Basic saute les autres conditions ; puis le code poursuit son excution partir de la ligne 15. Si txtGrade.Text contient la lettre "B", cest le corps du Case
de la ligne 5 qui sexcute, et ainsi de suite. (Ce nest pas le cas ici, mais le corps dun
Case peut courir sur plusieurs lignes.) Une fois quune condition Case est satisfaite,
Visual Basic excute tout le code compris jusquau prochain Case ; lorsque cela est
achev, linstruction Select Case a fait son travail, et le programme peut continuer.
Si, pour une raison ou pour une autre, la zone de texte renvoie autre chose que A, B, C,
D ou E, cest le Case Else qui sexcute et afche dans le label un message derreur.
Visual Basic supporte un autre format de Select Case, qui permet de spcier, par le mot
cl Is, un oprateur conditionnel pour chaque condition. Le Listing 6.6 reprend notre
exemple en mettant prot ce format.
Listing 6.7 : Comparaisons conditionnelles dans Select Case

1: Test dune note scolaire


2: Select Case txtGrade.Text
3:
Case Is >= 18
4:
lblAnnounce.Caption =
5:
Case Is >= 15
6:
lblAnnounce.Caption =
7:
Case Is >= 12
8:
lblAnnounce.Caption =
9:
Case Is >= 10
10:
lblAnnounce.Caption =
11:
Case Else
12:
lblAnnounce.Caption =
13: End Select

"Trs bien"
"Bien"
"Peut mieux faire"
"Mdiocre"
"Mauvais"

157

<
:

Prog VB6 FM1B Page 158 Lundi, 6. aot 2001 3:26 15

Partie II

Ici, chaque Case implique que la note se situe entre une valeur suprieure ou gale 18
et une valeur infrieure ou gale 10. Notez quaucun test spcique nest ncessaire
pour les notes situes en-dessous de 10 car, en de de cette note, cest le Case Else qui
prend la relve. (Comme il ne sagit que de montrer le fonctionnement de Case Else, cet
exemple ne contient pas dinstruction de traitement derreur, et suppose donc que la
note entre se situe entre 0 et 20.)
ntion
Atte

Les instructions Select Case ne conviennent pas tous les types de comparaisons. Les oprateurs dinclusion ou logiques ne sont pas supports ; les
conditions Case ne peuvent donc pas tre interroges par And, Or, Xor, ni
Not. Pour cela, la seule solution consiste imbriquer des instructions
If... ElseIf... End If.

Visual Basic supporte un troisime format de Select Case, dans lequel le mot cl To
spcie un ordre de choix. Cest cet ordre qui dtermine quel corps de Case doit
sexcuter. Ce format est utilis lorsque les valeurs testes sont squentielles (voir
Listing 6.8).
Listing 6.8 : Comparaisons de valeurs squentielles dans Select Case

1: Interrogation dune note


2: Select Case txtGrade.Text
3:
Case 0 To 9
4:
lblAnnounce.Caption =
5:
Case 10 To 11
6:
lblAnnounce.Caption =
7:
Case 12 To 14
8:
lblAnnounce.Caption =
9:
Case 15 To 17
10:
lblAnnounce.Caption =
11:
Case Else
12:
lblAnnounce.Caption =
13: End Select

scolaire

"Mauvais"
"Mdiocre"
"Peut mieux faire"
"Bien"
"Trs bien"

Vous pouvez remarquer que lordre des Case est invers par rapport aux listings prcdents, en raison du format utilis. La premire condition Case, ligne 3, teste la plage des
notes les plus basses possible. Si la note renvoye entre dans cette catgorie, le message
"Mauvais" safche dans le label. (Pour plus de simplicit, on prsuppose que lutilisateur entre des entiers. Ainsi, une note de 9.5 pourrait gnrer une erreur.) Les plages de
valeurs se suivent squentiellement. Vous pouvez galement tester, de cette faon, des
chanes, en partant de la plus petite (en codes ASCII cumuls).

>
:

158

Prog VB6 FM1B Page 159 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

ce
Astu

On peut combiner les diffrents formats de Case lintrieur dune mme


instruction Select Case. Voici un exemple :
Case 101, 102, 201 To 205, Is > 300

Si lexpression spcie dans Select Case renvoie une valeur gale 101,
102, 201, 202, 203, 204, 205, ou suprieure 300, le corps de Case
sexcute.

Les boucles
Votre PC est puissant. Il peut traiter rapidement dnormes quantits de donnes, telles
que la comptabilit dune grosse entreprise. Mais le traitement efcace de tant dinformations exige une technique spciale : il sagit dintgrer le code dans des boucles,
grce auxquelles le programme analyse, et analyse encore, les donnes, jusqu ce que
sortent les rsultats attendus. Les boucles sont lun des lments les plus importants de
la programmation.
ition
Dfin

Une boucle est une srie dinstructions appeles sexcuter plusieurs fois.
Linstruction de boucle se rpte tant quune condition prdnie nest pas
satisfaite.

Les boucles nous renvoient au prochain chapitre, qui vous enseigne recevoir de lutilisateur des entres (input) autrement que par les zones de texte lesquelles ne conviennent pas tous les types dinformations. Il arrive souvent quune question simple soit
pose lutilisateur, qui rpond en appuyant sur Entre ; pour de telles rponses, les
zones de texte ne sont pas ce quil y a de plus indiqu. (Les zones de texte sont parfaites
pour les informations textuelles, telles que noms et adresses.)
Il est capital de bien comprendre les boucles avant daborder la question des entres
utilisateur : en effet, la rponse donne nest pas toujours celle quon attend. Imaginons
que vous demandiez lutilisateur son ge, et quil rponde 291. Manifestement, il y a
une erreur. Grce aux instructions de boucle, la question peut tre repose jusqu ce
que lutilisateur donne une rponse raisonnable. Naturellement, le programme ne pourra
jamais dtermnier si lutilisateur donne son ge rel ; mais vous pouvez faire en sorte
quune rponse au moins plausible soit exige. Les boucles peuvent rpter nimporte
quel bloc de code.

159

<
:

Prog VB6 FM1B Page 160 Lundi, 6. aot 2001 3:26 15

Partie II

Les boucles Do
La boucle Do est une instruction multiligne. Comme linstruction If, linstruction Do
supporte diffrents formats :

Do While condition
Bloc dinstructions
Loop
Do
Bloc dinstructions
Loop While condition
Do Until condition
Bloc dinstructions
Loop
Do
Bloc dinstructions
Loop Until condition

Visual Basic

Visual Basic

Visual Basic

Visual Basic

Ici, condition peut tre une expression, un contrle ou une valeur Boolean. Le choix du
format est, avant tout, une question de prfrence et de style. Les points considrer
sont les suivants :

Lemplacement de la condition. Si la condition apparat au dbut de la boucle,


dans linstruction Do, le corps peut aussi bien ne jamais sexcuter. Si, en revanche,
la condition apparat la n de la boucle, dans linstruction Loop, le corps sexcutera au moins une fois, puisque la condition nest interroge quen dernier.

La nature de la condition. La boucle Do peut se rpter : a) tant que (While) la


condition est remplie, b) jusqu ce que (Until) la condition soit remplie. Dans le
premier cas, le corps cesse de sexcuter ds que la condition nest plus remplie.
Dans le second, le corps cesse de sexcuter ds que la condition est remplie.

La Figure 6.2 montre une boucle Do et illustre le processus de rptition. Ce code se


contente daugmenter une valeur (afche comme Caption du label) par incrments de
1 ; lorsque la valeur de 10 est atteinte, la boucle sarrte. (En ralit, un PC moderne
excuterait ce programme si rapidement que lon naurait pas le temps de voir les
valeurs safcher. Il sagit dun exemple.)
Figure 6.2
La boucle rpte
le corps dinstructions.

>
:

160

Ces instructions se
rptent jusqu' ce
que la condition
interroge renvoient
le rsultat True.

' Dmonstration des boucles Do.


Dim intCtr As Integer
IntCtr = 1 ' Initialise le compteur.
Do
lblOut.Caption = intCtr
intCtr = intCtr + 1
Loop Until [intCtr = 10]

Prog VB6 FM1B Page 161 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

Le code de la Figure 6.2 illustre un type particulier daffectation, dans


lequel le mme nom de variable apparat de chaque ct de loprateur =.
Une telle affectation ne sert, en fait, qu mettre jour la valeur de la variable. Dans ce cas prcis, linstruction intCtr = intCtr + 1 ajoute 1 la
valeur de intCtr chaque rptition de la boucle.

Info

Le corps du code de la Figure 6.2 sexcute dix fois, et chaque fois la valeur de la variable intCtr est incrmente de 1. Le format utilis ici est Do... Loop Until, de sorte que
la boucle se rpte jusqu ce que intCtr soit gal 10. Le Listing 6.9 prsente une
boucle semblable, mais selon le format While... Loop.
Listing 6.9 : Linstruction Do existe en plusieurs formats

1:
2:
3:
4:
5:
6:

Do While intCtr <= 10


Cette boucle fait la mme chose
que celle de la Figure 6.2
lblOut.Caption = intCtr
intCtr = intCtr + 1
Loop

ntion
Atte

Vous devez, dune manire ou dune autre, modier la condition contenue


dans le corps de la boucle ; autrement, la boucle sexcuterait indniment.
Si daventure vous crivez une boucle sans n, votre application se bloque
jusqu ce que vous cliquiez sur le bouton Fin de Visual Basic ou sur le
bouton de fermeture de lapplication. Si rien, dans le corps de la boucle, ne
permet de modier la condition teste, la boucle continuera de sexcuter.

Certaines boucles, notamment les boucles impliquant une entre utilisateur, exigent que
le corps sexcute au moins une fois ; de l dcoule le choix du format de boucle. Si
votre boucle doit sexcuter au moins une fois, le format utiliser est celui dans lequel
la condition est interroge la n de la boucle (voir Listing 6.10).
ntion
Atte

Les exemples de codes qui suivent ne sont pas complets. Les instructions
censes traiter les entres utilisateur et envoyer les messages derreur y sont
remplaces par des commentaires. Concentrez-vous, pour linstant, sur le
fonctionnement des boucles. Le traitement des entres utilisateur fera lobjet
du prochain chapitre.

161

<
:

Prog VB6 FM1B Page 162 Lundi, 6. aot 2001 3:26 15

Partie II

Listing 6.10 : Lutilisateur nentre pas toujours des donnes valides


du premier coup

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:

Dim strAns As String

Lutilisateur doit rpondre par Oui ou Non.


lblPrompt.Caption = "Continuer ? (Oui ou Non)"

Stockage de la rponse dans la


variable chane nomme strAns.
Test de la rponse et ritration
de la question si ncessaire.
Do While (strAns <> "Oui" And strAns <> "Non")
Beep
Avertissement
lblError.Caption = "Merci de rpondre par Oui ou Non"
Stockage de la rponse dans la
variable chane nomme strAns (rebelote).
Loop
Effacement du message derreur.
lblError.Caption = Null

La boucle Do commence la ligne 10. Si lutilisateur a entr Oui ou Non aux lignes 6 et 7
(rappelez-vous que les commentaires tiennent ici lieu dinstructions de traitement), la
boucle afche le message derreur de la ligne 12. Les commentaires des lignes 13 et 14
simulent une instruction qui recevrait de nouveau la rponse de lutilisateur, et la
ligne 15 renvoie la boucle la ligne 10, qui teste de nouveau lentre. Combien de fois
cette boucle sexcutera-t-elle ? Soit jamais (si lutilisateur a entr Oui ou Non), soit
jusqu ce que lutilisateur rponde correctement (non mais !).
Info

Naturellement, la touche Verr Maj de lutilisateur peut tre ou non


enclenche ; et donc la rponse, tre OUI ou oui, NON ou non. Dans ce cas,
la ligne 10 chouerait, car les deux chanes auraient des styles diffrents.
Il vous faudra attendre le Chapitre 8 pour apprendre tester les chanes
diffrentes.

Linstruction Exit Do permet dinterrompre une boucle avant son dnouement normal.
Par exemple, vous traitez une srie de factures dans une boucle qui se rpte jusqu ce
que le dernier numro de compte client soit atteint. Si un mauvais numro de compte est
dcel par une instruction If lintrieur de la boucle, vous pouvez interrompre la rption par Exit Do et afcher un message derreur.

>
:

162

Prog VB6 FM1B Page 163 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

Les boucles For


For est un autre type de boucle support par Visual Basic. Les boucles For excutent une
srie dinstructions, un nombre prdni de fois ou jusqu ce quune condition soit
satisfaite. Comme celui des boucles Do, le corps des instructions For est multiligne. En
voici le format :
For intCounter = intStart To intEnd [Step intIncrement]

Bloc dinstructions Visual Basic


Next [intCounter]

intCounter (compteur) est la variable numrique qui contrle le corps de la boucle.


A cette variable est affecte la valeur initiale intStart, avant la premire itration de la
boucle. La valeur intStart est gnralement 1, mais peut tre toute valeur numrique,
variable ou valeur de contrle que vous spcierez. Chaque fois que le corps de la
boucle se rpte, la variable intCounter change de valeur (incrmentation ou dcrmentation) en fonction de intIncrement. Si vous ne spciez pas de clause Step,
linstruction For utilise un incrment (ou pas) par dfaut de 1. (La clause Step nest
donc pas obligatoire, et cest pourquoi elle est indique entre crochets.)
ition
Dfin

On entend par itration chacun des cycles dune boucle. Pour une boucle
qui se rpte trois fois, il y a donc trois itrations.

intEnd est un nombre, une variable ou une valeur de contrle qui dtermine la n de la
boucle. Lorsque intCounter est plus grand que intEnd, la boucle cesse et le code se
poursuit partir de la ligne suivant linstruction Next. Linstruction Next referme le
corps de la boucle, et relance litration. Si intCounter est plus petit que intEnd, Visual
Basic augmente intCounter de la valeur intIncrement, et le corps de la boucle se rpte
de nouveau. (Notez quil nest pas obligatoire de mentionner intCounter aprs Next ;
cela ne sert qu rappeler de quelle boucle For spcique linstruction Next marque le
terme.)
Quoi quil en soit, linstruction For est trs simple : elle ne fait rien dautre que compter
ou dcompter, cest--dire ajouter ou soustraire une valeur une autre chaque itration
de la boucle. La boucle For incrmente si la valeur de Step est positive (elle lest par
dfaut), et dcrmente si la valeur de Step est ngative.
Dans le Listing 6.11, la boucle For reprend la boucle Do du Listing 6.9. Linstruction For
incrmente automatiquement la variable compteur du label.

163

<
:

Prog VB6 FM1B Page 164 Lundi, 6. aot 2001 3:26 15

Partie II

Listing 6.11 : Les boucles For permettent dincrmenter une variable compteur
1: For intCtr = 1 to 10
2:
lblOut.Caption = intCtr
3: Next

Quoi de plus simple ? Cette boucle se rpte dix fois. La premire fois que sexcute la
ligne 1, la valeur intStart (1 en loccurrence, et valeur par dfaut dinstruction Step)
est affecte intCtr. A la ligne 2, le corps de la boucle se sert de cette nouvelle valeur
pour mettre jour le label. La ligne 3 ordonne la boucle de se rpter pour de nouveau
incrmenter intCtr de 1, et cela jusqu ce que intCtr atteigne la valeur intEnd : 10.
Info

Linstruction suivante est quivalente celle de la ligne 3 du Listing 6.11,


puisque la variable nest quoptionnelle dans linstruction Next :
Next intCtr

Dfinir la valeur de Step


Dans le Listing 6.12, la boucle For commence 10 et incrmente la variable de 5
jusqu ce que la valeur 100 soit atteinte.
Listing 6.12 : Boucle For avec valeur de Step positive (incrmentation)
1: For intCtr = 10 to 100 Step 5
2:
lblOut.Caption = intCtr
3: Next

Dans le Listing 6.13, la boucle For commence 1000 et dcrmente la variable de 100
jusqu ce que la valeur 0 soit atteinte.
Listing 6.13 : Boucle For avec valeur de Step ngative (dcrmentation For... Next;)
1: For intCtr = 1000 to 0 Step -100
2:
lblOut.Caption = intCtr
3: Next

Ces quelques courts exemples dmontrent bien le comportement des valeurs intStart,
intEnd et intIncrement dans la boucle. (Si la valeur de Step est ngative, intStart doit
tre plus grand que intEnd ; autrement, le corps de la boucle ne sexcuterait jamais.)
ntion
Atte

>
:

164

Ne confondez pas les boucles avec les instructions If. Toutes reposent sur
des valeurs conditionnelles ; mais, tandis que les boucles rptent leur
corps autant de fois que ncessaire, le corps des instructions If ne sexcute
quune fois.

Prog VB6 FM1B Page 165 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

ce
Astu

Linstruction Exit For permet dinterrompre une boucle avant son dnouement normal.

Boucles For imbriques


Comme toutes les autres instructions Visual Basic, les boucles For peuvent tre imbriques. Cela permet de rpter plusieurs fois lensemble dune boucle. La Figure 6.3
donne le schma dune boucle For imbrique. On pourrait dire, ici, que la boucle intrieure est plus "rapide" que la boucle extrieure. En effet, la boucle intrieure incrmente la variable In de 1 10 avant que la boucle extrieure nait complt sa premire
itration. La boucle extrieure ne se rpte qu partir de linstruction Next Out, qui
nest pas atteinte dans le code tant que la boucle intrieure na pas termin son cycle.
Lorsque linstruction Next Out est atteinte, et que la boucle extrieure se rpte, la
boucle intrieure dmarre de nouveau, et ainsi de suite jusqu la quatrime itration de
la boucle extrieure.
Figure 6.3
La boucle extrieure
dtermine le nombre
de fois que la boucle
intrieure se rpte.

For Out = 1 To 4
For In = 1 to 10
Boucle
extrieure

Boucle
intrieure

' Ici, le bloc de code.


Next In
Next Out
' Le programme se poursuit aprs
que la boucle extrieure se termine.

En tout, la boucle intrieure de la Figure 6.3 sexcute quarante fois. La boucle extrieure accomplit quatre itration, et chacune de ces itrations la boucle intrieure se
rpte dix fois.
La Figure 6.4 montre deux boucles intrieures lintrieur dune troisime. Les deux
boucles intrieures doivent accomplir tout leur cycle avant que la boucle extrieure ne
puisse terminer sa premire itration. Lorsque la boucle extrieure attaque sa deuxime
itration, les deux boucles intrieures se rptent de nouveau, et ainsi de suite.
Dans la Figure 6.4, le corps de chacune des deux boucles intrieures sexcute quarante
fois. La boucle extrieure accomplit quatre itrations, et chaque itration excute
dabord la premire, ensuite la seconde boucle intrieure ; puis la boucle extrieure
repart, etc.

165

<
:

Prog VB6 FM1B Page 166 Lundi, 6. aot 2001 3:26 15

Partie II

Figure 6.4
On peut imbriquer
plusieurs boucles
dans une mme
instruction For.

For Out = 1 To 4
For In = 1 to 10
Premire
boucle
intrieure

' Ici, le bloc de code.


Next In

Boucle
extrieure
For In2 = 1 to 10
Seconde
boucle
intrieure

' Ici, le bloc de code.


Next In2

Next Out

' Le programme se poursuit aprs


que la boucle extrieure se termine.

Info

Faire
Ayez garde de bien associer, dans vos boucles imbriques, une instruction
Next chaque instruction For. Chaque Next renvoie au For le plus rcent.
Si le Next de la boucle intrieure apparat aprs le Next de la boucle
extrieure, Visual Basic gnre une erreur. Si vous ne spciez pas de variable pour chaque Next, Visual Basic se rfre automatiquement au For le
plus rcent. Mais, en indiquant la variable, vous circonscrirez de faon plus
claire le corps de chaque boucle, et faciliterez dautant la documentation du
code.

En rsum
Ce chapitre vous a prsent les structures de contrle qui permettent au code de modier lui-mme le cours de son excution en fonction des valeurs releves et de conditions prdnies. Grce aux oprateurs conditionnels et aux instructions If, vous
pouvez maintenant analyser les donnes et tester les variables et contrles, puis ragir
en consquence. Votre vocabulaire Visual Basic commence srieusement senrichir.

>
:

166

Prog VB6 FM1B Page 167 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

Outre linstruction If, Visual Basic supporte linstruction Select Case, qui offre une solution plus satisfaisante que limbrication des If. Select Case peut tre utilis sous plusieurs
formats, selon la faon dont les diffrentes conditions doivent tre testes.
Nous avons galement dcouvert que les boucles permettent de rpter plusieurs fois
certaines sections du code. La boucle Do se rpte tant quune condition est remplie, ou
jusqu ce quune condition soit remplie, selon le format utilis. La boucle For se rpte
un nombre prdni de fois, ou jusqu ce quune condition soit remplie. A la diffrence
de Do, la boucle For met automatiquement jour sa variable de contrle, en laugmentant ou en la diminuant chaque itration.
Le prochain chapitre vous enseigne capter des informations laide des zones
dentre. Vous apprendrez galement donner des rponses lutilisateur par lintermdiaire des botes de messages. Zones dentre et botes de messages constituent un
moyen simple dinteragir avec lutilisateur, sans passer par les contrles de la feuille.

Questions-rponses
Q Pourquoi viter loprateur Not ?
R Il vaut mieux ne pas utiliser Not parce que cet oprateur ne fait, dans la plupart des
cas, que compliquer inutilement les choses. Les instructions positives sont toujours
prfrables, parce que plus faciles comprendre.
Considrez lexpression Not(A <= B). Ne serait-il pas plus simple de lcrire (A >
B) ? Il ne sagit pas de proscrire tout fait cet oprateur, utile pour interroger un
boolen ; par exemple : If Not(blnClearedScreen). Ce dbut dinstruction If dit
ceci : "Si lcran na pas encore t vid (blnClearedScreen = True), alors..." En rgle
gnrale, il convient toutefois de renverser les expressions Not en expressions positives
an que le code soit plus clair.
Q Si les instructions Do et For donnent des rsultats quivalents, quelle importance de choisir lune ou lautre ?
R Cela dpend entirement de vous. Le choix ne doit dailleurs pas seulement soprer
entre les boucle For et Do, mais aussi entre les divers formats de chacune. On se sert
gnralement des boucles Do pour incrmenter une valeur ou pour rpter des
instructions un nombre dtermin de fois. Les boucles Do, quant elles, sont plus
appropries aux boucles qui doivent se rpter jusqu ce quune condition soit
remplie. Quand il sagit dincrmenter ou de dcrmenter, For est plus facile crire
et lgrement plus efcace que Do.

167

<
:

Prog VB6 FM1B Page 168 Lundi, 6. aot 2001 3:26 15

Partie II

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre
les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez
ces rponses lAnnexe A.

Quiz
1. Quel oprateur logique renvoie le rsultat True si lun ou lautre des termes dune
expression est True ?
2. Quelle est la diffrence entre un oprateur conditionnel et un oprateur logique ?
3. Quest-ce quune boucle ?
4. Dcrivez linstruction daffectation suivante :
intTotal = intTotal 10

5. Combien de fois le code suivant excute-t-il linstruction Beep ?


intN = 0
Do While (intN > 0)

intN = intN + 3

Beep
Loop

6. Pourquoi linstruction Exit For doit-il faire partie dune instruction If plutt que
dapparatre pour lui-mme dans le corps de la boucle For ?
7. Dans une instruction If... Else, les deux corps peuvent sexcuter. Vrai ou faux ?
8. Selon les valeurs initiale et nale, une boucle For peut ne jamais sexcuter. Vrai ou
faux ?
9. Pourquoi imbriquer des boucles For ?
10. Quelle est la diffrence entre une instruction de dcision et une instruction de
boucle ?

>
:

168

Prog VB6 FM1B Page 169 Lundi, 6. aot 2001 3:26 15

Chapitre 6 : Oprateurs et instructions de contrle

Exercices
1. Ecrivez une instruction If de comparaison qui vrie lgalit de trois nombres.
2. Chasse au bogue : Maurice narrive pas "boucler". Quest-ce qui ne va pas dans
son code ?
intN = 10
Do

Beep
Loop Until (intN > 100)

3. Lhorloge dun stade de football effectue un dcompte de 45 0 pour chaque mitemps. Il y a deux mi-temps. Dcrivez lactivit de lhorloge laide dinstructions
Visual Basic.
4. Visual Basic permet de combiner chaque format de Select Case dans une mme
instruction Select Case. On peut donc aligner un Case dgalit classique, un Case
conditionnel et un Case dordre squentiel. Rcrivez le Listing 6.5 (o lon calculait le paiement des heures supplmentaires laide dune instruction If) sous la
forme Select Case, en utilisant au moins deux formats de Case.

169

<
:

Prog VB6 FM1B Page 170 Lundi, 6. aot 2001 3:26 15

Prog VB6 FM1B Page 171 Lundi, 6. aot 2001 3:26 15

Chapitre

Support avanc
du clavier et de lcran
Ce chapitre vous apprend recevoir des informations de lutilisateur (entres) et lui en
envoyer (sorties). Vous savez dj recevoir des entres par lintermdiaire des zones de
texte, et afcher des messages dans des labels. Toutefois, ces contrles ne se prtent pas
toujours trs bien aux changes de questions et de rponses lors de lexcution. Les zones
de texte sont parfaites pour les formulaires et les espaces rservs qui accueillent le texte
tap par lutilisateur ; mais une interaction plus immdiate est parfois requise. Au terme de
ce chapitre, vous serez en mesure dobtenir une telle interaction en programmant le moins
possible.
Voici ce que nous dcouvrirons aujourdhui :

Les fonctions internes ;

La fonction MsgBox() ;

Les paramtres de fonction optionnels ;

La fonction InputBox() ;

La gestion des vnements clavier ;

Les cases cocher ;

Les boutons doption ;

Comment combiner les boutons doption en contrles Frame.

171

Prog VB6 FM1B Page 172 Lundi, 6. aot 2001 3:26 15

Partie II

Introduction aux fonctions internes


Les fonctions sont un type de procdure assez proche des sous-routines, tudies au
Chapitre 3. Elles en diffrent toutefois en ceci que les fonctions, au terme de lexcution de
leur code, envoient une valeur vers une autre partie du programme. Ce nest quau chapitre
suivant que vous apprendrez crire des fonctions et en analyser le fonctionnement.
Pour lheure, il sagit de bien comprendre les fonctions internes, dont nous nous servirons dans tout ce chapitre. Une fonction interne est un peu comme une bote magique :
elle reoit les diverses valeurs que vous lui envoyez, et envoie en retour, ou renvoie, une
valeur unique. La Figure 7.1 illustre le fonctionnement des fonctions.
Figure 7.1
La fonction reoit
zro, une ou plusieurs
valeurs, et renvoie
une valeur unique.

Zro, un ou plusieurs arguments


Arguments

Valeur 2
Valeur 4
Valeur 1

Valeur 3

Traitement,
analyse,
calcul, etc.
Un seul
rsultat

La fonction

ition
Dfin

>
:

172

Les fonctions internes, ou fonctions intrinsques, sont des fonctions


intgres au langage Visual Basic, et qui effectuent une tche spcique,
telle quun calcul ou une E/S. Avant dutiliser une fonction interne, vous
devez en connatre le nom exact et le format. Vous ne pouvez voir le code
contenu dans une fonction interne car, comme son nom lindique, elle est
interne au langage, au mme titre quun mot cl comme For.

Prog VB6 FM1B Page 173 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

ition
Dfin

E/S signie entre/sortie (en anglais, I/O pour input/output). Par ce terme
gnrique, on dsigne toute technique permettant de recevoir (entre) des
informations dun priphrique (le clavier, par exemple) et dmettre
(sortie) des informations vers un priphrique (lcran, par exemple).

Les fonctions sont extrmement utiles ; mieux vous les comprendrez, plus vous serez
mme den tirer parti. Le chapitre suivant traite la question plus fond. Pour linstant,
retenez ceci :

En gnral, on applique une ou plusieurs valeurs la fonction ; il est rare quune


fonction ne require aucune valeur. Les valeurs appliques la fonction sont des
arguments.
ition
Dfin

Un argument est une valeur applique une fonction.

Le nom de la fonction est toujours suivi de parenthses (sauf, exception rare, pour
les fonctions qui ne requirent pas darguments).

Les arguments doivent tre placs entre les parenthses de la fonction, et spars par
des virgules sil y en a plusieurs.

Sans le savoir, vous avez dj utilis une fonction interne. (A partir de maintenant, nous
parlerons de "fonctions" tout court.) Souvenez-vous : au Chapitre 2, vous affectiez une
image au contrle Image de la feuille. Voici la ligne de code utilise (largument y a t
rduit sa plus simple expression an de ne pas alourdir lexemple) :
imgHappy.Picture = LoadPicture("\Happy.bmp")

Ici, le nom de la fonction est LoadPicture(). (Nous inclurons toujours les parenthses
dans le noms des fonctions prsentes an de bien les distinguer des noms de variables
et de contrles.) Cette fonction na quun seul argument : une chane.
Info

ntion
Atte

Si la plupart en exigent au moins un, certaines fonctions se passent de tout


argument. LoadPicture() requiert au minimum un argument de type
chane ; tous les autres arguments sont optionnels.
Vous devez toujours respecter le type et lordre dapparition des donnes
requis pour une fonction spcique. Par exemple, une fonction peut exiger
deux arguments, un entier suivi dune chane.

173

<
:

Prog VB6 FM1B Page 174 Lundi, 6. aot 2001 3:26 15

Partie II

Quenvoie ce code la fonction LoadPicture() ? Une chane contenant un nom de


chier. Que renvoie LoadPicture() ? Limage contenue dans ce chier. Dans le code du
Chapitre 2, linstruction suivante affectait cette image la proprit Picture du contrle
Image. Sans la fonction LoadPicture(), limage naurait jamais pu safcher lcran.
Ce que le contrle Image de la feuille attend, cest une image affecte la proprit
Picture pas un chemin daccs ( moins que vous nayez spci, lors de la phase de
conception, une image prcise dont le chemin daccs soit accessible dans la fentre
Proprits, et que Visual Basic affectera automatiquement au contrle).
Lorsque vous utilisez la fonction LoadPicture(), beaucoup de choses se passent.
Dabord, Visual Basic analyse les divers arguments appliqus et sassure de leur
conformit, en type et en nombre, avec les exigences spciques de la fonction. Puis
Visual Basic sassure que le chemin daccs fourni pour limage est valable. Enn, si
vous tes en rseau, Visual Basic sassure ensuite que vous avez bien accs au chier.
Et tout cela, Visual Basic le fait pour vous, sur simple excution de la fonction
LoadPicture() ! Voil bien tout lintrt des fonctions : elles vous pargnent du
boulot. Elles soccupent des dtails, et vous laissent vous concentrer sur le plus
important : lapplication elle-mme.
Info

Il existe des fonctions pour traiter les images, calculer des formules mathmatiques simples, manipuler les chiers, etc. Ce chapitre ne prsente que les
fonctions les plus simples qui sont sans doute les plus rvlatrices. Vous en
apprendrez plus au prochain chapitre.

La fonction MsgBox()
Maintenant que vous saisissez mieux la nature des fonctions, nous pouvons examiner
de prs la fonction MsgBox(). MsgBox() est une fonction qui afche une bote de
message. Comme le montre la Figure 7.2, une bote de message contient une icne, un
message, et au moins un bouton de commande. Ce bouton de commande laisse
lutilisateur le temps de prendre connaissance du message ; lorsquil aura ni sa
lecture, il cliquera sur le bouton.
ition
Dfin

>
:

174

Une bote de message est une petite bote de dialogue dont on se sert pour
informer lutilisateur tout moment de lexcution. La bote de message
peut tre ferme, grce au bouton de commande, ainsi que dplace ; elle ne
peut tre redimensionne.

Prog VB6 FM1B Page 175 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

Figure 7.2
La fonction MsgBox()
afche un message et laisse
lutilisateur indiquer
quil a ni sa lecture.

Icne

Message

Les arguments passs la fonction MsgBox() dterminent licne qui sera afche, le
message, et le nombre de boutons de commande. Ainsi, le programmeur contrle de prs
le message envoy lutilisateur. Lorsque MsgBox() sexcute, elle renvoie une valeur pour
indiquer sur quel bouton lutilisateur a cliqu. Si la bote de message contient deux
boutons, le programme interroge la valeur renvoye par la fonction MsgBox(). Il peut alors
dterminer, ventuellement laide dune instruction If, la suite des oprations, en se
fondant sur la rponse de lutilisateur.
ntion
Atte

Les versions antrieures de Visual Basic proposaient une instruction


MsgBox. A la diffrence de MsgBox(), MsgBox ne pouvait pas interprter le
clic de lutilisateur. Bien que linstruction MsgBox soit considre comme
obsolte, elle est toujours supporte pour des raisons de compatibilit.

Voici le format de la fonction MsgBox() :


intResponse = MsgBox(strPrompt[, intStyle][, strTitle])

Info

Dans ce format, deux arguments sont optionnels : intStyle et strTitle.


Les arguments en italique sont ctifs et ne servent qu prsenter la
syntaxe ; leur place, une fonction relle contient des littraux, des variables ou des arguments de contrle. Nous avons quand mme inclus les
prxes an dindiquer les types de donnes requis pour les arguments.
Comme vous le voyez, une fonction MsgBox() exige toujours un argument
chane, les deuxime et troisime arguments tant optionnels et dpendant
du style de bote de message souhait.

intResponse indique le type de lentier renvoy par la fonction. Le premier argument est
une chane (ou une chane, ou un contrle qui contient une chane) spciant le message
qui safchera dans la bote de message. Le deuxime argument dtermine le style des
boutons. Le troisime spcie le libell qui apparatra dans la barre de titre.
Une bote de message doit proposer au moins un bouton de commande. Le programme
doit pouvoir dterminer si lutilisateur a termin sa lecture. Lorsque la bote de message
safche, toute autre activit du programme est suspendue jusqu ce que lutilisateur

175

<
:

Prog VB6 FM1B Page 176 Lundi, 6. aot 2001 3:26 15

Partie II

clique sur lun des boutons de commande. Ds que lutilisateur clique, le code poursuit
son excution la ligne qui suit.
ce
Astu

Si le message est trop long pour tenir sur une seule ligne de la bote de
message, Visual Basic procde automatiquement la rupture de ligne (proprement et sans couper les mots).

Imaginons un programme qui attend lordre de lutilisateur pour imprimer un rapport.


Le message pourrait tre le suivant :
intResponse = MsgBox("Cliquez pour lancer limpression du rapport")

Ici, vous devez avoir dclar la variable intResponse dans la section de dclarations de
la procdure (ou bien dans la section de dclarations du module ; mais vous navez pas
encore beaucoup dexprience dans la dclaration des variables globales). A dfaut de
deuxime argument, comme cest le cas ici, Visual Basic afche par dfaut le bouton
de commande OK dans la bote de message. Ainsi, puisque cette fonction MsgBox() nafche quun seul bouton de commande, laffectation dentier ne vous aide pas beaucoup.
Mais la valeur renvoye par la fonction pourra aussi bien tre affecte quelque chose.
Figure 7.3
Les fonctions
MsgBox() afchent
au moins un bouton
de commande.

Nom du projet

La Figure 7.3 montre galement ce qui se passe si vous ne spciez pas tous les arguments de MsgBox() : Visual Basic afche par dfaut le nom du projet dans la barre de
titre de la bote de message. Il y aura toujours un nom plus appropri que celui-l ; le
premier argument vous permet de le spcier, que nous tudierons dans quelques lignes.
Pour un contrle plus serr des boutons, vous pouvez utiliser une valeur entire (ou une
variable, ou un contrle) pour spcier, dans le premier argument optionnel, le style des
boutons. Avec un seul bouton, la valeur renvoye ne sert pas grand-chose, quoiquelle
soit invitable. Lorsque plusieurs valeurs sont en prsence, la valeur renvoye correspond au bouton sur lequel lutilisateur a cliqu. Cette information peut tre reprise dans
une instruction If ou Select Case, pour que sexcutent les sections du code charges
de la gestion de chaque bouton.

>
:

176

Prog VB6 FM1B Page 177 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

Le Tableau 7.1 prsentent les valeurs utilisables comme premier argument optionnel de
MsgBox(), pour spcier le style du bouton.
Tableau 7.1 : Valeurs entires permettant de spcier le style des boutons
Valeur

Constante nomme

Description

vbOKOnly

Bouton OK

vbOKCancel

Boutons OK, Annuler

vbAbortRetryIgnore

Boutons Abandonner, Ressayer, Ignorer

vbYesNoCancel

Boutons Oui, Non, Annuler

vbYesNo

Boutons Oui, Non

vbRetryCancel

Boutons Ressayer, Annuler

La Figure 7.4 montre la bote de message gnre par linstruction suivante :


intResponse = MsgBox("Prt pour limpression ?", 1)

Figure 7.4
La suite du code
sexcute selon
le bouton sur lequel
lutilisateur clique.

Largument 1 spcie que les boutons OK et Annuler doivent apparatre sur la bote de
message. Cette combinaison est utile pour les oprations que votre programme
sapprte effectuer, par exemple imprimer un rapport, car lutilisateur peut cliquer sur
OK pour indiquer que limprimante est prte, ou sur Annuler pour dcommander
limpression.
Le Tableau 7.2 prsente les valeurs que renvoie la fonction MsgBox(). La bote de
message prcdente pourrait tre gre par linstruction If suivante (o les dtails sont
remplacs par des commentaires pour plus de simplicit) :
If (intResponse = 0) Then

Ici, le code charg de grer

le clic sur le bouton OK.

177

<
:

Prog VB6 FM1B Page 178 Lundi, 6. aot 2001 3:26 15

Partie II

Else

Ici, le code charg de grer

le clic sur le bouton Annuler.


End If

ntion
Atte

Naturellement, si la bote de message afchait dautres boutons, linstruction If aurait interroger des valeurs supplmentaires. Pour de multiples
valeurs renvoyes, une instruction Select Case serait probablement plus
approprie.

Tableau 7.2 : Les valeurs renvoyes indiquent quels boutons ont t cliqus
Valeur

Constante nomme

Description

vbOK

Lutilisateur a cliqu sur OK

vbCancel

Lutilisateur a cliqu sur Annuler

vbAbort

Lutilisateur a cliqu sur Abandonner

vbRetry

Lutilisateur a cliqu sur Ressayer

vbIgnore

Lutilisateur a cliqu sur Ignorer

vbYes

Lutilisateur a cliqu sur Oui

vbNo

Lutilisateur a cliqu sur Non

Info

Si lutilisateur appuie sur la touche Echap, MsgBox() renvoie la mme


valeur et Visual Basic ragit de la mme faon que sil avait cliqu sur le
bouton Annuler.

Quel que soit le nombre de boutons afchs sur une bote de message, lutilisateur ne
peut cliquer que sur un seul. Ds quil clique sur lun des boutons, la bote de message
se referme, et MsgBox() renvoie la valeur correspondante.

Les constantes nommes


Remarquez, aux Tableaux 7.1 et 7.2, la colonne "Constantes nommes". Visual Basic
supporte des centaines de constantes nommes, utilises dans les procdures la place
des littraux.

>
:

178

Prog VB6 FM1B Page 179 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

ition
Dfin

Les constantes nommes sont des noms internes Visual Basic, qui correspondent des valeurs prdnies. Les constantes nommes commencent
gnralement par le prxe vb. A la diffrence des variables dclares, les
constantes nommes ne peuvent changer de valeur (do le nom de constantes). Mais vous pouvez recourir aux constantes nommes comme arguments
dune fonction, la place des littraux.

Les constantes nommes rendent les programmes plus lisibles et plus comprhensibles.
Par exemple, les instructions suivantes sont quivalentes, mais, dans la seconde, la
mention du bouton de commande est explicite :
intResponse = MsgBox("Prt pour limpression ?", 1)
intResponse = MsgBox("Prt pour limpression ?", vbOK)

Vous pouvez, dans le cours de lcriture, recourir aux constantes nommes sans avoir
consulter un manuel de rfrence ni laide en ligne, et sans avoir mmoriser des noms
abracadabrants. Pour chaque fonction que vous utilisez, Visual Basic propose automatiquement une liste des constantes nommes possibles pour cette fonction. Lorsque, par la
suite, vous maintiendrez ou modierez votre programme, vous devinerez sans peine le
style de la bote de message. Si, au lieu de constantes nommes, votre code prsente des
valeurs littrales, il faudra vous remmorer le sens de ces valeurs avant de modier la
bote de message.
ce
Astu

Utilisez les constantes nommes partout o cest possible. Elles ne


rclament pas plus de saisie, puisque Visual Basic vous propose une liste
contextuelle mesure que vous entrez les arguments.

Les boutons par dfaut


Le premier bouton dune bote de message est toujours le bouton par dfaut. Visual
Basic met automatiquement le focus sur le premier bouton (le plus gauche), et le
dclenche ds que lutilisateur appuie sur Entre.
Vous pouvez intervenir sur lordre dapparition des boutons sur la bote de message. Il
suft, pour cela, dajouter au bouton de commande les arguments adquats (voir
Tableau 7.3).
En dpit de leur longueur, les constantes nommes sont plus faciles maintenir que les
littraux. Considrez linstruction suivante :
intResponse = MsgBox("Limprimante est-elle allume ?",
vbYesNoCancel + vbDefaultButton1)

179

<
:

Prog VB6 FM1B Page 180 Lundi, 6. aot 2001 3:26 15

Partie II

Tableau 7.3 : Ces arguments permettent de spcier le bouton par dfaut


Valeur

Constante nomme

Description

vbDefaultButton1

Premier bouton par dfaut

256

vbDefaultButton2

Deuxime bouton par dfaut

512

vbDefaultButton3

Troisime bouton par dfaut

ce
Astu

Quand la bote de message autorise une opration risque, comme la


suppression dun chier, il est recommand de spcier Annuler comme
bouton par dfaut. Ainsi, si lutilisateur appuie sur Entre par erreur, le
bouton Annuler est dclench, et lopration nest pas effectue ; ce qui
aurait t le cas si OK tait rest le bouton par dfaut.

Les icnes
En adjoignant une valeur supplmentaire au deuxime argument, vous spciez licne qui
apparatra gauche du message. Comme nous navons pas encore touch cette partie de
largument, nos botes de message nafchaient pas dicne.
Info

En vrit, la fonction MsgBox() supporte quelques autres arguments optionnels. Mais, rarement utiliss dans les programmes simples, ils ne seront pas
prsents ici.

Le Tableau 7.4 prsente les constantes nommes utilisables et les icnes correspondantes.
Tableau 7.4 : Valeurs spciant licne de la bote de message

>
:

Valeur

Constante nomme

Description

16

vbCritical

Erreur critique

32

vbQuestion

Question

180

Icne

Prog VB6 FM1B Page 181 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

Tableau 7.4 : Valeurs spciant licne de la bote de message (suite)


Valeur

Constante nomme

Description

48

vbExclamation

Avertissement

64

vbInformation

Information

Icne

Les instructions suivantes gnrent une bote de message complte. Tous les arguments
sont spcis, donc tous les lments apparaissent. Le rsultat est reproduit en
Figure 7.5.
intResponse = MsgBox("Limprimante est-elle allume ?", vbYesNoCancel
+ vbQuestion + vbDefaultButton2, "Une petite question")

Figure 7.5
Une bote de message
complte.

La fonction InputBox()
La fonction MsgBox() permet denvoyer des messages lutilisateur, et donne la possibilit celui-ci de rpondre en cliquant sur des boutons de commande. La suite du code
sexcute en fonction du bouton slectionn. Naturellement, sil ne sagit que dun
message dinformation, un seul bouton de commande est requis, pour que lutilisateur
puisse refermer la bote aprs consultation.
Il arrive que la question poser soit si simple, et exige une rponde si rapide, quun
contrle zone de texte serait absolument hors de propos. On peut alors faire appel la
cousine de MsgBox() : InputBox(). La fonction InputBox() afche une bote de message
qui permet lutilisateur de rpondre "dans le texte". Cette combinaison dune bote de
message et dune sorte de zone de texte est appele bote dentre. La Figure 7.6 en
montre un exemple.

181

<
:

Prog VB6 FM1B Page 182 Lundi, 6. aot 2001 3:26 15

Partie II

ition
Dfin

Une bote dentre est une bote de message qui inclut un champ. Dans ce
champ, lutilisateur peut saisir la rponse une question qui lui est pose.
Tout comme les botes de message, les botes dentre sont dplaces et
fermes, mais pas redimensionnes. Contrairement aux botes de message, en
revanche, les botes dentre ne vous laissent pas le choix des boutons de
commande. Seuls les boutons OK et Annuler apparaissent dans une bote
dentre.

Figure 7.6
La bote dentre
afche un titre,
un message
et un champ de saisie.

Les bote dentre nafchent pas non plus dicne, contrairement aux botes de
message. Voici le format de la fonction InputBox() :
strAnswer = InputBox(strPrompt[, strTitle][, strDefault][, intXpos]
[, intYpos])

InputBox() renvoie une valeur de type Variant, qui peut toujours tre traite comme une
chane. La fonction InputBox() peut donc tre affecte une chane, et utilise comme
une valeur de chane. (Le type Variant autorise galement laffectation de la valeur
renvoye une proprit de contrle.) La chane renvoye est la rponse saisie par
lutilisateur dans le champ. Seul le premier argument est requis. Voici une description de
tous les arguments :

>
:

strPrompt. Le message ou la question (prompt, en anglais) qui safche dans la


bote dentre. La longueur maximale de strPrompt est de 1 024 caractres. Tourner
toujours le message ou la question de sorte que lutilisateur sache quoi rpondre.

strTitle. Le texte qui apparat dans la barre de titre. A dfaut de titre, Visual Basic
afche le nom du projet.

strDefault. Contenu par dfaut du champ de saisie. Lutilisateur peut accepter cette
rponse par dfaut, qui sera alors la valeur renvoye ; il peut la modier, ou saisir
une rponse entirement nouvelle. On se sert dune valeur par dfaut lorsque la
rponse est prvisible et nattend que dtre valide par le bouton OK.

intXpos, intYpos. Coordonnes en twips de la bote dentre. Il est prfrable,


quand la question pose renvoie dautres feuilles ou botes de dialogue dj

182

Prog VB6 FM1B Page 183 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

lcran, de ne pas afcher la bote dentre par-dessus. Si vous ne spciez pas de


coordonnes, Visual Basic afche par dfaut la bote dentre au centre de lcran.
Info

Un twip vaut 1/567 de centimtre et 1/1440 de pouce.

Voici linstruction qui a gnr la bote dentre de la Figure 7.6 :


strAnswer = InputBox("Quel est le nom du client ?",
"Indentit client")

Pour afcher une valeur par dfaut et positionner la bote dentre un point prcis de
lcran, linstruction serait :
strAnswer = InputBox("Quel est le nom du client ?",
"Indentit client", "Jean Bon", 500, 750)

Le programme doit pouvoir dterminer si lutilisateur a cliqu sur OK (ou appuy sur
Entre, OK tant le bouton par dfaut) ou sil a cliqu sur Annuler. Si lutilisateur clique
sur Annuler au lieu dentrer une nouvelle valeur ou de valider par OK la valeur par
dfaut, la fonction InputBox() renvoie une chane nulle, cest--dire "".
Linterrogation du rsultat pourrait alors prendre la forme suivante :
If (strAnswer <> "") Then

Code charg de grer lentre utilisateur


Else

Code charg de grer le clic sur Annuler


End If

ce
Astu

Rappelez-vous que Visual Basic supporte la valeur spciale Empty, qui peut
prendre la place de "" dans linstruction. Avec le mot cl Empty, le code est
plus clair. Notre instruction If ressemblerait alors ceci :
If (strAnswer <> Empty) Then

Imaginons que lutilisateur cherche calculer le chiffre de vente total dun agent commercial particulier. Votre programme afche une bote dentre pour demander le nom de
lemploy. Si lutilisateur saisit le nom et valide sa rponse par OK, le code correspondant
sexcute et calcule le chiffre de vente demand. Si, en revanche, lutilisateur choisit
Annuler, le programme ignore le code charg du calcul.

183

<
:

Prog VB6 FM1B Page 184 Lundi, 6. aot 2001 3:26 15

Partie II

Gestion du clavier
Les contrles et botes dentre ne peuvent sufre traiter toutes les entres clavier.
Le programme doit tre en mesure de rpondre des touches spciques au moment o
lutilisateur les frappe. Comme nous lavons vu, Windows passe votre programme les
lments qui sont de son ressort an quil puisse les traiter. Il sagit des vnements
KeyPress, KeyDown et KeyUp. Ils rpondent des combinaisons de touches du genre
Alt-G ou Maj-P, ainsi quaux touches individuelles. Lorsquun vnement clavier se
produit, ces combinaisons sont testes.
Une fois que lapplication reoit une entre clavier, elle modie cette entre, ou bien
lignore sil ne sagit pas de la frappe attendue. Le traitement des vnements clavier
permettent de dclencher la fermeture dun cran de dmarrage, de valider une entre,
de jouer des jeux, etc.

Les vnements clavier


Lvnement KeyPress a lieu lorsque lutilisateur appuie sur une quelconque touche
parmi les suivantes :

Lettres capitales et minuscules ;

Chiffres ;

Signes de ponctuation ;

Entre, Tab et Retour arrire.

Lvnement KeyPress reconnat la plupart des caractres ASCII. Font toutefois exception la touche de tabulation, les touches ches et autres caractres spciaux dont le code
ASCII est compris entre 0 et 31. KeyPress permet de dterminer avec exactitude la
touche que lutilisateur a frappe. Si lutilisateur appuie sur la touche "A", KeyPress
renvoie "A", etc.
Info

Lvnement KeyPress a lieu lorsque la touche est enfonce. Si lutilisateur


laisse son doigt dessus, lvnement ne se rpte que si le clavier est paramtr
en mode "refrappe".

Un vnement, nous lavons vu, est toujours associ un objet tel quun bouton de
commande ou une feuille. Lvnement KeyPress est associ lobjet qui, au moment
de la frappe, a le focus. Si aucun objet na le focus, KeyPress sapplique la feuille. (La
proprit KeyPreview induit une exception cela, que nous expliquerons dans la section
sur la priorit des rponses, plus loin dans ce chapitre.)

>
:

184

Prog VB6 FM1B Page 185 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

ntion
Atte

Les vnements clavier ne doivent pas tre utiliss comme des raccourcis
clavier pour les menus. Le Crateur de menus soccupe dattribuer les
raccourcis clavier selon vos spcications, et gre automatiquement la
rponse en dclenchant la procdure vnementielle Click. Dans de telles
conditions, linterrogation des vnements clavier empcherait le programme
de rpondre aux slections de menu.

Les procdures vnementielles KeyPress incluent toujours un argument de type


Integer. Si vous deviez crire une procdure vnementielle KeyPress pour un contrle
zone de texte, voici ce que cela donnerait :
Private Sub Text1_KeyPress (KeyAscii As Integer)

Ici, le code charg dinterroger

et de traiter les vnements clavier.

End Sub

Largument KeyAscii est un entier correspondant au code ASCII de la touche frappe.


Vous pouvez, laide dinstructions If ou Select Case, vrier quil sagit bien de la
touche attendue.
KeyPress effectue une autre tche trs utile : changer lentre utilisateur. A proprement
parler, lvnement KeyPress se produit entre le moment o lutilisateur frappe la touche
et le moment o le contrle destinataire reoit la valeur. Bien entendu, cet "intermde"
demeure imperceptible lexcution. Ainsi, un contrle zone de texte qui a le focus
afche immdiatement le caractre correspondant la touche frappe. Mais la procdure
vnementielle KeyPress de ce contrle peut aussi bien changer le caractre en cours de
route, comme le montre le code suivant :
Private Sub txtTryIt_KeyPress(KeyAscii As Integer)

Changer le caractre "A" en caractre "B".

If KeyAscii = 65 Then
65 est le code ASCII pour "A".

KeyAscii = 66
66 est le code ASCII pour "B".

End If
End Sub

Si le contrle txtTryIt a le focus, la zone de texte accepte et afche les caractres que
lutilisateur entre au clavier une exception prs. Car linstruction If change la
valeur KeyAscii de la lettre capitale "A" (ASCII 65) en la valeur de la lettre capitale "B"
(ASCII 66). Lorsque lutilisateur tape "A", la zone de texte afche "B". Lvnement
KeyPress intercepte la frappe avant que le contrle zone de texte ne reoive la valeur
KeyAscii.

185

<
:

Prog VB6 FM1B Page 186 Lundi, 6. aot 2001 3:26 15

Partie II

ce
Astu

Recherchez "Key Code Constants" dans laide en ligne de Visual Basic. Vous
y trouverez la liste des constantes nommes permettant dinterroger
lactivit du clavier. On peut ainsi rpondre la touche Retour arrire en
vriant que KeyAscii vaut vbKeyBack, la touche Entre avec vbKeyReturn, ou la touche Tab avec vbKeyTab. Rappelez-vous que KeyPress ne
peut rpondre qu ces trois touches, ainsi quaux lettres, nombres et signes
de ponctuation. Si les zones de texte reconnaissent dautres touches (telles
que Origine et Fin), KeyPress nest able que pour Entre, Tab et Retour
arrire.

KeyPress permet dinterroger une vaste gamme de frappes. Lvnement KeyDown est
plus spcique. Tout comme KeyPress, il a lieu lorsque lutilisateur appuie sur une
touche. Mais KeyDown offre un relev plus dtaill donc un peu plus complexe de
lactivit du clavier. Par exemple, KeyPress renvoie une valeur ASCII diffrente, selon
que lutilisateur frappe la capitale "T" ou la minuscule "t". KeyDown renvoie la mme
valeur pour les deux, mais il lui associe une autre valeur : cest largument dtat, qui
indique ltat de la touche Maj.
Info

Lvnement KeyDown a lieu lorsque lutilisateur appuie sur une touche. Les
deux vnements KeyDown et KeyPress peuvent donc se produire en mme
temps (pour une touche ASCII).

ce
Astu

Pour interroger une frappe ASCII, KeyPress est prfrable KeyDown,


parce que plus simple programmer.

Voici les lignes dencadrement dune procdure vnementielle KeyDown :


Private Sub txtTryIt_KeyDown(KeyCode As Integer, Shift As Integer)

Ici, le code de gestion du clavier.

End Sub

KeyCode reprsente la touche frappe, tandis que largument Shift dtermine ltat de la
touche Maj (qui peut aussi bien tre Ctrl ou Alt). KeyCode renvoie toujours lquivalent
en lettre capitale de la touche frappe. Ainsi, mme si lutilisateur entre un "t" minuscule, largument KeyCode vaudra 84 (code ASCII de la capitale "T").
ce
Astu

>
:

186

Il faut se montrer trs vigilant avec KeyDown, car le fait que le style soit ignor
peut entraner des confusions. Pour la frappe dune touche numrique, par
exemple, largument Shift doit imprativement tre interrog. Selon que
lutilisateur ait ou non enfonc la touche Maj (ce quindique largument

Prog VB6 FM1B Page 187 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

Shift), le caractre afcher sera le chiffre de la touche, ou le caractre


secondaire inscrit en dessous du chiffre (par exemple, "9" avec Maj, "" sans
Maj).

Lavantage principal de KeyDown sur KeyPress est que, tout Shift mis part, KeyDown
peut interroger nimporte quelle frappe incluant les touches ches, Origine, Fin, etc.
Nous vous invitons de nouveau consulter laide en ligne de Visual Basic au sujet des
constantes nommes relatives au clavier.
Ltat de shift indique si une touche de contrle (Maj, Ctrl, Alt, ou aucune des trois) a
t frappe en mme temps quune autre. Le modle binaire interne de largument Shift
dtermine ltat de shift. Pour interroger ltat de shift, vous devez utiliser loprateur
And avec la valeur 7. (Ce type particulier de And est dit binaire bitwise, en anglais ,
par opposition loprateur logique And classique, qui procde des comparaison.) Le
Listing 7.1 donne un exemple dinterrogation de ltat de shift.
Listing 7.1 : Code pour tester ltat de shift

1: Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)


2:
Dim intShiftState As Integer
3:
intShiftState = Shift And 7 "And" binaire
4:
Select Case intShiftState
5:
Case 1
6:
Code pour les combinaisons Maj
7:
Case 2
8:
Code pour les combinaisons Ctrl
9:
Case 3
10:
Code pour les combinaisons Alt
11:
Case 4
12:
Code pour les combinaisons Maj-Ctrl
13:
Case 5
14:
Code pour les combinaisons Maj-Alt
15:
Case 6
16:
Code pour les combinaisons Ctrl-Alt
17:
Case 7
18:
Code pour les combinaisons Maj-Ctrl-Alt
19:
End Select
20: End Sub

Lvnement KeyUp a lieu lorsque lutilisateur relche la touche frappe. Pour vrier la
relche dune touche spcique (comme la touche A, si lutilisateur relche la "moiti"
de la combinaison Maj-A), il faut interroger les arguments passs KeyUp(). KeyUp a
donc lieu aprs les vnements KeyDown et KeyPress.

187

<
:

Prog VB6 FM1B Page 188 Lundi, 6. aot 2001 3:26 15

Partie II

Le code suivant montre la procdure vnementielle dune zone de texte. Il sagit de


convertir les lettres minuscules entres par lutilisateur en lettres capitales :

1:
2:
3:
4:
5:
6:

Private Sub txtTry_KeyPress(KeyAscii As Integer)


Convertir les minuscules en capitales
If (KeyAscii >= 97) And (KeyAscii <= 122) Then
KeyAscii = KeyAscii - 32
Passage en capitales
End If
End Sub

Comme vous pourrez le vrier lAnnexe C, la plage de valeurs ASCII des lettres
minuscules va de 97 ("a") 122 ("z"). La diffrence de valeur ASCII entre une lettre
capitale donne et son quivalent minuscule est de 32. Ainsi, dans notre code, la procdure vnementielle KeyPress reoit la valeur ASCII de chaque lettre minuscule tape,
et lui soustrait 32 pour obtenir la capitale correspondante.
ntion
Atte

Nutilisez pas les vnements clavier pour crire vos propres routines MaskedEdit. Contentez-vous dappuyer sur Ctrl-T pour ajouter la Bote outils
le contrle Microsoft Masked Edit Control 6.0. (Le Chapitre 9 explique plus
en dtail comment lon ajoute des outils la Bote outils.) Le contrle
MaskEdit permet de crer des masques de saisie, tels que des champs de
numros de tlphone dans lesquels les tirets safchent automatiquement.
Essayez dcrire vos propres routines cet effet, ce serait rinventer la roue,
et gaspiller un temps prcieux.

Linstruction SendKeys
Linstruction SendKeys permet denvoyer des frappes clavier depuis le code, exactement
comme si lutilisateur appuyait sur les touches. Par exemple, SendKeys est utile pour
contrler le placement du curseur texte dans une zone de texte : il suft de "simuler" la
frappe des touches Origine ou Fin. Voici la syntaxe de SendKeys :
SendKeys strKeystrokes[, blnWait]

strKeystrokes sera un littral chane, tel que "Gibolin SARL", dans les cas o vous
entrez les valeurs la place de lutilisateur. Loption blnWait est gnralement omise. Il
sagit dun boolen qui, sil renvoie False (valeur par dfaut si blnWait est omis),
sassure que le contrle revient la procdure en excution ds que les frappes sont
reues. Si blnWait est True, le systme traite les frappes avant de poursuivre lexcution
du code, de sorte que les vnements clavier sont actifs pendant la frappe.

>
:

188

Prog VB6 FM1B Page 189 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

Dans une instruction SendKeys, il faut entourer daccolades ({ et }) les caractres


suivants : ^, +, %, ~ (tilde) et les parenthses. Ainsi, pour envoyer via SendKeys la chane
7 + 6, il faudrait crire :
SendKeys "7 {+} 6"

Les touches de fonction et les touches spciales, comme Origine, doivent tre envoyes
par SendKeys et entre accolades. Par exemple, pour envoyer au programme lquivalent
dune frappe sur la touche Origine, vous devrez utiliser le littral {Home}, comme suit :
SendKeys "{Home}"

Recherchez SendKeys dans laide en ligne de Visual Basic pour connatre les constantes
nommes affectes chaque touche spciale.

Info

SendKeys

ne permet pas denvoyer la touche Impr cran.

Priorit des rponses


Lorsque lutilisateur appuie sur une touche, la feuille ou le contrle qui a le focus reoit la
frappe. Si aucun contrle na le focus, cest la feuille qui capte lvnement clavier. Si, en
revanche, un contrle a le focus, lvnement peut lui tre envoy comme la feuille, selon
la spcication de la proprit KeyPreview de la feuille.
Si sa proprit KeyPreview est True, la feuille reoit lvnement clavier. Si donc vous
avez crit deux procdures vnementielles frmAcct_KeyDown() et txtEntry
_KeyDown(), et que la proprit KeyPreview de la feuille soit True, frmAcct_KeyDown()
sexcute lorsque lutilisateur appuie sur une touche. Si la proprit KeyPreview de la
feuille est False, cest txtEntry_KeyDown() qui sexcute (si tant est que la zone de
texte txtEntry ait le focus ce moment-l).

Contrles supplmentaires
Botes de message et botes dentre offrent un moyen commode denvoyer et de
recevoir des informations, par lintermdiaire de fentres qui souvrent et se ferment
volont. Les botes de message et dentre forment un complment intressant aux
labels et zones de texte, parce quelles afchent et recueillent les entres dune manire
diffrente.

189

<
:

Prog VB6 FM1B Page 190 Lundi, 6. aot 2001 3:26 15

Partie II

Il vous reste dcouvrir dautres contrles, qui permettent de recevoir des entres et
laissent lutilisateur plusieurs choix. Ce sera lobjet de la suite du chapitre. Au terme de
votre lecture, vous serez en mesure dintgrer vos applications plusieurs nouveaux
contrles.

Les cases cocher


La case cocher propose une option lutilisateur. Une case cocher peut apparatre
seule ou au milieu dautres cases cocher. Lorsque lutilisateur clique dessus, la case se
coche pour indiquer que loption est slectionne. Si lutilisateur clique de nouveau sur la
case, loption est dslectionne et la coche disparat.
ition
Dfin

Une case cocher (check box, en anglais) est une option propose sur la
feuille. La case est coche lorsque loption est slectionne, dcoche
lorsque loption est dslectionne. Les cases cocher offrent lutilisateur
le choix entre deux valeurs possibles : True/False, Enabled/Disabled, etc.

Une case cocher est soit coche, soit dcoche. Value est la proprit du contrle CheckBox qui dtermine ltat de la case. Si la proprit Value vaut 1, loption est slectionne
et la case est coche. Si Value vaut 0, loption est dslectionne et la case dcoche.
ntion
Atte

ce
Astu

Les valeurs 1 ou 0 de la proprit Value correspondent respectivement des


valeurs True ou False pour un mme contrle case cocher. Si vous attendez
de lutilisateur quil rponde par oui ou non, inutile de lui fournir une case
cocher pour chaque rponse. Dailleurs, les cases cocher servent plus indiquer quune option est slectionne qu donner une rponse oui ou non. La
Figure 7.7 reprsente une feuille contenant trois cases cocher. Chaque
contrle peut tre coch ou dcoch, selon les slections de lutilisateur et selon
les valeurs par dfaut de la proprit Value, spcies par le programmeur
lors de la conception.
En affectant un raccourci clavier (tel que Alt-G) la proprit Caption de la
case cocher, vous permettez lutilisateur de slectionner ou de dslectionner loption partir du clavier.

Ltat dune case cocher peut tre interrog par une instruction If du format suivant :
If (chkUnder.Value = 1) Then

Code charg de grer ltat "coch"


Else

Code charg de grer ltat "dcoch"


End If

>
:

190

Prog VB6 FM1B Page 191 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

Figure 7.7
Les cases cocher
offrent lutilisateur
le choix entre diverses
options.
Contrles
case
cocher

Contrle qui a le focus

Rappelez-vous que votre feuille peut contenir plusieurs cases cocher. Il est possible,
par une programmation fastidieuse, de faire en sorte quune seule case soit coche la
fois. Mais Visual Basic dispose dun moyen plus simple et plus efcace pour offrir des
options mutuellement exclusives. Cest ce que nous allons maintenant dcouvrir.

Les boutons doption


Les boutons doption donnent lutilisateur la possibilit de choisir parmi plusieurs
options. A linverse des cases cocher, en revanche, un seul bouton doption peut tre
slectionn la fois. La Figure 7.8 montre une feuille contenant trois boutons doption,
dont un seul est slectionn. Si lutilisateur clique sur un bouton doption, Visual Basic
dslectionne automatiquement tous les autres.
Figure 7.8
Les boutons doption
offrent un choix
unique parmi
plusieurs options.

Option slectionne

191

<
:

Prog VB6 FM1B Page 192 Lundi, 6. aot 2001 3:26 15

Partie II

ition
Dfin

Un bouton doption ne permet lutilisateur de choisir quune seule option


la fois. Les boutons doption sont parfois nomms "boutons radio", par
analogie avec le systme de boutons des anciens autoradios.

La procdure vnementielle Form_Load() vous permet de dnir, lexcution, la


proprit Value de tous les boutons comme False. Lorsque la feuille safche, aucun
des boutons doption ne sera slectionn. Mais, ds que lutilisateur clique sur un
bouton doption, ce bouton reste slectionn jusqu ce que lutilisateur en slectionne
un autre. Si vous affectez un raccourci clavier la proprit Caption des boutons
doption, lutilisateur pourra slectionner loption correspondante sans se servir de la
souris.
ntion
Atte

Ne placez jamais un bouton doption tout seul sur une feuille, car ce bouton,
une fois slectionn, ne pourrait plus tre dslectionn.

Le contrle Frame et les groupes doptions


Lutilisateur peut slectionner plusieurs boutons doption la fois sur une mme feuille,
condition que ces boutons rsident dans des zones spares, appeles frames. Les
frames regroupent les boutons doption.
ition
Dfin

Le frame, parfois dit contrle conteneur, regroupe des contrles dans une zone
distincte de la feuille elle-mme. Vous pouvez ainsi proposer dans une mme
fentre plusieurs jeux de boutons doption, chaque jeu tant bien circonscrit
dans son frame. Les frames ne sappliquent pas, dailleurs, quaux boutons
doption ; ils peuvent recevoir tous les types de contrles que vous voudrez
regrouper.

La Figure 7.9 montre une feuille dont deux boutons doption sont slectionns. Cela
nest possible que parce que la feuille contient dun ct trois boutons, de lautre un
frame avec deux autres boutons. Sans le frame, un seul des cinq boutons doption
pourrait tre slectionn.
Info

>
:

192

Faire
Nhsitez pas placer sur la feuille autant de frames que ncessaire an
doffrir diffrentes catgories doptions dans une mme fentre.

Prog VB6 FM1B Page 193 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

Figure 7.9
En plaant un frame
sur la feuille,
vous permettez
lutilisateur
de slectionner
un bouton dans
chaque groupe.

Frame

Les frames sont trs faciles crer. Voici les proprits utiles cet effet :

BorderStyle. Les deux valeurs possibles sont 0-None et 1-Fixed single. Comme
pour la plupart des proprits de ce type, vous pouvez affecter les valeurs 0 ou 1 au
moyen dinstructions daffectation, lexcution, ou bien spcier une valeur par
dfaut dans la fentre Proprits, lors de la conception. Avec la valeur 0, le frame ne
prsentera pas de bordure ni de libell, et la sparation davec le reste de la feuille
sera donc invisible. Un frame sans bordure reste un frame, et les boutons doption
quil contient restent indpendants des autres boutons doption de la feuille ; mais
lutilisateur prouvera quelque difcult discerner les diffrents groupes.

Caption. Dnit le libell qui apparatra en haut du frame.

Font. Dnit les attributs de police du contenu de Caption.

Avant dattaquer le chapitre suivant, nous vous proposons un troisime Projet bonus,
"Entres utilisateur et logique conditionnelle". Ce projet vous invite crer une application complte, incluant notamment des boutons doption regroups en frame. Vous
apprendrez ainsi disposer proprement les frames sur la feuille, et y intgrer les divers
boutons doption. En effet, pour que Visual Basic reconnaisse que les boutons doption
font partie du frame et non de la feuille elle-mme, vous devez les placer par-dessus le
frame.

193

<
:

Prog VB6 FM1B Page 194 Lundi, 6. aot 2001 3:26 15

Partie II

En rsum
Ce chapitre vous a prsent les fonctions internes. Vous en dcouvrirez de nouvelles en
progressant dans cet ouvrage. Il suft dappeler les fonctions, de leur appliquer des arguments et de traiter les valeurs renvoyes pour effectuer des oprations complexes sans
avoir crire de codes fastidieux.
La fonction MsgBox() permet dadresser des messages lutilisateur par le biais de petites
fentres. En guise de rponse, lutilisateur ne peut que cliquer sur un bouton de
commande. Les botes de message permettent notamment de demander lavis de lutilisateur avant deffectuer une opration quelconque ; pour dcommander lopration, il lui
suft de cliquer sur Annuler. L o la fonction MsgBox() se contente dafcher des
messages, la fonction InputBox() permet de poser des questions lutilisateur et de
recevoir des rponses dans une mme fentre.
Le programme peut galement obtenir des informations de lutilisateur par le biais
dautres contrles, tels que les cases cocher ou les boutons doption (lesquels peuvent
tre regroups en frames). Le code sexcute en fonction des options slectionnes par
lutilisateur.
Le prochain chapitre pousse un peu plus loin ltude de la structure des programmes
Visual Basic. Vous approfondirez la notion de variables locales et globales, et
dcouvrirez peu prs toutes les fonctions internes que vous pouvez utiliser.

Questions-rponses
Q Pourquoi une fonction interne ne peut-elle renvoyer plus dune valeur ?
R On pourrait dire que la fonction interne devient sa valeur renvoye. Une fonction
interne marche comme une expression : elle produit une valeur, et une seule. On
passe la fonction interne une valeur ou un ensemble de valeurs quelle doit traiter
ou combiner dune faon ou dune autre. La valeur renvoye est le rsultat de ce
traitement ou de cette combinaison. Par exemple, la fonction reoit un argument
chane qui spcie le chemin daccs dune image ; la valeur renvoye nest autre
que cette image elle-mme, qui pourra tre affecte un contrle ou une proprit
graphique.
De par leur nature, les fonctions internes peuvent tre utilises partout o peuvent
tre utilises les valeurs quelles renvoient. Ainsi, plutt que dafcher un littral
chane ou une variable dans une bote de message, vous pouvez appeler une fonction
InputBox() en lieu et place de la chane afcher. En procdant ainsi, vous imbriquez une fonction dans une autre. La fonction intrieure, InputBox(), sexcute en

>
:

194

Prog VB6 FM1B Page 195 Lundi, 6. aot 2001 3:26 15

Chapitre 7 : Support avanc du clavier et de lcran

premier et obtient une chane de lutilisateur ; puis MsgBox() sexcute son tour et
afche la chane reue dans une bote de message. Voici un exemple :
intResp = MsgBox(InputBox("Quel est votre nom ?"))

Quand aurez-vous imbriquer une fonction InputBox() dans une fonction


MsgBox() ? Peut-tre jamais. Mais cette instruction daffectation montre bien que la
fonction interne, ici InputBox(), "devient" en quelque sorte sa valeur renvoye, et
peut tre immdiatement utilise comme telle dans le code.
Q Quelles sont les autres fonctions internes disponibles ?
R Des fonctions internes sont disponibles pour traiter des nombres, des chanes, et
autres types de donnes. Vous les dcouvrirez dans le chapitre suivant, "Sous-routines
et fonctions".

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront la mise en pratique de ce que vous avez appris. Il convient de
comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant.
Vous trouverez ces rponses lAnnexe A.

Quiz
1. Quelle est la diffrence entre un argument et une fonction interne ?
2. On peut spcier le bouton par dfaut dune bote de message. Vrai ou faux ?
3. Quel mot cl est quivalent la chane nulle "" ?
4. Les Tableau 7.1, 7.2 et 7.3 dcrivent trois arguments diffrents qui peuvent tre utiliss avec la fonction MsgBox(). Vrai ou faux ?
5. Quapparat-il par dfaut dans la barre de titre des botes de message et dentre si
vous ne spciez pas largument correspondant ?
6. Quelle est la diffrence essentielle entre une case cocher et un bouton doption ?
7. On peut afcher des boutons doption sur une feuille sans quun seul ne soit
slectionn. Vrai ou faux ?

195

<
:

Prog VB6 FM1B Page 196 Lundi, 6. aot 2001 3:26 15

Partie II

8. Quelle valeur de proprit dtermine si une case cocher est slectionne ou non ?
9. Quelle valeur de proprit dtermine si un bouton doption est slectionn ou non ?
10. Pourquoi est-il parfois ncessaire dinclure des boutons doption dans un frame ?

Exercices
1. Dcrivez de quelle faon le code parvient dterminer si lutilisateur a saisi une
valeur dans une bote dentre (ou accept la valeur par dfaut), ou sil a cliqu sur
le bouton Annuler.
2. Ecrivez la fonction MsgBox() ncessaire pour gnrer la bote de message de la
Figure 7.10.
Figure 7.10
Comment gnrer
cette bote de message ?

3. Ecrivez une procdure vnementielle de bouton de commande qui demande


lutilisateur sa ville puis son dpartement, cela dans deux botes dentre spares.
Ensuite, concatnez les deux chanes renvoyes en intercalant une virgule et une
espace entre les deux. Enn, afchez la chane rsultante dans une bote de message.
4. Crez une feuille contenant cinq boutons doption, destins simuler de vritables
"boutons radio". A chaque bouton, attribuez un libell gurant le nom dune de vos
cinq stations de radio prfres. Ecrivez une procdure vnementielle pour chaque
contrle, de sorte que la slection dun bouton doption provoque lafchage dune
bote de message qui dcrive (style de musique, etc.) la radio en question.

>
:

196

Prog VB6 FM1B Page 197 Lundi, 6. aot 2001 3:26 15

PB3
Entres utilisateur
et logique conditionnelle
Ce Projet bonus met en pratique les diffrents contrles que nous avons tudis, ainsi
que la gestion des rponses utilisateur. Lapplication que vous allez crer inclura des
cases cocher, des boutons doption et des frames.
Tout cela va naturellement demander un peu de programmation. En fait, ce Projet bonus
contient plus de code que vous nen avez encore vu. Voici les objectifs de lapplication :

Proposer une srie de cases cocher qui permettent lutilisateur de choisir un ou


plusieurs pays, et dafcher les drapeaux correspondants.

Proposer les pays, mais avec, cette fois, des boutons doption, de sorte que lutilisateur ne puisse slectionner quun seul pays la fois.

Gnrer un avertissement, sous forme de bote de message, quand lutilisateur


nentre pas linformation demande.

Ajouter aux boutons doption des pays un second jeu de boutons doption, par
lesquels lutilisateur choisit dafcher les drapeaux dans un grand ou un petit
format.

En plus de mettre en uvre ces diffrents contrles, lapplication introduit un nouveau


concept : plusieurs feuilles dans un mme projet. En tout, trois feuilles distinctes seront
cres. Vous apprendrez ainsi charger et afcher une feuille spcique un moment
donn de lexcution.

197

Prog VB6 FM1B Page 198 Lundi, 6. aot 2001 3:26 15

Partie II

Info

Comme ce sera le cas de beaucoup de programmes dans cet ouvrage, cette


application utilise les chiers graphiques livrs avec Visual Basic. Selon vos
options dinstallation, vous ne trouverez peut-tre pas le sous-dossier
Graphics dans le dossier Visual Basic de votre disque. Si cest le cas, il
faudra modier les chemins daccs utiliss dans lapplication et travailler
directement sur le premier CD-ROM de Visual Basic. Pour copier les
chiers graphiques sur votre disque, insrez ce mme CD-ROM et choisissez
Ajouter/Modier des options.

Cration de la premire feuille


La Figure PB3.1 montre la premire feuille que vous allez crer.
Figure PB3.1
Dans cette feuille,
lutilisateur choisit
le type dafchage
des drapeaux.

Le Tableau PB3.1 dtaille les proprits des lments de la feuille.


Tableau PB3.1 : Proprits des contrles de la premire feuille

>
:

Contrle

Proprit

Valeur

Feuille

Caption

Slection du drapeau

Feuille

Name

frmSelect

Feuille

Height

4035

Feuille

Width

6390

Label

Name

lblFlags

198

Prog VB6 FM1B Page 199 Lundi, 6. aot 2001 3:26 15

Projet bonus 3 : Entres utilisateur et logique conditionnelle

Tableau PB3.1 : Proprits des contrles de la premire feuille (suite)


Contrle

Proprit

Valeur

Label

BorderStyle

1-Fixed Single

Label

Caption

Drapeaux

Label

Font

MS Sans Serif

Label

Font Size

24

Label

Font Style

Bold

Label

Height

615

Label

Left

2000

Label

Top

600

Label

Width

2300

Bouton doption 1

Name

optCheck

Bouton doption 1

Caption

&Cases cocher

Bouton doption 1

Left

2280

Bouton doption 1

Top

1920

Bouton doption 1

Width

1575

Bouton doption 2

Name

optOption

Bouton doption 2

Caption

&Boutons doptions

Bouton doption 2

Left

2280

Bouton doption 2

Top

2520

Bouton doption 2

Width

1695

Bouton de commande 1

Name

cmdSelect

Bouton de commande 1

Caption

Continue&r

Bouton de commande 1

Left

4560

Bouton de commande 1

Top

2040

199

<
:

Prog VB6 FM1B Page 200 Lundi, 6. aot 2001 3:26 15

Partie II

Tableau PB3.1 : Proprits des contrles de la premire feuille (suite)


Contrle

Proprit

Valeur

Bouton de commande 2

Name

cmdExit

Bouton de commande 2

Caption

&Quitter

Bouton de commande 2

Left

4560

Bouton de commande 2

Top

2760

Le code requis pour cette feuille est simple, mais il met en uvre un nouveau concept.
Ce code, donn au Listing PB3.1, implique le chargement dune feuille distincte de
celle qui est afche.
Listing PB3.1 : Rception du choix de lutilisateur par les boutons doption

>
:

1:
2:
3:
4:
5:
6:

Private Sub cmdSelect_Click()


Vrifier labsence derreur puis afficher
la feuille selon les choix de lutilisateur.
Dim strMsg As String
Valeur renvoye par la bote de message
If ((optCheck.Value = False) And (optOption.Value = False)) Then
strMsg = MsgBox("Vous devez slectionner une option",
vbCritical, "Erreur !")
7:
ElseIf (optCheck.Value = True) Then
8:
frmFlagsCheck.Show
Option cases cocher.
9:
Else
10:
frmFlagsOpt.Show
Option boutons doption.
11:
End If
12: End Sub
13:
14: Private Sub Form_Load()
15: Dslectionner tous les boutons doption.
16:
optCheck.Value = False
17:
optOption.Value = False
18: End Sub
19: Private Sub cmdExit_Click()
20: fermer le programme.
21:
End
22: End Sub

200

Prog VB6 FM1B Page 201 Lundi, 6. aot 2001 3:26 15

Projet bonus 3 : Entres utilisateur et logique conditionnelle

Analyse de la premire feuille


Les lignes 14 18 dterminent ce qui se passe lorsque lapplication dmarre et que la
premire feuille se charge. (La bote de dialogue obtenue par le menu Projet, Proprits
devrait indiquer la feuille frmSelect comme objet de dmarrage.) Les lignes 16 et 17 dnissent les boutons doption comme False, ce qui oblige lutilisateur en slectionner un.
Linstruction conditionnelle de la ligne 5 dtermine si lutilisateur a cliqu sur le bouton
de commande Continuer sans avoir slectionn de bouton doption. Si la proprit
Value des deux boutons doption est encore False lorsque lutilisateur clique sur Continuer, la ligne 6 prend le relais et afche un message derreur.
Si lutilisateur a bien slectionn lun des boutons doption, les lignes 7 9 dterminent
de quel bouton il sagit, et afchent la feuille correspondante. Notez le libell de
linstruction utilise : frmFlagsCheck.Show. Plutt qu une commande, cela ferait plutt
penser une sorte de valeur de proprit qui sappellerait Show. Toutefois, il nexiste
aucune valeur de proprit Show pour les feuilles. Show est, en fait, une mthode, cest-dire non pas une commande Visual Basic classique (comme Next), mais une commande
applicable uniquement un objet spcique. En loccurrence, cet objet est la feuille
frmFlagsCheck. La mthode Show afche toute feuille laquelle elle est applique.
Rsultat : ds que les lignes 8 ou 10 sexcutent, la feuille correspondante safche en
haut de la feuille de slection.

Cration de la deuxime feuille


La Figure PB3.2 montre la feuille que nous allons crer.
La feuille afche les noms de six pays, et six drapeaux peuvent apparatre ct des
noms. Il va falloir crer une nouvelle feuille et lajouter au projet courant. Voici
comment vous allez procder :
1. Cliquez du bouton droit dans la fentre Projet.
2. Dans le menu contextuel, slectionnez Ajouter, puis Feuille. Visual Basic afche une
bote de dialogue onglets, dans laquelle vous pouvez gnrer une nouvelle feuille
ou choisir une feuille existante.
3. Double-cliquez sur licne Form pour gnrer une nouvelle feuille. La feuille safche dans la zone ddition de la fentre Feuilles.
Le Tableau PB3.2 dtaille les proprits des lments de la feuille. Rappelez-vous que
lapplication fait appel aux chiers graphiques et que, sils nont pas t installs, il faudra le
faire ou modier les chemins daccs affects aux proprits Picture.

201

<
:

Prog VB6 FM1B Page 202 Lundi, 6. aot 2001 3:26 15

Partie II

Figure PB3.2
Lutilisateur
slectionne le pays
dont il veut afcher
le drapeau.

Tableau PB3.2 : Proprits des contrles de la deuxime feuille

>
:

Contrle

Proprit

Valeur

Feuille

Name

frmFlagsCheck

Feuille

Caption

Drapeaux

Feuille

Height

7035

Feuille

Width

7710

Case cocher 1

Name

chkEngland

Case cocher 1

Caption

Grande-&Bretagne

Case cocher 1

Left

2835

Case cocher 1

Top

420

Case cocher 2

Name

chkItaly

Case cocher 2

Caption

&Italie

Case cocher 2

Height

495

Case cocher 2

Left

2835

202

Prog VB6 FM1B Page 203 Lundi, 6. aot 2001 3:26 15

Projet bonus 3 : Entres utilisateur et logique conditionnelle

Tableau PB3.2 : Proprits des contrles de la deuxime feuille (suite)


Contrle

Proprit

Valeur

Case cocher 2

Top

1155

Case cocher 2

Width

1215

Case cocher 3

Name

chkSpain

Case cocher 3

Caption

&Espagne

Case cocher 3

Height

495

Case cocher 3

Left

2835

Case cocher 3

Top

1905

Case cocher 3

Width

1215

Case cocher 4

Name

chkMexico

Case cocher 4

Caption

&Mexique

Case cocher 4

Height

495

Case cocher 4

Left

2835

Case cocher 4

Top

2595

Case cocher 4

Width

1215

Case cocher 5

Name

chkFrance

Case cocher 5

Caption

&France

Case cocher 5

Height

495

Case cocher 5

Left

2835

Case cocher 5

Top

3375

Case cocher 5

Width

1215

Case cocher 7

Name

chkUSA

Case cocher 7

Caption

&USA

Case cocher 7

Height

495

203

<
:

Prog VB6 FM1B Page 204 Lundi, 6. aot 2001 3:26 15

Partie II

Tableau PB3.2 : Proprits des contrles de la deuxime feuille (suite)

>
:

Contrle

Proprit

Valeur

Case cocher 7

Left

2865

Case cocher 7

Top

4140

Case cocher 7

Width

1215

Image 1

Name

imgEngland

Image 1

Height

480

Image 1

Left

4440

Image 1

Picture

\Program Files\Microsoft Visual


Studio\Common\Graphics\Icons\Flags\Flaguk

Image 1

Top

480

Image 1

Visible

False

Image 2

Name

imgItaly

Image 2

Height

480

Image 2

Left

4440

Image 2

Picture

\Program Files\Microsoft Visual


Studio\Common\Graphics\Icons\Flags\Flgitaly

Image 2

Top

1155

Image 2

Visible

False

Image 3

Name

imgSpain

Image 3

Height

480

Image 3

Left

4440

Image 3

Picture

\Program Files\Microsoft Visual


Studio\Common\Graphics\Icons\Flags\Flgspain

Image 3

Top

1890

Image 3

Visible

False

Image 4

Name

imgMexico

204

Prog VB6 FM1B Page 205 Lundi, 6. aot 2001 3:26 15

Projet bonus 3 : Entres utilisateur et logique conditionnelle

Tableau PB3.2 : Proprits des contrles de la deuxime feuille (suite)


Contrle

Proprit

Valeur

Image 4

Height

480

Image 4

Left

4440

Image 4

Picture

\Program Files\Microsoft Visual


Studio\Common\Graphics\Icons\Flags\Flgmex

Image 4

Top

2520

Image 4

Visible

False

Image 5

Name

imgFrance

Image 5

Height

480

Image 5

Left

4440

Image 5

Picture

\Program Files\Microsoft Visual


Studio\Common\Graphics\Icons\Flags\Flgfran

Image 5

Top

3315

Image 5

Visible

False

Image 6

Name

imgUSA

Image 6

Height

480

Image 6

Left

4440

Image 6

Picture

\Program Files\Microsoft Visual


Studio\Common\Graphics\Icons\Flags\Flgusa02

Image 6

Top

4080

Image 6

Visible

False

Bouton de commande

Name

cmdReturn

Bouton de commande

Caption

&Revenir la slection

Bouton de commande

Left

5520

Bouton de commande

Top

5040

205

<
:

Prog VB6 FM1B Page 206 Lundi, 6. aot 2001 3:26 15

Partie II

Il faut maintenant ajouter le code la feuille. Double-cliquez sur la feuille frmFlagsCheck et intgrez le code du Listing PB3.2. Cette nouvelle feuille devra afcher le
drapeau correspondant chaque pays coch par lutilisateur. Il sagit donc dassocier
chaque case cocher une procdure vnementielle Click.
Listing PB3.2 : Afchage des drapeaux pour chaque case coche

>
:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:

206

Private Sub chkEngland_Click()


Case coche = drapeau affich.
If chkEngland.Value = 1 Then
imgEngland.Visible = True
Else
imgEngland.Visible = False
End If
End Sub
Private Sub chkItaly_Click()
Case coche = drapeau affich.
If chkItaly.Value = 1 Then
imgItaly.Visible = True
Else
imgItaly.Visible = False
End If
End Sub
Private Sub chkSpain_Click()
Case coche = drapeau affich.
If chkSpain.Value = 1 Then
imgSpain.Visible = True
Else
imgSpain.Visible = False
End If
End Sub
Private Sub chkMexico_Click()
Case coche = drapeau affich.
If chkMexico.Value = 1 Then
imgMexico.Visible = True
Else
imgMexico.Visible = False
End If
End Sub
Private Sub chkFrance_Click()
Case coche = drapeau affich.
If chkFrance.Value = 1 Then
imgFrance.Visible = True
Else
imgFrance.Visible = False
End If
End Sub
Private Sub chkUSA_Click()
Case coche = drapeau affich.
If chkUSA.Value = 1 Then

Prog VB6 FM1B Page 207 Lundi, 6. aot 2001 3:26 15

Projet bonus 3 : Entres utilisateur et logique conditionnelle

44:
45:
46:
47:
48:
49:
50:
51:
52:
53:

imgUSA.Visible = True
Else
imgUSA.Visible = False
End If
End Sub
Private Sub cmdReturn_Click()
Retour la feuille de slection.
frmFlagsCheck.Hide
frmSelect.Show
End Sub

Analyse de la deuxime feuille


Les procdures vnementielles des six cases cocher sont identiques. Des chemins
daccs ont dj t affects la proprit Picture de chaque contrle image, lors de la
cration de la feuille. Pour afcher limage, la procdure vnementielle na donc plus
qu dnir comme True les diverses proprits Visible. Reste un problme : que se
passera-t-il si lutilisateur clique de nouveau sur une case, dslectionnant ainsi
loption ? Le code doit tre en mesure de dsactiver lafchage de limage correspondante.
Les lignes 3 7 illustrent bien le fonctionnement des procdures vnementielles.
La ligne 3 interroge la proprit Value de la case cocher. Si la valeur de cette proprit
est 1, lutilisateur a coch la case, et le code doit afcher limage. Si la valeur est 0, la
case a t dcoche, et le code doit masquer limage (ce que fait la ligne 6).
Enn, la procdure vnementielle Click du bouton de commande effectue deux oprations, aux lignes 51 et 52. La ligne 51 contient une nouvelle mthode, Hide, qui cache la
feuille laquelle elle est applique. (Hide a donc leffet inverse de Show.) La ligne 51
cache la feuille des cases cocher, tandis que la 52 afche de nouveau la feuille de
dmarrage.

Cration de la troisime feuille


La Figure PB3.3 montre la feuille que nous allons crer. Le drapeau pourra tre grand
ou petit, selon loption slectionne par lutilisateur.
La feuille prsente un bouton doption pour chacun des six noms de pays, et le drapeau
du pays slectionn safche ct du nom. Enn, trois boutons doption regroups
dans un frame permettent de dnir la taille du drapeau.

207

<
:

Prog VB6 FM1B Page 208 Lundi, 6. aot 2001 3:26 15

Partie II

Figure PB3.3
Cette feuille permet
lutilisateur
dafcher un drapeau
la fois et de dnir
la taille du drapeau.

Drapeau de grande taille

ntion
Atte

Pour ajouter les boutons doption au frame, il faut dessiner les boutons pardessus le frame. Si vous vous contentez de double-cliquer sur loutil
OptionButton de la Bote outils, le bouton doption apparatra au centre de
la feuille, et Visual Basic ne le considrera pas comme une partie du frame.
Pour que vos boutons doption soient bien circonscrits au frame, il faut
commencer par cliquer une fois sur loutil, puis dessiner le contour du bouton
sur le frame ; et ainsi, pour chaque bouton ajouter. Cest cette seule condition que les boutons doption seront reconnus comme intgrs au frame, et
distincts des autres boutons doption de la feuille.

De nouveau, il faut crer une nouvelle feuille et lajouter au projet en cours. Une fois
que vous avez ajout cette troisime et dernire feuille, intgrez les lments dtaills au
Tableau PB3.3.

>
:

208

Prog VB6 FM1B Page 209 Lundi, 6. aot 2001 3:26 15

Projet bonus 3 : Entres utilisateur et logique conditionnelle

Tableau PB3.3 : Proprits des contrles de la troisime feuille


Contrle

Proprit

Valeur

Feuille

Name

frmFlagsOpt

Feuille

Caption

Drapeaux

Feuille

Height

7335

Feuille

Width

8955

Bouton doption 1

Name

optEngland

Bouton doption 1

Caption

Grande-&Bretagne

Bouton doption 1

Height

495

Bouton doption 1

Left

2760

Bouton doption 1

Top

360

Bouton doption 1

Value

True

Bouton doption 1

Width

1215

Bouton doption 2

Name

optItaly

Bouton doption 2

Caption

&Italie

Bouton doption 2

Height

495

Bouton doption 2

Left

2760

Bouton doption 2

Top

1080

Bouton doption 2

Width

1215

Bouton doption 3

Name

optSpain

Bouton doption 3

Caption

&Espagne

Bouton doption 3

Height

495

Bouton doption 3

Left

2760

Bouton doption 3

Top

1800

Bouton doption 3

Width

1215

209

<
:

Prog VB6 FM1B Page 210 Lundi, 6. aot 2001 3:26 15

Partie II

Tableau PB3.3 : Proprits des contrles de la troisime feuille (suite)

>
:

Contrle

Proprit

Valeur

Bouton doption 4

Name

optMexico

Bouton doption 4

Caption

&Mexique

Bouton doption 4

Height

495

Bouton doption 4

Left

2760

Bouton doption 4

Top

2520

Bouton doption 4

Width

1215

Bouton doption 5

Name

optFrance

Bouton doption 5

Caption

&France

Bouton doption 5

Height

495

Bouton doption 5

Left

2760

Bouton doption 5

Top

3240

Bouton doption 5

Width

1215

Bouton doption 6

Name

optUSA

Bouton doption 6

Caption

&USA

Bouton doption 6

Height

495

Bouton doption 6

Left

2760

Bouton doption 6

Top

3960

Bouton doption 6

Width

1215

Frame

Name

fraSize

Frame

Caption

Taille du drapeau

Frame

Height

1215

Frame

Left

1320

Frame

Top

5040

210

Prog VB6 FM1B Page 211 Lundi, 6. aot 2001 3:26 15

Projet bonus 3 : Entres utilisateur et logique conditionnelle

Tableau PB3.3 : Proprits des contrles de la troisime feuille (suite)


Contrle

Proprit

Valeur

Frame

Width

1575

Frame, option 1

Name

optLarge

Frame, option 1

Caption

&Grand

Frame, option 1

Height

255

Frame, option 1

Left

360

Frame, option 1

Top

360

Frame, option 1

Width

1095

Frame, option 2

Name

optSmall

Frame, option 2

Caption

&Petit

Frame, option 2

Height

255

Frame, option 2

Left

360

Frame, option 2

Top

720

Frame, option 2

Width

1095

Image 1

Name

imgEngland

Image 1

Height

480

Image 1

Left

5280

Image 1

Picture

\Program Files\Microsoft Visual Studio


\Common\Graphics\Icons\Flags\Flguk

Image 1

Stretch

True

Image 1

Top

2160

Image 1

Visible

True

Image 2

Name

imgItaly

Image 2

Height

480

Image 2

Left

5280

211

<
:

Prog VB6 FM1B Page 212 Lundi, 6. aot 2001 3:26 15

Partie II

Tableau PB3.3 : Proprits des contrles de la troisime feuille (suite)

>
:

Contrle

Proprit

Valeur

Image 2

Picture

\Program Files\Microsoft Visual Studio


\Common\Graphics\Icons\Flags\Flgitaly

Image 2

Stretch

True

Image 2

Top

2160

Image 2

Visible

False

Image 3

Name

imgSpain

Image 3

Height

480

Image 3

Left

5280

Image 3

Picture

\Program Files\Microsoft Visual Studio


\Common\Graphics\Icons\Flags\Flgspain

Image 3

Stretch

True

Image 3

Top

2160

Image 3

Visible

False

Image 4

Name

imgMexico

Image 4

Height

480

Image 4

Left

5280

Image 4

Picture

\Program Files\Microsoft Visual Studio


\Common\Graphics\Icons\Flags\Flg\Flgmex

Image 4

Stretch

True

Image 4

Top

2160

Image 4

Visible

False

Image 5

Name

imgFrance

Image 5

Height

480

Image 5

Left

5280

Image 5

Picture

\Program Files\Microsoft Visual Studio


\Common\Graphics\Icons\Flags\Flgfran

212

Prog VB6 FM1B Page 213 Lundi, 6. aot 2001 3:26 15

Projet bonus 3 : Entres utilisateur et logique conditionnelle

Tableau PB3.3 : Proprits des contrles de la troisime feuille (suite)


Contrle

Proprit

Valeur

Image 5

Stretch

True

Image 5

Top

2160

Image 5

Visible

False

Image 6

Name

imgUSA

Image 6

Height

480

Image 6

Left

5280

Image 6

Picture

\Program Files\Microsoft Visua Studio


\Common\Graphics\Icons\Flags\Flgusa02

Image 6

Stretch

True

Image 6

Top

2160

Image 6

Visible

False

Bouton de commande

Name

cmdReturn

Bouton de commande

Caption

&Revenir la slection

Bouton de commande

Height

495

Bouton de commande

Left

4920

Bouton de commande

Top

5400

Bouton de commande

Width

1215

Le Listing PB3.3 fournit le code pour la troisime feuille. Comme vous pouvez le constater, il y a de la longueur ! Mais ce code, en ralit, consiste principalement en la rptition
de six routines semblables, pour chacun des boutons doption.
Listing PB3.3 : Afchage du drapeau selon le bouton doption slectionn

1:
2:
3:
4:
5:
6:

Private Sub optEngland_Click()


Bouton slectionn = drapeau affich.
If optSmall.Value = True Then
imgEngland.Height = 480
imgEngland.Width = 480
Else Grande taille.

213

<
:

Prog VB6 FM1B Page 214 Lundi, 6. aot 2001 3:26 15

Partie II

Listing PB3.3 : Afchage du drapeau selon le bouton doption slectionn (suite)

>
:

7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:

214

imgEngland.Height = 2800
imgEngland.Width = 2800
End If
imgEngland.Visible = True
Masquer les autres drapeaux.
imgItaly.Visible = False
imgSpain.Visible = False
imgMexico.Visible = False
imgFrance.Visible = False
imgUSA.Visible = False
End Sub
Private Sub optItaly_Click()
Bouton slectionn = drapeau affich.
If optSmall.Value = True Then
imgItaly.Height = 480
imgItaly.Width = 480
Else Grande taille.
imgItaly.Height = 2800
imgItaly.Width = 2800
End If
imgItaly.Visible = True
Masquer les autres drapeaux.
imgEngland.Visible = False
imgSpain.Visible = False
imgMexico.Visible = False
imgFrance.Visible = False
imgUSA.Visible = False
End Sub
Private Sub optSpain_Click()
Bouton slectionn = drapeau affich.
If optSmall.Value = True Then
imgSpain.Height = 480
imgSpain.Width = 480
Else Grande taille
imgSpain.Height = 2800
imgSpain.Width = 2800
End If
imgSpain.Visible = True
Masquer les autres drapeaux.
imgItaly.Visible = False
imgEngland.Visible = False
imgMexico.Visible = False
imgFrance.Visible = False
imgUSA.Visible = False
End Sub
Private Sub optMexico_Click()
Bouton slectionn = drapeau affich.
If optSmall.Value = True Then
imgMexico.Height = 480
imgMexico.Width = 480

Prog VB6 FM1B Page 215 Lundi, 6. aot 2001 3:26 15

Projet bonus 3 : Entres utilisateur et logique conditionnelle

57:
Else Grande taille
58:
imgMexico.Height = 2800
59:
imgMexico.Width = 2800
60:
End If
61:
imgMexico.Visible = True
62:
Masquer les autres drapeaux.
63:
imgItaly.Visible = False
64:
imgSpain.Visible = False
65:
imgEngland.Visible = False
66:
imgFrance.Visible = False
67:
imgUSA.Visible = False
68: End Sub
69: Private Sub optFrance_Click()
70: Bouton slectionn = drapeau affich.
71:
If optSmall.Value = True Then
72:
imgFrance.Height = 480
73:
imgFrance.Width = 480
74:
Else Grande taille
75:
imgFrance.Height = 2800
76:
imgFrance.Width = 2800
77:
End If
78:
imgFrance.Visible = True
79:
Masquer les autres drapeaux.
80:
imgItaly.Visible = False
81:
imgSpain.Visible = False
82:
imgMexico.Visible = False
83:
imgEngland.Visible = False
84:
imgUSA.Visible = False
85: End Sub
86: Private Sub optUSA_Click()
87: Bouton slectionn = drapeau affich.
88:
If optSmall.Value = True Then
89:
imgUSA.Height = 480
90:
imgUSA.Width = 480
91:
Else Grande taille
92:
imgUSA.Height = 2800
93:
imgUSA.Width = 2800
94:
End If
95:
imgUSA.Visible = True
96:
Masquer les autres drapeaux.
97:
imgItaly.Visible = False
98:
imgSpain.Visible = False
99:
imgMexico.Visible = False
100:
imgFrance.Visible = False
101:
imgEngland.Visible = False
102: End Sub
103: Private Sub cmdReturn_Click()
104: Retour la feuille de slection.
105:
frmFlagsOpt.Hide
106:
frmSelect.Show
107: End Sub
108: Private Sub optSmall_Click()

215

<
:

Prog VB6 FM1B Page 216 Lundi, 6. aot 2001 3:26 15

Partie II

Listing PB3.3 : Afchage du drapeau selon le bouton doption slectionn (suite)

109: Masquer tous les drapeaux affichs.


110: Les drapeaux seront maintenant petits.
111:
imgEngland.Visible = False
112:
imgItaly.Visible = False
113:
imgSpain.Visible = False
114:
imgMexico.Visible = False
115:
imgFrance.Visible = False
116:
imgUSA.Visible = False
117:
Dslectionner tous les boutons doption
118:
optEngland.Value = False
119:
optItaly.Value = False
120:
optSpain.Value = False
121:
optMexico.Value = False
122:
optFrance.Value = False
123:
optUSA.Value = False
124: End Sub
125: Private Sub optLarge_Click()
126: Masquer tous les drapeaux affichs.
127: Les drapeaux seront maintenant petits.
128:
imgEngland.Visible = False
129:
imgItaly.Visible = False
130:
imgSpain.Visible = False
131:
imgMexico.Visible = False
132:
imgFrance.Visible = False
133:
imgUSA.Visible = False
134:
Dslectionner tous les boutons doption
135:
optEngland.Value = False
136:
optItaly.Value = False
137:
optSpain.Value = False
138:
optMexico.Value = False
139:
optFrance.Value = False
140:
optUSA.Value = False
141: End Sub

Analyse de la troisime feuille


Le code est virtuellement identique pour la plupart des procdures vnementielles, seul
le nom du pays change. Examinez la premire procdure, lignes 1 17. Le code vrie
dabord quel bouton doption a t slectionn (ligne 3). Si cest le bouton doption
"petite taille", les proprits Height et Width du contrle sont rgles 480 twips
(lignes 4 et 5). Si cest le bouton doption "grande taille" qui a t slectionn, Height et
Width sont rgles 2800 twips (lignes 7 et 8).
Le reste de la procdure vnementielle afche simplement le drapeau du pays
slectionn, en dnissant la proprit Visible comme True (ligne 10) et en dsactivant

>
:

216

Prog VB6 FM1B Page 217 Lundi, 6. aot 2001 3:26 15

Projet bonus 3 : Entres utilisateur et logique conditionnelle

lafchage des autres drapeaux (lignes 12 16). Les cinq procdures vnementielles
suivantes (lignes 18 102) font de mme pour chaque drapeau slectionnable.
A la ligne 103 commence une courte procdure vnementielle qui fonctionne comme
la procdure du module des cases cocher. Elle cache la feuille des boutons doption et
afche de nouveau la feuille de slection, dans laquelle lutilisateur pourra faire un autre
choix ou quitter le programme.
Aux lignes 108 et 125 commencent des procdures vnementielles identiques qui
dsactivent lafchage de tous les drapeaux. Bien sr, un seul drapeau tait visible ;
mais, au lieu de rechercher celui qui est afch pour dnir sa proprit Visible comme
False, le code dnit comme False la proprit Visible de tous les contrles image.
Mme si cinq sur six ont dj la valeur False, on sassure ainsi quaucun drapeau ne
sera visible.
En cliquant sur lun des boutons doption qui rglent la taille des drapeaux, on cache donc
tous les drapeaux afchs ; cela an que le drapeau choisi apparaisse dans lune ou lautre
taille, selon la slection de lutilisateur. On pourrait rcrire lapplication de sorte que le
code change directement la taille du drapeau afch, mais ce projet deviendrait encore plus
long et vous en avez dj assez comme a !
ce
Astu

Voil une application bien assommante ! Le code est rptitif la mme


section rpte deux fois pour chacun des six boutons doption et cases
cocher. Avant le terme de cet apprentissage, vous saurez rationaliser les
codes de ce genre. Quand plusieurs contrles similaires apparaissent sur
une feuille, et quils ont tous un comportement peu prs identique, on peut
faire appel aux groupes de contrles, qui raccourcissent le code et en facilitent la maintenance.

217

<
:

Prog VB6 FM1B Page 218 Lundi, 6. aot 2001 3:26 15

Prog VB6 FM1B Page 219 Lundi, 6. aot 2001 3:26 15

Rsum de la Partie I
Vous tes au terme de la premire partie. Vous pouvez tre er, car vous tes en passe de
devenir un authentique programmeur Visual Basic.
Comme vous lavez compris, la programmation en Visual Basic implique bien plus que la
simple matrise du langage. Dune certaine manire, le langage de programmation luimme est secondaire. Crer une application Windows en Visual Basic, cest surtout
disposer des contrles sur la feuille, puis rgler les proprits qui en dniront le comportement.
Voici ce que nous avons tudi dans ces sept chapitres :

Lhistorique de Visual Basic. Visual Basic descend du langage BASIC


(Chapitre 1).

La maintenance du programme. Un programme clair et concis sera plus facile


modier et dboguer (Chapitre 1).

La structure du programme. Les contrles ragissent aux vnements selon les


proprits que vous avez dnies (Chapitre 1).

Lassistant Cration dapplications. Visual Basic cre pour vous lossature du


programme. Vous navez plus qu ajouter les dtails (Chapitre 1).

Lenvironnement Visual Basic. Lenvironnement Visual Basic inclut toutes les fentres et barres doutils requises pour programmer les applications Windows
(Chapitre 2).

La fentre Prsentation des feuilles. Vous pouvez rgler la disposition des feuilles
sur votre cran (Chapitre 2).

LAide en ligne Visual Basic. Visual Basic fournit toute laide en ligne ncessaire.
Si vous avez install MSDN, vous pouvez consulter, depuis Visual Basic, une
immense source dinformations (Chapitre 2).

219

Prog VB6 FM1B Page 220 Lundi, 6. aot 2001 3:26 15

Partie II

>
:

Crer des applications. Plutt que de passer par lassistant Cration dapplications,
vous pouvez crer votre application partir dune feuille vierge et ajouter vousmme tout le code (Chapitre 2).

Les valeurs de proprits. Les proprits des contrles se dnissent facilement,


surtout dans la fentre Proprits (Chapitre 2).

Le contrle label. Les labels permettent dafcher du texte sur la feuille


(Chapitre 3).

Le contrle zone de texte. Les zones de texte permettent lutilisateur de saisir des
informations (Chapitre 3).

Le contrle bouton de commande. Les boutons de commande permettent lutilisateur de dclencher lui-mme certaines actions (Chapitre 3).

Les menus. Visual Basic vous permet dintgrer vos applications les barres et
options de menu standards de Windows (Chapitre 4).

Le Crateur de menus. Le Crateur de menus est une bote de dialogue qui permet
de crer rapidement un systme de menus (Chapitre 4).

Les vnements de menu. Les options de menu dclenchent des vnements Click
qui sont faciles programmer (Chapitre 4).

La fentre Code. Les outils ddition de la fentre Code vous assistent dans vos
tches dcriture (Chapitre 5).

Les donnes. Visual Basic supporte plusieurs types de donnes : nombres,


chanes, etc. (Chapitre 5).

Les variables. Les variables permettent de stocker des valeurs et des rsultats
(Chapitre 5).

Les oprateurs. Les oprateurs effectuent des oprations mathmatiques et des


traitements de donnes (Chapitre 5).

Lordre de prsance des oprateurs. Visual Basic calcule les expressions mathmatiques selon un ordre strict de priorits (Chapitre 5).

Les oprateurs conditionnels. En analysant des rsultats, les oprateurs conditionnels


permettent au programme de prendre des dcisions (Chapitre 6).

Les instructions conditionnelles. Les instructions If et Select Case se servent des


oprateurs conditionnels pour orienter lexcution du programme (Chapitre 6).

Les boucles. Les boucles permettent de rpter plusieurs fois une section de code
(Chapitre 6).

220

Prog VB6 FM1B Page 221 Lundi, 6. aot 2001 3:26 15

Rsum de la Partie I : Entres utilisateur et logique conditionnelle

La gestion du clavier. Des vnements spciques permettent au programme de


traiter le clavier de manire adquate(Chapitre 7).

Le contrle case cocher. Les cases cocher offent lutilisateur un moyen simple
de slectionner des options (Chapitre 7).

Le contrle bouton doption. Les boutons doption permettent galement de faire


des slections, mais mutuellement exclusives (Chapitre 7).

Le contrle frame. Les frames permettent de regrouper des boutons doption qui
forment ds lors un ensemble distinct des autres boutons doption de la feuille
(Chapitre 7).

221

<
:

Prog VB6 FM1B Page 222 Lundi, 6. aot 2001 3:26 15

Prog VB6 FM2A Page 223 Lundi, 6. aot 2001 3:32 15

Partie

II

Dun coup dil


8. Sous-routines et fonctions . . . . . . . . . . . . . . . . . .

225

9. Les botes de dialogue . . . . . . . . . . . . . . . . . . . .

271

10. Gestion de la souris et contrles avancs . . . . .

293

PB4. Slections multiples dans une zone de liste . . . .

327

PB5. Pratique de la souris . . . . . . . . . . . . . . . . . . . . . .

337

11. Gestion des feuilles . . . . . . . . . . . . . . . . . . . . . . .

345

12. Gestion des chiers . . . . . . . . . . . . . . . . . . . . . . .

379

PB6. Lire et crire des chiers . . . . . . . . . . . . . . . . . .

407

13. Gestion de limprimante . . . . . . . . . . . . . . . . . . .

415

14. Image et multimdia . . . . . . . . . . . . . . . . . . . . . .

435

PB7. Les barres de dlement . . . . . . . . . . . . . . . . . . .

467

Rsum de la Partie II . . . . . . . . . . . . . . . . . . . .

475

223

Prog VB6 FM2A Page 224 Lundi, 6. aot 2001 3:32 15

Partie II

Comme vous avez pu le constater dans la Partie I, la programmation en Visual Basic est
quelque chose de facile et mme damusant parfois. Alors que les programmeurs
davant Visual Basic devaient dnir et congurer " la main" les moindres lments
du programme, vous pouvez laisser Visual Basic ces dtails et vous concentrer sur les
impratifs spciques de votre application. Dans cette Partie II, vous avancerez un peu
plus vers la matrise de Visual Basic et travaillerez donc sur des applications un peu plus
complexes.
Au terme des chapitres qui suivent, vous matriserez peu prs tout ce que vous devrez
savoir du langage de programmation Visual Basic. Au Chapitre 9 notamment, vous
dcouvrirez comment les nombreuses fonctions internes de Visual Basic vous pargnent
une partie du codage. Vous pouvez ainsi remettre Visual Basic le soin deffectuer certains
calculs et certaines manipulations.
Toutefois, cette partie ne parlera pas que de code. Vous apprendrez intgrer vos
programmes des botes de dialogue standards, an doffrir vos utilisateurs une interface familire pour louverture de chiers ou limpression. Vos applications nen seront
que plus attrayantes.
Dans la Partie I, vous avez appris interagir avec lutilisateur par le biais des contrles
afchs lcran. Cette Partie II vous fera dcouvrir de nouvelles techniques
dinteraction : rpondre aux touches du clavier, aux clics et double-clics, aux oprations
de glisser-dposer... Vous serez ainsi en mesure de satisfaire toutes les attentes et
toutes les intuitions de lutilisateur.
Mais ce nest pas tout de recevoir des donnes encore faut-il en envoyer lutilisateur. Vous dcouvrirez donc les techniques dcriture de chiers et dimpression. Enn,
au Chapitre 14, vous apprendrez intgrer image et multimdia vos applications.
Grce aux contrles, aux proprits, aux vnements et aux mthodes Visual Basic,
vous crerez des applications pleinement interactives et dynamiques sans vous tuer
louvrage !

>
:

224

Prog VB6 FM2A Page 225 Lundi, 6. aot 2001 3:32 15

Chapitre

Sous-routines
et fonctions
Ce chapitre explique la structure et le fonctionnement des applications Visual Basic
complexes, contenant de multiples modules et procdures. Dans de telles applications
extensives, les donnes doivent tre partages entre plusieurs procdures et modules ; il
faut, pour cela, dclarer convenablement les variables, et crire le code de telle sorte que
ces variables soient accessibles plusieurs procdures.
Vous allez donc crire de nombreuses procdures, mais galement faire appel aux fonctions
internes pour analyser et traiter des chanes, des nombres et dautres types de donnes. Ce
chapitre prsente toutes les fonctions internes dont vous aurez besoin en situation relle.
Voici ce que nous dcouvrirons aujourdhui :

la structure des programmes ;

les procdures gnrales ;

la porte des variables ;

les listes darguments ;

les fonctions numriques ;

les fonctions danalyse de donnes ;

les fonctions de manipulation de chanes ;

les fonctions de date et dheure.

225

Prog VB6 FM2A Page 226 Lundi, 6. aot 2001 3:32 15

Partie II

Questions de structures
Vous avez dj une bonne ide du fonctionnement interne des programmes Visual Basic.
Lorsque lutilisateur interagit avec les contrles, des vnements ont lieu. Si lapplication contient les procdures vnementielles adaptes ces contrles et ces vnements, le programme ragit. Le code dun programme Visual Basic est, pour le
principal, constitu dune section de dclarations, suivie dune longue srie de procdures vnementielles.
Info

Rappelez-vous qu chaque feuille correspond un module de feuille qui


contient le code de la feuille et de ses contrles. Lorsquune feuille est afche
dans la zone ddition de la fentre Feuilles, on afche le code correspondant
en cliquant sur le bouton Code de la fentre Projet.

Nous allons maintenant nous attacher une autre partie des programmes Visual Basic.
Les procdures vnementielles ne constituent pas le seul type de procdures susceptible
dapparatre dans le code. La Figure 8.1 illustre le code contenu dans un module de
feuille. Outre les dclarations et les procdures vnementielles, un module peut contenir
des procdures gnrales et des procdures de classe.
Figure 8.1
Un module recle
diffrents types
de codes.

Le module de feuille
Dclarations
Private Sub Gen_Proc1 []
' Corps de la premire procdure gnrale.
End Sub
Private Sub Gen_Proc2 []
' Corps de la seconde procdure gnrale.
End Sub
Private Sub Event_Proc1 []
' Corps de la premire procdure vnementielle.
End Sub
Private Sub Event_Proc2 []
' Corps de la seconde procdure vnementielle.
End Suba
Private Sub Class_Proc1 []
' Corps de la premire procdure de classe.
End Sub

ition
Dfin

>
:

226

Une procdure est dite gnrale quand elle nest pas associe un vnement
de contrle, mais effectue des calculs et divers traitements.

Prog VB6 FM2A Page 227 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

ition
Dfin

Une procdure de classe est un objet Visual Basic spcial, cr par le programmeur. Les classes permettent de dnir un nouveau type de donnes ou de
variables.

Souvenez-vous des deux listes droulantes qui, dans la fentre Code, indiquent le type
ou le nom des objets et des procdures du module en cours. La liste Objet afche une
entre pour chaque contrle de la feuille. Tout en haut de la liste se touve galement un
objet spcial, (Gnral). (Les parenthses indiquent quil ne sagit pas dun contrle,
mais dune section du code.) La section gnrale contient la fois la section de dclarations, situe au dbut du code, et les procdures gnrales que vous crivez.

Les appels de procdures gnrales


Les procdures gnrales peuvent tre des fonctions ou des sous-routines. A quoi sert
une procdure gnrale ? Dans le Projet bonus qui prcdait ce chapitre, "Variables et
expressions", deux procdures vnementielles (optLarge _Click() et optSmall_Click())
apparaissaient, qui contenaient le code suivant :

imgEngland.Visible = False
imgItaly.Visible = False
imgSpain.Visible = False
imgMexico.Visible = False
imgFrance.Visible = False
imgUSA.Visible = False
Dslectionner tous les boutons doption.
optEngland.Value = False
optItaly.Value = False
optSpain.Value = False
optMexico.Value = False
optFrance.Value = False
optUSA.Value = False

Que de lignes pour dire la mme chose ! Bien entendu, la fentre Code autorise le
copier/coller, ce qui peut allger votre peine, mais ne rsout pas le problme. Que se
passera-t-il si vous devez modier le code ? Il faudra alors avoir soin de mettre jour
chaque ligne concerne. Le code rptitif nest pas seulement fatigant saisir, mais
galement plus dlicat maintenir.
Dans des cas pareils, la meilleure solution consiste placer le code dans sa propre procdure gnrale, comme dans le code suivant. Notez que chaque procdure gnrale doit
recevoir un nom unique (suivez pour cela les mmes rgles que pour les noms de variables).

227

<
:

Prog VB6 FM2A Page 228 Lundi, 6. aot 2001 3:32 15

Partie II

En outre, une procdure gnrale peut tre une fonction aussi bien quune sous-routine.
Examinez cela :

1: Private Sub Clear_Flags()


2: Masquer tous les drapeaux affichs.
3: Les drapeaux seront maintenant petits.
4:
imgEngland.Visible = False
5:
imgItaly.Visible = False
6:
imgSpain.Visible = False
7:
imgMexico.Visible = False
8:
imgFrance.Visible = False
9:
imgUSA.Visible = False
10:
Dslectionner tous les boutons doption.
11:
optEngland.Value = False
12:
optItaly.Value = False
13:
optSpain.Value = False
14:
optMexico.Value = False
15:
optFrance.Value = False
16:
optUSA.Value = False
17: End Sub

Lorsquune autre procdure requiert lexcution dun code identique, il suft dappeler
la procdure gnrale, comme ceci :
Call Clear_Flags()

ition
Dfin

Appeler une procdure signie excuter une procdure depuis une autre procdure.

Linstruction Call indique Visual Basic de mettre temporairement de ct la procdure en


cours dexcution (quil sagisse dune procdure vnementielle ou dune procdure gnrale), et dexcuter le code de la procdure appele. Une fois que la procdure appele est
entirement excute, lexcution de la procdure appelante se poursuit partir de la ligne
qui suit linstruction Call.

Procdures prives et publiques


Linstruction Call vous conomise de la peine et du temps, et elle facilite considrablement la maintenance : le code commun est stock une fois pour toutes dans une procdure
gnrale, qui pourra tre appele dans la suite du programme laide dune simple
instruction. Mais vous pouvez aussi crire une routine dans une application et la rendre
disponible aux autres applications. Exemple : dans une application qui gnre des rapports,
vous crez un en-tte indiquant le nom et ladresse de la socit ; cet en-tte pourra tre

>
:

228

Prog VB6 FM2A Page 229 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

inclus dans dautres rapports gnrs par dautres applications. Comment ? Cest ce que
nous allons maintenant vous expliquer.
Une procdure situe dans la section gnrale dun module de feuille est disponible
pour tout le module, mais seulement pour ce module ; les autres applications ny ont pas
accs. Pour cela, il faut placer la procdure dans un module de code. Vous pouvez ainsi
crire le code de vos rapports dans un module de code spcique qui contiendra
lensemble des routines utilises pour gnrer des rapports. Grce au module de code,
ces routines seront alors accessibles toute application impliquant la gnration de
rapports. Il suft de cliquer du bouton droit dans la fentre Projet de lapplication, de slectionner dans le menu contextuel Ajouter, Module, puis de saisir le code.
ce
Astu

On pourrait dire que, en crivant des procdures gnrales accessibles toutes


les applications, vous construisez votre propre bibliothque de fonctions internes. Il ne sagit pas vraiment de fonctions internes (ou, plus prcisment, de
fonctions intrinsques), puisquelles ne font pas partie du systme Visual
Basic ; mais ce sont des outils que vous forgez vous-mme pour vous-mme, et
qui pourront servir dans chacun de vos projets.

Le code dun module de feuille peut exploiter un module de code ajout. Il convient,
pour cela, dappeler la procdure depuis le module de feuille. Une exception toutefois :
seules les procdures publiques peuvent tre utilises en dehors de leur propre module,
contrairement aux procdures prives. Considrez cette dclaration de procdure :
Private Sub ReportIt()

Cette procdure peut seulement tre appele dans le module qui la contient. Si vous
laviez dclare comme procdure publique, elle aurait t accessible depuis nimporte
quelle autre procdure de nimporte quel autre module de lapplication. Voici une
dclaration de procdure publique :
Public Sub ReportIt()

Ainsi, il convient de dclarer comme publiques les procdures dutilit gnrale que
vous crivez an de disposer toujours de son code.
Rcapitulons :

Une procdure dclare comme Private nest exploitable qu lintrieur de son


propre module.

Une procdure dclare comme Public peut tre appele depuis nimporte quelle
autre procdure de lapplication.

229

<
:

Prog VB6 FM2A Page 230 Lundi, 6. aot 2001 3:32 15

Partie II

La porte des variables


Si le code est lui-mme tantt public, tantt priv, les variables peuvent galement avoir
une porte publique ou prive ; le jargon parle plus volontiers de variables globales ou
locales. Les variables sont ainsi distingues selon quelles sont ou non accessibles pour un
autre code.
ition
Dfin

Une variable locale nest exploitable que dans le code qui la contient.
Une variable globale est exploitable en dehors de la zone pour laquelle elle
est dclare.

ition
Dfin

On entend par porte le degr de disponibilit dune variable dans le code dune
application.

Info

Les contrles sont tous et toujours visibles et publics pour lensemble du code
dune application. Les contrles dune feuille ne sont jamais cachs.

Imaginons quun commerant vous charge dcrire une petite application comptable,
destine notamment calculer le montant dune taxe de vente. Vous crivez donc une
procdure qui calcule la taxe sur le chiffre de vente total. Mais cette procdure est, en
fait, dutilit gnrale, puisque la taxe sapplique diffrents types de produits, traits
dans des modules diffrents. Plutt que de rpter les routines de calcul plusieurs fois
dans lapplication, vous les stockez dans un module de code spcique. La procdure de
calcul sera ainsi accessible toutes les applications qui doivent prendre en compte le
calcul de cette taxe de vente ; il sufra que vous leur ajoutiez le module.
Reste toutefois un problme les procdures ne peuvent pas toujours partager les
donnes. Considrez la section de code suivante :
Private Sub GetSalesTotal()
Ajouter le prix de chaque article vendu,
puis calculer le chiffre de vente total.

Dim curTotal As Currency

Suite de la procdure.

La procdure GetSalesTotal() ajoute le contenu de toutes les zones de texte dun


formulaire de vente, et les stocke dans la variable curTotal. Il faudrait ensuite faire
appel la procdure externe pour calculer le montant de la taxe de vente sur la somme
curTotal. Eh bien, a ne marchera pas ! Pourquoi ? Parce que curTotal est une variable
locale.

>
:

230

Prog VB6 FM2A Page 231 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Info

Info

Nous avons vu quune variable locale nest utilisable que pour le code de la
procdure dans laquelle elle a t dclare. On dit aussi que la variable nest
visible que pour cette procdure.
Le terme visible renvoie au concept de porte expliqu plus haut. Une variable
est visible pour les procdures qui y ont accs. Ainsi, une variable locale nest
visible que pour la procdure qui la contient, tandis quune variable
globale est visible pour tout le module.

Vous pouvez dclarer curTotal comme variable globale pour le module, en dplaant
linstruction Dim de la procdure la section de dclarations du module :
Option Explicit
Dclaration de toutes les variables publiques.
Dim curTotal As Currency

La variable curTotal est alors accessible partout dans le module de feuille. En fait, cela
va sans doute vous surprendre, mais la situation est encore pire. Comme nous lexpliquions au Chapitre 5, les variables locales sont prfrables aux variables globales, parce
que, daprs une rgle gnrale, les procdures ne doivent avoir accs quaux donnes
strictement ncessaires. En la dclarant comme globale dans la section (Gnral) de la
fentre Code, vous avez rendu la variable visible pour toutes les procdures du module,
mme celles qui nen ont aucun usage ; mais la variable nest toujours pas visible pour
les autres modules !
ce
Astu

Les applications Visual Basic contenant en gnral plusieurs modules, les


termes locale et globale ne font pas sens dans toutes les situations. Il serait plus
convenable de dsigner comme locale une variable visible pour sa procdure
(celle qui contient la dclaration) ; de dsigner comme variable de niveau
module une variable visible pour son module ; et de dsigner comme globale
ou publique une variable visible pour toute lapplication.

Pour que la variable soit rellement globale tout le projet, il faut la dclarer avec le mot cl
Public, au lieu de lusuel Dim, et placer cette instruction Public dans la section de dclarations du module. La variable devient ainsi publique pour lensemble de lapplication.
ntion
Atte

Deux variables publiques peuvent porter le mme nom, condition dtre


dclares comme Public dans deux modules spars. An de ne jamais vous
mlanger les pinceaux, il convient dinclure dans le nom des variables
publiques le nom de leur module dorigine. Ainsi, MaBiblio.curSales renvoie
spciquement la variable curSales du module de code MaBiblio. Mme si
une autre variable publique curSales existe dans un autre module, Visual
Basic ne les confondra jamais.

231

<
:

Prog VB6 FM2A Page 232 Lundi, 6. aot 2001 3:32 15

Partie II

A titre de rcapitulatif des notions tudies jusquici, examinez la Figure 8.2. Y sont
illustres les relations quentretiennent dans une application les variables publiques, de
niveau module et locales. Dans chaque module, les rectangles reprsentent des
procdures. Les annotations indiquent quelles variables sont accessibles quelles
procdures.
Figure 8.2
La porte
dune variable
dtermine
les procdures qui
peuvent y accder.

Module 1
Publics P1 As Integer
Dim a As Integer

Public Sub PM1a []


Dim L1 As Variant

Public Sub PM1b []


Dim L2 As Integer

Module 2a
Peut accder
P2, b, P1 et L2a.

Peut accder
P1, a, P2 et L1.

Peut accder
P1, a, P2 et L2.
Cette procdure
peut seulement
tre appele
depuis le
Module 1.

Publics P2 As Integer
Dim b As String

Public Sub PM2a []


Dim L2a As Single

Public Sub PM2b []


Dim L2b As Single

Peut accder
P2, b, P1 et L2c.
Public Sub PM2c []

Public Sub PM1c []


Dim L3 As Integer

Dim L2c As Single


Peut accder
P2, b, P1 et L2c.

Toutes ces histoires de variables publiques ont de quoi dsoler les programmeurs soucieux
de lisibilit et de sret du code. Car, si les variables de niveau module sont viter, que dire,
alors, des variables dclares comme publiques pour une application cest--dire visibles
pour toutes les procdures de tous les modules du projet !
En dnitive, et sauf les rares cas o une mme variable doit tre utilise par presque
toutes les procdures dun module, il est prfrable de dclarer des variables locales
avec Dim. Mais dautres procdures peuvent, malgr tout, avoir besoin de ces variables,
notamment les procdures gnrales stockes dans des modules de code externes. Il doit
donc exister un moyen de partager des donnes locales. Cest ce que dvoile la
prochaine section.

>
:

232

Prog VB6 FM2A Page 233 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

La transmission des donnes


Lorsque deux procdures doivent partager des donnes, la procdure appelante peut
envoyer ses variables locales la procdure appele. Pour ainsi transmettre des variables,
il faut les indiquer dans les parenthses de la procdure appele. Vous avez dj eu loccasion de transmettre des arguments une procdure, par exemple avec InputBox().
La chane spcie entre les parenthses de InputBox() tait une donne locale pour la
procdure qui appelait InputBox(), et InputBox() recevait et traitait cette chane.
La rgle consiste donc dclarer dans les parenthses de la procdure appele tous les
arguments qui lui sont passs, transmis. Un simple exemple devrait vous clairer.
Le Listing 8.1 contient deux procdures. La premire envoie deux valeurs, un total et un
pourcentage dabattement scal, la seconde, qui calcule une taxe de vente sur le total
moins labattement. La procdure de calcul de la taxe traite les donnes qui lui sont transmises par la premire procdure, et afche la taxation totale dans une bote de message.
Listing 8.1 : La premire procdure passe des arguments la seconde

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:

Private Sub GetTotal()


Cette procdure additionne les valeurs dun
formulaire, puis envoie le total et le pourcentage
dabattement la procdure qui calcule la taxe.
Dim curTotal As Currency
Dim sngDisc As Single
Special tax discount

Calculer le total daprs le formulaire.


curTotal = txtSale1.Text + txtSale2.Text + txtSale3.txt

Envoyer le total la procdure de taxation.


Call SalesTax(curTotal, sngDisc)
End Sub
Public Sub SalesTax(curTotal As Currency, sngRateDisc As Single)
Calculer la taxe et dduire labattement.
Dim curSalesTax As Currency
Dim intMsg As Integer For MsgBox()

Calcul de la taxe de vente


3,5 % du total.
curSalesTax = (curTotal * .035)

Dduction du pourcentage dabattement.


curSalesTax = curSalesTax - (sngRateDisc * curTotal)

Afficher le montant total de la taxation.


intMsg = MsgBox("Taxation totale : " & curSalesTax)

Aprs excution, les procdures redonnent


la main la procdure appelante.
End Sub

233

<
:

Prog VB6 FM2A Page 234 Lundi, 6. aot 2001 3:32 15

Partie II

Info

Notez que le nom des variables passes ne doit pas forcment correspondre au
nom des arguments reus (ainsi, sngDisc la ligne 12 et sngRateDisc la
ligne 15). En revanche, le nombre darguments et les types de donnes doivent
tre identiques dans la liste darguments passs et dans la liste darguments
reus. La procdure appele sen tient aux noms sous lesquels les arguments lui
ont t passs.

La procdure SalesTax() peut tre stocke dans un module de code diffrent de celui de la
procdure GetTotal(), laquelle peut rsider dans la section gnrale dun module de
feuille. Les deux variables passes, bien que locales pour GetTotal(), sont passes
comme arguments la procdure externe SalesTax(). Ici, SalesTax() doit ncessairement recevoir des arguments au nombre de deux, et du type de donnes spci.
Une fois les deux variables reues, la procdure SalesTax() peut les traiter comme sil
sagissait de variables locales pour elle-mme. Les calculs sont appliqus aux valeurs, et
la ligne 28 afche le rsultat (le montant total de la taxe) dans une bote de message.
La Figure 8.3 illustre la transmission des arguments de GetTotal() SalesTax().
Figure 8.3
GetTotal() envoie
deux arguments
SalesTax().

Private Sub Get _ Total []


' Initial code
' goes here
'
'
Call Sales Tax [curTotal, sngDisc]
End Sub

Public Sub Sales Tax [curTotal As Currency, sngRateDisc As Single]


'
' Body of the Sales Tax
' procedure goes here
'
End Sub

Info

>
:

234

La ligne semble utiliser des types de donnes non quivalents, mais Visual
Basic sait grer ce type de non-quivalence. MsgBox() requiert un argument
initial de type String, et loprateur & ne peut concatner que des chanes.
Mais lorsquon demande la concatnation dune chane et dun nombre, Visual
Basic convertit automatiquement le nombre en chane.

Prog VB6 FM2A Page 235 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Info

Faire
Pour interrompre une sous-routine avant son instruction End Sub, utilisez
Exit Sub. (Pour les procdures de type fonction, ce sera End Function.)
Toutefois, Exit Sub devrait toujours tre incluse dans une instruction If (ou
autre instruction conditionnelle), sans quoi la procdure sarrterait systmatiquement et nirait jamais plus loin que Exit Sub.

Il y a une autre faon dappeler les sous-routines. Vous pouvez omettre linstruction Call
ainsi que les parenthses. Les deux instructions suivantes sont quivalentes.
Call PrintTitle (Title)
PrintTitle Title

Transmission par rfrence et par valeur


Dans le Listing 8.1, les variables sont passes selon la mthode dite par rfrence ; ce qui
signie que la procdure appele peut modier les arguments de la procdure appelante.
Si, en revanche, les arguments sont prcds du mot cl ByVal, ils sont passs par valeur,
cest--dire que la procdure appele ne peut pas modier les arguments de la procdure
appelante. (La transmission par rfrence tant la mthode par dfaut, le mot cl ByRef est
toujours optionnel.)
Prenons lexemple du Listing 8.1. Si la procdure SalesTax() modiait la valeur des arguments curTotal ou sngRateDisc, la variable correspondante dans GetTotal() serait
galement modie. Selon la mthode de transmission par rfrence, les arguments passs
par la procdure appelante peuvent tre affects par les traitements qui leur sont appliqus
dans la procdure appele.
Si la ligne 15 du Listing 8.1 avait t crite comme linstruction ci-dessous, les variables
de GetTotal() variables auraient t protges contre toute modication par SalesTax(). Ds lexcution de SalesTax() termine, la valeur initiale des arguments passs
par GetTotal() aurait t restaure.
Public Sub SalesTax(ByVal curTotal As Currency, ByVal
sngRateDisc As Single)

Ainsi, et moins que la procdure appele soit expressment destine modier les
arguments passs, les arguments devraient toujours tre protgs par le mot cl ByVal.
De cette faon, la procdure appele peut triturer tant quelle veut les arguments, la
procdure appelante retrouvera toujours ses valeurs dorigine.

ce
Astu

Le mot cl ByVal peut tre utilis devant tous, une partie ou un seul des arguments passs.

235

<
:

Prog VB6 FM2A Page 236 Lundi, 6. aot 2001 3:32 15

Partie II

Les appels de fonctions


Les fonctions se distinguent des sous-routines non seulement pas les lignes dencadrement, mais aussi par la faon de renvoyer les valeurs la procdure appelante. Dans les
sections prcdentes, le code appelait des procdures de type sous-routine. Lappel dune
procdure de type fonction est lgrement diffrent. En fait, on appelle une procdure
fonction comme on appelle une fonction interne avec le nom de la fonction et avec ses
arguments , mais sans linstruction Call. La fonction devient alors elle-mme la valeur
renvoye, et cette valeur est utilise dans une expression ou une dans une instruction.
La premire ligne dune procdure fonction, ou dclaration de fonction, doit suivre ce
format :
Public|Private Function FuncName (Arg)As dataType

Ici, FuncName est le nom de la fonction, Arg la liste des arguments, et dataType le type de
donnes. La barre verticale entre Public et Private indique quune fonction est soit
prive (visible pour le module seulement), soit publique (visible pour lapplication
entire). Une fonction peut ne pas avoir darguments ; auquel cas, on omet les parenthses. Toutefois, la plupart des fonctions reoivent au moins un argument. La clause As
dataType, que lon ne trouve pas dans les procdures de type sous-routine, dclare le
type de donnes de la valeur renvoye par la fonction. Une fonction ne peut renvoyer
quune seule valeur dont le type de donnes est spci par dataType.
Si lon rcrivait la procdure SalesTax() en une fonction qui renvoie le rsultat du
calcul de la taxe, la dclaration serait la suivante :
Public Function SalesTax(curTotal As Currency, sngRateDisc
As Single) As Currency

Info

Tout comme aux sous-routines, les arguments sont passs aux fonctions par
rfrence ou par valeur, selon le degr de protection que vous souhaitez assurer
aux arguments de la fonction appelante.

La valeur renvoye doit ncessairement tre affecte une variable portant le mme nom
que la fonction. Un telle variable na pas tre dclare. Ainsi, la valeur affecte par SalesTax() une variable nomme SalesTax() serait la valeur renvoye par la fonction. Lorsque
lexcution de la fonction sachve, soit par End Function, soit par une instruction Exit
Function, la valeur renvoye par la fonction est stocke dans la variable de renvoi.
La procdure appelante doit donc rserver une place pour la valeur renvoye. La valeur
renvoye est gnralement affecte une variable. Il nest pas rare de trouver, dans une
procdure appelante, une telle instruction :
curDailyNet = CalcNetAdj(curGrSls, sngTaxRt, curGrRate, curStrExp)

>
:

236

Prog VB6 FM2A Page 237 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

CalcNetAdj() est une fonction laquelle quatre valeurs sont passes. CalcNetAdj() traite
ces valeurs, et affecte une valeur de renvoi la variable nomme CalcNetAdj. Au terme de
la fonction, cette valeur est affecte la variable curDailyNet de la procdure appelante.
Les exercices de n de chapitre vous invitent transformer en fonction la sous-routine
CalcTax() du Listing 8.1. Pour le moment, tudiez le Listing 8.2 an de bien assurer
votre comprhension des fonctions.
Listing 8.2 : Les fonctions renvoient la procdure appelante une valeur unique

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:

La procdure appelante commence ici.


Private Sub CP()
Dim varR As Variant
Variables locales lorigine
Dim varV As Variant
de la valeur renvoye.
Dim intI As Integer
Contiendra la valeur renvoye.
varR = 32
varV = 64

Valeurs initiales.

intI = RF(varR, varV)

Passe varR et varV.


intI reoit la valeur renvoye.
MsgBox("Aprs renvoi, intI vaut " & intI)
MsgBox("Aprs renvoi, varR vaut " & varR)
MsgBox("Aprs renvoi, varV vaut " & varV)
End Sub
La fonction appele commence ici.
Public Function RF (varR As Variant, ByVal varV As Variant) As Integer
varR est reu par rfrence et varV par valeur.
varR = 81
Modifie les deux arguments.
varV = varV + 10
Dfinit la valeur de renvoi.
RF = varR + varV
End Function

La ligne 10 passe varR et varV (32 et 64) la fonction. Aux lignes 20 et 21, la fonction
affecte varR et varV les valeurs 81 et 74. varR ayant t pass par rfrence, sa valeur
sera galement de 81 dans la procdure appelante (CP()). La ligne 23 additionne les
valeurs 81 et 74, et elle affecte la somme comme valeur de renvoi de la fonction. Lorsque
End Function sexcute, linstruction daffectation de la procdure appelante (ligne 10)
affecte 155 intI. La ligne 12 afche la valeur de intI. La ligne 13 afche la valeur 81,
montrant ainsi que varR a t modi par la fonction appele. La ligne 14 afche
toujours 64, la valeur de varV ayant t protge par le mot cl ByVal.

237

<
:

Prog VB6 FM2A Page 238 Lundi, 6. aot 2001 3:32 15

Partie II

Transmission des contrles comme arguments


Outre les variables, les contrles peuvent eux aussi tre passs dune procdure
lautre. Vous pouvez ainsi crire une procdure qui traite la valeur dun contrle, mais il
faut pour cela savoir quel type de contrle a t pass. La procdure peut tre appele
depuis diffrents modules, et diffrents contrles sont passs selon le cas. Le jeu
dinstructions If TypeOf permet de vrier le type de donnes du contrle pass comme
argument.
Voici le format dune instruction If classique incluant TypeOf :
If TypeOf object Is objectType Then

Bloc dinstructions Visual Basic.


Else

Bloc dinstructions Visual Basic.


End If

Ici, object peut tre tout argument ou variable de contrle. objectType est lune des
valeurs suivantes :
CheckBox, ComboBox, CommandButton, Graph, Image, Label, Line,
ListBox, OptionButton, OptionGroup, PageBreak, PictureBox,
Rectangle, Shape, TextBox, ToggleButton

ition
Dfin

Une variable de contrle (on dit aussi variable dobjet) est une variable dclare comme contrle. Les variables, nous le savons, prennent les types de
donnes Integer, String ou Currency. Mais les variables peuvent tre
dclares comme Object, cest--dire comme nimporte quel objet Visual
Basic, contrles inclus.

Les instructions suivantes dclarent des variables de contrles :


Dim objCmdFirst As CommandButton
Dim objNameList As ListBox
Dim objPhoto As Image

Les variables de contrle sont galement transmissibles comme arguments :


Public Function FixControls (objIncoming As Object)

Quand une fonction reoit un argument dclar comme de type Object, on peut vrier
de quel contrle il sagit :
If TypeOf objIncoming Is CommandButton Then

MsgBox("Cest un bouton de commande")


ElseIf TypeOf objIncoming Is CheckBox Then

>
:

238

Prog VB6 FM2A Page 239 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

MsgBox("Cest une case cocher")

ElseIf TypeOf objIncoming Is TextBox Then

MsgBox("Cest une zone de texte")


End If

Les fonctions internes


Vous connaissez dj les fonctions internes LoadPicture(), MsgBox() et InputBox(). Il
en existe beaucoup, beaucoup dautres La suite de ce chapitre vous prsente les plus
importantes, celles qui vous aideront construire des programmes plus puissants. Ainsi,
au terme de ce chapitre, vous saurez non seulement crire vos propres sous-routines et
procdures, mais vous connatrez galement la plupart des fonctions internes. Grce
cette matrise du langage Visual Basic, vous pourrez, ds le prochain chapitre, crer des
applications plus avances et plus complexes quelles ne lont t jusque-l.
ce
Astu

Lorsque vous aurez termin le prsent chapitre, vous connatrez lessentiel du


langage Visual Basic. Sil vous restera encore des commandes dcouvrir,
vous matriserez tous les lments ncessaires au programmeur dbutant et
moyen. Ce qui ne signie pas que le reste soit de la rigolade ! Mais nombre de
chapitres suivants introduisent simplement de nouveaux contrles et proprits.

Fonctions numriques
Nous commencerons notre tude des fonctions internes par les fonctions de conversion en
entier. Les plus communes ont ce format :
Int(numericValue)
Fix(numericValue)

Ici, numericValue est un littral, une variable ou une expression numriques, et mme une
fonction imbrique capable de renvoyer un nombre. Le type de donnes numrique pass,
quel quil soit, est maintenu pour les valeurs renvoyes ; mais ces valeurs sont utilisables
comme des entiers Integer.
ce
Astu

Ne pas faire
Ne passez jamais Int() ou Fix() un argument non numrique. Visual Basic
gnrerait une erreur lexcution.

Ces deux fonctions ont pour effet darrondir leurs arguments lentier le plus proche.
Elles se distinguent toutefois par le traitement appliqu aux valeurs ngatives. Dans les

239

<
:

Prog VB6 FM2A Page 240 Lundi, 6. aot 2001 3:32 15

Partie II

instructions suivantes, les commentaires indiquent la valeur renvoye par chaque


fonction :

intAns1
intAns2
intAns3
intAns4

ce
Astu

ition
Dfin

=
=
=
=

Int(6.8)
Fix(6.8)
Int(-6.8)
Fix(-6.8)

6
6
-7
-6

Vous pouvez remarquer que ni Int() ni Fix() narrondit la valeur suprieure. Int() renvoie lentier infrieur le plus proche de largument. Les
nombres ngatifs sont arrondis lentier ngatif infrieur le plus proche. Fix()
renvoie la portion entire tronque de la valeur, cest--dire que la dcimale de
largument est jete aux oubliettes.
Tronquer signie retirer. Fix() tronque la portion dcimale de son argument.
Ainsi, une valeur de 5.23 tronque donnerait 5 ; une valeur de 5.23 donnerait
5.

La fonction de valeur absolue est utile pour calculer la diffrence de valeurs telles que
distances et tempratures.
ition
Dfin

La valeur absolue est la valeur positive dun nombre. Ainsi, la valeur absolue
de 19 est 19, et la valeur absolue de 19 est galement 19.

Abs() est la fonction interne qui permet de calculer les valeurs absolues. Imaginons que
vous cherchiez mesurer la diffrence dge entre deux personnes. La valeur absolue de
cette diffrence dge serait ainsi obtenue :
intAgeDiff = Abs(intAge1 - intAge2)

Quelle que soit la personne la plus ge, cette instruction ne peut affecter intAgeDiff
quune valeur positive. Si, daventure, intAge1 tait infrieur intAge2, et que lon nait
pas utilis la fonction Abs(), le calcul aurait donn une valeur ngative.
La fonction Sqr() renvoie la racine carre dun nombre positif. Dans les instructions
suivantes, les commentaires indiquent le rsultat de chaque fonction Sqr() :
intVal1 = Sqr(4)
2
intVal2 = Sqr(64)
8
intVal3 = Sqr(4096) 16

>
:

240

Prog VB6 FM2A Page 241 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Sqr() renvoie galement la racine carre exacte des valeurs dcimales.

Info

Visual Basic supporte plusieurs fonctions scientiques et trigonomtriques avances. Voici


une liste partielle :

Exp() renvoie la base dun logarithme naturel (nombre e, valant approximativement


2,718282), leve la puissance de largument.

Log() renvoie le logarithme naturel de largument.

Atn() renvoie la tangente darc de largument, en radians.

Cos() renvoie le cosinus de largument, en radians.

Sin() renvoie le sinus de largument, en radians.

Tan() renvoie la tangente de largument, en radians.


ce
Astu

Pour appliquer une fonction trigonomtrique une valeur en degrs, et non en


radians, il faut multiplier largument par ( / 180). Le nombre (pi) vaut
approximativement 3,14159.

Fonctions de type de donnes


Il existe plusieurs fonctions qui soccupent du type de donnes des arguments plutt que
de leur valeur :

les fonctions dinspection de donnes IsDate(), IsNull(),IsNumeric() et


VarType() ;

les fonctions abrges IIf() et Choose() ;

les fonctions de conversion de type de donnes.

Fonctions dinspection de donnes


Les fonctions dinspection de donnes vrient le type des donnes et le contenu des
variables. Un programme doit traiter des donnes de types trs varis, et lon ne sait pas
toujours lavance sur quoi on va tomber. Avant de procder un calcul, par exemple, il
convient de sassurer que les donnes sont numriques.
Le Tableau 8.1 liste les fonctions Is() et dtaille leur activit. Chacune de ces fonctions
reoit un argument de type Variant.

241

<
:

Prog VB6 FM2A Page 242 Lundi, 6. aot 2001 3:32 15

Partie II

Tableau 8.1 : Les fonctions Is() vrient le contenu des variables


et des contrles
Fonction

Description

IsDate()

Vrie si son argument est de type Date


(ou sil peut tre correctement converti en date).

IsEmpty()

Vrie si son argument a t initialis.

IsNull()

Vrie si son argument contient une valeur Null.

IsNumeric()

Vrie si son argument est dun type numrique


(ou sil peut tre correctement converti en nombre).

Info

Si les fonctions Is...() acceptent le type de donnes Variant, cest quelles


doivent tre en mesure dinspecter et didentier des donnes de nimporte quel
type.

La section de code prsente dans le Listing 8.3 est assez simple, mais elle dcrit le
comportement de la fonction IsEmpty() selon que les variables ont ou nont pas t
initialises. IsEmpty() permet, par exemple, de vrier si lutilisateur a entr une valeur
dans un champ.
Listing 8.3 : Vrication de variables vides

>
:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

242

Interroge les fonctions Is().


Dim var1 As Variant, var2 As Variant,
Dim var3 As Variant, var4 As Variant
Dim intMsg As Integer
valeur de renvoi de MsgBox
Affectations de valeurs dexemple.
var1 = 0
Valeur zro.
var2 = Null
Valeur Null.
var3 = ""
Chane Null.
Appelle chaque fonction Is().
If IsEmpty(var1) Then
intMsg = MsgBox("var1 est vide.", vbOKOnly)
End If
If IsEmpty(var2) Then
intMsg = MsgBox("var2 est vide.", vbOKOnly)
End If
If IsEmpty(var3) Then
intMsg = MsgBox("var3 est vide.", vbOKOnly)
End If
If IsEmpty(var4) Then
intMsg = MsgBox("var4 est vide.", vbOKOnly)
End If

Prog VB6 FM2A Page 243 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

La seule sortie de ce code est une bote de message qui afche ceci :
var4 est vide

Pourquoi ? Parce que toutes les autres variables ont un certain type de donnes toutes
ont t initialises.
ce
Astu

Cest IsNull() quil faut utiliser pour vrier la prsence de donnes dans des
champs ou des contrles quelconques. IsEmpty() ne devrait tre applique
quaux variables.

IsNull() interroge son argument et renvoie True si largument contient une valeur Null.
La valeur Null est une valeur spciale que lon affecte aux variables pour indiquer
labsence de donnes, ou pour signaler une erreur. (Linterprtation quaura le
programme de Null dpend, en fait, de votre code.)
ntion
Atte

Si lon peut affecter une variable une valeur Null (comme dans varA =
Null), on ne saurait en revanche interroger la valeur Null de cette faon :

If (varA = Null) Then...

Une telle condition nest pas vriable. IsNull() est le seul moyen dinterroger la valeur Null dune variable.
Linterrogation des donnes est une chose simple. Au cas o votre procdure doit
vrier si une zone de texte txtHoursWorked contient ou non des donnes, une instruction If comme celle-ci suft :
If IsNull(txtHoursWorked) Then

intMsg = MsgBox("Vous navez pas entr les heures !", vbOKOnly)


Else

intMsg = MsgBox("Merci davoir entr les heures !", vbOKOnly)


End If

Linstruction If permet ici de vrier que lutilisateur a bien saisi quelque chose dans le
champ, avant que le programme ne poursuive son excution.
IsNumeric() cherche dans son argument un nombre. Pour toutes les valeurs Variant
convertibles en nombres, IsNumeric() renvoie True ; elle renvoie False pour toutes les
autres. Voici les types de donnes convertibles en nombres :

Empty (conversion en 0) ;

Integer ;

Long ;

243

<
:

Prog VB6 FM2A Page 244 Lundi, 6. aot 2001 3:32 15

Partie II

Single ;

Double ;

Currency ;

Date (renvoie toujours False) ;

String, si la chane "semble" un nombre valide.

Le code suivant demande lutilisateur son ge, laide dune variable Variant. Si
lutilisateur entre une valeur non numrique, le programme afche un message derreur.

1:
2:
3:
4:
5:
6:
7:

8:

Dim varAge As Variant


Dim intMsg As Integer
Valeur de renvoi de MsgBox()
varAge = InputBox("Quel ge avez-vous ?", "Age")
If IsNumeric(varAge) Then
intMsg = MsgBox("Merci.", vbOKOnly)
Else
intMsg = MsgBox("Pas de cachotteries !",
vbOKOnly+vbExclamation)
End If

La ligne 4 sassure que lutilisateur a bien entr une valeur numrique, plutt que
davoir saisi, par exemple, son nom en toutes lettres.
La fonction VarType() permet de dterminer le type de donnes dune variable. Le
Tableau 8.2 prsente les seules valeurs que puisse renvoyer une fonction VarType().
Tableau 8.2 : Les valeurs renvoyes par VarType() indiquent le type de donnes

>
:

Valeur renvoye

Littral nomm

Type de donnes

vbEmpty

Empty

vbNull

Null

vbInteger

Integer

vbLong

Long

vbSingle

Single

vbDouble

Double

vbCurrency

Currency

vbDate

Date

vbString

String

vbObject

Object

244

Prog VB6 FM2A Page 245 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Tableau 8.2 : Les valeurs renvoyes par VarType() indiquent le type de donnes (suite)
Valeur renvoye

Littral nomm

Type de donnes

10

vbError

Valeur derreur

11

vbBoolean

Boolean

12

vbVariant

Variant*

13

vbDataObject

Objet daccs aux donnes

14

vbDecimal

Decimal

17

vbByte

Byte

8192

vbArray

Tableau**

Sur les tableaux de Variant, voyez au Chapitre 10.


Pour indiquer un tableau, Visual Basic ajoute 8192 la valeur de type de donnes ; ainsi, 8194 indique un tableau
dentiers, etc.
**

Dans le Listing 8.4, la procdure se sert dune instruction Select Case pour afcher le
type des donnes qui lui sont passes.
Listing 8.4 : VarType() permet de dterminer le type des donnes passes

1: Private Sub PrntType(varA) Variant par dfaut.


2:
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
3:
Select Case VarType(varA) VarType() renvoie un entier.
4:
Case 0
5:
intMsg = MsgBox("Largument est de type Empty.")
6:
Case 1
7:
intMsg = MsgBox("Largument est de type Null.")
8:
Case 2
9:
intMsg = MsgBox("Largument est de type Integer.")
10:
Case 3
11:
intMsg = MsgBox("Largument est de type Long.")
12:
Case 4
13:
intMsg = MsgBox("Largument est de type Single.")
14:
Case 5
15:
intMsg = MsgBox("Largument est de type Double.")
16:
Case 6
17:
intMsg = MsgBox("Largument est de type Currency.")
18:
Case 7
19:
intMsg = MsgBox("Largument est de type Date.")
20:
Case 8
21:
intMsg = MsgBox("Largument est de type String.")
22:
Case 9
23:
intMsg = MsgBox("Largument est de type Object.")

245

<
:

Prog VB6 FM2A Page 246 Lundi, 6. aot 2001 3:32 15

Partie II

Listing 8.4 : VarType() permet de dterminer le type des donnes passes (suite)

24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:

Case 10
intMsg = MsgBox("Largument
Case 11
intMsg = MsgBox("Largument
Case 12
intMsg = MsgBox("Largument
Case 13
intMsg = MsgBox("Largument
aux donnes.")
Case 14
intMsg = MsgBox("Largument
Case 17
intMsg = MsgBox("Largument
Case Else
intMsg = MsgBox("Largument
End Select
End Sub

est de type Error.")


est de type Boolean.")
est de type tableau de Variant.")
est de type objet daccs

est de type Decimal.")


est de type Byte.")
est de type Array (tableau).")

Les fonctions abrges IIf() et Choose()


Il existe un quivalent plus simple de linstruction If... Else. Il sagit de la fonction
Iif(), capable de prendre avantageusement la place dune instruction If... Else monoligne. IIf() est semblable la fonction @If() que lon trouve dans les tableurs. Voici
son format :
IIf(condition, TrueBody, FalseBody)

IIf() ne doit tre utilis quen remplacement dinstructions If... Else courtes, telles
que celles-ci :
If (curSales < 5000.00) Then

curBonus = 0.00
Else

curBonus = 75.00
End If

Chacun des deux corps de cette instruction If... Else tant constitu dune seule ligne,
on peut crire une fonction IIf() plus courte. La suivante affecte la valeur de renvoi
curBonus :
curBonus = IIf(curSales < 5000.00, 0.00, 75.00)

La Figure 8.4 illustre le fonctionnement de cette IIf().

>
:

246

Prog VB6 FM2A Page 247 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Figure 8.4
Lune des deux
valeurs est affecte
la variable situe
gauche IIf().

curBonus peut se voir


affecter cette valeur

curBonus = If [curSales < 5000.00, 0.00, 75.00 ]

Ou curBonus peut se voir


affecter cette valeur

ce
Astu

Si lquivalent IIf() est plus court que linstruction If... Else multiligne, il
est aussi moins clair. Si, du reste, vous vouliez ajouter quoi que ce soit dun
ct ou de lautre de la fonction IIf(), il faudrait dabord la convertir en
If...Else multiligne. Aussi le format If... Else multiligne est-il prfrable
dans la plupart des cas.

On ne peut diviser par zro (la division par zro nest pas dnie en mathmatique). Si
une division par zro advient, la fonction IIf() suivante renvoie un prix de vente moyen
ou une valeur Null :
curAveSales = IIf(intQty > 0, curTotalSales / intQty, Null)

ce
Astu

Visual Basic interprte toujours la valeur zro comme un rsultat faux. Vous
pourriez donc rcrire linstruction prcdente de la manire suivante :
curAveSales = IIf(intQty, curTotalSales / intQty, Null)

La fonction Choose(), quant elle, offre une version abrge de certaines instructions
Select Case. Choose() peut avoir beaucoup darguments plus darguments mme
que toutes les autres fonctions internes. Selon la valeur du premier argument, Choose()
renvoie un seul des autres arguments. Voici le format de Choose():
Choose(intIndexNum, expression[, expression] ...)

Aprs le deuxime argument, (expression), on peut ajouter autant darguments quil est
ncessaire. intIndexNum doit tre une variable ou un champ avec une valeur comprise
entre 1 et le nombre dexpressions de la fonction.
Si, par exemple, il faut gnrer une petite table de codes produits ou de prix, Choose()
est plus appropri quune instruction If ou Select Case. En revanche, la porte de
Choose() est plus restreinte que celle de If, parce que Choose() neffectue pas de vritable
comparaison, mais choisit une valeur entire unique.

247

<
:

Prog VB6 FM2A Page 248 Lundi, 6. aot 2001 3:32 15

Partie II

ntion
Atte

Choose() renvoie Null si intIndexNum nest pas compris entre 1 et le nombre


dexpressions incluses.

Le premier argument de Choose() peut tre une expression. La valeur de cet argument
doit tre incluse dans le nombre des arguments qui suivent. Si, par exemple, les valeurs
possibles dun index vont de 0 4, on ajoute 1 lindex de sorte que la plage aille de 1
5, et que le bon choix soit opr dans la liste de Choose().
Imaginons un feuille sur laquelle un label indique des codes de prix. Lorsque lutilisateur entre un nouveau produit, il doit aussi saisir un code de prix entre 1 et 5, savoir :
1

Plein prix

Remise de 5 %

Remise de 10 %

Commande spciale

Commande par correspondance

La fonction Choose() suivante affecte un champ Descript la description associe au


code :
Descript = Choose(lblProdCode, "Plein prix", "Remise de 5 % ",
"Remise de 10 %","Commande spciale", "Commande par
correspondance")

Fonctions de conversion de type de donnes


Le Tableau 8.3 dcrit les fonctions de conversion de type de donnes, qui se distinguent
par leur prxe (C pour conversion). Chaque fonction convertit son argument dun type
de donnes un autre.
Tableau 8.3 : Fonctions de conversion de type de donnes

>
:

Fonction

Description

CBool()

Convertit largument en Boolean

CByte()

Convertit largument en Byte

CCur()

Convertit largument en Currency

248

Prog VB6 FM2A Page 249 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Tableau 8.3 : Fonctions de conversion de type de donnes (suite)


Fonction

Description

CDate()

Convertit largument en Date

CDbl()

Convertit largument en Double

CDec()

Convertit largument en Decimal

CInt()

Convertit largument en Integer

CLng()

Convertit largument en Long

CSng()

Convertit largument en Single

CStr()

Convertit largument en String

CVar()

Convertit largument en Variant

ntion
Atte

Toutes ces fonctions exigent naturellement que largument soit convertible. Par
exemple, CByte() ne pourra convertir le nombre 123456789 en Byte, parce
que ce type de donnes est incapable de contenir une aussi grande valeur.

A la diffrence de Int() et Fix(), CInt() arrondit largument lentier le plus proche. Pour
les valeurs ngatives, CInt() renvoie galement lentier le plus proche. Dans les instructions suivantes, les commentaires indiquent le contenu de chaque variable :
intA1 = CInt(8.5)
intA2 = CInt(8.5001)

Affecte la valeur 8 intA1.


Affecte la valeur 9 intA2.

Le code suivant dclare des variables de quatre types de donnes diffrents, puis convertit chaque argument ces types de donnes. Rappelez-vous que lon passe aussi bien
des expressions numriques ces fonctions, ce qui permet de dnir un type de donnes
avant de stocker le rsultat calcul dans une variable ou dans un champ.

curVar1
dblVar2
sngVar3
varVar4

=
=
=
=

CCur(123)
CDbl(123)
CSng(123)
CVar(123)

Convertit
Convertit
Convertit
Convertit

123
123
123
123

en
en
en
en

Currency.
Double.
Single.
Variant.

249

<
:

Prog VB6 FM2A Page 250 Lundi, 6. aot 2001 3:32 15

Partie II

Fonctions de chanes
Les fonctions de chanes traitent et analysent le contenu des chanes. Visual Basic a
hrit du BASIC lun de ses plus gros avantages sur les autres langages de
programmation : un support efcace des donnes de chanes.

La fonction Len()
Len() est lune des rares fonctions qui acceptent pour arguments aussi bien les variables
numriques que les chanes. Toutefois, Len() est principalement applique aux chanes.
Cette fonction renvoie le nombre doctets quoccupe en mmoire largument. Voici le
format de Len() :
Len(Expression)

Info

Len() accepte toutes les valeurs de chanes : variables, littraux, expressions.


Cependant, seules les variables numriques peuvent lui tre passes comme
arguments ni littraux numriques, ni expressions numriques.

Len() renvoie la longueur en nombre de caractres de la variable chane, de la constante


chane ou de lexpression chane situe entre les parenthses. La fonction MsgBox() afche
le rsultat 6 :
intMsg = MsgBox(Len("abcdef"))

ce
Astu

Si la chane contient Null, Len() renvoie la valeur 0. Linterrogation dune


chane nulle permet de vrier si lutilisateur a entr ou non des donnes en
rponse une fonction InputBox() ou un contrle.

Conversion de chanes
Plusieurs fonctions de conversion sappliquent aux donnes de chanes. Le Tableau 8.4
dcrit chacune des fonctions utilises dans les exemples qui suivent.
Tableau 8.4 : Fonctions de conversion de chanes

>
:

Fonction

Description

CStr()

Convertit largument en chane.

Str()

Convertit un argument numrique en chane


(plus prcisment en Variant exploitable comme chane).

Val()

Convertit un argument chane en nombre


(si la chane passe contient bien un nombre).

250

Prog VB6 FM2A Page 251 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

CStr() et Str() convertissent leurs arguments en chanes. La diffrence est que Str()
fait prcder dun blanc (espace) les nombres positifs convertis en chane. Le
Listing 8.5 illustre cette diffrence entre CStr() et Str().
Listing 8.5 : Contrairement CStr(), Str() fait prcder les nombres positifs
dun blanc

1:
2:
3:
4:
5:
6:
7:
8:

Private Sub convStr ()


Dim str1 As String, s2 As String
Dim intMsg As Integer
Clic sur le bouton.
str1 = CStr(12345)
str2 = Str(12345)
intMsg = MsgBox("***" & str1 & "***")
intMsg = MsgBox("***" & str2 & "***")
End Sub

La ligne 6 gnre une bote de message qui afche ***12345***, tandis que la ligne 7
entrane lafchage de *** 12345***. Str() ajoute un blanc avant le nombre.

Fonctions ASCII
Chr() et Asc() permettent de convertir une chane en sa valeur ASCII, et vice versa. La
table ASCII recense tous les caractres possibles sur un PC et attribue chacun un numro
squentiel (code ASCII).
Chr() renvoie le caractre correspondant au code ASCII qui lui est pass comme argument. Chr() permet ainsi dafcher des caractres non disponibles sur le clavier, mais
gurant dans la table ASCII.
La fonction Asc() est lexact inverse de Chr(). L o Chr() reoit un argument numrique et renvoie un caractre, Asc() reoit un argument chane et le convertit en valeurs
ASCII correspondantes.
Au terme de linstruction suivante, strVar contient la lettre "A", puisque 65 est le code
ASCII de ce caractre.
strVar = Chr(65)

Stocke "A" dans aVar

Bien entendu, une telle instruction na en soi aucun intrt ; il est bien plus simple
daffecter directement strVar le contenu A. Et quen est-il si, par exemple, votre
programme doit poser une question en espagnol ? En espagnol, les questions sont prcdes dun point dinterrogation lenvers, caractre qui napparat pas sur votre clavier.
Avec Chr(), vous afchez ce caractre dans votre bote de message :
Chr(241) donne un "" (n tilde).
strMyQuest = Chr(191) & " Como esta, " & "Se" & Chr(241) & "or ?"
intMsg = MsgBox(strMyQuest)

251

<
:

Prog VB6 FM2A Page 252 Lundi, 6. aot 2001 3:32 15

Partie II

La Figure 8.5 montre la bote de message gnre par ce code.


Figure 8.5
Les codes ASCII permettent
dafcher les caractres non
disponibles sur le clavier.

Asc() renvoie le code ASCII du caractre qui lui est pass comme argument. (La table ASCII
est notamment fournie dans laide en ligne de Visual Basic.) Largument doit tre une chane
dau moins un caractre. Mais en prsence de plusieurs caractres dans la chane passe,
Asc() ne renvoie que le code ASCII du premier caractre.
Voici un bon exemple dutilisation de Asc() :

strAns = InputBox("Voulez-vous connatre le nom ?")


If ((Asc(strAns) = 79) Or (Asc(strAns) = 111)) Then
b = MsgBox("Le nom est " + aName)
End If

Lutilisateur peut rpondre par o, O, oui, Oui ou OUI. Linterrogation If...Then vriera
avec succs toutes ces entres, puisque 79 est le code ASCII de O, et 111 celui de o. Nous
disons donc : Asc() renvoie la valeur ASCII du premier caractre de la chane passe.

Fonctions de sous-chanes
Les fonctions de sous-chanes renvoient une partie de la chane. Right() renvoie les
caractres partir de la droite, Left() partir de la gauche. Mid() prlve les caractres
partir du milieu de la chane.
Voici le format des fonctions de sous-chanes :
Left(stringValue, numericValue)
Right(stringValue, numericValue)
Mid(stringValue, startPosition[, length])

Le code suivant illustre le comportement de Left() :

>
:

strA = "abcdefg"
partSt1 = Left(strA, 1)
partSt2 = Left(strA, 3)
partSt3 = Left(strA, 20)

252

Renvoie "a".
Renvoie "abc".
Renvoie "abcdefg".

Prog VB6 FM2A Page 253 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Info

Si vous demandez Left() de renvoyer plus de caractres quil nen existe, la


chane entire est renvoye.

Right() fait la mme chose en sens inverse :

strA = "abcdefg"
partSt1 = Right(strA, 1)
partSt2 = Right(strA, 3)
partSt3 = Right(strA, 20)

Renvoie "g".
Renvoie "efg".
Renvoie "abcdefg".

Mid() complte Left() et Right() en prlevant les caractres partir du milieu. Mid()
requiert trois arguments : une chane suivie de deux entiers. Le premier entier indique o
Mid() doit commencer son prlvement (position partir de 1), et le second entier dtermine
combien de caractres aprs cette position seront renvoys. Si vous ne spciez pas les deux
entiers, Mid() prend 1 comme premire position.
Mid() peut prlever nimporte quel nombre de caractres depuis nimporte quel point de
la chane. Voici un exemple :

strA = "Visual Basic FORTRAN COBOL C Pascal"


lang1 = Mid(strA, 1, 12) Renvoie "Visual Basic".
lang2 = Mid(strA, 14, 7) Renvoie "FORTRAN".
lang3 = Mid(strA, 22, 5) Renvoie "COBOL".
lang4 = Mid(strA, 28, 1) Renvoie "C".
lang5 = Mid(strA, 30, 6) Renvoie "Pascal".

Si largument length (longueur) nest pas spci, VB renvoie tous les caractres situs
droite de la position. Si la longueur spcie est plus grande que le reste de la chane,
Visual Basic ignore largument length.
Info

est utilisable la fois comme fonction et comme commande. Elle est


commande lorsquon lemploie gauche de loprateur = dune instruction
daffectation. Elle est fonction partout ailleurs. Voici son format :

Mid()

Mid(string, start[, length])

Linstruction Mid() modie le contenu de la chane donne entre parenthses.


Le code suivant initialise une chane avec trois mots, puis change le mot du
milieu laide de Mid() :
strSentence = "Paul et Marie"
Change le mot du milieu
Mid(strSentence, 6, 2) = "ou"
Aprs changement
intMsg = MsgBox("Rsultat aprs changement : " & strSentence)
Affiche "Paul ou Marie"
Inversion de style

253

<
:

Prog VB6 FM2A Page 254 Lundi, 6. aot 2001 3:32 15

Partie II

UCase() renvoie largument chane en lettres capitales. LCase() le renvoie en lettres


minuscules. La fonction MsgBox() suivante afche VISUAL BASIC :
intMsg = MsgBox(UCase("Visual Basic"))

Les fonctions LTrim() et RTrim()


LTrim() et RTrim() suppriment les espaces au dbut et la n de la chane. LTrim()
renvoie largument chane sans les espaces de dbut, RTrim() sans les espaces de n. La
fonction Trim() supprime les espaces de dbut et de n.
Voici le format de ces fonctions :
LTrim(stringExpression)
RTrim(stringExpression)
Trim(stringExpression)

Les instructions suivantes suppriment les espaces de dbut, de n, et des deux :


st1 = LTrim("
Bonjour") Renvoie "Bonjour".
st2 = RTrim("Bonjour
") Renvoie "Bonjour".
st3 = Trim(" Bonjour ") Renvoie "Bonjour".

Sans lintervention des fonctions, le mot "Bonjour" aurait t stock dans la variable en
compagnie de ses diverses espaces.
Lorsque Str() convertit un nombre positif en chane, une espace est toujours ajoute au
dbut (pour gurer un signe plus imaginaire). En combinant LTrim() Str(), vous
liminez cette espace superue. Dans la premire de ces instructions, la valeur est
stocke dans str1 avec le blanc. Dans la seconde, LTrim() supprime le blanc avant
daffecter la valeur str2.
str1 = Str(234)
str2 = LTrim(Str(234))

Renvoie " 234".


Renvoie "234".

La fonction ReverseIt() suivante inclut plusieurs des fonctions de chanes prsentes


ci-dessus. Cette fonction, illustre dans le Listing 8.6, inverse un certain nombre de
caractres dans la chane passe.
Listing 8.6 : Cette fonction se sert des fonctions de chanes pour inverser
une chane

>
:

1:
2:
3:
4:

254

Public Function ReverseIt (strS As String, ByVal n


As Integer) As String
Attend une chane, ainsi quun entier indiquant
le nombre de caractres inverser.
Inverse le nombre spcifi de

Prog VB6 FM2A Page 255 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:

caractres dans la chane spcifie.


Renvoie la chane inverse.

Inverse les n premiers caractres de la chane.


Dim strTemp As String, intI As Integer
If n > Len(strS) Then n = Len(strS)
For intI = n To 1 Step -1
strTemp = strTemp + Mid(strS, intI, 1)
Next intI
ReverseIt = strTemp + Right(strS, Len(strS) - n)
End Function

Supposons que la fonction ReverseIt() soit appele par linstruction suivante :


newStr = ReverseIt ("Visual Basic", 6)

Si tout se passe bien, la chane newStr prendra comme contenu lausiV Basic (les six
premiers caractres sont inverss). La ligne 10 dclare deux variables locales : la
premire, strTemp recevra le contenu invers de la chane ; la seconde, intI, est utilise
dans la boucle For.
ce
Astu

La version 6 de Visual Basic propose une nouvelle fonction de chane qui


renvoie son argument Single invers. Le Listing 8.6, destin illustrer la
fonction Mid(), aurait t bien plus efcace avec StrReverse().

A la ligne 12, linstruction If sassure que lentier pass ReverseIt() nest pas plus
grand que la longueur de la chane. Il est impossible dinverser plus de caractres que
nen contient la chane. Si largument en question est trop grand, linstruction If
lajuste, via la fonction Len(), au nombre rel de caractres, et la chane est inverse en
entier.
A la ligne 13, la boucle For dcrmente n (la position) jusqu la valeur 1. La fonction
Mid() de la ligne 14 concatne la nouvelle chane (le rsultat) le caractre situ la
position n. Lorsque n atteint 1, les caractres inverss sont envoys la nouvelle chane
(ligne 14). Une fois tous les caractres inverss, le code les concatne la partie droite
de la chane passe.

255

<
:

Prog VB6 FM2A Page 256 Lundi, 6. aot 2001 3:32 15

Partie II

Fonctions spciales
Visual Basic dispose de fonctions spciquement destines au traitement et lanalyse
des valeurs de date et dheure. Ces fonctions permettent, par exemple, de savoir quel
moment prcis un champ a t dit, notamment pour des questions de scurit. En
outre, les rapports gnrs par vos applications devraient tous indiquer quelle date
prcise on les a produits.
Outre ces fonctions de date et dheure, il existe des fonctions spciales de formatage
pour afcher une chane dans un format donn.

Fonctions de date et dheure


Ce sont vos paramtres Windows qui dterminent les valeurs renvoyes par Date et
Time. Sur une installation franaise, la fonction Date renvoie la date systme dans le
type Variant (Date) et sous ce format :
dd-mm-yyyy

Ici, dd est le jour (entre 01 et 31), mm est le mois (entre 01 et 12), et yyyy est lanne
(entre 1980 et 2099). Date tant lune des rares fonctions se passant darguments, elle ne
requiert gure de parenthses.
Time renvoie lheure systme dans le type Variant (Date) et sous ce format :
hh:mm:ss

Ici, hh est lheure (entre 00 et 23) ; mm, les minutes (entre 00 et 59) ; et ss, les secondes
(entre 00 et 59).
Now combine les fonctions Date et Time. Now renvoie une valeur de type Variant (Date),
sous le format suivant :
dd/mm/yy hh:mm:ss

Il est important de retenir que les fonctions Date, Time et Now renvoient des valeurs qui
sont, de faon interne, stocke comme des valeurs prcision double (ce qui assure le
stockage correct de la date et de lheure). Le meilleur moyen de formater les valeurs de
date et dheure est la fonction Format(), que nous tudierons la dernire section de ce
chapitre.
A exactement 19 heures 45 minutes, linstruction currentTime = Time stocke 19:45:00
dans la variable currentTime.

>
:

256

Prog VB6 FM2A Page 257 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Si lon est le 27 aot 1999, linstruction currentDate = Date stocke 27/08/99 dans la
variable currentDate.
Le 27 aot 1999, exactement 19 heures 45 minutes, linstruction currentDateTime =
Now stocke 27/08/99 19:45:00 dans la variable currentDateTime.
Info

Pour entrer une valeur de date ou dheure, il faut lentourer de caractres


dise (#) :
#21/11/1993#

Parce quil existe plusieurs formats de dates, Visual Basic doit pouvoir
reconnatre une date sous quelque format que vous lentriez. Du moment
que vous lencadrez de dises, vous tes libre dutiliser les formats
suivants :
dd-mm-yy ;
dd-mm-yyyy ;
dd/mm/yy ;
dd/mm/yyyy ;
dd NomMois yyyy ;
dd mmm yyyy (o mmm est une abrviation telle que "oct") ;
dd NomMois yy ;
dd-mmm-yy (o mmm est une abrviation telle que "oct") ;

Les heures, quant elles, peuvent tre exprimes de ces faons :


hh
hh:mm
hh:mm:ss

Fonctions chronomtriques
La fonction Timer renvoie le nombre de secondes coules depuis que lhorloge systme
a sonn minuit. Le format de Timer est on ne peut plus simple :
Timer

Timer est lune des rares fonctions qui nacceptent aucun argument (cest la raison de
labsence de parenthses). Timer est loutil idal pour chronomtrer un vnement. Vous
pouvez, par exemple, poser une question lutilisateur et mesurer le temps quil a pris
pour rpondre. Pour cela, il faut enregistrer la valeur de Timer au moment o la question
est pose, puis soustraire cette valeur celle quaura Timer au moment de la rponse.
La diffrence entre les deux valeurs reprsente le nombre de secondes que lutilisateur a
pris pour rpondre. Le Listing 8.7 illustre cet exemple.

257

<
:

Prog VB6 FM2A Page 258 Lundi, 6. aot 2001 3:32 15

Partie II

Listing 8.7 : Chronomtrage du temps de rponse de lutilisateur


1: Public Sub CompTime ()
2: Cette procdure mesure le temps de rponse.
3:
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
4:
Dim varBefore, varAfter, varTimeDiff As Variant
5:
Dim intMathAns As Integer
6:
varBefore = Timer
Valeur au moment de la question.
7:
intMathAns = Inputbox("Combien font 150 + 235 ?")
8:
varAfter = Timer
Valeur au moment de la rponse.
9:
La diffrence entre les deux valeurs reprsente
10:
le temps de rponse de lutilisateur.
11:
varTimeDiff = varAfter - varBefore
12:
intMsg = MsgBox("Vous avez mis " + Str(varTimeDiff)
& " secondes !")
13: End Sub

La ligne 6 stocke la valeur de Timer (le nombre de secondes coules depuis minuit)
immdiatement avant la question. La ligne 7 pose la question, et ds que lutilisateur
saisit une rponse, la ligne 8 stocke la nouvelle valeur de Timer. La diffrence entre les
deux valeurs, calcule la ligne 11, reprsente le temps de rponse exact de lutilisateur.
Timer ne sapplique quaux dlais compris dans une mme journe. Les fonctions
DateAdd(), DateDiff() et DatePart() viennent combler cette lacune. Le Tableau 8.5 dcrit
ces trois fonctions arithmtiques.
Tableau 8.5 : Fonctions arithmtiques de comparaison de dates
Fonction

Description

DateAdd()

Renvoie une nouvelle date aprs que vous avez ajout une valeur une date.

DateDiff()

Renvoie la diffrence entre deux dates.

DatePart()

Renvoie une partie dune date donne.

Ces fonctions arithmtiques peuvent traiter les lments de date prsentes dans le
Tableau 8.6. Les valeurs indiques sont les arguments utiliss par DateAdd(), DateDiff() et DatePart().
En dpit de son nom, DateAdd() sapplique aussi bien aux dates quaux heures (cest
dailleurs le cas de toutes les fonctions de date). Largument pass DateAdd() doit tre
de type Date. Voici le format de DateAdd() :
DateAdd(interval, number, oldDate)

>
:

258

Prog VB6 FM2A Page 259 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Tableau 8.6 : Arguments des fonctions arithmtiques de date


Valeur

Priode

yyyy

Anne

Trimestre

Mois

Jour dune anne

Jour

Jour ouvrable (1 pour dimanche, 2 pour lundi, et ainsi de suite pour Day(),
Month(), Year() et DateDiff())

ww

Semaine

Heure

Minute (notez que ce nest pas m)

Seconde

Ici, interval doit tre lune des valeurs (sous forme de chane) du Tableau 8.6. Cette
argument dnit lunit de temps qui sera ajoute ou soustraite (secondes,
minutes, etc.). Largument number spcie combien de ces units seront ajoutes ou
soustraites. Pour avancer une date, spciez un interval positif ; et un interval ngatif
pour retarder la date. oldDate est la date ou lheure de dpart (la date ou lheure
laquelle on ajoute ou soustrait). La valeur de oldDate ne change pas. A la n, DateAdd()
renvoie la nouvelle date.
Imaginons que vous ralisez un achat avec une carte de crdit dont le dlai de facturation
est de vingt-cinq jours. Linstruction suivante ajoute vingt-cinq jours la date
daujourdhui et stocke le rsultat dans intStarts :
intStarts = DateAdd("y", 25, Now)

intStarts renvoie alors la date dans vingt-cinq jours partir daujourdhui.


Info

Pour ajouter des jours une date, on utilise indiffremment y, d et w.

259

<
:

Prog VB6 FM2A Page 260 Lundi, 6. aot 2001 3:32 15

Partie II

Imaginons maintenant que votre entreprise inscrive les employs un programme spcial
de retraite au bout de dix ans danciennet. Linstruction suivante ajoute dix ans la date
dembauche et stocke la date rsultante dans la variable anc :
anc = DateAdd("yyyy", 10, emb)

La priode spcie dans la chane est ajoute la date.


ce
Astu

Si vous ne spciez pas danne, toutes les fonctions arithmtiques de date


utilisent lanne courante systme.

DateDiff() renvoie la diffrence entre deux dates. Pour obtenir une valeur positive, il
faut imbriquer DateDiff() dans une fonction Abs(). Cette diffrence est exprime dans
lunit de temps spcie. Voici le format de DateDiff() :
DateDiff(interval, date1, date2)

Linstruction suivante dtermine le nombre dannes danciennet dun employ :


anc = Abs(DateDiff("yyyy", dateEmb, Now))

DatePart() renvoie une partie de la date (la partie spcie par lunit de temps).
DatePart() permet dextraire dune date le jour, la semaine, le mois, lheure, etc. Voici le
format de DatePart() :
DatePart(interval, date)

Linstruction suivante stocke le nombre de jours couls depuis lembauche de


lemploy :
DatePart("w", dateEmb)

Les fonctions de date et dheure que nous avons tudies traitent des valeurs srielles.
Ces valeurs sont stockes comme valeurs prcision double an que les dates et les
heures soient correctement stockes et que les oprations renvoient des rsultats
corrects.
ition
Dfin

Une valeur srielle est une reprsentation interne de la date ou de lheure, de


VarType 7 (type de donnes Date) ou Variant.

Voici le format de la fonction DateSerial() :


DateSerial(year, month, day)

>
:

260

Prog VB6 FM2A Page 261 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Ici, year est un entier (entre 00 et 99, pour 1900 et 1999, ou une anne quatre chiffres) ou
une expression. month est un entier (entre 1 et 12) ou une expression. day est un entier
(entre 1 et 31) ou une expression. En passant une expression, vous pouvez spcier un
nombre dannes, de mois ou de jours, partir de, ou depuis, la valeur. Pour mieux
comprendre ce type darguments, examinez les appels de fonctions DateSerial()
suivants. Chacune delles renvoie la mme valeur :
d = DateSerial(1998, 10, 6)
d = DateSerial(1988+10, 12-2, 1+5)

Les fonctions DateSerial() permettent de maintenir les arguments de date dans certaines
limites. Prenons un exemple. Lanne 1996 tait bissextile, et le mois de fvrier de cette
anne navait donc que vingt-neuf jours. Lappel de fonction DateSerial() suivant
semble devoir renvoyer un rsultat incorrect, puisque le mois de fvrier, mme dans une
anne bissextile, ne peut contenir trente jours :
d = DateSerial(1996, 2, 29+1)

Mais cette fonction renverra bien le rsultat correct, car DateSerial() ajuste la date de sorte
que d corresponde au 1er mars 1996, soit le jour suivant le dernier jour de fvrier.
Le Listing 8.8 illustre une utilisation intressante de la fonction DateSerial().
Listing 8.8 : Ce code calcule le prochain jour ouvrable aprs la date spcie

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

Function DueDate (dteAnyDate) As Variant


Attend une valeur date.
Calcule le prochain jour ouvrable
aprs la date spcifie.
Renvoie la date de ce jour-l.
Dim varResult As Variant
If Not IsNull(dteAnyDate) Then
varResult = DateSerial(Year(dteAnyDate),
Month(dteAnyDate) + 1, 1)
If Weekday(varResult) = 1 Then
Dimanche
ajouter un jour.
DueDate = Result + 1
ElseIf Weekday(varResult) = 7 Then Samedi : ajouter deux jours.
DueDate = varResult + 2
Else
DueDate = varResult
End If
Else
varResult = Null
End If
End Function

261

<
:

Prog VB6 FM2A Page 262 Lundi, 6. aot 2001 3:32 15

Partie II

Lorsque cette fonction est appele, elle reoit une valeur de date stocke comme Date
ou Variant. Comme lindiquent les commentaires, la fonction renvoie la date du
premier jour ouvrable du mois suivant la date argument (entre 2, lundi, et 6, vendredi).
La fonction DateValue() diffre seulement de DateSerial() en ce quelle accepte les
arguments de type chane. En voici le format :
DateValue(stringDateExpression)

Ici, stringDateExpression doit tre une chane reconnaissable par Visual Basic comme
date (voir les exemples donns plus haut pour linstruction Date). Si lutilisateur doit
entrer une date valeur par valeur (le jour, puis le mois, puis lanne), vous pouvez
employer DateValue() pour convertir ces valeurs au format sriel interne. Si lutilisateur
doit entrer une date dun seul tenant (qui sera stocke dans une variable chane), telle
que 19 octobre 1999, DateValue() convertit galement cette chane en valeur srielle
de date.
Les fonctions TimeSerial() et TimeValue() sappliquent de la mme faon, mais aux
heures. Si lutilisateur indique lheure laide de trois valeurs, TimeSerial() convertit
ces valeurs au format sriel interne (type Date ou Variant). Voici le format de
TimeSerial() :
TimeSerial(hour, minute, second)

Tout comme DateSerial(), TimeSerial() accepte pour arguments des expressions,


quelle ajuste en consquence.
Quand lheure est entre sous forme de chane, TimeValue() convertit cette chane en
valeur dheure, selon ce format :
TimeValue(stringTimeExpression)

Les fonctions Day(), Month() et Year() convertissent chacune largument (de type
Variant ou Date) en numro du jour, du mois et de lanne. Ces trois fonctions sont fort
simples :
Day(dateArgument)
Month(dateArgument)
Year(dateArgument)

Enn, Weekday() renvoie le numro du jour ouvrable (voir Tableau 8.6) pour largument
date qui lui est pass.
Les instructions suivantes passent la date du jour (obtenue par Now) aux fonctions Day(),
Month() et Year() :

>
:

262

Prog VB6 FM2A Page 263 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

d = Day(Now)
m = Month(Now)
y = Year(Now)

Les numros du jour, du mois et de lanne de la date courante sont stocks dans les
trois variables.

La fonction Format()
Format() est lune des fonctions les plus puissantes et les plus complexes. Elle renvoie
largument sous un format diffrent de celui qui a t pass. Voici le format de Format() :
Format(expression, format)

Format() renvoie une valeur de type Variant, que lon utilise gnralement comme
chane. Largument expression est une expression numrique ou une expression chane.
Format() peut modier toutes sortes de donnes : nombres, chanes, dates, heures, etc.
Elle peut notamment servir afcher un montant en incluant la virgule et le symbole "FF".
Largument format est une variable chane ou une expression qui contient un ou
plusieurs des caractres de formatage prsents aux Tableaux 8.7 8.9. Ces trois
tableaux correspondent aux diverses catgories de donnes (chane, nombre ou date).
Ces tableaux sont longs. Mais il vous sufra de quelques exemples pour comprendre le
fonctionnement des caractres de formatage.
Tableau 8.7 : Caractres de formatage de chanes
Symbole

Description

Un caractre est cens apparatre dans la chane la position de @. Sil ny a pas


de caractre cet endroit, un blanc est insr. Les @ (sil y en a plusieurs)
sappliquent de droite gauche.

&

Semblable @, ceci prs quaucun blanc nest insr si rien napparat la


place du &.

Inverse lordre dapplication de @ et & (de gauche droite, donc).

<

Convertit tous les caractres en minuscules.

>

Convertit tous les caractres en capitales.

263

<
:

Prog VB6 FM2A Page 264 Lundi, 6. aot 2001 3:32 15

Partie II

Tableau 8.8 : Caractres de formatage de nombres


Symbole
""

(chane nulle)

Le nombre safche sans aucun formatage.

Un chiffre est cens apparatre dans la chane la position de


0. Sil ny a aucun chiffre cet endroit, cest 0 qui safche. Si
le champ de format contient plus de zros que nen contient le
nombre formater, des zros apparaissent au dbut ou la n.
Si le nombre contient plus de positions numriques, 0 ajuste
au format demand toutes les dcimales, sans toucher la
partie entire. Ce caractre de formatage sert surtout insrer
des zros de dbut et de n.

Semblable 0, ceci prs que rien nest insr si le champ de


format contient plus de # que le nombre formater ne contient
de chiffres.

Associ 0 ou #, spcie le nombre de chiffres qui doit


apparatre de part et dautre du point dcimal.

Multiplie le nombre par 100 et insre le signe de


pourcentage % dans la chane.

Places dans les sries de 0 ou de #, les virgules permettent en


notation anglo-saxonne de sparer les milliers. Une doublevirgule indique que le nombre doit tre divis par 1000 (pour
rduction dchelle).

E-, E+, e-, e+

Si le format contient au moins un 0 ou un #, convertit le


nombre en notation scientique.

Intercale des deux-points entre les heures, les minutes et les


secondes.

Intercale des slashs entre les jours, les mois et les annes.

-, +, $,
\

>
:

Description

264

space

Safchent dans la chane tels quels et la position donne.


Le caractre plac aprs lantislash apparat sa position dans la
chane.

Prog VB6 FM2A Page 265 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Tableau 8.9 : Caractres de formatage de dates


Symbole

Description

Afche la date (comme ddddd, si seule la date apparat), lheure (comme


ttttt si seule lheure apparat), ou les deux si les deux valeurs sont
prsentes.

Afche le jour, de 1 31.

dd

Afche le jour sur deux chiffres, soit de 01 31.

ddd

Afche le jour sur trois caractres, soit de Dim Sam.

dddd

Afche le jour en toutes lettres, soit de Dimanche Samedi.

ddddd

Afche la date selon le Style de date courte spci dans les Paramtres
rgionaux de votre Panneau de conguration (gnralement dd/mm/yy).

dddddd

Afche la date selon le Style de date longue spci dans les Paramtres
rgionaux de votre Panneau de conguration (gnralement dd mmmm yyyy).

w, ww

Voir Tableau 8.6.

Afche le mois, de 1 12. Plac aprs h ou hh, m reprsente galement


les minutes.

mm

Afche le mois sur deux chiffres, soit de 01 12. Plac aprs h ou hh, mm
reprsente galement les minutes.

mmm

Afche le mois sur trois caractres, soit de Jan Dc.

mmmm

Afche le mois en toutes lettres, soit de Janvier Dcembre.

Afche le trimestre de lanne.

Afche le jour de lanne, de 1 366.

yy

Afche lanne sur deux chiffres, soit de 00 99 (pour lan 2000, yy


afchera donc 00).

yyyy

Afche lanne avec tous les chiffres, soit de 1000 9999.

h, n, s

Voir Tableau 8.6.

ttttt

Afche lheure selon le Style de lheure spci dans les Paramtres


rgionaux de votre Panneau de conguration (gnralement hh:nn:ss).

265

<
:

Prog VB6 FM2A Page 266 Lundi, 6. aot 2001 3:32 15

Partie II

AMPM, ampm, AP et ap afchent de diverses manires lheure au format anglo-saxon AM/


PM.
Les instructions suivantes mettent en uvre les caractres de formatage de chanes. Les
commentaires indiquent les valeurs formates affectes aux variables cibles.
strS = Format("AbcDef", ">") ABCDEF
strS = Format("AbcDef", "<") abcdef
strS = Format("00143646421", "(@) @@-@@-@@-@@-@@")
(0) 01-43-64-64-21

Comme le montre la dernire instruction, les chanes peuvent recevoir les formats les
plus varis. Si la chane formater, par exemple un numro de tlphone, est une variable chane issue dun champ de formulaire ou dun tableau de donnes, Format()
sapplique de la mme manire.
Imaginons le cas o le code dappel extrieur (par exemple 0) est facultatif. Format()
sappliquant de droite gauche, linstruction :
strS = Format("0143646421", "(@) @@-@@-@@-@@-@@")

stockera dans strS le numro :


( ) 01-46-64-64-21

Si le code dappel extrieur avait t saisi, il aurait t afch entre les parenthses.
! a pour effet dinverser le sens dapplication du formatage ; il ne doit tre utilis que
dans le cas, par exemple, o des donnes sont susceptibles de manquer la n de la
chane. Linstruction :
strS = Format("43646421", "!(@) @@-@@-@@-@@"

stockera dans strS un numro incorrect :


(4) 36-46-42-1

Le Listing 8.9 illustre le fonctionnement du formatage numrique. Les commentaires


indiquent le rsultat du formatage.
Listing 8.9 : Format() appliqu aux nombres

>
:

1:
2:
3:
4:
5:
6:

266

strS
strS
strS
strS
strS
strS

=
=
=
=
=
=

Format(9146, "|######|") |9146|


Format(2652.2, "00000.00") 02652.20
Format(2652.2, "#####.##") 2652.2
Format(2652.216, "#####.##") 2652.22
Format(45, "+###") +45
Format(45, "-###") 45

Prog VB6 FM2A Page 267 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

7:
8:
9:
10:

strS
strS
strS
strS

=
=
=
=

Format(45, "###-") 45Format(2445, "####.## FF") 2445. FF


Format(2445, "####.00 FF") 2445.00 FF
Format(2445, "00H00") 24H45

Le Listing 8.10 illustre le fonctionnement du formatage des dates et des heures. Les
commentaires indiquent le rsultat du formatage.
Listing 8.10 : Format() appliqu aux dates et heures

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:

Dim varD As Variant


varD = Now
Suppose comme date fictive
le 21 mai 1999 12:30 prcises.
strND = Format(varD, "c") 21/5/99 12:30:00
strND = Format(varD, "w") 6
strND = Format(varD, "ww") 22
strND = Format(varD, "dddd") vendredi
strND = Format(varD, "q") 2
strND = Format(varD, "hh") 12
strND = Format(varD, "d mmmm h:nn:ss") "21 mai 12:30:00"

En rsum
Ce chapitre a dtaill la structure gnrale dun programme Visual Basic. Lorsque vous
crez une application contenant plusieurs modules et procdures, vous devez tenir
compte de la porte des variables an que les procdures aient accs toutes les
donnes ncessaires. Les variables, nous lavons vu, doivent rester locales le plus
souvent possible. Pour se partager les donnes, vos procdures devront donc se passer
les arguments adquats. Les procdures que vous crirez pourront tre des sous-routines
aussi bien que des fonctions. En crant ces procdures, vous construirez vos propres
bibliothques de routines, exploitables dans dautres applications.
Pour pauler vos propres procdures, Visual Basic met votre disposition une multitude
de fonctions internes, capables danalyser et de traiter des nombres, des chanes et
dautres donnes. Les fonctions internes tant, comme leur nom lindique, une partie du
langage Visual Basic, elles sont disponibles dans tous les modules, tout moment.
Le prochain chapitre revient la nature visuelle de Visual Basic, et vous explique
comment crer des botes de dialogue standards.

267

<
:

Prog VB6 FM2A Page 268 Lundi, 6. aot 2001 3:32 15

Partie II

Questions-rponses
Q Pourquoi les contrles ne peuvent-ils tre locaux ou globaux ?
R Les contrles doivent tre accessibles la totalit du code. Ils sont donc, pour ainsi
dire, publics pour toutes les applications. Les contrles sont, en fait, des objets bien
distincts du code. Ainsi, moins que vous ne criez des variables de contrles pour
y stocker les valeurs de proprits de certains contrles, vous navez jamais vous
soucier de la porte des contrles.

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre
les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez
ces rponses lAnnexe A.

Quiz
1. Quelles variables ont la plus grande porte : les locales, celles de niveau module ou les
publiques ?
2. Quelles variables ont la porte la plus restreinte : les locales, celles de niveau
module ou les publiques ?
3. Le mot cl ByRef est optionnel. Vrai ou faux ?
4. Combien de valeurs une sous-routine peut-elle renvoyer ?
5. Nommez des fonctions qui peuvent constituer un quivalent abrg de If.
6. Que se passe-t-il si le premier argument de Choose() est infrieur 1 ?
7. A quoi sert la fonction Abs() ?
8. Dans chacune des instructions suivantes, que recevra la variable strS ?
a. strS = Format("74135", "&&&&&-&&&&")
b. strS = Format(12345.67, "######.###")

9. Sans consulter la table ASCII, dites ce que intN contiendra aprs excution de
linstruction daffectation suivante :
intN = Asc(Chr(192))

10. Quelle est la diffrence entre les fonctions Now et Time ?


>
:

268

Prog VB6 FM2A Page 269 Lundi, 6. aot 2001 3:32 15

Chapitre 8 : Sous-routines et fonctions

Exercices
1. Rcrivez le Listing 8.1 de sorte que SalesTax() soit une fonction qui renvoie la
procdure appelante le montant total de la taxe. La procdure appelante,
GetTotal(), devra afcher dans une bote de message la valeur renvoye par SalesTax().
2. Rcrivez en fonction IIf() linstruction If suivante :
If (intTotal > 10000) Then

strTitle = "Bon boulot !"


Else

strTitle = "Vir !"


End If

3. Rcrivez en fonction Choose() linstruction If suivante :

If (ID = 1) Then
intBonus = 50
ElseIf (ID = 2) Then
intBonux = 75
ElseIf (ID = 3) Then
intBonus = 100
End If

4. Dans les instructions suivantes, quelles sont les valeurs affectes ?


intN = Int(-5.6)
intO = Fix(-5.6)
intP = CInt(-5.6)

269

<
:

Prog VB6 FM2A Page 270 Lundi, 6. aot 2001 3:32 15

Prog VB6 FM2A Page 271 Lundi, 6. aot 2001 3:32 15

Chapitre

Les botes de dialogue


Dans ce chapitre, vous apprendrez ajouter des botes de dialogue vos applications.
Vous dcouvrirez le contrle Common Dialog, qui permet de crer six sortes de botes de
dialogue standards. Le contrle Common Dialog permet dafcher des bote de dialogue
familires lutilisateur, qui choisira sans peine parmi une liste de chiers ou imprimera
facilement un rapport depuis votre programme.
Voici ce que nous tudierons aujourdhui :

limportance des bote de dialogue communes ;

comment disposer le contrle Common Dialog ;

les mthodes du contrle Common Dialog ;

les proprits des botes de dialogue ;

comment rpondre aux botes de dialogue ;

linstruction On Error Goto, qui permet de grer avec simplicit le bouton Annuler.

Les botes de dialogue communes


Plus votre programme se conforme lapparence gnrale des applications Windows
populaires, telles que Microsoft Word, plus rapidement vos utilisateurs sy adapteront.
Si vous comptez vendre vos programmes, il est capital de sduire lutilisateur, et notamment de le convaincre dacheter les futures mises jour. Et si, plutt que de lancer vos
programmes sur le march, vous dveloppez des applications pour une socit prcise,
limportant reste ; un programme convivial et cohrent signie pour vous moins de
maintenance et plus de productivit.

271

Prog VB6 FM2A Page 272 Lundi, 6. aot 2001 3:32 15

Partie II

Pour crer une application qui, entre autres tches, ouvre des chiers et envoie des
impressions, un choix entre deux partis soffre vous :

imiter les botes de dialogue apparentes des autres applications ;

innover et tenter damliorer les styles de botes de dialogue standards.

Rien ne vous empche, par exemple, dinnover dans le type de bote de dialogue qui
safche lorsque lutilisateur slectionne Fichier, Ouvrir. Mais ce serait imprudent. Car
votre application ne serait dj plus standard, et vos utilisateurs devraient revenir sur les
habitudes acquises dans les autres applications, mme pour effectuer une opration trs
simple. En outre, de tels programmes demanderaient plus de travail, car vous devriez
concevoir de nouvelles botes de dialogue pour toutes les manipulations.
Info

Faire
Vos applications doivent prsenter les mmes menus et les mmes botes de
dialogue que les applications Windows standards.

Pour ceux qui veulent gagner du temps et se conformer aux standards, Visual Basic
dispose du contrle Common Dialog, qui permet de gnrer des botes de dialogue avec
le moins de programmation possible. Ces botes de dialogue auront exactement le mme
aspect et le mme fonctionnement que les botes de dialogue similaires des applications
Windows standards. Voici les options Common Dialog :

Couleurs. Afche une bote de dialogue dans laquelle lutilisateur peut choisir sur
une palette de couleurs, et mme dnir des couleurs personnalises.
Police. Afche une bote de dialogue dans laquelle lutilisateur choisit parmi des
polices, des attributs et des tailles de caractres.
Ouvrir. Afche une bote de dialogue dans laquelle lutilisateur slectionne un
chier ouvrir partir des dossiers et des lecteurs, voire dun rseau.
Imprimer. Afche une bote de dialogue dans laquelle lutilisateur slectionne une
imprimante ou en modie les paramtres.
Enregistrer. Afche une bote de dialogue dans laquelle lutilisateur spcie le nom
et le lieu denregistrement dun chier.
Aide Windows. Lance le moteur daide Windows et afche la bote de dialogue
initiale du systme daide de votre application.
Info

>
:

272

Le contrle Common Dialog vous permet dajouter diverses botes de dialogue votre application, avec un effort minimum.

Prog VB6 FM2A Page 273 Lundi, 6. aot 2001 3:32 15

Chapitre 9 : Les botes de dialogue

Info

Vous pouvez, aussi bien, crer des botes de dialogue standards sans laide du
contrle Common Dialog. Vous devrez alors reproduire sur la feuille la disposition exacte des zones de texte, barres de dlement, zones de liste, et autres
lments invitables. Mme avec trs peu de contrles sur la feuille, lcriture
dune bote de dialogue est toujours fastidieuse. Bref, il faut vraiment avoir une
excellente raison pour se passer du contrle Common Dialog !

Les botes de dialogue gnres par le contrle Common Dialog sont dites modales.
ition
Dfin

Est modale une bote de dialogue que lutilisateur doit ncessairement fermer
(en cliquant sur OK ou sur Annuler) avant de poursuivre toute autre opration
dans lapplication.

Ajouter le contrle Common Dialog


Inutile de chercher le contrle Common Dialog dans votre Bote outils, vous ne ly
trouverez pas. La Bote outils ne contient pas tous les contrles disponibles ; dabord,
parce quelle occuperait la moiti de lcran ; ensuite, parce que vous navez pas besoin
de tous ces contrles tout le temps. Mais avant dutiliser le contrle Common Dialog, il
va bien falloir lajouter la Bote outils.
Pour ajouter les contrles, suivez ces tapes :
1. Appuyez sur Ctrl-T (raccourci clavier pour Projet, Composants). La bote de dialogue
Composants safche (voir Figure 9.1).
Figure 9.1
La bote de dialogue
Composants liste
tous les contrles
disponibles
sur votre systme.

273

<
:

Prog VB6 FM2A Page 274 Lundi, 6. aot 2001 3:32 15

Partie II

2. Faites dler la liste jusqu loption Microsoft Common Dialog Control 6.0.
3. Cochez la case et cliquez sur OK. Le contrle Common Dialog safche au bas de la
fentre Bote outils.
ce
Astu

Protez-en pour jeter un coup dil aux autres contrles disponibles dans
la bote de dialogue Composants. Tous sont des contrles ActiveX. Microsoft Calendar Control 8.0, par exemple, permet dajouter vos applications des fonctions de calendrier, telles quen exigerait un programme de
gestion de planning ou un programme de facturation. Si vous dcidez
dajouter de nouveaux contrles votre Bote outils (a ne cote rien),
vous pouvez galement parcourir leurs proprits spciques. Consultez
laide en ligne au sujet des vnements et des mthodes supports par ces
contrles. Vous trouverez dans les revues spcialises et sur lInternet des
contrles supplmentaires capables dacclrer le dveloppement de vos
programmes. Le Chapitre 17 vous apprendra crire vos propres contrles
ActiveX.

Fonctionnement du contrle Common


Dialog
La Figure 9.2 montre un contrle Common Dialog plac au milieu dune feuille.
Comme vous pouvez le constater, il ne ressemble pas vraiment une bote de dialogue.
Il semble mme trop petit pour servir quoi que ce soit. Et Visual Basic ignore vos
tentatives de redimensionnement du contrle, mme sil est entour de poignes.
Figure 9.2
Plac sur la feuille,
le contrle Common
Dialog ne ressemble
pas grand-chose.

A lexcution du programme, le contrle Common Dialog prend la forme de lune des


botes de dialogue voques plus haut. En fait, Visual Basic se charge dafcher la bote
de dialogue au centre de lcran, quelle que soit la position du contrle Common Dialog

>
:

274

Prog VB6 FM2A Page 275 Lundi, 6. aot 2001 3:32 15

Chapitre 9 : Les botes de dialogue

sur la feuille. Vous pouvez donc le placer lcart, et disposer les autres contrles
comme bon vous semble. Lorsque le contrle Common Dialog sera dclench, la bote
de dialogue safchera automatiquement au centre de lcran. Le reste du temps, Visual
Basic masque le contrle Common Dialog de sorte quil ne se superpose pas, lors de
lexcution, aux autres contrles de la feuille.
Pour que le programme dclenche le contrle Common Dialog en afchant un type spcique de bote de dialogue, vous devez crire votre code de faon approprie.
Cest laide des proprits et des mthodes que lon spcie quelle forme de bote de
dialogue le contrle Common Dialog doit afcher. Les mthodes, vous vous en souvenez peut-tre, sont des procdures internes appliques des contrles particuliers. Voici
les mthodes du contrle Common Dialog :

ShowColor. Afche une bote de dialogue Couleur.

ShowFont. Afche une bote de dialogue Police.

ShowHelp. Afche une bote de dialogue Aide Windows.

ShowOpen. Afche une bote de dialogue Ouvrir.

ShowPrinter. Afche une bote de dialogue Imprimer.

ShowSave. Afche une bote de dialogue Enregistrer.

Soit un contrle Common Dialog nomm dbFont. Aprs quelques rglages de proprits, il suft dappliquer ce contrle la mthode ShowFont pour afcher une bote de
dialogue de type Police :
dbFont.ShowFont

Affiche une bote de dialogue Police

De mme, pour afcher par exemple, en rponse une slection de menu Fichier,
Ouvrir une bote de dialogue de type Ouvrir, il suft dappliquer la mthode ShowOpen au contrle dbFont :
dbFont.ShowOpen

Affiche une bote de dialogue Ouvrir

Comme vous le voyez, un seul contrle Common Dialog suft pour afcher divers types
de botes de dialogue. Toutefois, avant de dclencher le contrle par une mthode, il est
indispensable de dnir quelques proprits.
Info

Pour les applications rclamant plusieurs types de botes de dialogue, deux


solutions soffrent vous. Ou bien vous placez un seul contrle Common
Dialog et lui appliquez diffrentes mthodes (comme dans lexemple ci-dessus).
Ou bien vous placez plusieurs contrles Common Dialog, un pour chaque type
de bote de dialogue requis. Un seul et mme contrle Common Dialog est plus

275

<
:

Prog VB6 FM2A Page 276 Lundi, 6. aot 2001 3:32 15

Partie II

facile grer. Toutefois, le fait de placer plusieurs contrles Common Dialog


vous pargne de modier les proprits chaque fois quun type de bote de
dialogue est requis.
Les botes de dialogue gnres par le contrle Common Dialog ne font rien dautre que
proposer diverses slections lutilisateur. En dautres mots, si lutilisateur slectionne
une police de caractres dans la bote de dialogue Police, puis quil clique sur OK, le
texte afch lcran ne bougera pas pour autant. Pas plus quun chier ne souvrira
lorsque lutilisateur aura opr son choix dans la bote de dialogue Ouvrir. Le contrle
Common Dialog fournit une interface commune pour les bote de dialogues et dnit
des proprits selon les rponses de lutilisateur. Son rle sarrte l. Cest vous,
votre code, quil incombe danalyser les valeurs de proprits des botes de dialogue, et
de dterminer la raction du programme.

La bote de dialogue Couleur


Les couleurs disponibles sur Windows vont de plusieurs centaines plusieurs millions.
La bote de dialogue Couleur offre lutilisateur un moyen simple de choisir parmi ces
teintes. Supposons, par exemple, que vous permettiez lutilisateur de changer la
couleur de larrire-plan dune feuille. Il nest pas question de le demander ainsi :
strAns = InputBox("Quelle couleur voulez-vous appliquer
larrire-plan ? ")

Car la proprit BackColor, comme vous vous en souvenez, appelle un code de couleur
hexadcimal. (Cest dailleurs le cas de toutes les proprits lies la couleur, telles que
ForeColor.) Lutilisateur peut toujours rpondre la InputBox() par "rouge" ou "bleu",
la pauvre proprit BackColor ny comprendra rien. La rponse de lutilisateur ne peut
en aucun cas tre affecte ainsi :
frmTitle.BackColor = strAns

Cela ne marchera JAMAIS !

La bote de dialogue Couleurs offre lutilisateur un moyen de slectionner une couleur, mais
se charge galement de convertir la valeur choisie en code hexadcimal. Une fois la bote de
dialogue referme, il ne vous reste qu affecter la valeur renvoye la proprit BackColor de
la feuille.
Pour que le contrle Common Dialog afche la bote de dialogue Couleurs, suivez ces
tapes :
1. Dans la proprit DialogTitle du contrle Common Dialog, saisissez le libell qui
doit apparatre sur la barre de titre. Par exemple, Couleur darrire-plan.

>
:

276

Prog VB6 FM2A Page 277 Lundi, 6. aot 2001 3:32 15

Chapitre 9 : Les botes de dialogue

2. Affectez la proprit Flags du contrle lune des valeurs prsentes au


Tableau 9.1.
Tableau 9.1 : Valeurs de la proprit Flags pour la bote de dialogue Couleurs
Littral nomm

Valeur

Description

cdlCCRGBInit

Dnit la valeur initiale

cdlCCFullOpen

Afche la bote de dialogue complte (incluant la section


Dnition de couleurs personnalises)

cdlCCPreventFullOpen

Dsactive loption Dnition de couleurs personnalises

cdlCCHelpButton

Afche un bouton Aide dans la bote de dialogue

Ce tableau dcrit laspect premier de la bote de dialogue Couleurs. Pour dnir


plusieurs de ces valeurs, il suft de les additionner.
3. Dclenchez lafchage de la bote de dialogue Couleurs en appliquant, dans le code,
la mthode ShowColor au contrle Common Dialog.
Supposons que vous vouliez afcher la bote de dialogue Couleurs, laisser lutilisateur
oprer son choix, et afcher un bouton daide. Supposons encore que le contrle Common
Dialog soit nomm cdbColor. Voici quoi ressemblerait le code :

Dfinit les proprits Flags.


cdbColor.Flags = cdlCCFullOpen + cdlCCHelpButton Bote de dialogue complte.
Affiche la bote de dialogue Couleur.
cdbColor.ShowColor

La Figure 9.3 montre la bote de dialogue rsultante.


Figure 9.3
La bote de dialogue
Couleur, afche
par la mthode
ShowColor.

277

<
:

Prog VB6 FM2A Page 278 Lundi, 6. aot 2001 3:32 15

Partie II

Pour afcher par dfaut un jeu de couleur restreint, tout en laissant lutilisateur la
possibilit de cliquer sur le bouton Dnition de couleurs personnalises, il suft
domettre la valeur cdlCCFullOpen. La Figure 9.4 montre cette bote de dialogue
restreinte.
Figure 9.4
La bote de dialogue
Couleur en mode restreint.

Ds que la bote de dialogue se referme, les proprits du contrle sont initialises


en fonction de lutilisateur. La proprit la plus importante est Color, qui contient ds
lors la valeur hexadcimale correspondant la couleur slectionne ou cre. Le code
suivant pourrait faire suite lafchage de la bote de dialogue :
Dfinit la couleur darrire-plan de la
feuille selon les choix de lutilisateur.
frmTitle.ForeColor = cdbColor.Color

Gestion du bouton Annuler


Votre code doit tre en mesure de dterminer si lutilisateur a slectionn une couleur
puis cliqu sur OK, ou sil a cliqu sur le bouton Annuler ce qui signie quaucune
proprit ne doit tre modie. Cette ncessit de grer le bouton Annuler ne concerne
pas seulement la bote de dialogue Couleurs, mais aussi toutes les autres botes de dialogue.
Pour savoir si lutilisateur a cliqu sur Annuler, vous emploierez une nouvelle
commande Visual Basic : linstruction On Error Goto. Si une erreur quelconque
survient dans les instructions qui suivent, cette instruction bascule automatiquement le
code vers ltiquette approprie. Ainsi, ltiquette :
On Error Goto dbErrHandler

>
:

278

Prog VB6 FM2A Page 279 Lundi, 6. aot 2001 3:32 15

Chapitre 9 : Les botes de dialogue

indique Visual Basic de passer directement ltiquette dbErrHandler si une erreur se


produit dans les lignes qui suivent (jusqu la n de la procdure).
ition
Dfin

Une tiquette identie dans le code une section destine grer les erreurs.
On applique aux tiquettes les mmes conventions de dnomination que
pour les variables. En revanche, les tiquettes doivent toujours se terminer
par un deux-points, ce qui justement les distingue des variables. Selon
lexemple donn ci-dessus, la procdure doit inclure, quelque part aprs
linstruction On Error Goto, une tiquette telle que :

dbErrHandler:

(Les programmeurs placent en gnral leurs tiquettes au bas du programme.)


Si une erreur survient, linstruction Exit interrompt la procdure, et le code de gestion
derreurs qui suit ltiquette sexcute. Si lutilisateur clique sur le bouton Annuler et
que vous ayez dni la proprit CancelError comme True, Visual Basic dclenche une
erreur. Bien sr, un clic sur le bouton Annuler ne constitue pas en soi une erreur. Mais le
fait de le traiter comme une condition derreur permet dutiliser un code tel que celui du
Listing 9.1.
Listing 9.1 : Gestion du bouton Annuler

1: Private Sub mnuViewColor_Click()


2:
cdbColor.CancelError = True Un clic sur Annuler
3:
quivaut une erreur.
4:
On Error Goto dbErrHandler Bascule vers ltiquette en cas derreur.
5:
6:
Dfinit la proprit Flags.
7:
cdbColor.Flags = cdlCCFullOpen + cdlCCHelpButton Affichage complet.
8: Color DB
9:
Affiche la bote de dialogue Couleur.
10:
cdbColor.ShowColor
11:
12: Dfinit la couleur darrire-plan de la
13: feuille selon les choix de lutilisateur.
14:
frmTitle.ForeColor = cdbColor.Color
15:
Exit Sub
Fin de la procdure normale.
16: dbErrHandler:
17:
Lutilisateur ayant cliqu sur Annuler,
18:
la procdure doit tre ignore.
19:
Exit Sub
20: End Sub

Si lutilisateur slectionne une couleur et clique sur OK, la ligne 14 applique cette couleur
larrire-plan de la feuille. Plutt que dinterrompre la procdure quand lutilisateur

279

<
:

Prog VB6 FM2A Page 280 Lundi, 6. aot 2001 3:32 15

Partie II

clique sur OK, il est plus simple de dnir les couleurs par dfaut (entre les lignes 16 et
19) de larrire-plan de la feuille.
ntion
Atte

Le gestionnaire derreurs de la ligne 16 sexcutera en raction toutes les


erreurs, et pas seulement si lutilisateur clique sur Annuler. Au Chapitre 16,
vous dcouvrirez lobjet systme Err interroger pour dterminer avec
prcision le problme, sur la base dun numro derreur.

La bote de dialogue Police


Le contrle Common Dialog permet de gnrer les botes de dialogue Police communes
la plupart des applications. Sil vaut mieux utiliser cette bote de dialogue plutt que
den crire une vous-mme, ce nest pas seulement parce quelle est standard. Cest
aussi que vous ne pouvez savoir quelles polices de caractres seront installes sur le PC
de lutilisateur. La bote de dialogue Police gnre par le contrle Common Dialog
recense toutes les polices installes, et afche le contenu de la bote de dialogue en
consquence.
La Figure 9.5 montre une bote de dialogue Police classique, telle que lafche la
mthode ShowFont du contrle Common Dialog.
Figure 9.5
Une bote de dialogue
Police standard.

Comme pour la bote de dialogue Couleurs, il faut rgler les valeurs de la proprit
Flags. Toutefois, la bote de dialogue Police tant plus complexe, les valeurs de Flags
sont ici diffrentes.

>
:

280

Prog VB6 FM2A Page 281 Lundi, 6. aot 2001 3:32 15

Chapitre 9 : Les botes de dialogue

Info

Pour la bote de dialogue Police, lensemble des valeurs de la proprit Flags


peut devenir considrable. On recourt donc soit des constantes nommes, soit
des valeurs hexadcimales. Le Tableau 9.2 prsente les valeurs dnissables
pour la proprit Flags. Comme pour la plupart des tches de programmation,
la maintenance est facilite par lemploi de littraux nomms. Le nom des littraux est gnralement explicite, l o les valeurs hexadcimales ne prsentent
quune obscure suite de caractres.

Tableau 9.2 : Valeurs de Flags pour la bote de dialogue Police


Littral nomm

Valeur

Description

cdlCFANSIOnly

&H400

La bote de dialogue nafchera que des caractres


Windows standards

cdlCFApply

&H200

Afche le bouton Applique

cdlCFBoth

&H3

Recense les polices cran ou imprimante disponibles ;


la proprit hDC identie le contexte de priphrique
associ limprimante

cdlCFEffects

&H100

Rend disponible les options Barr, Soulign, les


attributs de couleur, etc.

cdlCFFixedPitchOnly

&H4000

Lutilisateur ne pourra slectionner que des polices


espacement xe

cdlCFForceFontExist

&H10000

Afche un message derreur si lutilisateur tente de


slectionner une police ou un style inexistants

cdlCFHelpButton

&H4

Afche le bouton Aide

cdlCFLimitSize

&H2000

Restreint les tailles de police la plage dnie par les


proprits Min et Max

cdlCFNoFaceSel

&H80000

Aucune police slectionne par dfaut

cdlCFNoSimulations

&H1000

Interdit les simulations de polices graphiques


indpendantes du priphrique (GDI)

cdlCFNoSizeSel

&H200000

Aucune taille de police slectionne par dfaut

cdlCFNoStyleSel

&H100000

Aucun style de police slectionn par dfaut

cdlCFNoVectorFonts

&H800

Interdit la slection de polices vectorielles

281

<
:

Prog VB6 FM2A Page 282 Lundi, 6. aot 2001 3:32 15

Partie II

Tableau 9.2 : Valeurs de Flags pour la bote de dialogue Police (suite)


Littral nomm

Valeur

Description

cdlCFPrinterFonts

&H2

Recense uniquement les polices imprimante


(spcies par la proprit hDC)

cdlCFScalableOnly

&H20000

Nautorise que la slection de polices


dimensionnables

cdlCFScreenFonts

&H1

Recense uniquement les polices cran supportes par


le systme

cdlCFTTOnly

&H40000

Nautorise que la slection de polices TrueType

cdlCFWYSIWYG

&H8000

Nautorise que la slection de polices imprimante ou


cran (cette valeur implique que les valeurs
cdlCFBoth et cdlCFScalableOnly soient galement
dnies)

ntion
Atte

Les proprits cdlCFScreenFonts, cdlCFPrinterFonts et cdlCFBoth doivent


obligatoirement tre dnies pour que la bote de dialogue Police safche. Si
vous tentez dappliquer la mthode ShowFont, alors que ces valeurs de Flags
nont pas t dnies, Visual Basic gnre une erreur.

Le Listing 9.2 met en uvre la bote de dialogue Police.


Listing 9.2 : Afcher la bote de dialogue Police pour que vos utilisateurs choisissent dans une liste le style et la taille de la police

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:

Dfinir les valeurs de Flags.


CdbFont.Flags = cdlCFBoth Or cdlCFEffects
CdbFont.ShowFont Affiche la bote de dialogue.
Dfinit les proprits du label qui
refltera les choix de lutilisateur.
LblMessage.Font.Name = CdbFont.FontName
LblMessage.Font.Size = CdbFont.FontSize
LblMessage.Font.Bold = CdbFont.FontBold
LblMessage.Font.Italic = CdbFont.FontItalic
LblMessage.Font.Underline = CdbFont.FontUnderline
LblMessage.FontStrikethru = CdbFont.FontStrikethru
LblMessage.ForeColor = CdbFont.Color

Examinez les affectations composites des lignes 6 10. Vous navez pas encore rencontr
cette sparation des noms de proprits par des points. Rappelez-vous que, lorsque vous
cliquez sur les points de suspension de la proprit Font, une bote de dialogue safche et

>
:

282

Prog VB6 FM2A Page 283 Lundi, 6. aot 2001 3:32 15

Chapitre 9 : Les botes de dialogue

propose les diffrentes valeurs. Cest que la proprit Font peut contenir une multitude de
valeurs. A chaque valeur de la proprit Font correspond un style de police, une taille, une
couleur, etc. Les noms composites doivent tre lus de droite gauche. Reprenons
linstruction de la ligne 8 :
LblMessage.Font.Bold = CdbFont.FontBold

Cette instruction ordonne Visual Basic daffecter la proprit FontBold de la bote de


dialogue (valeur True ou False) lattribut Bold de la proprit Font du label lblMessage.

Les Pages de proprits


Toutes les proprits des botes de dialogue communes peuvent tre dnies lors de
lexcution. Mais Visual Basic dispose dun moyen plus simple de les congurer lors de
la phase de cration.
Le contrle Common Dialog contient une proprit nomme (Personnalis).
Lorsquon clique sur les points de suspension de cette proprit dans la fentre Proprits, Visual Basic afche la bote de dialogue Pages de proprits (voir Figure 9.6).
Figure 9.6
La bote de dialogue
Pages de proprits
permet de dnir
les proprits lors de
la cration.

Cette bote de dialogue Pages de proprits permet de dnir facilement quelques


proprits initiales pour la bote de dialogue. Il sagit, en fait, des proprits les plus
importantes de chaque style de bote de dialogue. Exemple : pour slectionner par
dfaut dans la bote de dialogue Police le corps 12 et le style Gras, il suft de saisir 12
dans le champ FontSize, et de cocher la case Bold.

283

<
:

Prog VB6 FM2A Page 284 Lundi, 6. aot 2001 3:32 15

Partie II

La bote de dialogue Ouvrir


Le Tableau 9.3 prsente les valeurs de Flags que vous devrez dnir avant dappliquer
la mthode ShowOpen. La bote de dialogue Ouvrir, reproduite en Figure 9.7, offre
lutilisateur une interface standard pour slectionner le chier ouvrir. Ce type de bote de
dialogue gre de faon adquate les connexions rseau.
ce
Astu

Les valeurs prsentes au Tableau 9.3 sappliquent galement la proprit


Flags de la bote de dialogue Enregistrer.

Tableau 9.3 : Valeurs de Flags pour les botes de dialogue Ouvrir


et Enregistrer

>
:

Littral nomm

Valeur

Description

cdlOFNAllowMultiselect

&H200

Autorise, dans la liste droulante Nom de chier,


les slections multiples. La proprit FileName
renverra alors une chane contenant le nom des
chiers (spars par des espaces).

cdlOFNCreatePrompt

&H2000

Invite lutilisateur crer un chier. Si cette valeur


est dnie, cdlOFNPathMustExist et
cdlOFNFileMustExist doivent ltre galement.

cdlOFNExplorer

&H80000

Afche la bote de dialogue selon le modle


Explorateur Windows.

cdlOFNExtensionDifferent

&H400

Indique que lextension du nom de chier renvoy


est diffrente de lextension spcie par la
proprit DefaultExt. Cette valeur nest pas
dnie si la proprit DefaultExt contient Null, si
les extensions correspondent ou si le chier na pas
dextension. Cette valeur peut tre inspecte, une
fois la bote de dialogue ferme.

cdlOFNFileMustExist

&H1000

Lutilisateur ne peut entrer que des noms de


chiers existants. Si cette valeur est dnie, et que
lutilisateur entre un nom de chier incorrect, un
avertissement safche. Cette valeur dnit
automatiquement cdlOFNPathMustExist.

cdlOFNHelpButton

&H10

Afche le bouton Aide.

cdlOFNHideReadOnly

&H4

Masque la case cocher Lecture seule.

284

Prog VB6 FM2A Page 285 Lundi, 6. aot 2001 3:32 15

Chapitre 9 : Les botes de dialogue

Tableau 9.3 : Valeurs de Flags pour les botes de dialogue Ouvrir


et Enregistrer (suite)
Littral nomm

Valeur

Description

cdlOFNLongNames

&H200000

Autorise les noms de chier longs.

cdlOFNNoChangeDir

&H8

Interdit le changement de dossier.

cdlOFNNoDereferenceLinks

&H100000

Interdit le drfrencement des liens shell (ou


raccourcis). Par dfaut, la slection dun lien shell
le drfrence automatiquement auprs du shell.

cdlOFNNoLongNames

&H40000

Interdit les noms de chier longs.

cdlOFNNoReadOnlyReturn

&H8000

Spcie que le chier renvoy naura pas lattribut


Lecture seule et ne sera pas protg en criture.

cdlOFNNoValidate

&H100

Autorise les caractres invalides dans le nom de


chier renvoy.

cdlOFNOverwritePrompt

&H2

Si le chier slectionn dans la bote de dialogue


Enregistrer sous existe dj, gnre un avertissement. (Lutilisateur peut choisir dcraser le
chier.)

cdlOFNPathMustExist

&H800

Interdit les chemins daccs non valides. Si cette


valeur est dnie et que lutilisateur entre un
chemin daccs non valide, un avertissement
safche.

cdlOFNReadOnly

&H1

Coche par dfaut loption Lecture seule. Aprs la


fermeture de la bote de dialogue, cette valeur
indique ltat de la case cocher Lecture seule.

cdlOFNShareAware

&H4000

Spcie que les ventuelles erreurs de violation de


partage seront ignores.

Souvent, dans les botes de dialogue de manipulation de chiers, un ltre est appliqu
aux extensions, de sorte que seuls apparaissent les chiers dune extension donne (par
exemple, les chiers rpondant la slection joker *.doc). Bien sr, rien nempche
lutilisateur de passer outre ce ltre, en appliquant un autre ltre ou en tapant *.*,
pour afcher tous les types de chiers. Mais vous pouvez spcier le ltre par dfaut
laide de la proprit Filter :

285

<
:

Prog VB6 FM2A Page 286 Lundi, 6. aot 2001 3:32 15

Partie II

Figure 9.7
Une bote de
dialogue Ouvrir
gnre par
le contrle Common
Dialog.

"FilterDescrip1 | extension1 | FilterDescrip2 | extension2 |


FilterDescrip3 | extension3"

Par exemple, linstruction suivante applique un ltre selon lequel seuls les documents
Word et Excel apparatront lafchage de la bote de dialogue :
cdbFiles.Filter = "Documents Word (*.doc)|*.doc|Documents
Excel (*.xls)|*.xls"

ntion
Atte

Il ne faut pas confondre lextension donne dans la description et lextension


relle spcie dans le ltre. En loccurrence, Word Docs (*.doc) est ce qui
safchera lutilisateur ; la premire instruction de ltre est, en fait, le *.doc
situ aprs la barre.

Vous pouvez spcier un ltre multiple en incluant pour Filter plusieurs chanes. Si vous
spciez plusieurs ltres, vous devez affecter la proprit FilterIndex le ltre utiliser
dans la bote de dialogue Ouvrir courante. Pour le premier ltre, la valeur FilterIndex
sera 1, et ainsi de suite.
La proprit FileName du contrle Common Dialog contient, aprs fermeture de la bote
de dialogue, le nom du chier slectionn.

La bote de dialogue Enregistrer


La bote de dialogue Enregistrer est peu prs identique la bote de dialogue Ouvrir.
Seuls changent de menus dtails, tels les libells de boutons de commande et quelques
options. Si, par exemple, votre application exploite une interface multidocument (MDI),
chaque document pouvant donc apparatre dans sa propre fentre, lutilisateur pourra faire

>
:

286

Prog VB6 FM2A Page 287 Lundi, 6. aot 2001 3:32 15

Chapitre 9 : Les botes de dialogue

une slection multiple dans la bote de dialogue Ouvrir. Cela est, par nature, impossible
dans une bote de dialogue Enregistrer.
La Figure 9.8 montre quel point la bote de dialogue Enregistrer ressemble sa cousine
Ouvrir. Les valeurs prsentes au Tableau 9.3 sappliquent aussi la proprit Flags
des botes de dialogue Enregistrer, incluant les ltres dextensions.
Figure 9.8
Une bote de dialogue
Enregistrer gnre
par le contrle
Common Dialog.

La bote de dialogue Imprimer


La Figure 9.9 montre la bote de dialogue Imprimer telle quelle safche lorsque vous
appliquez la mthode ShowPrinter un contrle Common Dialog. Dans cette bote de
dialogue, lutilisateur peut slectionner une imprimante, indiquer le nombre de copies,
la squence de pages imprimer, etc. Le nombre et le type des options de la bote de
dialogue Imprimer dpend du pilote dimprimante de lutilisateur. Une fois que lutilisateur a spci ses valeurs, votre programme interroge les proprits du contrle
Common Dialog, et lance limpression selon ces informations.
Figure 9.9
Une bote de dialogue
Imprimer gnre par
le contrle Common
Dialog.

287

<
:

Prog VB6 FM2A Page 288 Lundi, 6. aot 2001 3:32 15

Partie II

ntion
Atte

Selon le type dimprimante et de pilote, votre bote de dialogue Imprimer peut


diffrer de la Figure 9.9.

Le code du Listing 9.3 ouvre la bote de dialogue Imprimer en rponse une slection
de menu.
Listing 9.3 : Gestion de la bote de dialogue Imprimer

1: Private mnuFilePrint_Click()
2:
Dim intBegin As Integer, intEnd As Integer
3:
Dim intNumCopies As Integer, intI As Integer
4:
Suppose que Cancel est dfinie comme True.
5:
6:
On Error Goto dbErrHandler
7:
Affiche la bote de dialogue Imprimer.
8:
cbdPrint.ShowPrinter
9:
Reoit les valeurs slectionnes par lutilisateur.
10:
intBegin = cbdPrint.FromPage
11:
intEnd = cbdPrint.ToPage
12:
intNumCopies = cbdPrint.Copies
13:

14:
Imprime le nombre de copies demand.
15:
For intI = 1 To intNumCopies
16:
Ici, code charg de grer la sortie imprimante.
17:
Next intI
18:
Exit Sub
19:
20: dbErrHandler:
21:
Lutilisateur a appuy sur Annuler.
22:
Exit Sub
23: End Sub

Comme le montre le Listing 9.3, il ny a pas de proprits dnir avant de pouvoir


afcher la bote de dialogue Imprimer (sauf peut-tre la proprit DialogTitle, qui
spcie le texte qui apparatra sur la barre de titre). Vous pouvez vrier les valeurs
renvoyes par la bote de dialogue et stockes dans des proprits comme Copies, FromPage ou ToPage. Ces valeurs correspondent aux slections de lutilisateur.

>
:

288

Prog VB6 FM2A Page 289 Lundi, 6. aot 2001 3:32 15

Chapitre 9 : Les botes de dialogue

La bote de dialogue Aide


Pour savoir comment intgrer laide Windows vos programmes partir du contrle
Common Dialog, il faudra patienter jusquau Chapitre 20.

En rsum
Vous tes maintenant en mesure dajouter des botes de dialogue standards vos
programmes. Pour une bote de dialogue douverture de chier, par exemple, il vaut
mieux offrir vos utilisateurs une interface familire. Vos applications nen seront que
plus conviviales.
Le contrle Common Dialog implique que vous dnissiez certaines proprits, puis
que vous lui appliquiez la mthode approprie. Tout ce que fait ce contrle, cest de
dnir lui-mme des proprits. Cest votre code de prendre le relais ds la fermeture
de la bote de dialogue, dinterprter les slections de lutilisateur, et de grer de faon
adquate le bouton Annuler.
Dans le prochain chapitre, vous apprendrez suivre les mouvements de la souris an de
rendre vos applications rellement interactives. Vous apprendrez galement programmer
les contrles de type zone de liste, qui proposent diverses options lutilisateur.

Questions-rponses
Q Pourquoi le contrle Common Dialog ne peut-il gnrer dautres styles de
botes de dialogue standards, tels que la bote de dialogue Zoom de Word ou
dExcel ?
R Le contrle Common Dialog ne peut pas tout faire. Il doit rester maniable et ne pas
consommer trop de ressources mmoire. Si les programmes Windows les plus
courants contiennent de multiples botes de dialogue, toutes ne sont pas assez
communes pour constituer un vritable standard. Par exemple, la plupart des applications Windows se passent de la bote de dialogue Zoom de Word et dExcel. Du
reste, les feuilles et contrles Visual Basic vous permettent, avec un peu de travail,
toutes les botes de dialogue que vous voulez.

289

<
:

Prog VB6 FM2A Page 290 Lundi, 6. aot 2001 3:32 15

Partie II

Q Quels contrles puis-je ajouter ma Bote outils ?


R Vous pouvez enrichir de contrles ActiveX votre collection doutils. Cela inclut les
contrles ActiveX que vous crivez vous-mme (voir Chapitre 17), ainsi que les
contrles externes. Vous trouverez des contrles de ce type sur le site Web de Microsoft, ainsi que sur beaucoup dautres sites. Certaines revues spcialises proposent
aussi, parfois, des contrles "prts lemploi".

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront la mise en pratique de ce que vous avez appris. Il convient de
comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant.
Vous trouverez ces rponses lAnnexe A.

Quiz
1. Que faut-il faire dans la Bote outils avant de pouvoir placer un contrle Common
Dialog sur la feuille ?
2. Enumrez les diffrents styles de botes de dialogue que le contrle Common Dialog
peut gnrer.
3. A quoi sert le contrle Common Dialog ?
4. Pourquoi ne peut-on redimensionner le contrle Common Dialog sur la feuille ?
5. En fait, la bote de dialogue Ouvrir nouvre aucun chier. Vrai ou faux ?
6. A quoi sert la proprit Filter dans les botes de dialogue Ouvrir ou Enregistrer ?
7. Que fait la proprit Flags ?
8. Si aucune valeur de Flags nest dnie, Visual Basic ne peut afcher la bote de
dialogue Police. Vrai ou faux ?
9. Si aucune valeur de Flags nest dnie, Visual Basic ne peut afcher la bote de
dialogue Imprimer. Vrai ou faux ?
10. La mthode Show afche un contrle Common Dialog. Vrai ou faux ?

>
:

290

Prog VB6 FM2A Page 291 Lundi, 6. aot 2001 3:32 15

Chapitre 9 : Les botes de dialogue

Exercices
1. Modier le code du Listing 9.2 an de grer la slection du bouton Annuler. Assurez-vous quaucune proprit ne sera change si lutilisateur clique sur Annuler.
2. Ecrivez une procdure qui gnre la bote de dialogue Ouvrir montre la Figure 9.10.
Appliquez un ltre *.txt. Faites en sorte que les slections de lutilisateur soient
annules sil clique sur le bouton Annuler.
Figure 9.10
Crez cette bote
de dialogue Ouvrir.

291

<
:

Prog VB6 FM2A Page 292 Lundi, 6. aot 2001 3:32 15

Prog VB6 FM2A Page 293 Lundi, 6. aot 2001 3:32 15

Chapitre

10

Gestion de la souris
et contrles avancs
Vous allez maintenant apprendre crire des applications qui ragissent lactivit de la
souris : dplacements, clics, glisser-dposer, etc. Lutilisation de la souris est inhrente
linterface et aux applications Windows, et vos programmes doivent tre en mesure de
rpondre dune manire adquate ce type dvnements.
Nous explorerons aussi un nouveau genre de contrles : les contrles de listes. Vous
avez, sans nul doute, dj manipul des zones de listes dans diverses applications. Ce
chapitre vous explique comment crer et grer vos propres contrles de listes, et dtaille
les diffrents types proposs par Visual Basic.
Les contrles de listes donnent lutilisateur le choix parmi plusieurs options prdnies. Ces contrles nous amneront galement tudier les tableaux de variables. Les
tableaux de variables permettront vos applications de traiter efcacement de grandes
quantits de donnes.
Voici ce que nous dcouvrirons aujourdhui :

les vnements souris ;

comment identier les clics de souris ;

les oprations de glisser-dposer ;

le contrle timer ;

293

Prog VB6 FM2A Page 294 Lundi, 6. aot 2001 3:32 15

Partie II

les contrles ListBox et ComboBox ;

comment initialiser, ajouter ou supprimer des lments de contrles de listes ;

les tableaux de variables ;

les tableaux de contrles.

Rponse la souris
La rponse la souris est un fondement des applications Windows. Si lutilisateur se
sert de sa souris lors de lexcution, Windows passe les vnements souris votre
programme. Les programmes que vous crivez doivent interroger les vnements souris
et y rpondre au moment et de la faon ncessaires. Si lutilisateur se contente de
cliquer sur un bouton doption ou sur une case cocher, naturellement, le programme
na pas rpondre, car le contrle dclenche un vnement Click. Mais Visual Basic
suit galement les mouvements de la souris lorsque lutilisateur effectue des glisserdposer ou des copier-coller.

Info

ntion
Atte

En fait, les programmes Windows doivent rpondre aussi bien la souris quau
clavier. Le standard Windows veut que tous les programmes puissent tre, si
ncessaire, manipulables partir du seul clavier. Ainsi, lutilisateur qui prfre
le clavier ou dont la souris est hors service pourra, malgr tout, exploiter ses
applications. Il faut toutefois noter que certains programmes, par nature, se
passent difcilement de la souris. Par exemple, un programme de dessin serait
inimaginable sans le support de la souris.
La Bote outils ne contient aucun contrle li la souris. Un programme
rpond la souris par le biais des vnements, et non par les proprits de
contrles.

Les vnements souris


Le comportement du programme par rapport aux vnements souris est entirement
paramtrable. Un vnement souris peut tre dclench par les actions suivantes :

>
:

mouvement de la souris ;

clic simple ;

294

Prog VB6 FM2A Page 295 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

double-clic ;

clic du bouton droit ;

glisser-dposer.

Ajustement du curseur
Le curseur, ou pointeur, rete lcran les mouvements physiques de la souris sur le
tapis. La forme du pointeur (par dfaut, une che) est souvent modie par lapplication. Par exemple, lors dune opration de glisser-dposer, ou lorsque lutilisateur place
le pointeur sur un objet indisponible. Le pointeur peut encore se transformer en sablier,
pour indiquer quun traitement quelconque (tri de donnes, etc.) est en cours.
Votre application peut contrler la forme du pointeur. Le Tableau 10.1 prsente les diffrents types de pointeurs disponibles. Pour changer la forme du pointeur lorsquil passe sur
un contrle de la feuille, il faut dnir la proprit MousePointer de ce contrle. A peu
prs tous les contrles disposent dune proprit MousePointer, laquelle peut prendre lune
des valeurs prsentes au Tableau 10.1. Ces valeurs sont spcier en cours dexcution,
par laffectation de constantes nommes, ou lors de la cration, par le rglage de la
proprit MousePointer des contrles.
Tableau 10.1 : La forme du pointeur est modiable
Constante nomme

Description

VbArrow

Pointeur normal (che)

VbCrosshair

Pointeur cruciforme

VbIbeam

Curseur de texte

VbIconPointer

Petit carr dans un carr plus grand

VbSizePointer

Flche quatre pointes (haut, bas, gauche, droite)

VbSizeNESW

Flche double (nord-est et sud-ouest)

VbSizeNS

Flche double (haut et bas)

VbSizeNWSE

Flche double (nord-ouest et sud-est)

VbSizeWE

Flche double (droite et gauche)

VbUpArrow

Flche vers le haut

VbHourglass

Sablier (attente)

295

<
:

Prog VB6 FM2A Page 296 Lundi, 6. aot 2001 3:32 15

Partie II

Tableau 10.1 : La forme du pointeur est modiable (suite)


Constante nomme

Description

VbNoDrop

Ne pas dposer (signe semblable au "stationnement interdit")

VbArrowHourglass

Flche + sablier

vbArrowQuestion

Flche + point dinterrogation

vbSizeAll

Double che de redimensionnement de fentre

vbCustom

Forme spcie par la proprit MouseIcon

ce
Astu

Vous pouvez crer vos propres pointeurs. Le pointeur doit avoir une rsolution
de 16 16 pixels, comme les icnes. (Les chiers dicnes portent lextension
.ICO ; la plupart des programmes de dessin vous permettent de crer des
icnes standards.) Pour afcher votre propre chier icne la place des
pointeurs prdnis du Tableau 10.1, il suft den affecter le chemin daccs
la proprit MouseIcon, et de dnir la proprit MousePointer comme 99 Custom. La nouvelle forme restera le pointeur par dfaut jusqu ce que vous
en changiez de nouveau. Entre ce chapitre et le suivant, le Bonus projet 5,
"Pratique de la souris,", vous en dira plus sur les pointeurs personnaliss.

Dplacements et clics
Lorsque lutilisateur dplace la souris ou clique, Windows gnre des vnements souris
et les envoie votre programme. Si le programme ne contient pas de procdures vnementielles appropries, ces vnements seront ignors. Il faut donc que le code pare
toute ventualit. Le Tableau 10.2 dcrit chacun des vnements souris.
Tableau 10.2 : Evnements souris gnrs par Windows

>
:

Evnement

Description

Click

Lutilisateur a cliqu sur un bouton de la souris

DblClick

Lutilisateur a double-cliqu sur un bouton de la souris

MouseDown

Lutilisateur a cliqu et maintient le bouton enfonc

MouseMove

Lutilisateur a dplac la souris

MouseUp

Lutilisateur a relch le bouton de la souris

296

Prog VB6 FM2A Page 297 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

Les vnements souris sont tous associs des contrles. En consultant la liste Objet de
la fentre Code, vous constaterez quil existe, de mme, des vnements souris pour
presque tous les contrles, ainsi que pour les feuilles. Par exemple, pour rpondre un
clic sur votre feuille frmTest, vous utiliseriez une procdure vnementielle frmTest
_Click().
Info

Certains vnements lis aux clics de souris impliquent que vous interrogiez
un argument de procdure vnementielle pour dterminer sur quel bouton
lutilisateur a cliqu. Ces arguments ne sont passs que par les procdures
vnementielles MouseDown et MouseUp.

Un double-clic, est-ce un seul vnement, ou deux vnements Click ? En fait, la


rponse dpend de la vitesse de lutilisateur. Windows fournit les vnements de clics
dans lordre suivant :
1. MouseDown
2. MouseUp
3. Click
4. DblClick
5. MouseUp
Ainsi, lvnement MouseDown a lieu en premier lorsque lutilisateur clique sur un
bouton. Ensuite vient lvnement MouseUp, puis lvnement Click. Enn, les vnements DblClick et MouseUp se produisent si lutilisateur double-clique. (Windows ne
dclenche pas dvnement MouseDown quand lutilisateur double-clique.)
Les procdures vnementielles MouseDown, MouseMove et MouseUp exigent toujours ces
quatre arguments :

intButton. Indique de quel bouton il sagit : 1 pour le bouton gauche, 2 pour le


bouton droit, et 4 pour les deux (ou pour le bouton central sur les souris trois
boutons).

intShift. Indique, laide dune comparaison de bits, si lutilisateur a appuy sur Alt,
Ctrl ou Maj pendant le dplacement de la souris ou le clic.

sngX. Coordonne horizontale en twips correspondant au dplacement ou au clic.

sngY. Coordonne verticale en twips correspondant au dplacement ou au clic.

Visual Basic gnre un vnement de mouvement pour chaque dplacement de 10


15 twips, ce qui reprsente une inme portion de lcran. (Visual Basic ne ragit pas tous
les twips.)

297

<
:

Prog VB6 FM2A Page 298 Lundi, 6. aot 2001 3:32 15

Partie II

Linstruction suivante dclare une procdure vnementielle MouseDown de sorte que


lon voie lordre de transmission des arguments :
Private Sub imgMouse_MouseDown(intButton As Integer, intShift As
Integer, sngX As Single,

[ic:ccc]sngY As Single)

sngX et sngY contiennent les coordonnes en twips du clic. intButton contient 1, 2 ou 4,


selon le bouton sur lequel lutilisateur a cliqu. Il nest pas toujours indispensable de
savoir quel bouton a t utilis. Si le programme doit rpondre diffremment aux clics
droits et aux clics gauches, on interrogera lvnement MouseDown. Pour savoir si lutilisateur a conjointement appuy sur Maj, Ctrl ou Alt, on procde une vrication
comme celle qui est mise en uvre dans le Listing 10.1.
Listing 10.1 : Dterminer quelles touches ont t frappes conjointement
lvnement souris

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

Private Sub imgMouse_MouseDown(intButton As Integer, intShift


As Integer, sngX As Single, sngY As Single)
Dim intShiftState As Integer
intShiftState = intShift And 7 And binaire.
Select Case intShiftState
Case 1
Combinaisons Maj.
Case 2
Combinaisons Ctrl.
Case 3
Combinaisons Alt.
Case 4
Combinaisons Maj-Ctrl.
Case 5
Combinaisons Maj-Alt.
Case 6
Combinaisons Ctrl-Alt.
Case 7
Combinaisons Maj-Ctrl-Alt.
End Select
End Sub

A la ligne 3, la comparaison And spciale interroge un bit interne pour dterminer les
touches conjointement utilises.
ce
Astu

>
:

298

Faire
Interrogez les combinaisons touches/souris lorsque vos applications permettent la slection de texte avec la touche Maj, ou la slection multiple avec la
touche Ctrl. Beaucoup de contrles, tels que les zones de listes, que vous
dcouvrirez plus loin, grent automatiquement les combinaisons Ctrl-souris

Prog VB6 FM2A Page 299 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

pour la slection des lments. Pour ces contrles, vous navez donc pas
vous occuper de ce type dvnements clavier/souris.
Le Projet bonus 5, situ entre ce chapitre et le suivant, contient le code
dune application complte qui met en uvre la gestion des mouvements et
des clics de souris.

Les oprations de glisser-dposer


Votre application doit galement, si ncessaire, tre en mesure de suivre les oprations
de glisser-dposer. Le glisser-dposer est lopration pendant laquelle lutilisateur
clique sur un objet, maintient le bouton enfonc, et fait glisser lobjet vers un autre
emplacement. La programmation du glisser-dposer est fort simple, car le systme
dexploitation Windows envoie tout au long de lopration les informations adquates.
Visual Basic supporte deux types doprations de glisser-dposer :

le glisser-dposer automatique ;

le glisser-dposer manuel.

La premire mthode est la plus simple. Le glisser-dposer automatiquement se gre


laide de proprits de contrles. A peu prs tous les contrles de la Bote outils disposent
de la proprit DragMode. Cette proprit permet lutilisateur de dplacer le contrle avec
la souris. Au cours du dplacement, Visual Basic afche la silhouette du contrle. Il reste
sassurer que le contrle arrive bien destination, l o lutilisateur relche le bouton. Si le
glisser-dposer automatique illustre le dplacement, il ne dplace pas rellement lobjet.
Lvnement DragDrop de la feuille dtermine le point de chute de lobjet. Pour congurer le glisser, il suft de dnir la proprit DragMode du contrle comme 1 - Automatic.
Le contrle peut alors tre dplac par glissement, et la silhouette suivra le dplacement. La procdure vnementielle Form_DragDrop() prend en charge la suite de
lopration, et place le contrle lendroit voulu.
Par dfaut, cest la silhouette du contrle qui apparat lors du dplacement. Vous pouvez
remplacer cette silhouette par une icne spcique, en affectant la proprit DragIcon le
chemin daccs dun quelconque chier icne (par exemple, les chiers fournis avec
Visual Basic dans le dossier \Graphics). Cette icne apparatra en lieu et place de la
silhouette relle lors du glisser-dposer. Quand un utilisateur fera glisser le contrle,
licne se substituera au pointeur. Voici un exemple de code grant le glisser-dposer :

1:
2:
3:
4:
5:

Private Sub frmTitle_DragDrop(Source As Control, X As Single, Y As Single)


Ici, le contrle dplac
est pass comme argument.
Source.Move X, Y Dplace le contrle.
End Sub

299

<
:

Prog VB6 FM2A Page 300 Lundi, 6. aot 2001 3:32 15

Partie II

A la ligne 4, la mthode Move applique au contrle les coordonnes de son nouvel


emplacement (l o lutilisateur a relch le bouton).
ce
Astu

Lvnement DragOver a lieu lorsque lutilisateur fait glisser un contrle sur


un autre. Pour indiquer quune telle opration nest pas permise par le
contrle de destination, vous pouvez modier licne. Il suft, pour cela, de
changer le pointeur dans les procdures vnementielles DragOver des
contrles qui nacceptent pas quon dpose un objet dessus. DragOver peut
recevoir quatre arguments :
le contrle ;
les coordonnes x du pointeur ;
les coordonnes y du pointeur ;
ltat du dplacement, qui prend trois valeurs diffrentes : 0 (le dplacement atteint lobjet), 1 (le dplacement quitte lobjet), et 2 (le contrle est
dplac au-dessus de lobjet).

Le glisser-dposer manuel fonctionne comme le glisser-dposer automatique, trois


diffrences prs :

La proprit DragMode doit tre dnie comme 0 - Manual.

Le contrle rpond un vnement MouseDown avant le dbut du dplacement, de sorte


que les coordonnes initiales du contrle soient enregistres.

Le code est ajout dans la procdure vnementielle MouseDown.

Pour achever le glisser-dposer, la procdure vnementielle MouseDown applique


lobjet la mthode Drag. Le code suivant dplace limage condition que la proprit
DragMode du contrle image soit dnie comme 0 - Manual :
Private Sub imgMouse_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)

On a cliqu sur limage.

txtMouse.Text = "On a cliqu sur limage la position " & X & "," & Y

imgMouse.Drag
End Sub

La mthode Drag autorise le glisser-dposer. Sans la mthode Drag, la procdure vnementielle MouseDown() ne peut grer lopration. On se sert du glisser-dposer manuel
pour imposer des restrictions au dplacement, avant et pendant lopration.
Info

>
:

300

Le Projet bonus 7 situ aprs le Chapitre 14, propose une application qui met
en uvre les clics du bouton droit et les menus contextuels.

Prog VB6 FM2A Page 301 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

Les contrles ListBox


Vous allez maintenant dcouvrir les autres contrles qui apparaissent dans la Bote
outils. Les contrles que nous allons tudier exigent un peu de programmation pour
fonctionner. Il ne suft pas, comme pour les boutons de commande, de les disposer sur la
feuille ; il faut aussi les initialiser, ce qui nest faisable qu partir du code. Par exemple,
vous ne pouvez pas remplir une zone de liste droulante de ses lments lors de la phase
de cration. Les contrles multivaleurs ne sinitialisent pas aussi facilement que les labels.
Pour cela, il faut programmer.
Voici les diffrents types de zones de liste :

zone de liste simple ;

ComboBox liste droulante ;

ComboBox simple ;

ComboBox droulante.

Les zones de liste simples


Le contrle zone de liste simple permet lutilisateur de slectionner un ou plusieurs
lments dans une liste prdnie. Pour ajouter une zone de liste simple votre feuille,
double-cliquez sur le contrle ListBox de la Bote outils.
Info

ce
Astu

On peut initialiser depuis la fentre Proprits certaines proprits des zones


de liste : position, taille, couleur, etc. Il nen va pas de mme pour la liste des
valeurs du contrle.
Si vous ninitialiserez pas, en gnral, la liste de valeurs du contrle ListBox
depuis la fentre Proprits, cest que Visual Basic vous permet de le faire lors
de lexcution. Dans la fentre Proprits, cliquez sur la proprit List dun
contrle ListBox : une liste safche, dans laquelle vous pouvez ajouter des
valeurs. Mais les valeurs des contrles ListBox, la plupart du temps, viennent
de lutilisateur ou dautres sources de donnes. Seules devraient tre
initialises depuis la fentre Proprits les petites zones de liste dont les valeurs
ne sont pas appeles changer. Pour le reste, vous utiliserez des mthodes qui
construisent la liste au cours de lexcution, ce quexplique la suite de ce
chapitre.

Pour ajouter des lments une liste, on se sert de la mthode AddItem (voir
Listing 10.2).

301

<
:

Prog VB6 FM2A Page 302 Lundi, 6. aot 2001 3:32 15

Partie II

Listing 10.2 : La procdure vnementielle initialise le contrle ListBox

1:
2:
3:
4:
5:
6:
7:
8:
9:

Private Sub Form_Load()


Initialise les valeurs du contrle.
lstColors.AddItem "Rouge"
lstColors.AddItem "Bleu"
lstColors.AddItem "Vert"
lstColors.AddItem "Jaune"
lstColors.AddItem "Orange"
lstColors.AddItem "Blanc"
End Sub

La procdure vnementielle Form_Load() charge les valeurs initiales. Naturellement, le


plus gros des valeurs sera ajout lors de lexcution. Grce la procdure vnementielle Form_Load(), la partie disponible des valeurs sera dj charge lorsque lutilisateur
afchera la feuille contenant la zone de liste. Au dmarrage du programme, le module
dexcution charge les feuilles. Le chargement des feuilles dclenche lvnement Load.
Les commandes Load et Unload permettent de spcier quel moment prcis une feuille
doit tre charge, ou dcharge pour librer des ressources.
Aprs le chargement des valeurs initiales, cest la mthode AddItem qui permettra dajouter
les autres lments en cours dexcution. Le Listing 10.2 donnait en exemple lapplication de AddItem la zone de liste nomme lstColors. Il suft de spcier llment aprs
le nom de la mthode. Les lments seront ajouts la liste dans lordre selon lequel
vous les avez entrs moins que vous ne dnissiez la proprit Sorted comme True,
auquel cas les lments apparatront dans lordre alphabtique ou numrique.

Info

Linitialisation des valeurs de la proprit List depuis la fentre Proprits


rend la maintenance moins aise. Si les valeurs initiales sont spcies dans le
code, il sera plus simple dajouter des lments par la suite.

Linstruction suivante ajoute la couleur Aqua la liste congure dans la procdure


vnementielle Form_Load() :
lstColors.AddItem "Aqua"

ce
Astu

>
:

302

Il nest pas toujours vident de distinguer commandes, dclarations, mthodes,


proprits et contrles. Considrez la mthode comme une sorte de requte que
lobjet fait pour lui-mme. Ainsi, lstColors.AddItem "Aqua" ne signie rien
dautre que : "Ajoute-moi un lment nomm Aqua". En tant que contrle
ListBox, lstColors sait comment rpondre cette requte, parce que la
mthode fait partie de son rpertoire. La plupart des contrles disposent de

Prog VB6 FM2A Page 303 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

leur propre jeu de mthodes. A propos des contrles externes que vous pourrez
ajouter, la liste des mthodes est gnralement fournie dans la documentation.
La procdure Form_Load() ci-dessus charge une feuille avec, en son centre, la zone de
liste lstColors. (Voir Figure 10.1.)
Figure 10.1
La zone de liste contient
les lments spcis.

ntion
Atte

Si vous initialisez des valeurs de la zone de liste lors de la cration, il faut vider
la proprit List dans la fentre Proprits aprs avoir nomm le contrle.
Visual Basic afche automatiquement le nom du contrle ListBox comme
premier lment de la liste.

La Figure 10.1 montre une zone de liste simple.


ition
Dfin

Une zone de liste simple afche les lments spcis dans la liste des valeurs.
Cest le programmeur qui initialise la liste ; lutilisateur ne peut ajouter directement des lments.

Si la hauteur ou la largeur de la zone de liste ne permet pas dafcher tous les lments,
des barres de dlement verticale et horizontale apparaissent. Et si des valeurs viennent
sajouter la liste dans le cours de lexcution, Visual Basic ajoute automatiquement les
barres de dlement.
Le but de la zone de liste est de permettre lutilisateur de choisir dans une liste plutt que
davoir saisir les valeurs. Lorsque lutilisateur slectionne un lment de la liste, voici ce
qui se passe :

Llment slectionn est mis en surbrillance.

La slection est copie dans la proprit Text de la zone de liste. Ainsi, lstColors.Text
change au cours de lexcution, selon les choix de lutilisateur.

Text ne peut contenir quune seule valeur. Pour mieux illustrer cette proprit, imaginons quune zone de texte nomme txtColor soit ajoute la feuille de la Figure 10.1.

303

<
:

Prog VB6 FM2A Page 304 Lundi, 6. aot 2001 3:32 15

Partie II

Ds que lutilisateur fait une slection dans lstColors, la procdure suivante envoie
llment la zone de texte :
Private Sub lstColors_Click()

Copie llment slectionn dans la zone de texte.

txtColor.Text = lstColors.Text
End Sub

Si vous placez sur la feuille une zone de texte destine afcher llment slectionn,
il faut vider la proprit Text de la zone de texte dans la fentre Proprits. De la sorte,
rien napparatra avant que lutilisateur nait effectu une slection. La proprit Font
des zones de texte doit presque toujours tre modie, car la valeur par dfaut donne un
afchage trop petit. Pour afcher plus dun lment la fois, il peut aussi tre ncessaire
dagrandir la zone de liste. Dans la Figure 10.2, llment slectionn dans la zone de
liste a t envoy la zone de texte.
Figure 10.2
La zone de texte
contient llment
de liste slectionn.

Chaque lment de la zone de liste se voit affecter une valeur index, pour tre distingu
des autres. Lindex commence 0 pour le premier lment, et ainsi de suite (il ne peut y
avoir de doublons). La proprit ListIndex de la zone de liste contient la valeur dindex
de llment slectionn. Vous pouvez ainsi dterminer quel lment a t choisi.
Dautres mthodes du contrle ListBox, telles que RemoveItem, se servent des valeurs de
la proprit ListIndex. Par exemple, pour retirer le troisime lment de la liste, voici
ce que serait le code :
lstColors.RemoveItem 2

A chaque suppression dun lment, les valeurs dindex sont automatiquement renumrotes. Exemple : le quatrime lment de la liste a la valeur dindex 3 (rappelons que
lindex commence 0), mais si vous supprimez un lment situ avant, le quatrime
lment deviendra le troisime, et prendra 2 pour valeur dindex. Si la proprit Sorted
est dnie comme True, Visual Basic retrie les valeurs dindex aprs chaque ajout ou
suppression.

>
:

304

Prog VB6 FM2A Page 305 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

ce
Astu

Vous pouvez, si ncessaire, permettre lutilisateur de faire des slections


multiples dans la zone de liste. Lutilisateur appuie sur la touche Ctrl et
clique sur divers lments. Mais la proprit Value de la zone de liste ne
peut contenir toutes les valeurs slectionnes. Que faire ? Vous lapprendrez
dans le Projet bonus 5, la suite du Chapitre 11.
Les valeurs dindex des zones de liste ressemblent beaucoup aux tableaux,
que nous tudierons la n de ce chapitre.

Lutilisateur ne peut lui-mme ajouter des valeurs la zone de liste. Cela, seul le code
peut le faire, laide de la mthode AddItem. Lutilisateur ne peut, non plus, supprimer
des lments. Cest le privilge de la mthode RemoveItem.
Supposons quil faille retirer tous les lments que nous avons ajouts la zone de liste.
On pourrait appliquer la mthode RemoveItem chacun. Mais il y a plus simple : une
boucle For. Le code suivant reprend lexemple de la zone de liste lstColors :

1:
2:
3:
4:

Supprime les cinq lments de la liste.


For intI = 0 To 5
lstColors.RemoveItem 0
Next intI

Naturellement, pour vider entirement la liste laide dune boucle For, il faut connatre
le nombre exact des lments. Mais, chaque lment ayant t ajout dans le code, cela
ne devrait pas tre bien difcile.
On peut aussi permettre lutilisateur dajouter des valeurs la liste, laide, par exemple, dune zone de texte et dun bouton de commande qui dclencherait la mthode
AddItem. Mme dans un tel cas, il reste possible de tenir une comptabilit prcise des
valeurs de la liste, via une variable qui serait incrmente ou dcrmente chaque fois
que lutilisateur ajoute ou supprime un lment.
En ralit, il est inutile de recourir une variable compteur de ce type. Visual Basic se
charge, en interne, de suivre lvolution du contenu de la liste. La proprit ListCount
contient et met jour le nombre total des lments de la liste. La valeur de ListCount est
toujours suprieure la plus grande valeur de ListIndex, puisque ListIndex commence 0.
Ainsi, pour connatre le nombre actuel des lments de la liste, ou pour leur appliquer
une mthode lintrieur dune boucle For, la proprit ListCount peut tre utilise
comme ceci :

1:
2:
3:
4:
5:

Supprime tous les lments de la liste.


intTotal = lstColors.ListCount Stocke le nombre.
For intI = 1 To intTotal
lstColors.RemoveItem 0
Next intI

305

<
:

Prog VB6 FM2A Page 306 Lundi, 6. aot 2001 3:32 15

Partie II

ce
Astu

Le contrle ListBox dispose dune mthode, Clear, qui supprime instantanment tous les lments, sans quune boucle soit ncessaire. Si donc vous voulez
vider compltement la liste, linstruction lstColors.Clear est ce qui se fait de
plus simple.

Les contrles ComboBox


Le contrle ComboBox est disponible en trois parfums :

ComboBox liste droulante ;

ComboBox simple ;

ComboBox droulante.
Info

ition
Dfin

ition
Dfin

Alors que la zone de liste apparat toujours dans la forme et la taille que vous
lui avez attribues, la ComboBox liste droulante (ou zone de liste droulante
modiable) safche sur une seule ligne jusqu ce que lutilisateur clique
dessus pour louvrir.
La ComboBox simple est une zone de liste simple combine une zone de texte.
Lutilisateur peut ajouter des lments la liste en entrant des valeurs dans la
zone de texte connexe.
La ComboBox droulante (ou zone de liste droulante xe) noccupe sur la
feuille quune seule ligne, jusqu ce que lutilisateur slectionne le contrle.
Alors seulement, la ComboBox souvre et afche la liste des lments. Lutilisateur peut slectionner un lment ou entrer une nouvelle valeur dans la zone de
texte connexe.

Pour ce qui est de linitialisation et de la manipulation partir du code, les contrles


ComboBox fonctionnent comme les zones de liste. La diffrence principale tient
laspect sur la feuille et la faon dont lutilisateur y opre ses slections.
Les trois sortes de ComboBox sobtiennent partir du mme contrle ComboBox de la
Bote outils. Aprs avoir plac le contrle sur la feuille, vous en spciez le type
laide de la proprit Style. Le style par dfaut est 0 - Dropdown Combo (ComboBox
droulante).
ce
Astu

>
:

306

Rappelez-vous que la proprit Sorted trie automatiquement les lments de la


liste, selon lordre alphabtique ou numrique ; et cela, mme si lutilisateur
ajoute des valeurs. Si la proprit Sorted nest pas dnie comme True, les
lments apparatront dans lordre dans lequel ils ont t ajouts.

Prog VB6 FM2A Page 307 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

La ComboBox liste droulante fonctionne comme une zone de liste, cela prs que
cette dernire occupe gnralement plus de place sur la feuille. La ComboBox liste
droulante ne souvre pour afcher son contenu que lorsque lutilisateur clique sur la
petite che.
La Figure 10.3 montre une feuille prsentant deux ComboBox liste droulante, qui
contiennent les mmes lments. Avant que celle de droite nait t droule, les deux
ComboBox occupaient le mme espace sur la feuille.
Figure 10.3
Avant que lutilisateur
ne la slectionne,
la ComboBox liste
droulante occupe
trs peu despace.

On se sert des ComboBox liste droulante pour offrir lutilisateur de multiples choix
tout en conomisant de lespace sur la feuille. Comme vous pouvez le voir sur la
Figure 10.3, la ComboBox liste droulante nafche pas de texte tant que lutilisateur ne
la pas slectionne. Il convient donc dindiquer lutilisateur, via un label ou une bote
de message, quels types dlments lui sont proposs.
On ajoute des entres aux ComboBox liste droulante comme aux zones de liste : par la
mthode AddItem. Le code suivant ajoute six couleurs aux contrles de la Figure 10.3 :
Private Sub Form_Load()
Initialise les deux ComboBox.

cboColor1.AddItem "Rouge"

cboColor1.AddItem "Bleu"

cboColor1.AddItem "Vert"

cboColor1.AddItem "Jaune"

cboColor1.AddItem "Orange"

cboColor1.AddItem "Blanc"

cboColor2.AddItem "Rouge"

307

<
:

Prog VB6 FM2A Page 308 Lundi, 6. aot 2001 3:32 15

Partie II

End

cboColor2.AddItem
cboColor2.AddItem
cboColor2.AddItem
cboColor2.AddItem
cboColor2.AddItem
Sub

"Bleu"
"Vert"
"Jaune"
"Orange"
"Blanc"

Les ComboBox liste droulante supportent les mmes mthodes et les mmes proprits que les zones de liste.
Le deuxime style de Comb oBox, la ComboBox simple, fonctionne comme une
combinaison de zone de liste et de zone de texte. Ainsi, lutilisateur peut slectionner un
lment ou en entrer un nouveau. Lorsque la proprit Style est dnie comme 1 Simple Combo, le contrle peut tre dimensionn comme une zone de liste. Si, un
moment donn de lexcution, la hauteur et la largeur spcies ne permettent pas
dafcher tout le contenu, des barres de dlement safchent automatiquement.
Sur la Figure 10.4, la liste des couleurs est contenue dans une ComboBox simple.
Les lments sont ajouts laide de la mthode AddItem ; les utilisateurs peuvent aussi
entrer de nouvelles valeurs. Aprs avoir dispos le contrle sur la feuille, vous devez en
effacer la proprit Text. Autrement, le nom du contrle apparatrait dans le champ de la
zone de texte. Vous pouvez aussi bien spcier dans cette proprit Text une valeur par
dfaut, que lutilisateur sera libre daccepter ou de modier.
Figure 10.4
Lutilisateur peut
slectionner
une couleurs
ou entrer
une nouvelle valeur.

Dans la ComboBox simple de la Figure 10.4, les couleurs apparaissent dans lordre
alphabtique. Vous avez devin ? Eh oui, la proprit Sorted est dnie comme True.

>
:

308

Prog VB6 FM2A Page 309 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

Info

Si la proprit Style de la ComboBox simple est dnie comme 1 - Simple


Combo, vous devez spcier les dimensions du contrle. A la diffrence des
listes droulantes, les ComboBox simples gardent la taille qui leur a t
attribue.

La ComboBox simple najoute pas automatiquement les entres utilisateur. Cest vous et
votre code de faire en sorte que le contenu soit mis jour si, du moins, lutilisateur est
autoris entrer de nouvelles valeurs. Les ComboBox simples ne servent gnralement
qu proposer lutilisateur des choix prdnis. Pour lui permettre dajouter des
lments, vous devez crire pour le contrle une procdure vnementielle LostFocus(),
comme celle-ci :
Private Sub cboColor_LostFocus()

cboColor2.AddItem cboColor1.Text
End Sub

La procdure vnementielle LostFocus() sexcute lorsque le contrle perd le focus,


ce qui se produit quand lutilisateur clique sur un autre contrle, ou dplace le focus en
appuyant sur Tab. Ds que le focus passe un autre contrle, la procdure vnementielle LostFocus() sexcute, et la valeur entre par lutilisateur dans la ComboBox
(valeur stocke dans la proprit Text) est affecte laide de la mthode AddItem. La
feuille de la Figure 10.4 contenait un bouton de commande, car le focus doit passer un
autre contrle pour que la valeur saisie par lutilisateur soit enregistre. Cest cette
seule condition que de nouvelles entres sont ajoutes aux ComboBox simples.
La ComboBox droulante est, sans doute, la plus intressante. Le contrle reste ferm
jusqu ce que lutilisateur le slectionne ; ce qui conomise de la place. Dans la
ComboBox droule, lutilisateur peut slectionner une valeur existante ou ajouter un
nouvel lment. Selected, ListCount, ainsi que dautres proprits des zones de liste
qui sappliquent galement aux ComboBox droulantes. Contrairement aux zones de
liste droulante, les ComboBox droulantes autorisent lajout de nouveaux lments.
Assurez-vous que la proprit Style du contrle est bien dnie comme 0 - Dropdown
Combo (valeur par dfaut). La Figure 10.5 reprend lexemple de la liste de couleurs
mais, cette fois, cest une ComboBox droulante qui est utilise.
Prenez garde de bien vider la proprit Text du contrle lorsque vous disposez votre
ComboBox droulante sur la feuille ; sans quoi, le nom du contrle apparatrait dans la
zone de texte. Comme pour la ComboBox simple, les valeurs ventuellement ajoutes
par lutilisateur ne sont stockes qu partir du moment o le contrle perd le focus.

309

<
:

Prog VB6 FM2A Page 310 Lundi, 6. aot 2001 3:32 15

Partie II

Figure 10.5
Lutilisateur peut
slectionner
un lment ou entrer
une nouvelle valeur.

Le contrle Timer
Le contrle Timer vous permet de gnrer des rponses sur la base des valeurs envoyes
par lhorloge interne du PC. Vous pouvez ainsi crire un code qui sexcutera au bout
dun certain laps de temps, ou programmer des traitements en arrire-plan. Lhorloge
interne dclenche un vnement timer dix-huit fois par seconde. Cette horloge est
capitale pour le fonctionnement du processeur, de la mmoire et du disque dur, les
donnes tant traites selon un ordre trs strict.

Info

Votre PC gnre un vnement timer dix-huit fois par seconde, quelle que soit
la vitesse du processeur.

Les applications Visual Basic rpondent aux vnements timer. Ces vnements sont
gnrs par lhorloge interne du PC, et Windows les envoie au programme en cours
dexcution. Vous pouvez prdnir lintervalle de temps dans lequel Windows envoie
cette information votre programme. Comme pour les autres vnements, vous pouvez
aussi crire des procdures vnementielles qui sexcuteront chaque fois quun vnement timer aura lieu. Retenez ceci : le code peut sexcuter sur la base dintervalles de
temps, indpendamment de la vitesse du PC, parce que le temps est une constante.
Le contrle Timer reoit les vnements timer et y rpond en fonction des proprits
que vous avez dnies. Lorsque vous disposez le contrle Timer sur la feuille, vous
dterminez la frquence des vnements timer. Cet intervalle correspond lune des

>
:

310

Prog VB6 FM2A Page 311 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

proprits du contrle Timer. Lorsque ce laps de temps sest coul, le contrle Timer
dclenche la procdure vnementielle approprie.

Info

ce
Astu

Comme pour les autres contrles, vous pouvez placer sur la feuille autant de
contrles Timer que vous voulez. Par exemple, vous pouvez placer trois contrles Timer diffrents, dont lun dclenchera un vnement spcique toutes les
minutes, lautre toutes les demi-heures, et le troisime toutes les heures.
Cest en exprimentant que vous dcouvrirez tous les emplois possibles du
contrle Timer. Les procdures vnementielles Timer permettent, notamment,
de piloter des tches en arrire-plan. Il est aussi possible de simuler une
animation en redessinant une image chaque dclenchement de lvnement,
par exemple toutes les demi-secondes.

Pour disposer le contrle Timer sur la feuille, double-cliquez sur loutil correspondant
de la Bote outils, puis placez le contrle rsultant lcart des autres contrles de la
feuille. Comme le contrle Common Dialog, le contrle Timer ne peut tre dimensionn,
et napparat pas sur la feuille lors de lexcution.
La Figure 10.6 montre un contrle Timer au centre de la feuille.
Figure 10.6
Le contrle Timer
peut tre dplac sur
la feuille, mais non
redimensionn.

Le contrle Timer supporte trs peu de proprits. Des six proprits dnissables lors
de la cration, cinq sont plutt communes :

Left et Top spcient la position du contrle.

Enabled active le contrle.

Tag contient les informations que vous tes libre dadjoindre au contrle.

Index spcie lindice du contrle dans un tableau de contrle.

311

<
:

Prog VB6 FM2A Page 312 Lundi, 6. aot 2001 3:32 15

Partie II

ce
Astu

Si vous dnissez comme False la proprit Enabled lors de la cration, le


contrle Timer ne commencera rpondre aux vnements que lorsque le code
dnira Enabled comme True.

La seule proprit rellement spcique au contrle Timer est Interval. La proprit


Interval spcie la frquence laquelle le contrle rpondra aux vnements. Cet
intervalle en millisecondes peut tre dni lors de la cration ou lors de lexcution. Si,
par exemple, vous affectez la proprit Interval la valeur 1000, les vnements timer
se produiront toutes les 1 000 millisecondes, soit une fois par seconde environ.
Evidemment, le contrle Timer connat quelques limites. Notamment, la proprit
Interval ne peut contenir que des valeurs situes entre 0 et 64,767. Lintervalle maximal sera donc de 65 secondes, pas plus. Il est cependant possible, dans la procdure
vnementielle Timer du contrle, dignorer les vnements jusqu ce quun certain
laps de temps se soit coul. Ainsi, mme si la procdure vnementielle du contrle se
dclenche toutes les 60 secondes, vous pouvez faire en sorte que les vnements ne
rencontrent une rponse quune heure (ou deux, ou plus) aprs la dernire excution de
la procdure vnementielle.
ntion
Atte

Le contrle Timer nest pas dune exactitude absolue. Les cristaux lintrieur
de lordinateur sont trs prcis, mais le temps que Windows envoie lvnement
au programme, un peu de cette prcision sest perdu. En outre, dautres vnements systme (transfert par rseau, activit du modem, etc.) peuvent ralentir
lactivit du timer. Malgr les apparences, lordinateur ne peut rellement pas
faire deux choses la fois, et le contrle Timer de votre application Visual
Basic na pas toujours la priorit. Conclusion : le contrle Timer est efcace
pour des tches rclamant une ponctualit la seconde prs. Visual Basic ne
dispose pas de contrles plus prcis.

Le contrle Timer ne supporte quun seul vnement : lvnement Timer. Ainsi, pour
un contrle Timer nomm tmrClock, vous ne pourrez crire quune seule procdure
vnementielle : tmrClock_Timer(). Cette procdure contiendra le code qui doit
sexcuter chaque fois que scoule lintervalle spci.
A titre dexercice, nous vous invitons crer une application simple qui mette en uvre
le contrle Timer. Suivez ces tapes :
1. Crez un nouveau projet et placez un contrle Timer sur la feuille.
2. Affectez la proprit Interval la valeur 1000, de sorte que le contrle rponde la
procdure vnementielle toutes les secondes.

>
:

312

Prog VB6 FM2A Page 313 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

3. Nommez le contrle tmrTimer1 et placez-le dans le coin infrieur gauche de la


feuille.
4. Ajoutez, ct du premier, un contrle Timer nomm tmrTimer2. Affectez sa
proprit Interval la valeur 500, de sorte que le contrle rponde la procdure
vnementielle toutes les demi-secondes.
5. Ajoutez la feuille deux zones de texte nommes txtTime1 et txtTime2. Disposezles conformment la Figure 10.7.
Figure 10.7
Lapplication timer
est presque termine.

6. Affectez la valeur 1 la proprit Text de chaque zone de texte, et rglez la taille de


la police 18. Dnissez galement les deux proprits Alignment comme 2 Center, de sorte que le texte soit centr dans les zones de texte. Affectez enn aux
deux proprits Width la valeur 1000.
7. Double-cliquez sur le premier contrle Timer. Dans la fentre Code qui safche,
entrez la procdure vnementielle tmrTime1_Timer() suivante (Visual Basic insre
automatiquement les lignes dencadrement) :
Private Sub tmrTimer1_Timer()
Ajoute 1 la valeur affiche.

txtTimer1.Text = txtTimer1.Text + 1
End Sub

8. Ajoutez au second timer la procdure vnementielle suivante :


Private Sub tmrTimer2_Timer()

Ajoute 1 la valeur affiche.

txtTimer2.Text = txtTimer2.Text + 1
End Sub

Ce code incrmente de 1 la valeur des zones de texte (ces valeurs sont par dfaut de
type Variant).

313

<
:

Prog VB6 FM2A Page 314 Lundi, 6. aot 2001 3:32 15

Partie II

9. Ajoutez un label sous chaque zone de texte : "Lent" pour la premire ; et "Rapide"
pour la seconde.
10. Excutez lapplication. Votre feuille devrait ressembler la Figure 10.8. Voici ce qui se
produit : la premire zone de texte sactualise toutes les secondes, lautre toutes les
demi-secondes. Dans les limites de la prcision du contrle Timer, la seconde zone de
texte devrait donc se mettre jour deux fois plus rapidement que la premire.
Figure 10.8
Les deux zones de
texte sactualisent
des intervalles
diffrents.

Les tableaux
Nous avons vu que les contrles ListBox exploitent les valeurs dindex. Chaque lment
de la liste se voit attribuer une valeur dindex : 0 pour le premier, 1 pour le deuxime, et
ainsi de suite. La zone de liste en elle-mme est unique, mais elle peut recouvrir une
multitude de valeurs. Ces valeurs se distinguent par leur valeur dindex.
Cette indexation des lments de liste offrent une analogie intressante avec le concept que
nous allons maintenant tudier : les tableaux. La zone de liste est un contrle avec des
lments indexs. Un tableau est une liste de variables qui contient des lments
indexs. La terminologie exacte nomme les valeurs dindex des tableaux des indices.
ition
Dfin

ition
Dfin

Un tableau est une liste de variables, de noms et de types de donnes identiques. Le terme indice dsigne chaque variable de la liste.

Lindice est la valeur dindex dun lment de tableau.

Les variables suivantes sont proprement individuelles et ne font pas partie dun tableau :
intCount

>
:

314

curPay

sngLength

strDeptCode

Prog VB6 FM2A Page 315 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

Les variables individuelles se prtent bien au stockage de valeurs individuelles (la prime
accorde tel ou tel commercial, etc.). En revanche, pour stocker une liste de valeurs
similaires, on se servira plutt dun tableau.
Il ne sagit pas, une fois que vous saurez dclarer et utiliser les tableaux, dy stocker toutes
vos donnes Visual Basic. Pour les boucles ou les entres utilisateur, vous continuerez
employer les variables individuelles, faites pour cela. Les tableaux, eux, sont faits pour
recevoir des listes de donnes. En cas doccurrences multiples de donnes devant tre
suivies dans votre application (par exemple, les champs dune table lue en mmoire), les
tableaux permettront de stocker dune faon adquate les donnes.
Imaginons que vous ayez tablir des statistiques au sujet des primes accordes
100 commerciaux. Vous devez calculer, pour toutes ces primes, la moyenne, le maximum, le minimum et la variation moyenne des valeurs. Vous pouvez dclarer 100 variables,
chacune portant un nom diffrent, tel que curBonus1, curBonus2, etc. Et pour cumuler
tout a ? Il faudrait, pour chaque addition ou chaque comparaison, rpter les 100 variables dans une mme instruction... Cest l quinterviennent les tableaux. Au lieu de
dclarer 100 variables, vous dclarez un seul tableau, portant un seul et mme nom, et
contenant la liste des 100 primes. Pour parcourir les valeurs du tableau, nul besoin de
lister les 100 variables ; il suft dune boucle For qui passe dun indice lautre, de 1
100. Sans laide des tableaux, de telles manipulations seraient quasi impensables.
Pour mieux illustrer cet exemple, voici un fragment du code qui aurait servi additionner les 100 variables individuelles :
curTotal = curBonus1 + curBonus2 + curBonus3 + curBonus4 + ...

Et voici, en comparaison, le code qui additionne les 100 valeurs du tableau :


For intCtr = 1 To 100

curTotal = curTotal + curBonus(intCtr)


Next intCtr

La boucle aurait aussi bien pu parcourir les valeurs en sens inverse. En outre, il nest pas
ncessaire daccder aux lments du tableau dans lordre. Supposons que vous vouliez
calculer la moyenne de la premire et de la dernire prime du tableau. Cest ce que fait
linstruction suivante :
curAvgBonus = (curBonus(1) + curBonus(100)) / 2.0

Cette simple ligne en dit dj beaucoup sur les tableaux :

Les indices sont indiqus entre parenthses aprs le nom du tableau.

Les lments dun tableau ont tous le mme type de donnes.

315

<
:

Prog VB6 FM2A Page 316 Lundi, 6. aot 2001 3:32 15

Partie II

Les lments du tableau peuvent tre appels dans nimporte quel ordre, pourvu
quon spcie lindice.

Les indices vont de 1 au nombre des lments du tableau.

A dire vrai, ce dernier point dpend de vos prfrences. Par dfaut, le premier indice est
0. Mais les programmeurs Visual Basic (contrairement aux programmeurs C et C++)
prfrent, en gnral, commencer par lindice 1. Pour ce faire, il suft dinclure dans la
section de dclarations du module linstruction suivante :
Option Base 1

Visual Basic offre un autre moyen de dnir la plage des indices ; nous verrons cela
dans la prochaine section.
ce
Astu

Info

Certains programmeurs Visual Basic appliquent aux tableaux une convention


de dnomination plus prcise ; ils emploient, par exemple, le prxe strar
pour les tableaux de chanes (string array) et le prxe intar pour les tableaux
dentiers (integer array). Libre vous, naturellement, demployer des prxes
franciss tels que chtab ou entab.
Visual Basic supporte deux types de tableaux : les tableaux statiques et les
tableaux dynamiques. La taille des tableaux statiques est dnitive et nest pas
modifable lors de lexcution, alors que la taille des tableaux dynamiques est
modiable tout moment. Nous ne traiterons, dans ce livre, que des tableaux
statiques, beaucoup plus efcaces, et beaucoup plus utiliss.

Dune certaine manire, on accde aux valeurs dun tableau comme le facteur distribue
le courrier dun immeuble : ladresse est la mme, seul change le nom des destinataires.

Dclaration des tableaux


Comme les variables individuelles, les tableaux doivent tre dclars avant de pouvoir
tre utiliss. On se sert, pour cela, des mmes instructions de dclaration Public et Dim.
Le choix de linstruction dpend de la porte voulue et du lieu de dclaration du tableau.
Public permet de dclarer les tableaux publics, destins servir dans tous les modules de
lapplication. Linstruction Public doit apparatre dans la section de dclaration du
module. Utilise dans la section de dclaration du module, linstruction Dim dclare un
tableau de niveau module. Utilise lintrieur dune procdure, Dim dclare un tableau
local.

>
:

316

Prog VB6 FM2A Page 317 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

Seule diffrence entre la dclaration des tableaux et la dclaration des variables : la


prsence dans linstruction des indices. Voici le format des deux instructions :
Public arName(intSub) [As dataType][, arName(intSub)
[As dataType]]...

Dim arName(intSub) [As dataType][, arName(intSub) [As dataType]]...

On applique aux tableaux les mmes conventions de dnomination quaux variables (


ceci prs que vous pouvez prciser un deuxime prxe). Les tableaux peuvent avoir
nimporte quel type de donnes. Ici, dataType peut donc tre Integer, Single, etc.
intSub indique le nombre dlments, et la faon dont on se rfre ces lments. Dans
les formats dinstructions prsents ci-dessus, intSub semploie de la manire suivante :
[intLow To] intHigh

(O intLow reprsente la plage infrieure, et intHigh la plage suprieure.)


Info

Nous ne parlons ici que des tableaux unidimensionnels, cest--dire des


tableaux indice unique. Visual Basic supporte galement les tableaux multidimensionnels, ou tables.

Il y a, en fait, (et cest une particularit de Visual Basic) une exception la rgle selon
laquelle un tableau doit relever dun seul type de donnes. En effet, les tableaux peuvent
tre dclars comme de type Variant ; auquel cas, les lments contenus pourront tre
de types de donnes diffrents.
Linstruction suivante dclare un tableau de type Integer contenant cinq lments (on prsuppose ici que linstruction Option Base 1 apparat dans la section de dclarations) :
Dim intCounts(5) As Integer

La Figure 10.9 illustre le stockage du tableau dans la mmoire.


Info

Sans linstruction Option Base 1, la dclaration Dim du tableau intCounts


aurait donn un tableau six lments (indices 0 5).

Quy a-t-il dans intCounts(1), intCounts(2), etc. ? Eh bien, personne ne le sait pour
linstant. Comme les variables, les lments du tableau doivent avant toute chose tre
initialiss. En prcisant lindice, vous pouvez utiliser les lments de tableau comme
vous le feriez pour des variables. Par exemple :
intNumber = intCounts(2) * intFactor / 15
txtValue.Text = intCounts(4)
intCounts(5) = 0

317

<
:

Prog VB6 FM2A Page 318 Lundi, 6. aot 2001 3:32 15

Partie II

Figure 10.9
Le tableau intCounts
contient cinq
lments ; le premier
indice est 1.

Tableau intCounts

intCounts(1)

intCounts(2)

intCounts(3)

intCounts(4)

intCounts(5)

Les deux instructions suivantes sont quivalentes :


Dim intCounts(5) As Integer
Dim intCounts(1 To 5)

On peut aussi, laide de la clause To, spcier les indices de dbut et de n. Considrez
les trois dclarations de tableaux suivantes :
Public varCustNumber(200 To 999) As Variant
Public strCustName(200 To 999) As String
Public curCustBalance(200 To 999) As Currency

Dans chaque tableau, le premier indice est 200, le dernier 999. Si, aprs une telle
dclaration, vous tentiez quelque chose comme strCustName(4), Visual Basic gnrerait
une erreur.

>
:

318

Prog VB6 FM2A Page 319 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

ntion
Atte

Lindice le plus haut spci par la clause To nindique pas ncessairement le


nombre dlments ; tout dpend de lindice de dpart. Nos trois tableaux, par
exemple, contiennent chacun un total de 800 lments.

Il pourra vous tre utile, selon le cas, de spcier un indice de dpart autre que 0 ou 1.
La dclaration donne en exemple ci-dessus, par exemple, serait approprie une liste
de client dont le premier numro de compte est 200. En faisant commencer vos indices
200, vous assurez la symtrie entre les numros de compte et les indices eux-mmes.
Spciez toujours un indice de n assez grand, an de rserver une marge sufsante
pour les lments venir.
Visual Basic inclut une fonction interne spciale, Array(). La fonction Array() permet
de dclarer et dinitialiser les tableaux plus facilement.
ce
Astu

La fonction Array() est assez proche des anciennes instructions BASIC READ
et DATA. Les petits tableaux dont les valeurs sont dj connues peuvent tre
ainsi rapidement initialiss.

Le type de donnes Variant, vous le savez, peut contenir tous les autres types. Supposons que vous cherchiez stocker dans un Tableau Days le nombre de jours de chaque
mois (sans tenir compte des annes bissextiles). Pour commencer, vous dclarez une
variable Variant :
Dim Days As Variant

Puis, plutt que dutiliser une boucle For, vous initialisez le tableau en une seule tape,
laide de la fonction Array() :
Days = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

Rappelons que, si linstruction Option Base 1 apparat dans la section de dclarations


du module, le premier indice de Array() est 1. On peut dclarer et initialiser des chanes
et des dates de la mme faon, en affectant une valeur Variant la fonction Array().

Exploitation des tableaux


Comme nous lavons vu la section prcdente, les lments de tableaux peuvent tre
impliqus dans des calculs, au mme titre que les variables individuelles. Exemple :
curFamilyDues(5) = curFamilyDues(4) * 1.5

Pour traiter les donnes dun tableau, il suft de spcier lindice des lments utiliss.

319

<
:

Prog VB6 FM2A Page 320 Lundi, 6. aot 2001 3:32 15

Partie II

Pour vous familiariser avec lutilisation des indices, nous vous proposons quelques
exemples. Bien que la plupart des programmes reoivent leurs donnes de chiers et de
formulaires, les listings qui suivent mettent en uvre des tableaux dont les lments sont
des valeurs renvoyes par la fonction InputBox(). Les tableaux tant destins recevoir
dimportantes quantits de donnes, il nest pas question de saisir ces donnes dans les
variables avant chaque excution du programme. Les instructions daffectation ne conviennent pas non plus aux grandes quantits de donnes exploites par des programmes interactifs.
Dans le Listing 10.3, le programme dclare deux tableaux. Les donnes sont, dune
part, les noms de 35 familles membres dune association de quartier, et, dautre part, les
cotisations annuelles dues. Le programme reoit les donnes puis afche les rsultats.
Info

Si vous devez excuter ce programme, il vaut peut-tre mieux rduire le nombre


dlments de 35 5 an de vous pargner une saisie inutile.

Listing 10.3 : Les tableaux simplient le stockage des donnes

1: Private Sub association ()


2: Reoit puis affiche les noms et les sommes dues.
3:
Dim strFamilyName(35) As String Rserve les lments du tableau.
4:
Dim curFamilyDues(35) As Currency
5:
Dim intSub As Integer
6:
Dim intMsg As Integer Valeur de renvoi de MsgBox().
7:
8:
Collecte les donnes.
9:
For intSub = 1 To 35
10:
strFamilyName(intSub) = InputBox("Famille suivante ?")
21:
curFamilyDues(intSub) = InputBox("Cotisations dues ?")
22:
Next intSub
23:
24:
Les donnes peuvent maintenant tre affiches.
25:
(Cet exemple utilise cette fin des botes
26:
de message pour simplifier les choses.)
27:
intSub = 1 Initialise le premier indice.
28:
Do
29:
intMsg = MsgBox("Famille numro " & intSub & " : " &
strFamilyName(intSub))
30:
intMsg = MsgBox("Cotisations dues : " & curFamilyDues(intSub))
31:
intSub = intSub + 1
32:
Loop Until (intSub > 35)
33: End Sub

Notez que ce programme reoit et afche toutes les donnes laide de simples routines.
La routine dentre (lignes 9 22) utilise une boucle For, tandis que la routine de
sortie (lignes 28 32) utilise une boucle Do. La mthode employe pour contrler les

>
:

320

Prog VB6 FM2A Page 321 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

boucles est sans importance. Ce qui compte, ici, cest que lon reoive, traite et afche
un grand nombre de donnes en un minimum de lignes, et que sufsent, pour cela, les
indices du tableau et quelques instructions de boucles.
Cet exemple met en uvre des tableaux parallles, cest--dire deux tableaux travaillant
cte cte. A chaque lment dun tableau correspond un lment de lautre tableau.
Les tableaux parallles fonctionnent en mmoire comme fonctionnent, dans une table,
deux champs lis.
Notre petit programme dassociation de quartier fournit une belle illustration, mais ne
fonctionne que sil y a exactement 35 familles. Et si lassociation sagrandit ? Il faudra
alors modier le programme. Cest pourquoi la plupart des programmes, contrairement
notre exemple, ne dnissent pas a priori une quantit limite de donnes. Il vaut
toujours mieux dclarer plus dlments de tableau que lon na dj de donnes. Le
programme permet de dterminer quels lments sont rellement utiliss.
Le prochain programme est semblable celui du Listing 10.3, ceci prs quil dclare
500 lments pour chaque tableau. Avec un tel nombre, on est certain davoir toujours
assez de valeurs disponibles. Lutilisateur nentre que le nombre dlment rels.
Le programme du Listing 10.4 est trs exible, permettant un nombre dentres et de
sorties diffrent chaque excution. La seule limte est celle que lon atteindra lorsque
lassociation approchera les 500 membres.
ntion
Atte

Dclarez assez dlments de tableaux pour couvrir vos besoins estims, mais
pas plus que vous ne puissiez rellement utiliser. Les lments de tableaux
occupent de la mmoire mme sils sont vides.

Listing 10.4 : On peut dclarer plus dlments que lon na de donnes

1: Private Sub varyNumb ()


2: Reoit puis affiche les noms et les sommes dues.
3:
Dim strFamilyName(500) As String
On vise large.
4:
Dim curFamilyDues(500) As Currency
5:
Dim intSub As Integer, intNumFam As Integer
6:
Dim intMsg As Integer Valeur de renvoi de MsgBox().
7:
intNumFam = 1
8:
La boucle demande les noms et les sommes dues
9:
jusqu ce que lutilisateur appuie sur Entre
10:
sans avoir saisi dinformation. Ds quune chane
11:
nulle est entre, la boucle Do-Loop sarrte
12:
aprs avoir stock la dernire entre.
13:
Do
14:
strFamilyName(intNumFam) = InputBox("Famille suivante ?")
15:
If (strFamilyName(intNumFam) = "") Then Exit Do
Interruption.
16:
curFamilyDues(intNumFam) = InputBox("Cotisations dues ?")
17:
intNumFam = intNumFam + 1 Ajoute 1 Add la variable indice.
18:
Loop Until (intNumFam > 500)

321

<
:

Prog VB6 FM2A Page 322 Lundi, 6. aot 2001 3:32 15

Partie II

Listing 10.4 : On peut dclarer plus dlments que lon na de donnes (suite)

19:
20:
21:
22:
23:
24:
25:

Lorsque la dernire boucle se termine, intNumFam contient


1 de plus que le nombre rel dentres.

Affiche toutes les donnes.


For intSub = 1 To intNumFam - 1
intMsg = MsgBox("Famille numro " & intSub & " : " &
strFamilyName(intSub))
26:
intMsg = MsgBox("Cotisations dues : " & curFamilyDues(intSub))
27: Next intSub
28: End Sub

A la ligne 15, la frappe de la touche Entre sans saisie de valeur provoque linterruption
de la boucle. Ce nest pas parce que 500 lments sont rservs quil faut tous les utiliser.
Le programme du Listing 10.5 montre comment on accde en dsordre aux lments du
tableau. Le programme demande les salaires pays pour chacun des douze derniers mois. Il
attend ensuite que lutilisateur saisisse le mois consulter. Le total du mois demand safche alors. Ce listing donne un exemple de programme capable de rechercher des donnes
prcises dans un tableau : on stocke les donnes, puis on attend la requte de lutilisateur.
Listing 10.5 : Programme de recherche de donnes

>
:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:

Private Sub salary ()


Stocke 12 mois de salaires, puis affiche les mois slectionns.
Dim curSal(1 To 12) As Currency
Rserve des lments
pour 12 salaires.
Dim intSub As Integer
Indice de boucle.
Dim intNum As Integer
Mois slectionn.
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
Dim strAns As String
For intSub = 1 To 12
curSal(intSub) = InputBox("Salaire pour le mois de " &
Str(intSub) & " ?", 0.00)
Next intSub

Demande le numero du mois.


Do
intNum = InputBox("Quel mois voulez-vous consulter ? (1-12) ")
intMsg = MsgBox("Salaires pour le mois de " & Str(intNum)
& " : " & curSal(intNum))
17:
strAns = InputBox("Autre consultation ? (O/N)")
18:
Loop While (strAns = "O" Or strAns = "o")
19: End Sub

322

Prog VB6 FM2A Page 323 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

Aprs que lutilisateur a entr les douze salaires dans le tableau (lignes 9 11), il peut
demander consulter nimporte quel mois (un la fois), simplement en spciant le
numro du mois, qui correspond lindice.
Le Listing 10.6 illustre les diverses oprations mathmatiques que lon peut effectuer
sur les tableaux. Le programme demande une srie de tempratures, et interrompt sa
demande lorsque lutilisateur entre 99 pour signaler la n de la liste. Puis le
programme calcule la moyenne des tempratures.
Listing 10.6 : Lutilisateur indique au programme la n de la srie de donnes

1: Private Sub tempAvg ()


2: Demande une liste de tempratures puis calcule la moyenne.
3:
Dim sngTemp(1 To 50) As Single Maximum = 50
4:
Dim sngTotalTemp As Single
Reoit le total.
5:
Dim sngAvgTemp As Single
6:
Dim intSub As Integer
Indice.
7:
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
8:
9:
Demande lutilisateur chaque temprature.
10:
For intSub = 1 To 50
Maximum.
11:
sngTemp(intSub) = InputBox("Temprature suivante ?
(-99 pour terminer) ")
12:
Si lutilisateur veut arrter, dcrmente de 1 et
sort de la boucle.
13:
If (sngTemp(intSub) = -99) Then
14:
intSub = intSub - 1
Dcrmente de 1.
15:
Exit For
16:
End If
17:
sngTotalTemp = sngTotalTemp + sngTemp(intSub)
Additionne le total.
18:
19:
Next intSub
20:
Calcule la moyenne.
21:
sngAvgTemp = sngTotalTemp / intSub
22:
intMsg = MsgBox("Temprature moyenne : " & sngAvgTemp)
23: End Sub

323

<
:

Prog VB6 FM2A Page 324 Lundi, 6. aot 2001 3:32 15

Partie II

Les tableaux de contrles


Vous rencontrerez, dans la suite de cet ouvrage, le terme tableau de contrles. Un
tableau de contrles nest rien dautre quune liste de contrles, tout comme un
tableau de variables est une liste de variables. Lintrt des tableaux de contrles est le
mme que celui des tableaux de variables : on parcourt les donnes laide dune
boucle plutt que de saisir le nom de chaque contrle individuel.
Nous nen dirons pas plus pour linstant. Les chapitres ultrieurs, tels que le
Chapitre 16, reviendront de faon plus approfondie sur ce concept.

En rsum
Ce chapitre vous a expliqu comment intgrer le support de la souris vos applications.
Les vnements souris informent votre programme des dplacements, clics et doubleclics, et indiquent quel bouton a t utilis. A laide des mthodes appropries, vous
pouvez grer les oprations de glisser-dposer, qui permettent lutilisateur de dplacer
un objet tel quun contrle, dune partie lautre de la feuille.
Nous avons galement dcouvert le contrle Timer, qui permet de programmer lexcution selon des critres temporels. Le timer se base sur lhorloge interne du PC, et peut
dclencher des procdures aprs coulement dun laps de temps dni en millisecondes.
Il existe plusieurs types de contrles de listes La Bote outils comprend cet effet les
contrles ListBox et ComboBox. La diffrence entre les types disponibles est parfois tnue,
mais les exemples daujourdhui auront dtaill le fonctionnement et les avantages de
chacun, an que vous fassiez le meilleur choix pour vos applications.
Vers la n de ce chapitre, nous sommes pass des contrles de listes aux tableaux de
variables, dont la structure est semblable celle des lments de listes. Un tableau de
variables contient de multiples valeurs, auxquelles on accde laide dun indice numrique.
Dans le prochain chapitre, nous tudierons la gestion des feuilles.

Questions-rponses
Q Comment choisir entre les diffrents types de listes ?
R Si les contrles de listes sobtiennent tous partir des outils ListBox et ComboBox
de la Bote outils, ils ont chacun un fonctionnement particulier. Dans la zone de
liste simple, lutilisateur ne peut que slectionner lun des lments proposs, il ne

>
:

324

Prog VB6 FM2A Page 325 Lundi, 6. aot 2001 3:32 15

Chapitre 10 : Gestion de la souris et contrles avancs

peut pas en ajouter. La liste conserve la taille qui lui a t attribue lors de la
cration ; si ncessaire, des barres de dlement safcheront automatiquement.
Le contrle ComboBox, selon les spcications de sa proprit Style, peut revtir
trois formes diffrentes. La ComboBox droulante reste ferme jusqu ce que
lutilisateur clique dessus, ce qui conomise de la place sur la feuille. La ComboBox
simple inclut une zone de texte dans laquelle lutilisateur peut entrer de nouvelles
valeurs. De mme, la zone de liste droulante noccupe que peu de place, et autorise
lajout dlments.
Q Pour prsenter lutilisateur une liste de valeurs, dois-je utiliser lune des
zones de liste ou un tableau ?
R Ce sont deux choses diffrentes, et vous navez pas choisir entre zones de liste et
tableaux. Vous pouvez trs bien utiliser les deux dans une mme application. Le
tableau est l pour accueillir les donnes reues par votre application, tandis que les
listes ne servent qu prsenter des donnes.

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez ces rponses lAnnexe A.

Quiz
1. Quels vnements souris rpondent des boutons particuliers ? Quels vnements
souris rpondent aux deux ?
2. Comment dterminer quel bouton a servi lors dun vnement MouseDown ?
3. Comment modier licne qui apparat lors dune opration de glisser-dposer ?
4. Comment crer une procdure vnementielle capable de rpondre un intervalle plus
grand que 65 secondes (limite approximative du contrle Timer) ?
5. Comment initialise-t-on un contrle de liste ?
6. Comment le programme reconnat-il les lments que lutilisateur a slectionns ?
7. Donnez deux moyens de retirer tous les lments dun contrle de liste.

325

<
:

Prog VB6 FM2A Page 326 Lundi, 6. aot 2001 3:32 15

Partie II

8. Quand un contrle ComboBox permet lutilisateur dentrer de nouvelles valeurs,


pourquoi faut-il fournir au moins un autre contrle ?
9. Comment faire en sorte quun contrle de liste afche les lments dans lordre
alphabtique ou numrique, indpendamment de lordre dans lequel on les a entrs ?
10. Combien dlments sont rservs par linstruction Dim suivante ?
Dim varStaff(-18 To 4) As Variant

Exercices
1. Ecrivez un programme qui afche dans une zone de liste la liste des membres de
votre famille. Ajoutez-en assez pour que des barres de dlement safchent. Faites
en sorte que la liste soit automatiquement trie.
2. Lancez le projet dexemple Listcmbo, fourni avec Visual Basic. Lapplication
contient une base de donnes dditeurs informatiques amricains. Cliquez sur le
bouton Utiliser le contrle ComboBox standard, puis cliquez sur le champ Etat.
Cliquez ensuite sur le bouton Utiliser le contrle ListBox standard, puis ouvrez de
nouveau le champ Etat. Vous constaterez aisment la diffrence entre les deux.
3. Modiez lapplication de lexercice 1 de faon que les trois sortes de ComboBox
apparaissent sur la feuille, pour afcher les mmes donnes. Faites en sorte que tout
changement (ajout dlment) dans lune des ComboBox soit automatiquement
report dans lautre.

>
:

326

Prog VB6 FM2A Page 327 Lundi, 6. aot 2001 3:32 15

PB4
Slections multiples
dans une zone de liste
Ce Projet bonus met en uvre les zones de liste tudies au Chapitre 10. Il vous permettra galement dapprofondir votre comprhension des tableaux. Lapplication que vous
allez crer doit permettre les slections multiples ; vous devrez pour cela dnir les
valeurs de proprits adquates. Vous devrez galement dterminer si lutilisateur a bel
et bien slectionn plusieurs valeurs, an que ces valeurs puissent servir ailleurs dans le
programme.
Les slections multiples sont souvent utilises. Par exemple, une entreprise peut distribuer ses clients un chier catalogue dans lequel les divers produits sont proposs sous
forme de liste. Le client peut dcider de nacheter quun seul produit, comme en slectionner des dizaines.

Crer la feuille
Pour quune zone de liste accepte les slections multiples, vous devez modier la
proprit MultiSelect. Si la MultiSelect a la valeur 1 - Simple (comme oppose de la
valeur par dfaut, 0 - None), lutilisateur peut effectuer des slections multiples. Si la
valeur de MultiSelect est 2 - Extended, lutilisateur peut slectionner une plage
dlments en tenant la touche Maj, ainsi que slectionner plusieurs lments discontinus
en tenant la touche Ctrl (exactement comme dans les botes de dialogue Ouvrir).

327

Prog VB6 FM2A Page 328 Lundi, 6. aot 2001 3:32 15

Partie II

La Figure PB4.1 montre une feuille sur laquelle des zones de texte afchent
"Slectionn" si llment correspondant a t slectionn dans la zone de liste, et "Non
slectionn" autrement. La proprit MultiSelect de la liste "Destination" a pour valeur
2 - Extended.
Figure PB4.1
Vous pouvez effectuer
des slections
multiples dans
les zones de liste.

La premire chose faire, cest dajouter les contrles sur la feuille. Suivez pour cela le
Tableau PB4.1.
Tableau PB4.1 : Proprits des contrles de la feuille

>
:

Contrle

Proprit

Valeur

Feuille

Name

frmDest

Feuille

Caption

Dmo zones de liste

Feuille

Height

6600

Feuille

Width

7230

Label 1

Name

lblListBoxCap

Label 1

Caption

Destination

Label 1

FontStyle

Bold

Label 1

FontSize

24

328

Prog VB6 FM2A Page 329 Lundi, 6. aot 2001 3:32 15

Projet bonus 4 : Slections multiples dans une zone de liste

Tableau PB4.1 : Proprits des contrles de la feuille (suite)


Contrle

Proprit

Valeur

Label 1

Height

600

Label 1

Left

2190

Label 1

Top

120

Label 1

Width

3060

Label 2

Name

lblChicago

Label 2

BorderStyle

Fixed Single

Label 2

Caption

Chicago

Label 2

FontStyle

Bold

Label 2

FontSize

18

Label 2

Height

495

Label 2

Left

360

Label 2

Top

1995

Label 2

Width

2655

Label 3

Name

lblWashington

Label 3

Caption

Washington

Label 3

BorderStyle

Fixed Single

Label 3

FontStyle

Bold

Label 3

FontSize

18

Label 3

Height

495

Label 3

Left

4035

Label 3

Top

1980

Label 3

Width

2655

Label 4

Name

lblDallas

329

<
:

Prog VB6 FM2A Page 330 Lundi, 6. aot 2001 3:32 15

Partie II

Tableau PB4.1 : Proprits des contrles de la feuille (suite)

>
:

Contrle

Proprit

Valeur

Label 4

Caption

Dallas

Label 4

BorderStyle

Fixed Single

Label 4

FontStyle

Bold

Label 4

FontSize

18

Label 4

Height

495

Label 4

Left

360

Label 4

Top

3480

Label 4

Width

2655

Label 5

Name

lblHouston

Label 5

Caption

Houston

Label 5

BorderStyle

Fixed Single

Label 5

FontStyle

Bold

Label 5

FontSize

18

Label 5

Height

495

Label 5

Left

4035

Label 5

Top

3480

Label 5

Width

2655

Label 6

Name

lblSeattle

Label 6

Caption

Seattle

Label 6

BorderStyle

Fixed Single

Label 6

FontStyle

Bold

Label 6

FontSize

18

Label 6

Height

495

330

Prog VB6 FM2A Page 331 Lundi, 6. aot 2001 3:32 15

Projet bonus 4 : Slections multiples dans une zone de liste

Tableau PB4.1 : Proprits des contrles de la feuille (suite)


Contrle

Proprit

Valeur

Label 6

Left

360

Label 6

Top

4920

Label 6

Width

2655

Label 7

Name

lblDayton

Label 7

Caption

Dayton

Label 7

BorderStyle

Fixed Single

Label 7

FontStyle

Bold

Label 7

FontSize

18

Label 7

Height

495

Label 7

Left

4035

Label 7

Top

4920

Label 7

Width

2655

Zone de liste

Name

lstFirstList

Zone de liste

Height

840

Zone de liste

Left

2865

Zone de liste

MultiSelect

2-Extended

Zone de liste

Top

870

Zone de liste

Width

1335

Zone de texte 1

Name

txtChicago

Zone de texte 1

FontSize

18

Zone de texte 1

FontStyle

Bold

Zone de texte 1

Height

495

Zone de texte 1

Left

120

331

<
:

Prog VB6 FM2A Page 332 Lundi, 6. aot 2001 3:32 15

Partie II

Tableau PB4.1 : Proprits des contrles de la feuille (suite)

>
:

Contrle

Proprit

Valeur

Zone de texte 1

Text

Non slectionn

Zone de texte 1

Top

2520

Zone de texte 1

Width

3105

Zone de texte 2

Name

txtWashington

Zone de texte 2

FontSize

18

Zone de texte 2

FontStyle

Bold

Zone de texte 2

Height

495

Zone de texte 2

Left

3840

Zone de texte 2

Text

Non slectionn

Zone de texte 2

Top

2520

Zone de texte 2

Width

3105

Zone de texte 3

Name

txtDallas

Zone de texte 3

FontSize

18

Zone de texte 3

FontStyle

Bold

Zone de texte 3

Height

495

Zone de texte 3

Left

120

Zone de texte 3

Text

Non slectionn

Zone de texte 3

Top

3960

Zone de texte 3

Width

3105

Zone de texte 4

Name

txtHouston

Zone de texte 4

FontSize

18

Zone de texte 4

FontStyle

Bold

Zone de texte 4

Height

495

332

Prog VB6 FM2A Page 333 Lundi, 6. aot 2001 3:32 15

Projet bonus 4 : Slections multiples dans une zone de liste

Tableau PB4.1 : Proprits des contrles de la feuille (suite)


Contrle

Proprit

Valeur

Zone de texte 4

Left

3840

Zone de texte 4

Text

Non slectionn

Zone de texte 4

Top

3960

Zone de texte 4

Width

3105

Zone de texte 5

Name

txtSeattle

Zone de texte 5

FontSize

18

Zone de texte 5

FontStyle

Bold

Zone de texte 5

Left

120

Zone de texte 5

Height

495

Zone de texte 5

Text

Non slectionn

Zone de texte 5

Top

5400

Zone de texte 5

Width

3105

Zone de texte 6

Name

txtDayton

Zone de texte 6

FontSize

18

Zone de texte 6

FontStyle

Bold

Zone de texte 6

Height

495

Zone de texte 6

Left

3840

Zone de texte 6

Text

Non slectionn

Zone de texte 6

Top

5400

Zone de texte 6

Width

3105

333

<
:

Prog VB6 FM2A Page 334 Lundi, 6. aot 2001 3:32 15

Partie II

Ajouter le code
Le Tableau PB4.1 ne rserve pas de blancs dans les valeurs des zones de texte ; ce sera le rle
de la procdure Form_Load(). Le Listing PB4.1 fournit le code de ce projet.
Listing PB4.1 : Initialiser la zone de liste et interroger les slections multiples

>
:

1: Private Sub Form_Load()


2:
Sexcute au chargement de la feuille.
3:
lstFirstList.AddItem "Chicago"
4:
lstFirstList.AddItem "Dallas"
5:
lstFirstList.AddItem "Seattle"
6:
lstFirstList.AddItem "Washington"
7:
lstFirstList.AddItem "Houston"
8:
lstFirstList.AddItem "Dayton"
9: End Sub
10:
11: Private Sub lstFirstList_Click()
12:
Met jour les six zones de texte en fonction des
13:
lments slectionns dans la premire zone de liste.
14:
If lstFirstList.Selected(0) Then
15:
txtChicago.Text = "Slectionn"
16:
Else
17:
txtChicago.Text = "Non slectionn"
18:
End If
19:
20: If lstFirstList.Selected(1) Then
21:
txtDallas.Text = "Slectionn"
22:
Else
23:
txtDallas.Text = "Non slectionn"
24:
End If
25:
26:
If lstFirstList.Selected(2) Then
27:
txtSeattle.Text = "Slectionn"
28:
Else
29:
txtSeattle.Text = "Non slectionn"
30: End If
31:
32:
If lstFirstList.Selected(3) Then
33:
txtWashington.Text = "Slectionn"
34:
Else
35:
txtWashington.Text = "Non slectionn"
36:
End If
37:
38:
If lstFirstList.Selected(4) Then
39:
txtHouston.Text = "Slectionn"
40: Else
41:
txtHouston.Text = "Non slectionn"
42:
End If
43:

334

Prog VB6 FM2A Page 335 Lundi, 6. aot 2001 3:32 15

Projet bonus 4 : Slections multiples dans une zone de liste

44:
If lstFirstList.Selected(5) Then
45:
txtDayton.Text = "Slectionn"
46:
Else
47:
txtDayton.Text = "Non slectionn"
48:
End If
49:
50: End Sub

Analyse
Les lignes 3 8 initialisent la zone de liste. La proprit MultiSelect ayant pour valeur Extended, lutilisateur peut slectionner plusieurs villes la fois.
Lorsque les slections multiples sont autorises, Visual Basic doit crer un tableau spcial,
semblable aux tableaux de variables, mais ne contenant que des proprits. Ici, le tableau de
proprits est nomm Selected. Ce tableau stend de Selected(0) Selected(5), pour
accueillir les six lments de la liste.
Les valeurs du tableau sont toutes de type Boolean. Elles seront True ou False, selon la slection.
A la premire excution du programme, toutes les valeurs Selected sont False, puisque aucune
slection na encore eu lieu. Chaque fois que lutilisateur slectionne un lment dans la liste, la
valeur Selected correspondante devient True. La procdure Click() (lignes 11 48) se charge de
mettre jour les six zones de texte pour reter les slections.
Info

Si lutilisateur dslctionne un lment en y cliquant de nouveau, la valeur Selected


correspondante redevient False.

335

<
:

Prog VB6 FM2A Page 336 Lundi, 6. aot 2001 3:32 15

Prog VB6 FM2A Page 337 Lundi, 6. aot 2001 3:32 15

PB 5
Pratique de la souris
Ce Projet bonus vous invite mettre en pratique les techniques de gestion de la souris
tudies au Chapitre 10. En rpondant aux vnements souris et en interrogeant les
arguments de la procdure vnementielle, le programme dtermine si lutilisateur a
cliqu, double-cliqu, ou sil a dplac la souris.
Ce Projet bonus est un peu diffrent des autres. Vous commencerez par tudier un exemple
dans lequel on change licne de dplacement. Puis, vous construirez une application
capable de rpondre aux vnements souris.

Changer licne pointeur


Comme nous lavons vu, le pointeur peut changer dapparence lorsquil survole un
contrle. Nous allons crer, titre dexemple, une application simplissime : une feuille
unique avec un bouton de commande au milieu. Il sagit de faire en sorte que le pointeur
se transforme en "smiley" lorsquil est positionn sur le bouton de commande cmdHappy.
Dans la fentre Proprits, affectez au bouton une image du dossier \Graphics\Icons\Misc.
Le chier Face03.ico sera parfait.
Maintenant, dnissez la proprit MousePointer du bouton de commande comme 99 Custom. Cette valeur ordonne Visual Basic dafcher licne spcie dans la proprit
MouseIcon si et seulement si lutilisateur place le pointeur sur le bouton de commande.
La Figure PB5.1 montre le pointeur "smiley".

337

Prog VB6 FM2A Page 338 Lundi, 6. aot 2001 3:32 15

Partie II

Figure PB5.1
Voil un pointeur
heu-reux !

Lancez cette petite application, et vous constaterez que Visual Basic se charge dafcher
licne spcie.

Programmer la souris
Nous allons maintenant crer un nouveau projet dans lequel un contrle afche une
image (comme cela a t tudi au Chapitre 2). A la proprit Picture de ce contrle
Image, vous affecterez une icne gurant une cible. Cette icne se trouve dans le
dossier \Graphics\Icons\Misc. Vous ajouterez ensuite la feuille une zone de texte
nomme txtMouse (voir Tableau PB5.1). Le contenu de cette zone de texte retera les
dplacements et les clics de la souris. Ce projet illustre le fonctionnement des procdures
vnementielles lies la souris.
La Figure PB5.2 montre la feuille que vous allez crer.
Figure PB5.2
Lutilisateur doit
cliquer sur limage.

>
:

338

Prog VB6 FM2A Page 339 Lundi, 6. aot 2001 3:32 15

Projet bonus 5 : Pratique de la souris

Il faut dabord crer la feuille. Suivez, pour cela, les spcications du Tableau PB5.1.
Tableau PB5.1 : Proprits des contrles de la feuille
Contrle

Proprit

Valeur

Feuille

Name

frmMouse

Feuille

Caption

Gestion de la souris

Feuille

Height

4230

Feuille

Width

5265

Zone de texte

Name

txtMouse

Zone de texte

Alignment

2-Center

Zone de texte

FontStyle

Bold

Zone de texte

FontSize

14

Zone de texte

Height

1095

Zone de texte

Left

840

Zone de texte

MultiLine

True

Zone de texte

Text

Servez-vous de la souris

Zone de texte

Top

1320

Zone de texte

Width

3255

Image

Name

imgMouse

Image

Height

480

Image

Left

2400

Image

Picture

\Program Files\Microsoft VisualStudio\Common


\Graphics\Icons\Misc\Bullseye

Image

Top

480

339

<
:

Prog VB6 FM2A Page 340 Lundi, 6. aot 2001 3:32 15

Partie II

Ajouter le code
Le Listing PB5.1 fournit le code de ce projet.
Listing PB5.1 : Rpondre aux vnements souris

>
:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:

Private Sub Form_Click()


txtMouse.Text = "Vous avez cliqu sur la feuille"
Beep
Signale lvnement Click.
End Sub
Private Sub Form_DblClick()
txtMouse.Text = "Vous avez double-cliqu sur la feuille"
End Sub
Private Sub Form_MouseDown(intButton As Integer, intShift
As Integer, sngX As Single, sngY As Single)
Clic sur la feuille.
txtMouse.Text = "Clic sur la feuille la position "
& sngX & "," & sngY
End Sub
Arguments ignors dans la procdure prcdente.
Private Sub Form_MouseMove(intButton As Integer, intShift
As Integer, sngX As Single, sngY As Single)
txtMouse.Text = "Dplacement de la souris..."
End Sub
Arguments ignors dans la procdure prcdente.
Private Sub imgMouse_Click()
txtMouse.Text = "Vous avez cliqu sur limage"
End Sub
Private Sub imgMouse_DblClick()
txtMouse.Text = "Vous avez double-cliqu sur limage"
End Sub
Private Sub imgMouse_MouseDown(intButton As Integer, intShift
As Integer, sngX As Single, sngY As Single)

Clic sur limage.


txtMouse.Text = "Clic sur limage la position " & sngX & "," & sngY
End Sub

29:
30:
31:
32:
33:
34: Private Sub imgMouse_MouseMove(intButton As Integer, intShift
As Integer, sngX As Single, sngY As Single)
35:
txtMouse.Text = "Vous vous tes dplac sur limage"
36: End Sub

340

Prog VB6 FM2A Page 341 Lundi, 6. aot 2001 3:32 15

Projet bonus 5 : Pratique de la souris

Analyse
Les diffrentes procdures vnementielles interrogent lactivit de la souris. Les lignes
1 4 contiennent la procdure vnementielle la plus simple, qui rpond lorsque que
lon clique nimporte o sur la feuille. Linstruction Beep est l pour signaler lvnement Click, qui autrement ne serait jamais peru (il se produit bien trop rapidement).
Comme nous lavons vu au Chapitre 10, lvnement MouseDown a lieu avant
lvnement Click (si, du moins, le code contient les deux vnements). Le texte de
MouseDown safchera donc pour montrer o lon a cliqu sur la feuille. Puis, lorsquon
relche le bouton de la souris, cest le texte de lvnement Click qui safche pour
disparatre aussitt (do lintrt de linstruction Beep).
Info

ntion
Atte

Il est intressant de noter quun double-clic sur la feuille dclenche dabord


lvnement MouseDown, puis lvnement Click, puis seulement lvnement
DblClick (lignes 9 12). Ds que vous double-cliquez, le Beep se fait entendre. Mais vous verrez, avant, les coordonnes safcher sur ordre de lvnement MouseDown.
Il y a dans tout cela un dfaut qui irrite beaucoup de programmeurs : lvnement MouseMove se dclenche chaque fois que lon clique.

Les lignes 9 12 traitent les arguments de lvnement MouseDown. Les valeurs en twips
sngX et sngY indiquent les coordonnes du clic. Notez que ce code ragira aux clics du
bouton gauche comme aux clics du bouton droit, les deux pouvant dclencher lvnement
MouseDown. La procdure ne sexcute que si vous cliquez sur la feuille ; et lvnement Click a lieu ds que vous relchez le bouton.
Les lignes 15 17 grent le dplacement de la souris sur la feuille, et uniquement sur la
feuille.
La ligne 20 22 grent le positionnement de la souris sur limage. Si vous cliquez sur
limage, la procdure vnementielle Click met jour la zone de texte pour indiquer ce
qui vient de se passer. Mais lvnement MouseDown passant avant lvnement Click, vous
naurez pas le temps de lire cette indication ; en revanche, vous pourrez entendre le son
gnr par linstruction Beep.
Les lignes 24 26 grent le double-clic sur limage laide dune procdure vnementielle DblClick. Les lignes 28 32 traitent lvnement MouseDown de limage, avant
mme que lvnement Click nait lieu. Enn, les lignes 34 36 grent les mouvements
de la souris sur limage.

341

<
:

Prog VB6 FM2A Page 342 Lundi, 6. aot 2001 3:32 15

Partie II

Info

Nous aurions pu afcher dans la zone de texte les coordonnes de lvnement


MouseMove, mais ces informations auraient chang trop vite pour quon puisse
les lire.

Grce ce Projet bonus, vous savez quoi vous attendre quant la programmation de la
souris. Vous savez notamment que lvnement MouseDown a toujours priorit sur les
vnements Click et DblClick.

Implmenter le glisser-dposer
automatique
Rien de plus simple que dajouter vos applications le support du glisser-dposer.
Dabord, affectez la proprit DragIcon du contrle image licne qui doit safcher
lors de lopration. Choisissez, par exemple, limage Clock02.ico. Pour implmenter le
glisser-dposer automatique, dnissez la proprit DragMode du contrle comme 1 Automatic. Visual Basic soccupe des dtails.
Maintenant, ajoutez la procdure vnementielle MouseDown suivante :
Private Sub Form_DragDrop(cntSource As Control, sngX As Single, sngY As Single)
cntSource.Move sngX, sngY Dposer limage.
End Sub

Largument Source de lvnement DragDrop correspond en fait au contrle glisserdposer. Les valeurs de coordonnes sngX et sngY spcient le "point de chute" du
contrle. La mthode Move se charge de dplacer le contrle (en loccurrence, limage)
la position spcie.
Lancez lapplication et dplacez limage divers endroits de la feuille. Le mode automatique requiert de votre part un minimum de programmation, et sera donc privilgi
pour la plupart des oprations de glisser-dposer.

Implmenter le glisser-dposer manuel


Pour mettre en uvre le glisser-dposer manuel, vous devez dnir la proprit DragMode comme 0 - Manual, puis remplacer le contenu de la procdure vnementielle
MouseDown et faire apparatre le code suivant :
Private Sub imgMouse_MouseDown(intButton As Integer, intShift
As Integer, sngX As Single, sngY As Single)

>
:

342

Prog VB6 FM2A Page 343 Lundi, 6. aot 2001 3:32 15

Projet bonus 5 : Pratique de la souris

Clic sur limage.

txtMouse.Text = "Clic sur limage la position " & sngX & "," & sngY

imgMouse.Drag
Amorce le glisser-dposer.
End Sub

La seule instruction nouvelle ici est imgMouse.Drag. Lvnement MouseDown doit amorcer
lopration de glisser-dposer. Lintrt du mode manuel est que vous pouvez programmer
divers traitements en rponse lvnement MouseDown, avant que ne commence le glisserdposer. En mode automatique, le glisser-dposer a lieu sans autre intervention de votre
part.
ce
Astu

Utilisez le glisser-dposer manuel lorsque vous souhaitez effectuer diverses


tches conjointement au glisser-dposer lui-mme.

La mthode Drag active le glisser-dposer. Sans la mthode Drag, la procdure vnementielle MouseDown() ne pourrait amorcer lopration. Le mode manuel permet
dappliquer des restrictions lopration de glisser-dposer avant ou pendant quelle a
lieu.

343

<
:

Prog VB6 FM2A Page 344 Lundi, 6. aot 2001 3:32 15

Prog VB6 FM2B Page 345 Lundi, 6. aot 2001 3:38 15

Chapitre

11

Gestion des feuilles


Dans ce chapitre, nous tudierons les feuilles de faon plus approfondie quil ntait
possible jusque-l. Vous apprendrez programmer et grer les feuilles laide des
proprits, des vnements et des mthodes appropris. Lune des mthodes les plus utiles
est Print, qui permet dafcher du texte sur la feuille directement, sans passer par un
contrle. Il est intressant de noter que la mthode Print vient tout droit du bon vieux
langage BASIC, dont la commande PRINT fonctionnait exactement de la mme manire.
Nous examinerons galement les avantages et dsavantages respectifs des applications
MDI (monodocuments) et SDI (multidocuments). Enn, vous apprendrez placer sur
vos feuilles des barres doutils et des contrles Coolbar, pour offrir lutilisateur un
moyen supplmentaire dinteragir avec le programme.
Voici ce que nous dcouvrirons aujourdhui :

les proprits, vnements et mthodes des feuilles ;

les collections de feuilles ;

lafchage de texte sur la feuille laide de la mthode Print ;

les diffrences entre les applications MDI et SDI ;

comment crer vos propres proprits de feuilles ;

le contrle Toolbar ;

le contrle Coolbar ;

le contrle ImagCombo.

345

Prog VB6 FM2B Page 346 Lundi, 6. aot 2001 3:38 15

Partie II

Proprits, vnements et mthodes


Au cours des dix prcdents chapitres, vous avez dcouvert une multitude de contrles
et de commandes. Vous tes donc en passe de devenir un vrai pro de la programmation
Visual Basic. Mais il vous reste matriser llment le plus important dune application
Visual Basic : les feuilles. Les feuilles que nous navons fait quvoquer et l pour les
besoins de notre expos, mritent bien un chapitre entier.
Vous avez dj appris rgler certaines proprits pour modier laspect et le comportement dune feuille. Vous savez que lon peut y ajouter un libell, en dnir la taille et
spcier si oui ou non des boutons de contrles (tels quAgrandir et Rduire) seront
disponibles. Vous avez galement utilis la procdure vnementielle Form_Load() pour
initialiser les contrles de listes. Cest en effet dans cette procdure que lon procde aux
initialisations pralables lafchage de la feuille. (Le nom de la feuille nest pas
ncessaire, car le code apparat dans le module de feuille et sapplique donc toujours la
feuille courante.)
Info

Info

La procdure vnementielle Form_Unload() permet de faire "place nette"


dans lcran et la mmoire de lutilisateur, lorsquune feuille se referme.
A la diffrence des mthodes Form.Hide et Form.Show, les procdures vnementielles Form_Load() et Form_Unload() interviennnent sur la mmoire.
Lors de lexcution, Form_Load() charge la feuille en mmoire, et
Form_Unload() fait le mnage. Les mthodes Show et Hide ne sont que des
avatars des valeurs True et False de la proprit Visible dune feuille.
Faire
Utilisez les mthodes Form.Hide et Form.Show pour masquer et afcher les
feuilles. Nutilisez Form_Load() et Form_Unload() que pour charger et
dcharger les feuilles de la mmoire.

Vous dcouvrirez, dans la prochaine section, une faon particulire demployer lvnement Form_Unload().
On rencontre souvent, dans une procdure Form_Load(), un code semblable celui-ci :
frmAForm.Left = (Screen.Width - frmAForm.Width) / 2
frmAForm.Top = (Screen.Height - frmAForm.Height) / 2

Ces instructions permettent de centrer la feuille par rapport aux coordonnes de lcran.
Le Chapitre 16 vous prsentera les divers types dobjets supports par Visual Basic.
Lun de ces objets est Screen, qui reprsente lcran de lutilisateur. Lobjet Screen
sajuste la rsolution dcran et la carte vido de lutilisateur. Pour connatre la

>
:

346

Prog VB6 FM2B Page 347 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

rsolution employe, le programme peut, tout moment, interroger les proprits Width
et Height de lobjet Screen.
ce
Astu

Vous vous pargnerez de la saisie en omettant lobjet par dfaut dans la


procdure vnementielle. Ainsi, plutt que de taper le nom de la feuille,
vous pourriez rcrire les instructions ci-dessus de la manire suivante :
Left = (Screen.Width - Width) / 2
Top = (Screen.Height - Height) / 2

Dans la mesure o ce code apparat dans une procdure vnementielle de


la feuille, telle que Form_Load(), vous navez pas spcier le nom de la
feuille. En revanche, les conomies de saisie se payent presque toujours par
une certaine ambigut du code. En spciant tous les objets, mme les
objets par dfaut, vous assurez la clart du code et facilitez la maintenance.
Que de cruels dilemmes en Visual Basic !
ition
Dfin

Lobjet par dfaut est lobjet (feuille, contrle, etc.) que Visual Basic utilisera
automatiquement si vous nen spciez pas dautre.

Le code de centrage prsent ci-haut forme un objet dtude intressant, car il illustre
les relations quentretient la feuille avec lcran, les proprits de lobjet Screen et les
vnements Load et Unload. Mais la fentre Proprits fournit un moyen plus simple de
spcier la position de la feuille au dmarrage : la proprit StartUpPosition, qui peut
prendre lune des quatre valeurs prsentes dans le Tableau 11.1.
Tableau 11.1 : StartUpPosition permet de spcier la position initiale de la feuille
Proprit

Constante nomme

Valeur

Description

0-Manual

vbStartUpManual

Pas de spcication.

1-CenterOwner

vbStartUpOwner

Centre la feuille sur lcran.

2-CenterScreen

vbStartUpScreen

Centre llment sur lcran.

3-WindowsDefault

vbStartUpWindowsDefault

Coin suprieur gauche de


lcran.

Les vnements de feuilles sont souvent dune haute importance pour le programme.
Vous connaissez dj Load et Unload, ainsi que les vnements feuille/souris du chapitre
prcdent. Nous allons maintenant tudier des vnements de feuilles tout aussi utiles.
Le Tableau 11.2 en prsente trois.

347

<
:

Prog VB6 FM2B Page 348 Lundi, 6. aot 2001 3:38 15

Partie II

Tableau 11.2 : Trois vnements de feuilles


Evnement

Description

Activate

A lieu lorsque la feuille devient active (parce que lutilisateur a cliqu ou


parce quil revient la feuille en basculant dune autre application).

Deactivate

A lieu lorsquune autre feuille ou une autre application devient active.

Resize

a lieu lorsque lutilisateur redimensionne la feuille ou lorsque le programme


modie les proprits Height et Width.

ce
Astu

La proprit Resize peut galement servir rorganiser les contrles aprs


que lutilisateur a redimensionn la feuille. Si vous affectez aux contrles
une position relative aux proprits Height et Width de la feuille, ils resteront
centrs quelle que soit la taille de la feuille.

La Figure 11.1 reproduit la bote de dialogue que lon obtient par le menu Projet,
Proprits. Cette bote de dialogue que nous avons dj voque, contient la liste
droulante Objet de dmarrage, qui propose les diffrentes feuilles de lapplication ainsi
quune procdure spciale nomme Main. Certaines applications nont pas de feuille de
dmarrage. Ce peut tre le cas dun utilitaire darrire-plan qui nafche pas de fentre.
Il peut aussi sagir dune application qui vrie pralablement une valeur quelconque,
an de dterminer quelle feuille doit apparatre, ou bien qui demande la saisie dun mot
de passe.
Figure 11.1
La bote de dialogue
Proprits du projet
permet de spcier
la feuille ou procdure
de dmarrage.

>
:

348

Prog VB6 FM2B Page 349 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

Pour quun code sexcute avant tout chargement de feuille, il faut crer une procdure
Main() (dans la section gnrale du module de code, et non dans le module de feuille),
et slectionner cette procdure Main() comme Objet de dmarrage dans les Proprits
du projet. Le code contenu dans Main() sexcutera avant tout autre chose. En fait,
aucune feuille ne safchera avant que Main() ne lui applique la mthode Show.
Info

Vous dcouvrirez dautres vnements lis aux feuilles dans les Chapitres 13
et 14.

Les collections de feuilles


Une feuille, nous lavons mentionn plus haut, peut tre dsigne comme objet. Visual
Basic supporte plusieurs types dobjets : les contrles, les feuilles et les objets rsidant
hors de lapplication, tels que les objets OLE. (OLE, pour object linking and embedding, signie "liaison et incorporation dobjets". Vous en apprendrez plus ce sujet aux
Chapitres 16 et 17).
Lensemble de vos objets feuilles constitue la collection Forms, qui change selon que
vous ajoutez ou supprimez des feuilles dans le projet. La collection Forms contient le
nom de toutes les feuilles. Par exemple, frmAboutBox pourrait tre le nom dune de vos
feuilles dans la collection Forms. Lobjet nomm Form (sans "s") dnit la feuille actuellement ouverte. Cest cet objet que Visual Basic se rfre lorsque vous appliquez une
mthode de feuille sans spcier de nom.
Info

La collection Forms est lensemble des feuilles dnies dans votre application.

Accs la collection Forms


Visual Basic vous permet de vous rfrer aux feuilles de la collection Forms sans spcier
le nom des feuilles individuelles ouvertes.
Supposons, par exemple, que vous ayez trois feuilles ouvertes : frmAcPay, frmAcRec et
frmAcReview. Lobjet Forms contient ces trois feuilles. Chaque feuille est indexe,
partir de 0, et vous pouvez dsigner une feuille par ce nombre plutt que par son nom.
Ce nombre, ou indice, est spci entre parenthses aprs le nom de lobjet Forms. Le
Tableau 11.3 dtaille, pour nos trois feuilles dexemple, les indices correspondants.

349

<
:

Prog VB6 FM2B Page 350 Lundi, 6. aot 2001 3:38 15

Partie II

La collection Forms fonctionne comme un tableau de variables.


Info

Tableau 11.3 : Les objets de la collection Forms peuvent tre dsigns


par leur indice
Nom de la feuille

Notation indiciaire

frmAcPay

Forms(0)

frmAcRec

Forms(1)

frmAcReview

Forms(2)

ce
Astu

Il existe une autre faon de dsigner une feuille en employant son nom. Voici
un exemple :
Forms![frmAcPay]

Cet exemple se rfre une feuille nomme frmAcPay comprise dans la


collection courante. (Les crochets sont obligatoires.) Un autre format inclut
des parenthses :
Forms!("frmAcPay")

Les indices
On peut galement se servir dun indice la place du nom pour dsigner un contrle
individuel de la feuille, tel quune zone de texte.
Imaginons quune feuille nomme frmStore contient cinq contrles : trois labels
(lblStoreNum, lblStoreName et lblStoreLoc) et deux zones de liste (lstStoreEmps et
lstStoreMgrs). Les procdures peuvent dsigner chaque contrle par son indice,
comme le montre le Tableau 11.4. Notez que le nom du contrle individuel doit tre
distingu de Forms par un point dexclamation.
Tableau 11.4 : Les contrles de la feuille peuvent aussi tre dsigns
par leur indice

>
:

Nom du contrle

Notation indiciaire

lblStoreNum

Forms!frmStore(0)

lblStoreName

Forms!frmStore(1)

350

Prog VB6 FM2B Page 351 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

Tableau 11.4 : Les contrles de la feuille peuvent aussi tre dsigns


par leur indice (suite)
Nom du contrle

Notation indiciaire

lblStoreLoc

Forms!frmStore(2)

lstStoreEmps

Forms!frmStore(3)

lstStoreMgrs

Forms!frmStore(4)

ntion
Atte

Ne confondez pas les indices dsignant un contrle de la feuille avec les


indices de la collection Forms. Si Forms prcde immdiatement lindice,
cest une feuille ou sous-feuille prcise quil est fait rfrence. Sil suit le
nom de la feuille, comme dans le Tableau 11.4, lindice dsigne lun des
contrles de la feuille.

La proprit Count
Comme les contrles, les collections ont des proprits. Count est lune des proprits de la
collection Forms. La proprit Count vous simplie la tche en ce quelle vrie pour vous
le nombre de feuilles contenues dans une collection. Grce Count, vous pouvez crire des
procdures gnralistes qui sappliqueront toutes les feuilles actuellement ouvertes. La
proprit Count contient toujours un entier.
Info

Applique un nom de contrle spcique, la proprit Count peut aussi


indiquer le nombre de contrles contenus dans une feuille. Par exemple,
frmAcPay.Count renvoie le nombre de contrles contenus dans la feuille
frmAcPay. Count tient compte des contrles cachs.

Le code suivant dclare une variable Integer, intC, et y stocke le nombre de feuilles
ouvertes :
Dim intC As Integer
intC = Forms.Count

Stocke le nombre de feuilles ouvertes.

Count permet aussi de compter les contrles dune feuille prcise. Le code suivant
dclare une variable Integer, intCC, et y stocke le nombre de contrles sur une feuille
nomme frmMyForm :
Dim intCC As Integer
intCC = frmMyForm.Count

Stocke le nombre de contrles de

la feuille.

351

<
:

Prog VB6 FM2B Page 352 Lundi, 6. aot 2001 3:38 15

Partie II

ce
Astu

Place aprs le nom dune feuille, Count indique le nombre de contrles quelle
contient. Place aprs Forms, elle indique le nombre de feuilles contenues
dans la collection.

Une boucle For est loutil parfait pour parcourir toutes les feuilles du projet en cours.
Prenez garde de toujours amorcer la boucle sur une valeur 0, cest--dire sur lindice de
la premire feuille.
Le code suivant masque toutes les feuilles ouvertes :
For intI = 0 To Forms.Count - 1

Forms(intI).Visible = False
Masque chaque feuille.
Next intI

Il est parfois ncessaire de masquer toutes les feuilles, par exemple pour effectuer une
tche systme requrant labsence totale dE/S utilisateur. Une fois la tche effectue,
une boucle semblable permettra de dnir la proprit Visible de chaque feuille comme
True.
Visual Basic supporte un format spcial de For, For Each. Cette boucle parcourt une
collection sans quil soit besoin de contrler une variable de boucle. Voici une boucle
For Each qui masque toutes les feuilles ouvertes :
Dim varFrmObj As Variant
For Each varFrmObj In Forms

varFrmObj.Visible = False
Next

Masque chaque feuille.

La seule variable de boucle quexige For Each est une variable Variant, qui contiendra
le nom de chaque feuille chaque itration de la boucle dans la collection. Dans le
mme esprit, linstruction For Each suivante amorce une boucle qui parcourt tous les
contrles de la feuille frmMyForm, quel que soit le nombre de ces contrles :
For Each varControl In frmMyForm

Dchargement des feuilles


Nous avons dj voqu la procdure vnementielle Form_Unload(). Lvnement
Unload est utile pour les routines de nettoyage, par exemple sauvegarder toutes les
donnes avant que lapplication ne se ferme. Mais, surtout, lvnement Unload joue un
rle central dans la fermeture "propre" des programmes.
Imaginons une application qui contient plusieurs feuilles. Si lapplication masque une
feuille, lutilisateur na aucun moyen de savoir que la feuille est encore charge. Dun
autre ct, mme si lutilisateur ferme la feuille principale, celle-ci est toujours

>
:

352

Prog VB6 FM2B Page 353 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

charge en mmoire et, pour Windows, le programme est toujours en cours dexcution. Ainsi, le programme continue daccaparer de la mmoire sans que lutilisateur
en ait connaissance.
Les programmeurs Visual Basic ajoutent souvent le code suivant aux diverses commandes de fermeture (telles que loption de menu Fichier, Quitter) :
For intCtr = (Forms.Count 1) to 0 Step - 1

Unload Forms(intCtr) Dcharge les feuilles affiches comme


les feuilles masques.

Next intCtr

La mthode Print
La mthode Print permet dafcher du texte sur la feuille sans passer par un contrle du
type label ou zone de texte. Print afche le texte directement sur la feuille. Print a
linconvnient dexiger trop de programmation. Print ntant pas un contrle, on ne
peut se contenter de dnir des proprits lors de la cration. Cest travers le code seul
que lon peut rgler le comportement de la mthode Print. Par exemple, vous devez
spcier dans le code la position prcise laquelle Print afchera le texte, sinon elle
pourrait se superposer aux contrles de la feuille.
ce
Astu

La mthode Print ne permet pas seulement denvoyer du texte aux feuilles.


Comme nous le verrons au Chapitre 13, Print est aussi la faon la plus
courante denvoyer une sortie vers limprimante.

Plus gnralement, Print permet denvoyer du texte un objet. Pour notre expos, cet
objet sera une feuille. Mais Print peut aussi bien sappliquer aux contrles Picture,
ainsi quaux objets Printer ou Debug (qui est une fentre dexcution spciale dans
laquelle vous pouvez envoyer des rsultats de tests lors de lexcution). Lobjet le plus
simple auquel puisse sappliquer la mthode Print est la feuille.
Vous pouvez, ds maintenant, vous exercer la pratique de Print, sans construire une
application complte. Ouvrez un nouveau projet, puis double-cliquez sur la fentre
Form1 pour afcher la fentre Code. Puisque le projet vient juste dtre cr, les seuls
objets disponibles sont la feuille Form1 et la procdure gnrale qui contient la section
de dclarations. Toutes les procdures prdnies que la feuille peut reconnatre sont
proposes dans la liste droulante Procdure. Slectionnez Click dans cette liste, puis
saisissez le code du Listing 11.1. (Comme toujours, Visual Basic insre automatiquement les lignes dencadrement ; vous ne devez donc taper que le corps de la procdure.)

353

<
:

Prog VB6 FM2B Page 354 Lundi, 6. aot 2001 3:38 15

Partie II

Listing 11.1 : La mthode Print crit directement sur la feuille

1: Private Sub Form_Click()


2: Exemple de mthode Print.
3:
Dim strString As String
4:
strString = "Visual Basic"
5:
Affiche trois fois la chane.
6:
Form1.Print strString & " " & strString & " " strString
7: End Sub

Excutez le programme. La feuille safche, mais rien ne se passe tant que vous ne
cliquez pas dessus. Ce qui est tout fait normal, puisque le code est inclus dans la sousroutine Form_Click (). Cliquez plusieurs fois. Le rsultat devrait ressembler la
Figure 11.2.
Figure 11.2
La mthode Print afche
la sortie directement
sur la feuille.

Print est lune des manires les plus simples dafcher des informations. Pour afcher
une chane quelconque sur une feuille de votre programme, il suft de faire prcder
Print du nom de la feuille, le tout spar par un point. Voici le format de la mthode
Print applique une feuille :
frmFormName.Print DataToPrint

Ici, frmFormName est la feuille de destination, et DataToPrint les donnes imprimer.


Print peut envoyer des littraux (nombres, chanes ou dates), des valeurs de variables et
des contrles.

Formatage de la sortie Print


Vous pouvez formater la sortie de Print en incluant les fonctions Spc() ou Tab().
Ces deux mthodes permettent despacer les donnes envoyes par la mthode Print.
Le Listing 11.2 utilise Spc() et le point-virgule (;) pour envoyer deux chanes sur la
mme ligne. Spc(5) ordonne la mthode Print dinsrer cinq espaces avant dafcher

>
:

354

Prog VB6 FM2B Page 355 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

la chane sur la sixime colonne. Si vous terminez linstruction Print par un pointvirgule, linstruction Print suivante afchera le texte la suite, sur la mme ligne.
Listing 11.2 : Le point-virgule empche les sauts de lignes

1:
2:
3:
4:
5:
6:

Private Sub Form_Click ()


Dim strString As String
strString = "Visual Basic"
Form1.Print "*"; Spc(5); strString;
Form1.Print Spc(2); strString
End Sub

Remarquez le point-virgule.

Cliquez plusieurs fois sur la feuille, et la sortie suivante safchera :


*
*
*

Visual Basic
Visual Basic
Visual Basic

Visual Basic
Visual Basic
Visual Basic

Le code force Print sauter cinq espaces avant dafcher le premier Visual Basic.
Aprs deux autres espaces, la seconde instruction Print afche galement Visual
Basic. Chaque fois que vous cliquez, la procdure vnementielle se rpte.
Si lon emploie Tab() au lieu de Spc(), la sortie commencera la colonne spcie dans
largument entre parenthses. Spc() force linstruction Print suivante sauter un
certain nombre despaces, alors que Tab() ordonne au Print suivant de commencer
une colonne prcise. Le Listing 11.3 donne un exemple.
Listing 11.3 : Espacement de la sortie de Print laide des fonctions Tab() et Spc()

1: Private Sub Form_Click()


2:
Dim strString As String
3:
strString = "Visual Basic"
4:
5:
Form1.Print "*"; Tab(5); strString; Tab(20); strString
6:
Form1.Print "*"; Spc(5); strString; Spc(20); strString
7: End Sub

A la ligne 5, Tab() spcie les colonnes utiliser, tandis qu la ligne 6, Spc() spcie
un certain nombre despaces sauter.
Voici la sortie de cette procdure :
*
*

Visual Basic
Visual Basic

Visual Basic
Visual Basic

La mthode Print peut galement servir insrer des lignes vierges sur une feuille.
Examinez le code du Listing 11.4.

355

<
:

Prog VB6 FM2B Page 356 Lundi, 6. aot 2001 3:38 15

Partie II

Listing 11.4 : Print permet aussi dinsrer des lignes vierges

1: Private Sub Form_Click()


2:
Dim strString As String
3:
Dim CurLine As Integer
4:
5:
CurLine = 1
6:
strString = "Visual Basic"
7:
8:
Affiche la ligne.
9:
Form1.Print strString & " est sur la ligne n" & CurLine
10:
11:
For CurLine = 2 To 6
12:
Form1.Print
Insre des lignes vierges.
13:
Next CurLine
14:
15:
Affiche la ligne.
16:
Form1.Print strString & " est sur la ligne n" & CurLine
17: End Sub

La sortie prsente cinq lignes vierges entre les deux chanes :


Visual Basic est sur la ligne n1

Visual Basic est sur la ligne n7

Les lignes 11 13 insrent des lignes vierges parce que la mthode Print nenvoie pas de
donnes.

Positionnement de la sortie Print


Il faut parfois spcier la position exacte o la sortie doit safcher. A cette n,
plusieurs proprits lies la feuille peuvent tre utilises conjointement la mthode
Print. Ces proprits renvoient la position courante du curseur texte, qui se dplace au
fur et mesure de lexcution de la mthode Print. Les coordonnes du curseur texte
sont contenues dans les proprits CurrentX et CurrentY. Vous pouvez, laide de ces
proprits, dnir avec prcision le point o les donnes seront afches.
Le comportement de CurrentX et CurrentY est affect par une troisime proprit,
ScaleMode. La feuille peut reconnatre plusieurs modes diffrents selon le contenu de la
proprit ScaleMode. Le mode en question concerne lchelle employe pour lafchage
des images et du texte sur la feuille. Le Tableau 11.5 prsente les divers modes disponibles.

>
:

356

Prog VB6 FM2B Page 357 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

La plupart sont de nature graphique et particulirement utiles pour les sorties imprimantes (nous en reparlerons au Chapitre 13).
Tableau 11.5 : Les valeurs de ScaleMode dterminent les coordonnes
de la sortie Print
Constante nomme

Valeur

Echelle

vbUser

Spcie par le programmeur.

vbTwips

Echelle en twips (valeur par dfaut).

vbPoints

Point typographique (environ 0,35 mm).

vbPixels

Point le plus petit de lobjet (pour lcran, la taille du


point dcran dtermine celle du pixel).

vbCharacters

Taille dun caractre.

vbInches

Un pouce (25,4 mm).

vbMillimeters

1 mm.

vbCentimeters

1 cm.

vbHimetric

Certains programmeurs prfrent aux pixels les mesures


Himetric, indpendantes du matriel ; Windows utilise
alors la plus haute rsolution possible.

vbContainerPosition

Utilise comme valeur positionnelle, la valeur ScaleMode


du conteneur (un objet qui contient lobjet courant)
dtermine la valeur ScaleMode de lobjet courant.

vbContainerSize

10

Utilise comme valeur positionnelle, la valeur ScaleMode


du conteneur dtermine la valeur ScaleMode de lobjet
courant.

Pour le texte, la valeur de ScaleMode la plus courante est vbCharacters. Ainsi, si CurrentX
et CurrentY ont toutes les deux la valeur 5, la prochaine sortie Print commencera
colonne 5, ligne 5. Lorigine pour la proprit ScaleMode est le coin suprieur gauche de la
feuille (coordonnes 0, 0). La procdure vnementielle Click du Listing 11.5 exploite
les proprits ScaleMode, CurrentX et CurrentY.

357

<
:

Prog VB6 FM2B Page 358 Lundi, 6. aot 2001 3:38 15

Partie II

Listing 11.5 : Positionnement de la sortie laide des proprits CurrentX et


CurrentY

1: Private Sub Form_Click()


2:
Dfinition de lechelle
3:
Form1.ScaleMode = VbCharacters
4:
5:
Form1.CurrentX = 20
Dplacement horizontal de 20 caractres.
6:
Form1.CurrentY = 6
Dplacement vertical de 6 lignes.
7:
Form1.Print "Vertical et horizontal "
8:
9:
Form1.CurrentX = 0
Retour vers la gauche.
10:
Form1.CurrentY = 0
Retour vers le haut.
11:
Form1.Print "Coin suprieur gauche"
12: End Sub

La ligne 3 affecte ScaleMode la constante VbCharacters qui spcie lchelle caractre. La sortie du Listing est reproduite en Figure 11.3. Vous pouvez remarquer que la
sortie du second Print safche plus haut sur la feuille que la sortie du premier.
Figure 11.3
CurrentX et CurrentY
positionnent le curseur
texte de la mthode Print.

Cration de nouvelles proprits de feuilles


Vous pouvez crer vos propres proprits de feuilles. Il vous arrivera sans doute, pour
les besoins dune application, dappliquer une feuille les mmes modications
plusieurs reprises. Dans un cas pareil, il peut tre intressant de dnir des proprits
personnalises.
Imaginons, par exemple, que vouliez afcher un titre au bas dune feuille. Si vous vous
servez dun label, il faudra congurer le contrle, et le congurer de nouveau chaque
fois que vous voudrez modier le titre afch. En faisant de ce titre lune des proprits
de la feuille, vous vous pargnez une peine inutile.

>
:

358

Prog VB6 FM2B Page 359 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

Pour bien comprendre la cration de proprits personnalises, rien de mieux quun exemple. Crez un nouveau projet et congurez-le selon les spcications du Tableau 11.6.
Cette petite application montre comment les valeurs de ScaleMode dterminent les coordonnes de la sortie Print.
Tableau 11.6 : Les coordonnes de Print sont modies par les valeurs
de ScaleMode
Contrle

Proprit

Valeur

Feuille

Name

frmTitle

Feuille

Caption

Titre

Feuille

Height

3720

Feuille

StartUpPosition

2-CenterScreen

Feuille

Width

3975

Bouton de commande

Name

cmdTitle

Bouton de commande

Caption

&Voir le titre

Bouton de commande

Height

495

Bouton de commande

Left

1320

Bouton de commande

Top

1200

Bouton de commande

Width

1215

Lorsque lutilisateur clique sur le bouton de commande, le titre safche au bas de la


feuille. Cela est d la procdure vnementielle Click du bouton de commande :
1: Private Sub cmdTitle_Click()
2:
frmTitle.BottomTitle = "Nouvelle proprit"
3: End Sub

Examinez la ligne 2. Il y a quelque chose qui cloche : il nexiste pas de proprit


nomme BottomTitle. Qu cela ne tienne, nous allons la crer !
Suivez ces tapes pour ajouter la nouvelle proprit BottomTitle la liste des proprits
de votre feuille :
1. Cliquez sur le bouton Code de la fentre Proprits pour afcher la fentre Code.

359

<
:

Prog VB6 FM2B Page 360 Lundi, 6. aot 2001 3:38 15

Partie II

2. Dans la section de dclarations qui apparat avant la procdure vnementielle


cmdTitle_Click(), tapez ceci :
Dim strTitle As String
strTitle est donc une variable publique, disponible pour le projet entier. Puisque les
variables publiques sont tant dcries, pourquoi dclarer strTitle comme publique ?
Rappelez-vous que les contrles sont publics pour lapplication entire. Il ny a pas de
contrles privs, pas plus que de proprits prives. La variable strTitle contient en
fait la valeur de la nouvelle proprit BottomTitle qui ne deviendra rellement
proprit qu la prochaine tape. Or cette proprit BottomTitle doit avoir un accs
complet et permanent sa variable rserve strTitle. Il faut donc que cette variable
soit publique.
3. Vous allez maintenant dcouvrir un nouveau type de procdure : Property Get.
Il existe une procdure Property Get pour chaque proprit que vous dnissez.
Lorsque le programme rencontre une proprit personnalise, Visual Basic excute
automatiquement la procdure Property Get correspondante. Ainsi, aprs que lon
aura cr la procdure Property Get de la proprit BottomTitle, Visual Basic
excutera automatiquement cette procdure chaque fois que lapplication demandera la valeur de BottomTitle.
Info

Une procdure Property Get renvoie la valeur de la proprit cre.

Dans la fentre Code, saisissez le contenu du Listing 11.6.


Listing 11.6 : La procdure Property Get renvoie la valeur de la proprit

1:
2:
3:
4:
5:
6:
7:

Public Property Get BottomTitle()


Cette procdure renvoie la valeur
de la proprit BottomTitle,
valeur en fait contenue dans
la variable publique strTitle.
BottomTitle = strTitle
End Property

La proprit BottomTitle nest pas vraiment une proprit. Sa valeur reste contenue
dans la variable publiques trTitle. Mais, grce la procdure Property Get, le
programme ny voit que du feu et traite BottomTitle comme une proprit normale.
En vrit, la valeur de la proprit est une valeur de variable.

>
:

360

Prog VB6 FM2B Page 361 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

4. Il faut maintenant fournir notre pseudo-proprit BottomTitle une procdure


Property Let. La procdure Property Let change la valeur de BottomTitle. En fait,
Property Let nintervient que sur la variable publique qui "reprsente" BottomTitle
dans le code, et laquelle sont affectes les valeurs destines cette proprit.
Info

Une procdure Property Let affecte une valeur la proprit cre.

Dans la fentre Code, saisissez le contenu du Listing 11.7.


Listing 11.7 : La procdure Property Let affecte une valeur la proprit

1: Public Property Let BottomTitle(strTitleEntered)


2:
Cette procdure affecte la variable
3:
strTitle les valeurs que le programme
4:
est susceptible denvoyer BottomTitle.
5:

6:
Largument pass est la valeur que
7:
le programme stocke dans BottomTitle.
8:
strTitle = strTitleEntered
9:

10:
La sortie suivante saffichera au bas de la feuille.
11:
frmTitle.CurrentY = (frmTitle.Height - 600)
12:

13:
Si la feuille est si petite que mme une seule
14:
ligne ne rentre pas, ne rien faire.
15:
If frmTitle.CurrentY < 600 Then
16:
Exit Property
17:
Else
18:
Affiche sur la feuille la valeur de proprit.
19:
Print strTitle
20:
End If
21: End Property

La ligne 8 affecte la variable publique largument pass la procdure. Quel que soit
le point du programme o une valeur est affecte la proprit BottomTitle, cette
procdure sexcute pour passer la valeur comme argument.
Les lignes 11 et 15 rglent lafchage du titre. La ligne 11 fait en sorte que le libell
safche 600 twips du bas de la feuille, quelle que soit la taille dnie en cours
dexcution par lutilisateur. Si lutilisateur a rtrci la fentre au point que mme
une seule ligne ne puisse apparatre, la ligne 16 annule toute la procdure. Tant que
la ligne de texte rentre sur la feuille, la ligne 19 afche la valeur la position
CurrentY. (CurrentX vaut 0, soit le bord gauche de la fentre. Ici, le code na jamais
modi CurrentX.)

361

<
:

Prog VB6 FM2B Page 362 Lundi, 6. aot 2001 3:38 15

Partie II

ce
Astu

Ds lors que vous avez crit les procdures Property Get et Property Let,
la proprit BottomTitle fait partie intgrante de la liste des proprits de
la feuille. Bien que la fentre Proprits ninclura pas toujours la nouvelle
proprit, ce sera le cas de toutes les autres listes de proprits. Dans la
Figure 11.4, on sapprte affecter une valeur lune des proprits de la
feuille ; le menu contextuel qui safche propose bien la proprit BottomTitle. La nouvelle proprit peut tre utilise comme les autres, par la
grce des procdures Property Get et Property Let.

Figure 11.4
La proprit BottomTitle apparat dans
le menu contextuel
de la fentre Code.

Nouvelle
Proprit

5. Lorsque vous lancez lapplication et cliquez sur le bouton de commande, lvnement Click de ce contrle se produit, et la procdure vnementielle Click
sexcute. La procdure vnementielle Click affecte le littral chane "Nouvelle
proprit", la proprit BottomTitle, et les procdures Property soccupent du
reste.

>
:

362

Prog VB6 FM2B Page 363 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

Les applications multifeuilles


La plupart des applications que nous avons cres jusquici ne contenaient quune seule
feuille. Nous navons pas abord la question des applications multifeuilles, en raison de la
simplicit des projets tudis. Pour ajouter une feuille, il suft de cliquer du bouton droit
sur la fentre Projet, puis choisir loption approprie.
Vous allez maintenant apprendre travailler sur des applications multifeuilles. Les
feuilles ajoutes seront des feuilles de donnes spciales. Mais avant toute chose, vous
devez saisir la distinction entre les programmes SDI (Single Document Interface, interface monodocument) et MDI (Multiple Document Interface, interface multidocument).
Lorsque plusieurs feuilles sont en jeu, on doit gnralement soccuper de plusieurs jeux
de contrles. En assignant chaque feuille un nom assez explicite, vous rduisez la part
de complications que cela implique. Le nom de la feuille permet tout moment de
savoir sur quel jeu de contrles on travaille. Du reste, les feuilles peuvent tre afches
et masques volont lors de lexcution (lutilisateur peut aussi basculer de lui-mme
dune feuille lautre).
Info

Mme lorsque plusieurs feuilles sont afches, il ny a quune feuille active.


Pour activer une feuille inactive, il suft lutilisateur de cliquer sur lune de
ses parties visibles. Une feuille peut aussi tre active depuis le code au
moment choisi. La mthode frmForm.Show active la feuille frmForm et
masque les autres feuilles si la feuille active manque despace.

Les applications dveloppes en mode MDI peuvent devenir assez complexes. La plupart
des applications commerciales sont de type multidocument. Les programmes dcrits dans
la suite de cet ouvrage, plus puissants et exploitant des chiers et des contrles supplmentaires, seront presque toujours des applications MDI.
Plutt que de cliquer du bouton droit sur la fentre Projet pour ajouter une feuille, vous
pouvez aussi choisir, dans le menu Projet, la commande Ajouter une feuille. Visual Basic
afche alors la bote de dialogue Ajouter une feuille (voir Figure 11.5). Vous pouvez choisir entre plusieurs types de feuilles, ou choisir dans la liste propose longlet Existant.
Si vous double-cliquez sur licne Form, Visual Basic ouvre une nouvelle feuille standard.
Chaque feuille ajoute est automatiquement nomme Form2, Form3, etc. Il convient de
donner aux feuilles des noms plus explicites ds la premire tape de la cration.
Info

Le Chapitre 15 dtaille les autres options proposes dans la bote de dialogue


Ajouter une feuille.

363

<
:

Prog VB6 FM2B Page 364 Lundi, 6. aot 2001 3:38 15

Partie II

Figure 11.5
Slectionnez le type
de feuille ajouter.

SDI contre MDI


Visual Basic supporte trois styles dinterface :
Interface monodocument (SDI). Une application SDI contient une seule fentre de
donnes. Dans lutilitaire Windows Bloc-notes, par exemple, on ne peut ouvrir
quun seul document la fois. La barre de menus des applications SDI ne contient
gnralement pas de menu Fentre, puisque lon ne peut passer dune fentre
lautre. Ds que lutilisateur ouvre un nouveau chier de donnes, ce contenu vient
prendre la place de la fentre prcdemment ouverte.
Interface multidocument (MDI). Une application MDI contient plusieurs fentres de
donnes (fentres de document). Microsoft Word, par exemple, permet douvrir autant
de documents que lon veut. Le code MDI de Word garantit que chaque document
apparat dans sa propre fentre (voir Figure 11.6).
On passe de lune lautre en cliquant sur la fentre approprie, ou en la
slectionnant dans le menu Fentre. Lorsque lutilisateur bascule entre les documents cest--dire, de notre point de vue, entre les feuilles , la fentre slectionne reoit le focus et devient la feuille active.
Interface Explorateur. Cest le style mis en uvre dans le systme daide Visual
Basic et dans lExplorateur Windows. Une application de type Explorateur contient
deux fentres : une gauche et une droite. La fentre de gauche afche une vue
arborescente des donnes dtailles dans la fentre de droite. Linterface Explorateur
est approprie aux applications de gestion de chiers et dimages. On utilise pour les
applications de ce type les contrles TreeView et ListView, qui permettent de parcourir
les donnes des deux panneaux. (Ces contrles napparaissant pas par dfaut sur la
Bote outils, il faut les ajouter par le menu Projet, Composants.)
>
:

364

Prog VB6 FM2B Page 365 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

Figure 11.6
Les applications
MDI contiennent de
multiples fentres
de donnes.

Info

Une application SDI peut contenir plusieurs feuilles. MDI signie simplement que lapplication peut inclure une ou plusieurs feuilles lles, chacune
contenant un jeu de donnes particulier. Dans une application MDI, les
diverses feuilles apparaissent dans une feuille de contrle (on parle aussi de
feuille parent ou de feuille principale), et ne peuvent safcher que dans les
limites de cette feuille de contrle. Une application SDI peut contenir de
multiples feuilles, mais aucune nest considre comme la lle dune autre. Si
votre application est destine traiter un seul jeu de donnes la fois (un
seul chier client ou le chier paye dun seul employ, par exemple), ou si
elle ne traite pas de donnes en dehors des informations de contrle du
programme, alors le mode SDI est le plus indiqu.

Terminologie MDI
Pour exploiter adquatement le mode MDI, vous devez en connatre la terminologie.
La feuille principale qui fait ofce de toile de fond pour les autres feuilles, est souvent
dsigne comme feuille parent ou fentre parent. La fentre parent est le rceptacle qui
contient une ou plusieurs fentres lles. Dans Microsoft Word, par exemple, larrireplan gris, avec ses barres de menus, dtat et doutils, est la fentre parent. Chaque
document Word ouvert safche dans une fentre lle lintrieur de la fentre parent ;
les fentres lles ne peuvent sortir des limites de la fentre parent.

365

<
:

Prog VB6 FM2B Page 366 Lundi, 6. aot 2001 3:38 15

Partie II

Cette fentre parent qui impose ses limites aux fentres lles ne peut contenir que deux
types de contrles :

les contrles qui supportent la proprit Align ;

les contrles sans interface visible (voir Chapitre 15).


Info

Si lutilisateur rduit une fentre lle, licne ou le bouton correspondant safche au bas de la fentre parent, mais pas sur la Barre des tches. Les fentres
lles ne peuvent jamais dpasser les frontires de la fentre parent ; les limites
de la fentre parent sont les limites absolues de toutes les fentres lles.

Techniquement, une fentre lle se distingue par ce que la proprit MDIChild de la


feuille correspondante est dnie comme True. Du reste, une application MDI peut
contenir des feuilles non-lles. Ainsi, par exemple, de la bote de dialogue A propos
(accessible depuis le menu daide) ; cette bote de dialogue ne contenant pas de donnes
proprement dites, elle na pas tre une lle MDI.
Pour crer une application MDI, choisissez dans le menu Projet loption Ajouter une
feuille MDI, puis dnissez comme True la proprit MDIChild de la nouvelle feuille.

Lassistant Cration dapplications


Lassistant Cration dapplications que nous avons dcouvert au Chapitre 1, peut
galement servir crer des applications MDI. Cest une mthode plus simple que de
crer les diffrentes feuilles et de dnir chaque proprit MDIChild " la main".
La deuxime bote de dialogue afche par lassistant Cration dapplications vous
propose de choisir un style dinterface (voir Figure 11.7).
Figure 11.7
Lassistant Cration
dapplications
propose les trois
styles dinterface.

>
:

366

Prog VB6 FM2B Page 367 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

Dans les projets MDI construits par lassistant Cration dapplications, les multiples
fentres lles sont cres partir de la commande Nouveau du menu Fichier. Lorsque
lutilisateur slectionne la commande Fichier, Nouveau (procdure vnementielle
mnuFileNew .Click()), le code du Listing 11.8 sexcute.
Listing 11.8 : Cration dune variable de rfrence pointant vers la fentre lle

1:
2:
3:
4:
5:
6:
7:
8:
9:

Private Sub LoadNewDoc()


Static lDocumentCount As Long
Dim frmD As frmDocument
lDocumentCount = lDocumentCount + 1
Set frmD = New frmDocument
frmD.Caption = "Document " & lDocumentCount
frmD.Show
End Sub

Ce code est un peu complexe, mais vous en savez dj assez pour le comprendre. A la
ligne 2, la variable statique lDocumentCount est locale pour la procdure, mais ne sera
jamais cours de porte. A la premire excution de cette procdure, la valeur de
lDocumentCount est 0 (les variables statiques commencent toujours par l). Si la procdure change la valeur de lDocumentCount (elle lui ajoute 1 chaque excution, ligne 5),
Visual Basic "retient" la nouvelle valeur. Aucune autre procdure ne peut accder
lDocumentCount, et sa valeur reste toujours identique dans cette procdure-ci. La valeur
reste la mme, ce qui ne serait pas le cas pour une variable locale automatique, soit le
contraire dune variable statique. (Toutes les variables que nous avons jusquici dclares
localement taient des variables automatiques.)
Info

Une variable statique conserve sa valeur mme aprs la n de la procdure


qui la contient. Ainsi, une variable dont la valeur serait 7 au terme dune
procdure, garderait cette valeur mme si la procdure sexcutait de
nouveau (par exemple au sein de la boucle dune autre procdure).

La ligne 3 introduit une instruction daffectation dun nouveau genre. En effet, plutt
quune variable, cest une feuille que lon dclare. Lapplication contiendra au
dmarrage la feuille lle frmDocument spcie lors de la cration. Linstruction Dim de
la ligne 3 dclare une variable frmD qui correspond en fait au mme objet que frmDocument. Au lieu de contenir des donnes Integer ou String, frmD pointe vers un objet
document qui a les mmes proprits que frmDocument. frmD est un exemple de contrle
de variable.
Aprs que la variable statique charge de rfrencer les nouveaux documents a t mise
jour (ligne 5), linstruction Set cre un nouveau document et dnit frmD comme
rfrence de ce document. En pratique, frmD est le nouveau document. Linstruction

367

<
:

Prog VB6 FM2B Page 368 Lundi, 6. aot 2001 3:38 15

Partie II

suivante affecte la proprit Caption du nouveau document la valeur Document suivie


du numro de document. Enn, la dernire instruction applique la mthode Show pour
afcher le nouveau document dans la fentre parent.
Info

Linstruction Set fonctionne en gros comme une instruction daffectation,


ceci prs quelle affecte une variable de contrle un contrle proprement
dit. La ligne 3 du Listing 11.8 ne dclare pas une nouvelle feuille, mais bien
une variable de feuille. Cette variable reste vide jusqu ce quune instruction Set lassocie une feuille dtermine (ce qui est fait ligne 6).

Chaque fois que lutilisateur choisit Fichier, Nouveau, la procdure LoadNewDoc()


sexcute et cre une nouvelle fentre lle. Si, dans lapplication MDI cre laide de
lassistant Cration dapplications, vous slectionnez Fichier, Fermer, rien ne se passe.
Lassistant ne gnre pas de code cet effet. Cest vous de programmer le dchargement
de la fentre lle active.
ce
Astu

Les fentres lles font de parfaites botes de dialogue. Le Chapitre 9 vous a


expliqu comment gnrer des botes de dialogue communes. Mais vous
pouvez crer vos propres botes de dialogue, sous la forme de fentres lles
quipes des contrles adquats. Par exemple, un bouton de commande
dni comme bouton par dfaut via la proprit Default, et des zones de
texte afchant des entres par dfaut. Les boutons de commande peuvent
galement tre dsactivs (proprit Enabled dnie comme False), selon
le contexte dans lequel lutilisateur invoque la bote de dialogue. Pour
afcher une telle bote de dialogue, il suft dappliquer la mthode Show :
frmDialog.Show vbModal, Me

vbModal gnre une bote de dialogue modale laquelle lutilisateur doit


rpondre par OK ou Annuler avant de faire quoi que ce soit dautre dans
lapplication. La deuxime option de Show correspond au nom de la feuille
parent, mais vous pouvez employer Me si la feuille parent est la feuille standard de lapplication.

Les barres doutils


Les barres doutils permettent daccder par des boutons aux commandes et options de
menu courantes. Pour intgrer une barre doutils votre application, il faut dabord
ajouter le contrle Toolbar votre Bote outils. Une fois la barre doutils cre, il ne
reste qu crire pour chaque bouton une procdure vnementielle Click, comme on le
fait pour les options de menu.

>
:

368

Prog VB6 FM2B Page 369 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

Info

Dans une application MDI, les barres doutils peuvent apparatre sur la
feuille parent seule, ou sur les feuilles lles galement.

Ajout du contrle Toolbar la Bote outils


Les barres doutils et les coolbars (que vous dcouvrirez dans la prochaine section)
fonctionnent et sinstallent de la mme manire. Si les barres doutils sont les plus
courantes (on en trouve dans peu prs dans toutes les applications Windows
daujourdhui), les coolbars sont un peu plus simples ajouter, car il y a moins de
valeurs de proprits dnir. Cette section vous indique les tapes suivre pour
ajouter une barre doutils votre application. La section suivante traite des contrles
spciques aux coolbars.
Info

Comme lindique la section suivante, les coolbars ont ceci de particulier


quelles permettent de faire glisser les contrles hors du champ de vision,
puis de les faire rapparatre.

Pour ajouter le contrle Toolbar votre Bote outils, choisissez Projet, Composants.
Dans la bote de dialogue Composants qui safche, slectionnez lentre Microsoft
Windows Common Controls 6.0, puis cliquez sur OK. Plusieurs nouveaux outils
apparaissent alors dans la fentre Bote outils. Positionnez le pointeur de la souris sur
chacun deux pour en connatre le nom.
Pour crer des barres doutils, voici la procdure gnrale suivre :
1. Double-cliquez sur le contrle Toolbar de la Bote outils pour insrer une barre
doutils en faut de la feuille. (Pour que le contour de la barre doutils soit visible,
lafchage de la grille doit tre activ.) La barre doutils stend automatiquement
sur toute la largeur de la feuille, quelle que soit cette largeur. Ce qui vous pargne au
moins le rglage des dimensions.
2. Pour que les boutons de votre barre doutils puissent prsenter des images, et non
seulement du texte, il faut aussi ajouter la feuille le contrle ImageList. ImageList
fait partie des contrles conjoints qui viennent avec Toolbar lorsque vous ajoutez
loutil Microsoft Windows Custom Controls 6.0. Le contrle ImageList contiendra les
images que vous disposerez sur la barre doutils. La disposition du contrle ImageList
sur la barre doutils est indiffrente. Ce contrle napparat pas sur la feuille lors de
lexcution. Sa seule fonction est dafcher les icnes des diffrents boutons de la
barre doutils.

369

<
:

Prog VB6 FM2B Page 370 Lundi, 6. aot 2001 3:38 15

Partie II

Info

Bien que lemplacement par dfaut et le plus courant de la barre


doutils soit le sommet de la feuille, vous pouvez lafcher en bas, en affectant la proprit Align du contrle Toolbar la valeur vbAlignBottom.

3. Dans la fentre Proprits du contrle ImageList, double-cliquez sur (Personnalis).


La bote de dialogue Pages de proprits safche (voir Figure 11.8).
Figure 11.8
La bote de dialogue
Pages de proprits
facilite le rglage
des proprits du
contrle ImageList.

4. Cliquez sur longlet Images.


5. Cliquez sur le bouton Insrer une image et slectionnez une icne.
6. A mesure que vous ajoutez des icnes, Visual Basic actualise les valeurs Index de
chacune. Ces valeurs dindex permettront dassocier les icnes aux diffrents
boutons de la barre doutils.
7. Fermez la bote de dialogue Pages de proprits.
8. Dans la fentre Proprits du contrle Toolbar, double-cliquez sur (Personnalis).
La bote de dialogue Pages de proprits safche (voir Figure 11.9). Comme pour le
contrle ImageList, la bote de dialogue Pages de proprits facilite le rglage des
proprits.
9. Dnissez les diffrentes valeurs de proprits, puis cliquez sur Appliquer pour
constater les changements apports la barre doutils. Dans les Pages de proprits
du contrle Toolbar, assurez-vous que loption ImageList corresponde bien votre
contrle ImageList. A longlet Boutons, loption ToolTipText permet daffecter des
info-bulles aux boutons.
10. Cliquez sur OK pour refermer les Pages de proprits du contrle Toolbar.
11. Affectez chaque bouton de la barre doutils une procdure vnementielle Click.

>
:

370

Prog VB6 FM2B Page 371 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

Figure 11.9
Le contrle Toolbar
a lui aussi ses Pages
de proprits.

ce
Astu

Dnie comme True, la proprit Wrappable permet la barre doutils de


stendre sur une ligne supplmentaire pour pouvoir, si ncessaire, afcher
toutes les icnes.

Vous voulez gter vos utilisateurs ? Permettez-leur de personnaliser la barre doutils, en


dnissant comme True la proprit AllowCustomize du contrle Toolbar. A lexcution,
un double-clic sur la barre doutils afchera la barre doutils reproduite en Figure 11.10.

Figure 11.10
Vous pouvez
autoriser lutilisateur
personnaliser
la barre doutils.

371

<
:

Prog VB6 FM2B Page 372 Lundi, 6. aot 2001 3:38 15

Partie II

Les coolbars
Les coolbars sont une nouveaut de la version 6 de Visual Basic. La Figure 11.11
montre une coolbar Internet Explorer. Grce une "poigne" spciale, lutilisateur peut
faire coulisser la barre vers la droite comme vers la gauche. Les coolbars vous permettent dinclure sur une mme barre une profusion de boutons, que lutilisateur masque ou
afche loisir en faisant glisser la poigne.

Figure 11.11
La coolbar,
coulissante, permet
de masquer et
dafcher les icnes
volont.

Info

Faites glisser la poigne pour


redimensionner la coolbar

Cliquez sur la flche pour


afficher les autres boutons

Pour pouvoir utiliser le contrle Coolbar, vous devez ajouter la Bote


outils loutil Microsoft Windows Custom Controls-3 6.0.

Pour ajouter une coolbar la feuille, la procdure est la mme que pour la barre doutils.
Il faut ajouter le contrle ImageList, puis associer chaque image la coolbar, laide de
la valeur Key. Linstallation des coolbars est plus simple, car elle exige moins de rglages de proprits.
Pour ajouter une coolbar, suivez ces tapes :
1. Pour ajouter le contrle ImageList votre Bote outils, choisissez Projet, Composants,
puis cochez loption Microsoft Windows Common Controls 6.0. Pendant que vous y
tes, cochez loption Microsoft Windows Common Controls-3 6.0, an dajouter
galement le contrle Coolbar. Cliquez sur OK. Les contrles ImageList et Coolbar
apparaissent sur votre Bote outils.
2. Double-cliquez sur le contrle ImageList pour ajouter une liste dimages. La position du contrle sur la barre na aucune importance, puisque ce contrle napparatra
pas sur la feuille lors de lexcution. (Sa seule fonction sera dafcher les icnes sur
la coolbar.)
3. Double-cliquez sur la proprit (Personnalis) du contrle ImageList pour afcher
la bote de dialogue Pages de proprits.
4. Cliquez sur longlet Images.

>
:

372

Prog VB6 FM2B Page 373 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

5. Cliquez sur le bouton insrer une image. La bote de dialogue Slectionner un dessin
permet de spcier le chemin daccs du chier graphique qui servira de premire
icne.
6. Slectionnez, par exemple, une image bitmap du dossier Graphics de Visual Basic.
Lorsque vous double-cliquez sur le chier, la bote de dialogue se referme, et
limage apparat au dbut de la liste (voir Figure 11.12).

Figure 11.12
La premire image
apparat dans la liste
ImageList.

Premire
image

7. Continuez choisir vos images.


8. Double-cliquez sur le contrle Coolbar pour ajouter les deux bandes coulissantes de
la coolbar sur votre feuille.
9. Double-cliquez sur la proprit (Personnalis) pour afcher les Pages de proprits du contrle Coolbar (voir Figure 11.13).
10. Dans la zone ImageList, slectionnez la liste dimages approprie. Le Tableau 11.6
dcrit les autres options proposes la page Gnral de la bote de dialogue.
11. Cliquez sur longlet Bands pour ajouter les icnes.
12. La page propose galement les boutons Insrer une bande et Supprimer la bande.
Les autres options sont dtailles dans le Tableau 11.7.
13. La proprit Image est capitale pour lImageList de la coolbar. Chaque valeur Image
correspond un lment de la liste dimages. Ainsi, pour une liste dimages contenant
dix icnes, vous devrez affecter dix valeurs Image.

373

<
:

Prog VB6 FM2B Page 374 Lundi, 6. aot 2001 3:38 15

Partie II

Figure 11.13
Les Pages de
proprits facilitent
le paramtrage
de la coolbar.

Tableau 11.6 : Options de la page Gnral pour le contrle Coolbar


Option

Description

Orientation

Dispose la coolbar lhorizontale (option par dfaut) ou la verticale. Les


coolbars sont gnralement horizontales.

Picture

Spcie limage qui apparatra sur les boutons de la coolbar. En gnral, on


se sert plutt du contrle ImageList, car loption Picture affecte une mme
image tous les boutons. Loption Picture permet galement de rgler
dautres aspects de la coolbar, par exemple la "raction graphique" dun
bouton lorsquon le slectionne.

ForeColor

Spcie la couleur de premier plan.

BackColor

Spcie la couleur darrire-plan.

BandBorders

Spcie si des lignes apparatront pour sparer les bandes, dans le cas dune
coolbar plusieurs bandes.

FixedOrder

Spcie si lutilisateur pourra modier lordre des bandes.

VariantHeight

Spcie si toutes les bandes auront la mme hauteur, ou si la hauteur de


chaque bande doit dpendre du bouton le plus grand.

ntion
Atte

>
:

374

Vous ne verrez pas les images sur la coolbar aprs avoir ferm la bote de
dialogue Pages de proprits. Les images ne safchent qu lexcution.

Prog VB6 FM2B Page 375 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

Tableau 11.7 : Options de la page Bands pour le contrle Coolbar


Option

Description

Child

Dans un contexte de programmation avance, spcie si un contrle ls


(un contrle autre quun bouton de commande) pourra apparatre sur la
coolbar.

Style

Spcie si lutilisateur pourra redimensionner la coolbar : oui si la


valeur est cc3BandNormal, non si la valeur est cc3BandFixedSize
(aucune poigne ).

UseCoolbarPicture

Dtermine si la coolbar afchera les images spcies par la proprit


Picture de longlet Bands ou les images spcies par le contrle
ImageList.

Picture

Spcie les images qui safcheront sur la coolbar, moins que la


proprit UseCoolbarPicture nen dcide autrement.

Caption

Spcie le libell qui apparatra sous limage.

Width, MinWidth,
MinHeight

Spcient la taille, en twips, de la coolbar.

Key

Disponibles pour les coolbars utilises en collection. On peut accder aux


boutons par lindice de collection ou bien par une valeur Key unique.

Tag

Contient des informations relatives la coolbar, destines au


programmeur.

EmbossPicture

Si la valeur est False, limage apparat dans ses couleurs originales. Si


la valeur est True, limage safche selon les couleurs de premier et
darrire-plan spcies par les proprits EmbossHighlight et
EmbossShadow.

UseCoolbarColors

Si la valeur est True, la coolbar emploie les couleurs de premier et


darrire-plan Foreground et Background. Si la valeur est False, les
bandes safchent selon leurs couleurs par dfaut.

375

<
:

Prog VB6 FM2B Page 376 Lundi, 6. aot 2001 3:38 15

Partie II

En rsum
Ce chapitre vous a expliqu comment on programme les feuilles, laide de quels
vnements, proprits et mthodes. En tant quarrire-plan de lapplication, la feuille
est un lment central de la programmation. Les feuilles multiples peuvent tre rfrences
de plusieurs faons. Mais les collections Forms que nous avons dcouvertes aujourdhui,
reprsentent sans doute la technique la plus simple et la plus able.
Vous pouvez paramtrer les diverses proprits de la feuille, mais galement crer vos
propres proprits de feuille. Une fois la nouvelle proprit ajoute, le code peut dnir
et lire ses valeurs comme il le ferait pour une proprit normale.
La programmation multidocument (MDI) est un peu laborieuse, mais elle permet
dobtenir des applications complexes, dans lesquelles chaque fentre a son propre jeu de
donnes. Vous pouvez commencer la cration de vos programmes MDI par lassistant
Cration dapplications, puis complter les dtails.
Les contrles Toolbar et Coolbar enrichissent vos applications. La barre doutils permet
lutilisateur daccder aux commandes courantes en cliquant simplement sur des
boutons. Pour que ces boutons afchent des icnes, vous devez spcier les chiers
graphiques correspondants dans la liste du contrle ImageList. Les coolbars sont des
barres doutils coulissantes qui permettent lutilisateur de faire place dautres
boutons ou lments. Les barres doutils et coolbars peuvent tre proposes sous formes
doptions du menu Afchage, an que lutilisateur choisisse ce qui lui convient.
Le chapitre suivant explique comment utiliser le disque dur comme source de donnes
externe pour les applications Visual Basic.

Questions-rponses
Q Pourquoi dois-je membarrasser du contrle ImageList pour pouvoir afcher
des icnes sur une barre doutils ou une coolbar ?
R Les contrles Toolbar et Coolbar ont t conus pour fonctionner avec le contrle
ImageList. Cest aussi simple que a. Les dveloppeurs Microsoft auraient pu vous
permettre daffecter directement les icnes dans la liste des proprits de la barre
doutils ou de la coolbar. Il nen est pas ainsi. Les icnes afches correspondent
des lments indexs dans la liste dimages. Mais cela a un avantage : vous pouvez
dnir sur une feuille plusieurs contrles ImageList et les employer comme . Par
exemple, vous pouvez utiliser une liste dimages pour les boutons de la barre
doutils lorsque ces boutons sont actifs et disponibles, et une autre liste dimages

>
:

376

Prog VB6 FM2B Page 377 Lundi, 6. aot 2001 3:38 15

Chapitre 11 : Gestion des feuilles

lorsque ces boutons sont inactifs (parce que lutilisateur effectue une tche telle
que les boutons de la barre doutils ne doivent pas tre disponibles). Il suft pour
cela de changer le nom de la liste dimages dans la proprit ImageList de la barre
doutils ou de la coolbar ; Visual Basic basculera automatiquement vers lautre jeu
dicne.

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre. Mais galement des
exercices qui vous permettront de mettre en pratique ce que vous avez appris. Il convient
de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant.
Vous trouverez ces rponses lAnnexe A.

Quiz
1. Comment lvnement Resize permet-il dassurer le centrage des contrles sur la
feuille ?
2. A quoi sert la proprit ScaleMode ?
3. Quelle est la valeur du premier indice lorsquon travaille sur une collection dobjets
prdnie ?
4. Une application SDI ne peut contenir plusieurs feuilles. Vrai ou faux ?
5. Quelle est la diffrence entre une application SDI et une application MDI ?
6. O afche-t-on gnralement les barres doutils sur une feuille ?
7. Quel contrle contiennent les icnes de la barre doutils ?
8. Pourquoi lemplacement du contrle ImageList sur une coolbar na-t-il aucune
importance ?
9. Quelle est la diffrence entre Spc() et Tab() ?
10. Comment insrer une ligne vierge avec Print ?

377

<
:

Prog VB6 FM2B Page 378 Lundi, 6. aot 2001 3:38 15

Partie II

Exercices
1. Ajoutez votre Bote outils les contrles Toolbar, Coolbar et ImageList.
2. Dcrivez la sortie des instructions suivantes :
Form1.Print "Ligne 1";
Form1.Print "Ligne 2"

3. Lancez lassistant Cration dapplications pour crer une application de style Explorateur, puis excutez le programme gnr.
4. Ecrivez un code qui afche sur une feuille les nombres 1 100. Sparez chaque
nombre dun espace. Nutilisez aucun contrle pour la sortie. Incluez le code dans
une procdure vnementielle Click qui dclenchera la sortie.
5. Ecrivez une procdure qui calcule le nombre total de contrles contenus dans toutes
les feuilles dune application, puis afche le rsultat.

>
:

378

Prog VB6 FM2B Page 379 Lundi, 6. aot 2001 3:38 15

Chapitre

12

Gestion des fichiers


Ce chapitre dvoile le principe des entres/sorties chiers (E/S). Le programmeur
Visual Basic est amen travailler sur diffrents types dE/S. Les types que nous allons
tudier aujourdhui sont essentiels la comprhension des autres techniques de traitement de chiers. Lorsque vous matriserez les E/S chiers, vous serez en mesure
dexploiter les outils plus avancs de gestion de chiers et de base de donnes.
Il existe trois types de chiers : squentiels, alatoires et binaires. Laccs squentiel est le
plus simple, mais il a quelques inconvnients : les chiers squentiels sont faciles crer et
lire, mais lents et peu souples. Laccs alatoire est bien plus rapide et bien plus
commode, mais exige aussi des programmes plus complexes que laccs squentiel. Quant
aux chiers binaires, ils sont une forme spciale, compresse, des chiers daccs alatoire.
Les chiers daccs alatoire acceptent tous les types de donnes que vous puissiez dclarer. Vous apprendrez un peu plus bas dclarer vos propres types de donnes, ainsi qu
utiliser les instructions Put # qui permettent de lire ou dcrire dans les chiers de donnes.
Voici ce que nous dcouvrirons aujourdhui :

les types de chiers ;

la diffrence entre les chiers squentiels et les chiers alatoires ;

limportance des numros de chiers ;

comment ouvrir un chier ;

comment localiser les numros de chier disponibles ;

les commandes Print #, Write #, Read #, Get # et Put # ;

les contrles de traitement de chiers.

379

Prog VB6 FM2B Page 380 Lundi, 6. aot 2001 3:38 15

Partie II

Les traitements de fichiers


Qui dit programme dit chiers. Quand bien mme un programme nexploiterait aucun
chier, il nen rsiderait pas moins, lui-mme, dans un ou plusieurs chiers. Quil
sagisse denregistrer des informations dans une base de donnes ou de simplement
stocker des informations pour leur propre usage (telles que la position dune fentre ou
les couleurs prfres de lutilisateur), la plupart des programmes reposent sur des
chiers.
Beaucoup de commandes Visual Basic sont communes toutes les formes dE/S
chiers. Ces commandes ouvrent et ferment des chiers, spcient des modes daccs
aux chiers, recherchent des numros de chier disponibles, etc. Cette section explique
le rle et le fonctionnement des traitements de chiers. Nous commencerons cet expos
par linstruction qui commence tout programme de traitement de chiers : Open.

Linstruction Open
Les chiers squentiels et les chiers alatoires ont certaines choses en commun.
Notamment, linstruction Open permet douvrir lun comme lautre type de chiers. Le
type daccs-chier opr par Open dpend de largument spci dans linstruction.
Open rserve un gestionnaire de chier, ou canal, pour lire ou crire dans un chier.
Linstruction Open associe au canal un numro. Ds que ce canal est ouvert, le ux de
donnes peut couler. Du mode selon lequel vous ouvrez le numro de chier lecture,
criture ou les deux dpendent les modalits du ux de donnes entre le chier et
lordinateur.
ition
Dfin

Un gestionnaire de chier, ou canal, est un chemin unique vers un chier,


identi par le numro assign par linstruction Open. A partir du moment
o Open associe au canal un numro de chier, le reste du programme
accde au chier sous ce seul numro. Une fois quil a excut linstruction
Open, le programme ne se rfre plus au nom du chier.

Voici le format de linstruction Open :


Open "strNomFichier" [For Mode] [AccessRestriction] [LockType] As
[#]intFileNum [Len = intRecordLength]

Info

>
:

380

Insistons sur ce point : une fois quun numro didentication est attribu au
chier de donnes, le programme nappelle plus jamais, pour ainsi dire, le
chier par son nom.

Prog VB6 FM2B Page 381 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

Deux arguments sont obligatoires dans linstruction Open : le nom du chier et son
numro. Les autres arguments sont optionnels. Voici une instruction Open "toute nue",
incluant les seuls arguments obligatoires :
Open "fichier.txt" As #1

Cette instruction ouvre fichier.txt comme chier numro 1. Cest ce numro qui
servira de rfrence pour toute entre ou sortie. Le chier est ici ouvert en accs alatoire Random est le mode par dfaut quand largument Mode nest pas spci. Toutes
les commandes que nous tudierons aujourdhui sappliquent aux chiers texte. Aussi
rencontrerez-vous surtout les extensions les plus courantes pour de tels chiers : .txt et
.dat.

Les modes daccs aux fichiers


Notez que largument Mode de linstruction Open ne comporte aucun prxe qui indique
son type de donnes. Mode doit tre un mot cl spcial qui spcie le mode daccs au
chier. Le Tableau 12.1 dtaille les valeurs que peut prendre largument Mode.
Tableau 12.1 : Valeurs possibles de largument Mode
Mode

Description

Append

Ouvre un chier pour sortie squentielle, en commenant par la n du


chier. Si le chier nexiste pas, Visual Basic le cre. Append ncrase jamais
les chiers de donnes existants.

Binary

Ouvre un chier en accs binaire. Dans le mode Binary, le chier est


accessible au niveau octet, cest--dire que lon peut y lire ou y crire octet
par octet.

Input

Ouvre un chier pour lecture squentielle, en commenant par le dbut du


chier. Les donnes sont lues dans lordre selon lequel elles ont t envoyes
au chier.

Output

Ouvre un chier pour sortie squentielle, en commenant par le dbut du


chier. Si le chier nexiste pas au moment de lexcution de linstruction
Open, Visual Basic le cre. Si le chier existe, il est cras.

Random

Ouvre un chier pour lecture et criture alatoires. Dans ce mode, les


donnes peuvent tre lues et crites dans lenregistrement selon nimporte
quel ordre.

381

<
:

Prog VB6 FM2B Page 382 Lundi, 6. aot 2001 3:38 15

Partie II

Largument For Mode, nous lavons dit, nest pas obligatoire dans linstruction Open. Si
vous ne spciez pas de mode, Visual Basic opre automatiquement en mode Random,
et va mme jusqu insrer For Random pour vous. Les instructions suivantes illustrent les
diffrents modes daccs aux chiers :

Open "Quelconque.txt" For Input As #1


Open "Append.txt" For Append As #1
Open "Output.txt" For Output As #1
Open "Random.txt" For Random As #1

Cette dernire instruction est quivalente la suivante :


Open "Random.txt" As #1

ce
Astu

Il convient de mettre en place une logique de gestion derreurs, laide de


linstruction On Error Goto tudie au Chapitre 9. Chaque fois que lon
accde un chier, une erreur est susceptible de se produire. Une bonne
stratgie de gestion derreurs vous permettra, dfaut de les rsoudre, de
contourner lgamment ces problmes et dpargner vos utilisateurs les
cascades de messages derreur inopportuns.

Les restrictions daccs


Largument optionnel AccessRestriction permet de restreindre lexcution de linstruction Open aux modes daccs Read, Write ou Read Write. De telles restrictions sont
notamment appliques aux chiers appels circuler sur un rseau.
Dans laccs en lecture seule, Read, lutilisateur peut lire le contenu du chier, mais pas
le modier. Laccs Write permet lutilisateur de modier le chier, et laccs Read
Write lui permet de faire les deux.

Verrouillage des fichiers


Largument LockType spcie les oprations que dautres processus peuvent effectuer
sur le chier. Cet argument est notamment dune grande utilit dans les applications
rseau. Il permet de restreindre laccs au chier de sorte quun seul utilisateur la fois
puisse y accder ou y crire. On vite ainsi que deux utilisateurs modient en mme
temps un mme chier (ce qui entranerait invitablement la perte des modications de
lun deux utilisateurs).

>
:

382

Prog VB6 FM2B Page 383 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

LockType peut prendre les valeurs Shared, Lock Read, Lock Write et Lock Read Write.
Shared permet tous les utilisateurs daccder simultanment au chier. Lock Read
verrouille le chier de sorte que seul lutilisateur qui est en train de le lire puisse y accder. Lock Write fait de mme pour lutilisateur qui est en train dcrire dans le chier.
Lock Read Write verrouille le chier pour tous les utilisateurs autres que celui qui lit ou
crit dans le chier.

La longueur denregistrement
La longueur spcie par largument Len = intRecordLength dnit, pour les chiers
daccs alatoire, la taille des enregistrements de donnes quils recevront du
programme. Cette taille doit tre spcie pour tout accs aux enregistrements dun
chier. Le premier enregistrement dun chier commence la position 1, et tous les
enregistrements subsquents seront crits des positions incrmentes de 1. La postion
dans le chier dun enregistrement donn est N intRecordLength, o N est le numro
de lenregistrement.
ition
Dfin

Un enregistrement est une ligne logique qui, dans un chier, contient un jeu
de donnes complet. Dans un chier dinventaire, par exemple, chaque
caractristique dun lment (descriptif, prix, quantit, etc.) constituerait un
enregistrement.

On accde aux enregistrements un peu comme on accde aux lments dun tableau de
variables. De mme que le premier lment dun tableau est dclar comme Array(0),
le premier lment dun chier est stock lenregistrement numro 1. Pour tirer le
meilleur parti de cette symtrie entre les indices de tableaux et les numros denregistrements, spciez Option Base 1 dans la section de dclarations, ou indexez vos lments
de tableaux partir de 1.

Localiser un numro de fichier disponible


Visual Basic tolre louverture simultane de plusieurs chiers, condition que lon
attribue chacun un numro diffrent. Vous devez tre en mesure de dterminer le
prochain numro disponible, notamment si des chiers sont ouverts dans une fonction
qui na aucun moyen de savoir si dautres fonctions ont ouvert des chiers. Il existe,
cet effet, la fonction FreeFile() qui renvoie le prochain numro disponible. Cette fonction garantit que le numro utilis dans une instruction nest pas dj attribu. Voici le
format de FreeFile() :
FreeFile[(intRangeNumber)]

383

<
:

Prog VB6 FM2B Page 384 Lundi, 6. aot 2001 3:38 15

Partie II

Largument intRangeNumber, optionnel, spcie la plage dans laquelle le numro renvoy


doit tre compris : 1-255 ou 256-511. En labsence dargument intRangeNumber, la plage
par dfaut est 1-255. Cette valeur est, dans presque tous les cas, conserve telle quelle, car
il serait surprenant quun programme ait ouvrir plus de 256 chiers. Si largument
intRangeNumber nest pas spci, les parenthses de la fonction sont inutiles.
Les instructions suivantes utilisent FreeFile() pour obtenir un numro et ouvrir un
chier sans ce numro :
intFileNumber = FreeFile
Open "AccPay.Dat" For Output As intFileNumber

Ainsi, FreeFile() permet de sassurer quun numro de chier nest pas dj attribu.
Cette attention peut sembler inutile pour une petite application qui ne traite que quelques chiers ; pourtant, mme dans des cas pareils, FreeFile() aide prvenir les
erreurs.
ntion
Atte

Il vaut mieux viter dinclure FreeFile dans une instruction Open, comme
ici :
Open strFileName For Output As FreeFile()

a marche, mais vous navez, vous, aucun moyen de connatre le numro de


chier, qui peut tre indispensable pour des oprations ultrieures.

Linstruction Close
Tous les chiers ouverts avec Open doivent, tt ou tard, tre referms. Cest le rle de
linstruction Close. Cette instruction naccepte pour seuls paramtres que le numro des
chiers fermer. Voici le format complet de Close :
Close # intFileNumber[, intFileNumber2][,...intFileNumberX]

On peut spcier, dans une mme instruction Close, autant de numros que ncessaire.
Si aucun numro nest spci, tous les chiers ouverts sont ferms. Cest, par exemple,
un bon moyen de refermer proprement lapplication.
Le code du Listing 12.1 ouvre deux chiers squentiels lun en lecture, lautre en
criture en utilisant le prochain numro disponible, puis les referme.
Listing 12.1 : FreeFile() permet dobtenir un numro de chier libre
1: Dim intReadFile As Integer, intWriteFile As Integer
2: Gre le fichier dentre.
3: intReadFile = FreeFile Obtient le numro du premier fichier.

>
:

384

Prog VB6 FM2B Page 385 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

4:
5:
6:
7:
8:
9:
10:
11:
12:
13:

Open "AccPay.Dat" For Input As intReadFile


Gre le fichier de sortie.
intWriteFile = FreeFile
Obtient le numro du fichier suivant.
Open "AccPayOut.Dat" For Output As intWriteFile

Ici, le code charg denvoyer au fichier


de sortie le contenu du fichier dentre
(voir plus loin).
Close intReadFile
Close intWriteFile

Dans ce code, on na pas prciser de numros de chiers, car FreeFile() (lignes 3 et 6)


renvoie les numros disponibles qui sont stocks comme entiers nomms.
Info

En ne refermant pas tous les chiers ouverts, vous vous exposez au risque
certes limit par les performances des matriels modernes dune perte de
donnes. Si la machine est brutalement mise hors tension, les chiers encore
ouverts peuvent tre endommags. Vous devez donc avoir soin de refermer
un chier dont vous navez plus besoin ; dans tous les cas, le systme sen
chargera la fermeture de lapplication.

Une mme instruction Close peut, comme on la vu, refermer autant de chiers que lon
veut. Cette simple ligne ferme tous les chiers ouverts :
Close

Les deux lignes suivantes, en revanche, ne referment que deux chiers prcis :
Close 3
Close 6

En spciant dans Close les numros de chiers, vous ne refermez que les chiers indsirables, mais pouvez continuer travailler sur les autres.

Les fichiers squentiels


Vous connaissez maintenant les instructions qui permettent douvrir et de fermer les
chiers et de spcier le mode daccs. Cette section illustre de plusieurs exemples les
oprations dE/S en accs squentiel. Vous dcouvrirez notamment que linstruction Print
dont nous avons vu, au chapitre prcdent, quelle permettait denvoyer du texte une
feuille, peut aussi envoyer du texte un chier.

385

<
:

Prog VB6 FM2B Page 386 Lundi, 6. aot 2001 3:38 15

Partie II

En crant un chier de type squentiel, vous spciez que laccs ce chier devra se
faire squentiellement, cest--dire que lapplication devra y lire et y crire en allant du
dbut la n. Cette obligation de lire et dcrire squentiellement est la plus grande
faiblesse des chiers squentiels.
ition
Dfin

Un chier squentiel est un chier dans lequel on lit et crit selon lordre
allant du dbut la n.

Pour exploiter le chier, le programme devra le prendre en entier, du dbut la n.


Mme pour ne mettre jour quun seul octet sur les 1000 octets dun chier donn, il
faudra traiter les 999 autres octets.
Le type squentiel est gnralement employ pour les chiers texte (tels que des chiers de
paramtres), ou pour stocker de petites quantits de donnes nexigeant pas une haute
vitesse daccs. Cette section prsente les fonctions qui permettent de grer les chiers
squentiels.

Linstruction Print #
Pour quun programme puisse utiliser un chier, il doit dabord louvrir. Il faut ensuite lui
envoyer des donnes. Print # est linstruction la plus couramment employe cet effet.
Print # ne peut crire que dans les chiers daccs squentiel. En voici le format :
Print #intFileNumber, [OutputList]

Ici, intFileNumber est le numro du chier ouvert dans lequel on veut crire. OutputList peut avoir les valeurs suivantes :
[Spc(intN1) | Tab[(intN2)]] [Expression] [charPos]

ce
Astu

Spc() et Tab() fonctionnent avec Print # de la mme faon quelles fonctionnent avec linstruction Print tudie au chapitre prcdent.

Spc() ou Tab(), il faut choisir. Vous ne pouvez utiliser les deux en mme temps.
Le Tableau 12.2 dtaille les composants de OutputList.
Info

Tab() peut tre incluse dans charPos. Elle a alors le mme rle quen dbut
dinstruction Print #. Si vous omettez charPos, le prochain caractre apparatra sur la ligne suivante du chier.

La procdure du Listing 12.2 ouvre un chier nomm Print.txt, y crit les chiffres 1
5, puis referme proprement le chier.

>
:

386

Prog VB6 FM2B Page 387 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

Tableau 12.2 : Le contenu de Print # dcrit la sortie de la mthode


Composant

Description

Spc(intN1)

Insre des espaces dans la sortie, intN1 tant le nombre despaces insrer.

Tab(intN2)

Positionne le point dinsertion au numro de colonne absolu intN2. Sans


arguments, Tab positionne le point dinsertion au dbut de la prochaine zone
dcriture (il y a une zone dcriture toutes les 14 espaces).

Expression

Expression chane ou numrique qui contient les donnes envoyer au


chier.

CharPos

Spcie lemplacement du point dinsertion pour le prochain caractre.


Un point-virgule (;) indique que le prochain caractre doit suivre
immdiatement le prcdent.

Listing 12.2 : Ecriture dans un chier squentiel avec Print #

1: Private Sub cmdFile_Click()


2:
Dim intCtr As Integer
Compteur de boucle.
3:
Dim intFNum As Integer Numro de fichier.
4:
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
5:
intFNum = FreeFile
6:
Vous pouvez changer le chemin.
7:
Open "C:\Print.txt" For Output As #intFNum
8:
9:
Dcrit la procdure.
10:
intMsg = MsgBox("Fichier Print.txt ouvert !")
11:
12:
For intCtr = 1 To 5
13:
Print # intFNum, intCtr
Envoie le compteur de boucle.
14:
intMsg = MsgBox("Ecriture du chiffre " & intCtr & " dans Print.txt")
15:
Next intCtr
16:
17:
Close # intFNum
18:
19:
intMsg = MsgBox("Fichier Print.txt ferm !")
20: End Sub

Si vous excutez ce code, vous verrez safcher plusieurs botes de message indiquant la
progression de la procdure. La procdure indique quelle a ouvert le chier (ligne 10),
puis elle crit dans le chier (ligne 13), puis montre le rsultat (ligne 14). Enn, elle
ferme le chier (ligne 17) et vous en fait part, avec un contentement non dissimul
(ligne 19).

387

<
:

Prog VB6 FM2B Page 388 Lundi, 6. aot 2001 3:38 15

Partie II

Pour vrier la sortie, ouvrez le chier Print.txt dans le Bloc-notes. Voici ce que vous
devriez voir :

1
2
3
4
5

Le Listing 12.2 met en uvre une instruction Print # simple (line 13). Aucun argument
nayant spci la position du point dinsertion, la procdure crit chaque chiffre sur
une ligne diffrente.
Crer et crire dans un chier, a ne servirait pas grand-chose si lon ne pouvait obtenir
des informations en retour. Cest ce que nous ferons dans la section suivante.

Linstruction Input #
Vous criviez ? Eh bien lisez maintenant. Linstruction Input # permet de lire les
donnes squentielles. Les donnes squentielles doivent tre lues squentiellement,
cest--dire dans lordre et le format dans lesquels elles ont t crites. Voici le format
de Input # :
Input # intFileNumber, Variable1[, Variable2][, ...VariableN]

Input # requiert un numro de chier ouvert, ainsi quune variable qui stocke les
donnes lues. Linstruction Input # doit respecter le format de linstruction Print # qui a
servi crire dans le chier. Si les donnes crites par Print # taient dlimites par des
virgules, ces virgules doivent se retrouver dans Input #.
Info

Pour quune srie de variables crites sur une seule ligne puissent tre correctement lues par Input #, il faut soit lcrire avec Write plutt que Print #,
soit insrer manuellement des virgules dlimitatrices. Dans une variable
numrique, Input # suspend sa lecture chaque espace, virgule ou caractre
de n de ligne. Dans une chane, Input # suspend sa lecture chaque virgule
ou caractre de n de ligne, sauf si la chane contient des guillemets.

Linstruction suivante lit, dans un chier squentiel ouvert, cinq variables places sur
une mme ligne :
Input #intFileNumber V1, V2, V3, V4, V5

Pour pouvoir lire les donnes, Input # doit reprendre le format de linstruction Print #
qui a servi crire dans le chier.

>
:

388

Prog VB6 FM2B Page 389 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

Le fonctionnement de Input # est assez simple : lopration quelle effectue est lexact
reet de lopration Print # correspondante. La prochaine section prsente linstruction
Write #, qui permet dcrire des chiers de donnes dans un format plus gnral que
Print #, de sorte que lon na pas se soucier de la cohrence absolue de Input # avec
linstruction de sortie initiale.

Linstruction Write #
Write # est donc une autre commande dcriture squentielle. Elle ne diffre de Print #
que sur quelques points. Dabord, toutes les donnes crites par Write # sont dlimites
par des virgules. Ensuite, Write # place automatiquement les donnes String entre
guillemets (les guillemets apparaissent dans le chier), place automatiquement les
donnes Date entre caractres dise (#), crit les donnes Boolean sous la forme #TRUE#
et #FALSE#, et envoie les donnes Null et les codes derreurs sous la forme #NULL# et
#Error errorcode#, respectivement. (errorcode est un numro identiant lerreur de
sortie, par exemple un lecteur non trouv. Vous trouverez dans laide en ligne de Visual
Basic une liste des codes derreur et leur signication.)
La dlimitation par virgules est parfois ncessaire pour que les donnes puissent tre
lues par certains tableurs et logiciels de publipostage. Ce format a aussi lavantage de
limiter les risques derreurs la lecture, linstruction Input # ntant pas tenue de reter
exactement linstruction Write # correspondante.
Info

Pour une lecture plus simple et plus able des donnes, utilisez Write #
plutt que Print #.

Voici le format de Write # :


Write # intFileNumber, [OutputList]

Ici, OutputList est une liste des variables contenues dans le chier qui doivent tre lues
en particulier.
Nous avons expliqu, plus haut, comment linstruction Print # pouvait crire une valeur
par ligne. Print # accepte galement les mmes options de formatage que linstruction
Print simple.
Par exemple, pour crire des valeurs lune aprs lautre sur une mme ligne, il suft de
placer un point-virgule aprs la variable intCtr (voir Listing 12.3).

389

<
:

Prog VB6 FM2B Page 390 Lundi, 6. aot 2001 3:38 15

Partie II

Listing 12.3 : Le point-virgule permet dcrire plusieurs valeurs


sur une mme ligne

1: Private Sub cmdFile_Click()


2:
Dim intCtr As Integer
Compteur de boucle.
3:
Dim intFNum As Integer Numro de fichier.
4:
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
5:
intFNum = FreeFile
6:
Vous pouvez changer le chemin.
7:
Open "C:\Print.txt" For Output As #intFNum
8:
9:
Dcrit la procdure.
10:
intMsg = MsgBox("Fichier Print.txt ouvert")
11:
12:
For intCtr = 1 To 5
13:
Print # intFNum, intCtr;
Remarquez le point-virgule.
14:
intMsg = MsgBox("Ecriture du chiffre " & intCtr & " dans Print.txt")
15:
Next intCtr
16:
17: Close # intFNum
18:
19:
intMsg = MsgBox("Fichier Print.txt ferm")
20: End Sub

Si vous excutez la procdure, voici ce qui safchera dans le chier cr :


1 2 3 4 5

Les chiffres sont sur la mme ligne, spars par des espaces. Print # insre ces espaces
la place du signe plus imaginaire qui prcde les nombres positifs.
Nhsitez pas exprimenter les diffrents paramtres de Print # an den bien saisir le
fonctionnement.
Une fois les donnes crites dans un chier, la lecture de ces donnes a souvent lieu
dans une autre procdure, voire une autre application. Les procdures du Listing 12.4
crivent les donnes dans un chier, puis lisent ces mmes donnes au travers de
variables.
Listing 12.4 : Ecriture et lecture dans un chier au sein dune mme procdure

>
:

1:
2:
3:
4:
5:
6:
7:
8:

390

Private Sub cmdFileOut_Click ()


Cre le fichier squentiel.
Dim intCtr As Integer
Compteur de boucle.
Dim intFNum As Integer Numro de fichier.
intFNum = FreeFile
Open "Print.txt" For Output As #intFNum

Prog VB6 FM2B Page 391 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

9:
For intCtr = 1 To 5
10:
Print # intFNum, intCtr;
Ecrit le compteur de boucle.
11:
Next intCtr
12:
13:
Close # intFNum
14: End Sub
15:
16: Private Sub cmdFileIn_Click ()
17:
Lit le fichier squentiel.
18:
Dim intCtr As Integer
Compteur de boucle.
19:
Dim intVal As Integer
Valeur lue.
20:
Dim intFNum As Integer Numro de fichier.
21:
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
22:
intFNum = FreeFile
23:
Open "Print.txt" For Input As #intFNum
24:
25:
For intCtr = 1 To 5
26:
Input # intFNum, intVal
27:
Affiche les rsultats dans la fentre Excution.
28:
intMsg = MsgBox("Lecture du chiffre " & intVal & " dans Print.txt")
29:
Next intCtr
30:
31:
Close # intFNum
32:
intMsg = MsgBox("Le fichier Print.txt file est maintenant ferm")
33: End Sub

La premire procdure du Listing 12.4 crit les donnes dans le chier, donnes qui sont
ensuite lues par la procdure cmdFileIn_Click().
Examinez maintenant la procdure du Listing 12.5 qui cre un chier nomm
Write.txt.
Listing 12.5 : Ecriture dans un chier squentiel avec Write

1: Private cmdFile_Click ()
2:
Dim intCtr As Integer
Compteur de boucle.
3:
Dim intFNum As Integer Numro de fichier.
4:
intFNum = FreeFile
5:
6:
Open "c:\Write.txt" For Output As #intFNum
7:
8:
For intCtr = 1 To 5
9:
Write # intFNum, intCtr;
Ecrit le compteur de boucle.
10:
Next intCtr
11:
12:
Close # intFNum
13: End Sub

391

<
:

Prog VB6 FM2B Page 392 Lundi, 6. aot 2001 3:38 15

Partie II

Excutez cette procdure, puis ouvrez dans le Bloc-notes le chier cr. Vous constaterez
immdiatement la diffrence entre Print # et Write #. Voici le contenu de Write.txt :
1,2,3,4,5,

Si lon navait pas inclus le point-virgule de formatage, chaque chiffre serait apparu sur
sa propre ligne, et il ny aurait pas eu de virgules. (Dans un tel cas, Write # et Print # se
comportent de la mme manire.)
ce
Astu

Info

Plus vous travaillerez sur des chiers squentiels, plus vous dcouvrirez de
"trucs" propres amliorer le code. Il peut tre utile, par exemple, dindiquer en guise de premier fragment de donnes le nombre total de valeurs
que contient le chier. Les programmes qui liront ces donnes, pourront
ainsi exploiter cette information dans des boucles, etc.
Aprs tout ce que vous venez dingurgiter, cela va sans doute vous
surprendre : les programmeurs Visual Basic nexploitent que trs rarement
les chiers squentiels. Cela ne signie pas pour autant que vous avez perdu
votre temps, car les principes tudis dans le cadre des donnes squentielles
sappliquent en fait tous les autres types daccs. Ouf !

Les fichiers alatoires


Si les chiers squentiels doivent toujours tre lus et crits dans le mme ordre, les
chiers daccs alatoire (ou chiers alatoires tout court) peuvent tre lus et crits
dans nimporte quel ordre. Ainsi, les enregistrements crits dans un chier client de type
alatoire pourront, par la suite, tre lus dans lordre que lon veut. Si le chier client
tait squentiel, il faudrait parcourir tous les enregistrements prcdents avant de
pouvoir consulter un enregistrement particulier.
ition
Dfin

Un chier daccs alatoire, ou chier alatoire, est un chier dans lequel


on peut lire et crire dans nimporte quel ordre.

Comme laccs squentiel, laccs alatoire nest aujourdhui plus gure utilis dans sa
forme "pure". Les contrles daccs aux donnes et procdures de traitement de chiers
plus avancs lui font une rude concurrence. Toutefois, les techniques daccs aux
chiers de base de donnes reposent, en grande partie, sur les principes que vous allez
maintenant tudier.

>
:

392

Prog VB6 FM2B Page 393 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

Nous en proterons galement pour aborder une nouvelle technique de programmation :


les types de donnes personnaliss. Les chiers alatoires contiennent gnralement des
enregistrements de donnes ; Visual Basic vous permet de dnir des type de donnes
en parfaite adquation avec les enregistrements lus et crits dans les chiers squentiels.

Laccs alatoire
Le traitement des chiers alatoires ressemble, en beaucoup de points, au traitement de
chiers squentiels. Les instructions Open et Close, par exemple, fonctionnent de la
mme manire. Seul change le mode daccs.
Info

Si vous ne spciez pas le mode daccs au chier, Visual Basic utilise par
dfaut le mode alatoire, et insre lui-mme largument For Random. Si,
par exemple, vous tapez :
Open "Random.txt" As #1

Visual Basic changera automatiquement la ligne en :


Open "Random.txt" For Random As #1

Linstruction suivante ouvre un chier en accs alatoire :


Open "Random.txt" For Random As #1

Rien nempche douvrir un chier en accs alatoire pour lexploiter en mode


squentiel. Simplement, on perd les avantages offerts par le mode alatoire. Mais cela
est parfois utile, notamment dans le cas denregistrements stocks dans un ordre donn
que lon voudrait imprimer ou afcher dans cet ordre prcis.
Voici un exemple qui illustre bien la diffrence entre accs squentiel et accs alatoire.
Supposons un chier contenant dix lignes dinventaire. Pour lire la sixime ligne (ou
enregistrement), il faudrait, en mode squentiel, lire dabord les cinq premiers enregistrements, puis, aprs le sixime, lire encore les quatre derniers enregistrements. En
mode alatoire, ont irait directement lire le sixime enregistrement, pour ensuite fermer
le chier.
Il en va de mme pour lcriture. Si, en mode squentiel, on voulait modier le huitime
enregistrement du mme chier dinventaire, il faudrait lire les dix enregistrements,
modier le huitime, puis rcrire les dix enregistrements dans le chier. En mode
alatoire, au contraire, on interviendrait directement sur le huitime enregistrement.
Evidemment, pour un chier de dix enregistrements, les avantages de laccs alatoire
ne sont pas si importants. Mais dans le cas dun chier contenant 10 000 enregistrements, quel gain de temps ! Et quelle conomie de ressources systme !

393

<
:

Prog VB6 FM2B Page 394 Lundi, 6. aot 2001 3:38 15

Partie II

Les instructions Get et Put


Les instructions Put # et Get # sont laccs alatoire ce que les instructions Print # et
Input # sont laccs squentiel. La diffrence principal est que Print # et Input # traitent
un lment de donnes la fois, jusqu la n du chier. Ces instructions ne peuvent en
aucun cas accder directement un enregistrement spcique pour le mettre jour.
En outre, le format de Put # et Get # diffre lgrement de celui de Print # et Input # :
Put [#]intFileNum, [intRecNum,] Variable
Get [#]intFileNum, [intRecNum,] Variable

Ces instructions utilisent un numro denregistrement (intRecNum). Cest ce numro qui


permet de lire ou dcrire directement un enregistrement prcis. La numrotation des
enregistrements commence 1. Les variables lues ou crites peuvent prendre nimporte
quel type de donnes mme Array (tableau), et mme un type par vous dni (voir
section suivante). Cette capacit de traiter comme unit des variables de tous types est
pour beaucoup dans la puissance de laccs alatoire.
Les exemples de la section suivante incluent des procdures qui lisent et crivent des
enregistrements spciques dans un chier alatoire.

Les types de donnes personnaliss


Nous vous avons dj entretenu des variables et des tableaux de variables. Vous allez
maintenant apprendre crer vos propres types de donnes, en combinant des types de
donnes existants. Ces types de donnes personnaliss sont parfois appels structures
ou gare la confusion enregistrements.
Supposons que vous vouliez crer un programme pour grer votre carnet dadresses.
Vous pourriez dclarer des variables individuelles pour chaque champ : une variable
pour le nom de famille, une autre pour le prnom, etc. Cela fonctionnerait certainement.
En revanche, pour peu que la liste des contacts soit importante, la programmation implique deviendrait considrable.
Il serait bien plus simple de dnir un type de donnes pour chaque catgorie dinformation,
et que vous manipuleriez comme nimporte quelle variable individuelle.
Un type de donnes personnalis consiste en fait de types existants, regroups pour former
un nouveau type. Un tel regroupement est appel dclaration composite.

>
:

394

Prog VB6 FM2B Page 395 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

Info

Un type de donnes personnalis est compos de types existants ventuellement mme dautres types personnaliss.

Cest laide de linstruction Type que vous crez vos propres types de donnes. En
voici le format :
[Private | Public] Type TypeName

VarName1 [(ArraySize)) As ExistingType [*StringLength]

VarName2 [(ArraySize)] As ExistingType [*StringLength]

:
End Type

Le nom du type crer (TypeName) suit le mot cl Type. Ce nom peut tre tout sauf un
mot rserv, un mot cl ou un nom de variable dclare. Si, par exemple, on a dj
dclar une variable nomme Client, le nouveau type de donnes ne pourra sappeler
Client.
Tous les nouveaux types doivent tre dclars au niveau module. On ne peut les dclarer
lintrieur dune procdure. Le type peut aussi tre dclar dans le module de feuille,
mais alors comme Private, cest--dire quil ne sera reconnu que dans ce module de
feuille particulier.
Examinez le code du Listing 12.6.
Listing 12.6 : Linstruction Type permet de dclarer les nouveaux types de donnes

1:
2:
3:
4:
5:
6:

Page module du projet.


Type UserType
strFName As String
strLName As String
End Type
Public Names As UserType

Ce code cre un nouveau type nomm UserType. Ce nouveau type contient deux chanes,
strFName et strLName. La ligne 6 dclare la variable Names comme type UserType.
Info

Ici, UserType nest pas une variable, mais bien le type que lon a dni. Le
nom de la variable est Names, et strFName et strLName sont des membres
(ou champs) de cette variable. Le nouveau type est intgr au langage Visual
Basic pour le temps de lexcution du programme. On peut maintenant
dclarer des variables Integer, Boolean ou... UserType.

395

<
:

Prog VB6 FM2B Page 396 Lundi, 6. aot 2001 3:38 15

Partie II

ce
Astu

Pour accder aux champs individuels qui constituent le type de donnes, on


indique le nom de la variable, suivi dun point, suivi du nom du champ.

Les instructions suivantes initialisent et traitent la variable que nous venons de dclarer :

Names.strFName =
Names.strLName =
lblFName.Caption
lblLName.Caption

"Serge"
"Pichot"
= "Prnom : " & Names.strFName
= "Nom : " & Names.strLName

Pour limiter la taille des variables chanes utilises dans une structure, on inclut dans la
dclaration loption * StringLength (o StringLength est la longueur), juste aprs As
String. La chane de longueur xe dnit StringLength comme longueur absolue de la
chane. Cela est ncessaire lorsque les structures doivent tre lues ou crites alatoirement dans un chier. La longueur xe garantit que tous les enregistrements crits auront
la mme taille, an que laccs alatoire se passe sans problme.
Le Listing 12.7 reprend le code du Listing 12.6, mais en imposant aux chanes une
longueur xe.
Listing 12.7 : Les chanes de longueur xe permettent de spcier la longueur
des enregistrements

1:
2:
3:
4:
5:
6:

Page module du projet.


Type UserType2
strFName As String * 8
strLName As String * 20
End Type
Public Names As UserType2

Les chanes de longueur xe dnissent pour les chanes une taille maximale. Notez que
le contenu de la chane peut ne pas occuper entirement lespace rserv, auquel cas
Visual Basic comble le vide avec des espaces. Ainsi, toutes les variables dclares
comme UserType2 et crites en accs alatoire auront la mme longueur denregistrement, quelle que soit la taille relle des donnes contenues dans la variable.
Les procdures du Listing 12.8 mettent en uvre les principes de laccs alatoire.
Listing 12.8 : Ecriture dans un enregistrement particulier

>
:

1:
2:
3:
4:
5:

396

Private Sub cmdCreate_Click()


Cette procdure cre le fichier.
Dim intFile As Integer
Numro de fichier disponible.
Dim intCtr As Integer
Compteur de boucle.

Prog VB6 FM2B Page 397 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:

intFile = FreeFile
Open "c:\Random.Txt" For Random As #intFile Len = 5
La boucle parcourt les numros et crit dans le fichier.
For intCtr = 1 To 5
Put # intFile, intCtr, intCtr Le numro denregistrement correspond
aux donnes.
Next intCtr
Close intFile
End Sub
Private Sub cmdChange_Click()
Cette procdure modifie lenregistrement n3.
Dim intFile As Integer
Numro de fichier disponible.
intFile = FreeFile
Open "c:\Random.Txt" For Random As #intFile Len = 5
Ecrit un nouvel enregistrement n3.
Put #intFile, 3, 9
Value = 9.
Close # intFile
End Sub
Private Sub cmdDisplay_Click()
Cette procdure affiche le fichier
Dim intFile As Integer
Numro de fichier disponible.
Dim intVal As Integer
Valeur lue.
Dim intCtr As Integer
Compteur de boucle.
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
intFile = FreeFile
Open "c:\Random.Txt" For Random As #intFile Len = 5
intMsg = MsgBox("Fichier Random.Txt ouvert...")
La boucle parcourt les enregistrements et les affiche.
For intCtr = 1 To 5
Get # intFile, intCtr, intVal
intMsg = MsgBox("Lecture de " & intVal & " dans Random.Txt")
Next intCtr
Close # intFile
intMsg = MsgBox("Fichier Random.Txt ferm")
End Sub

Notez que linstruction alatoire Open de la ligne 7 utilise loption Len. A la ligne 11,
linstruction Put # crit un enregistrement alatoire avec une longueur de 5 ; cest
loption Len qui spcie cette longueur. Ce paramtre est capital : si la longueur denregistrement ntait pas spcie, Put # et Get # ne sauraient jamais jusquo chercher

397

<
:

Prog VB6 FM2B Page 398 Lundi, 6. aot 2001 3:38 15

Partie II

dans le chier un enregistrement particulier. (La formule pour trouver un enregistrement


est RecordNumber * RecordLength.)
La feuille de lapplication du Listing 12.8 contient trois boutons. Le premier cre le
chier, le deuxime afche le chier, le troisime modie le chier. Chacun des boutons
dclenche une procdure vnementielle. Crez cette petite application et excutez-la :
cliquez sur le bouton cmdCreate, puis sur le bouton cmdDisplay. La bote de message
afche les donnes crites. Cliquez sur le bouton cmdChange, puis de nouveau sur le
bouton cmdDisplay. Une fois le chier modi, lenregistrement n 3 contient la valeur 9
(au lieu de 3). La sous-routine qui a provoqu ce changement, cmdChange_Click(), a
simplement crit la valeur 9 dans lenregistrement n 3, laide de linstruction Put #.

Imbrication de types de donnes personnaliss


Vous avez cr votre premier type de donnes personnalis. Mais peut-on inclure un
type personnalis lintrieur dun autre type personnalis ? Parfaitement. Lun des
champs, au lieu dtre un type interne Visual Basic, est un type que vous avez cr
vous-mme. Prenez simplement garde de bien dclarer le type inclure avant de dclarer
le type qui doit le contenir.
Le Listing 12.9 donne lexemple dun type personnalis nomm Address, imbriqu
comme champ dans un autre type personnalis.
Listing 12.9 : Les types personnaliss peuvent tre inclus dans un autre type
personnalis

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:

Dans la section de dclarations du module de code.


Type Address
strStreet As String
strCity As String
strZip As String
End Type
Type UserType3
strFName As String * 10
strLName As String * 25
typAddr As Address Autre type de donnes.
End Type
Public Names As UserType3
dapplication.

Dclare une variable

Le code du Listing 12.10 initialise ces champs et montre comment on accde aux
champs dans les champs.

>
:

398

Prog VB6 FM2B Page 399 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

Listing 12.10 : Le type de donnes public peut servir dans tous les modules

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:

Names.strFName = "Serge"
Names.strLName = "Pichot"
Names.typAddr.strStreet = "Clergeot"
Names.typAddr.strCity = "Perrochonville"
Names.typAddr.strZip "99000"
Traite les donnes.
lblFName.Caption = "Prnom : " & Names.strFName
lblLName.Caption = "Nom : " & Names.strLName
lblAddr.Caption = "rue : " & Names.strAddr.strStreet
lblCty.Caption = "Ville : " & Names.strAddr.strCity
lblZip.Caption = "Code postal : " & Names.strAddr.strZip

Les contrles de fichiers


Parmi les botes de dialogue communes prsentes au Chapitre 9, les botes de dialogue
Ouvrir et Enregistrer permettent lutilisateur de manipuler des chiers. Il peut y slectionner des dossiers, des lecteurs et mme des lecteurs rseau.
Pour les traitements de chiers impliqus par vos applications, il peut tre ncessaire de
spcier un rpertoire (ou dossier depuis Windows 95), un lecteur ou un nom de chier,
sans passer par des botes de dialogue.
Visual Basic dispose cet effet de trois types spciaux de zones de liste :

Zone de liste Dossier. Permet lutilisateur de slectionner un dossier.

Zone de liste Lecteur. Permet lutilisateur de slectionner un lecteur de disque.

Zone de liste Fichier. Permet lutilisateur de slectionner un nom de chier.

La Figure 12.1 montre une feuille contenant ces trois zones de liste spciales.
ntion
Atte

Ces contrles de listes spciaux ne fonctionneront pas conjointement,


moins que vous ne les programmiez cet effet. Par exemple, si les trois
contrles apparaissent sur la feuille, et que vous excutiez lapplication, un
changement dans la liste Lecteur ne modiera pas le dossier ou le nom de
chier afch dans les deux autres listes. Pour que les choses se passent
ainsi, vous devez crire des procdures vnementielles propres synchroniser les contrles entre eux.

399

<
:

Prog VB6 FM2B Page 400 Lundi, 6. aot 2001 3:38 15

Partie II

Figure 12.1
Les trois types de
zones de liste servant
la manipulation
des chiers.

La zone de liste Lecteur


La zone de liste Lecteur permet lutilisateur de slectionner un lecteur de disque.
Ce contrle ausculte lui-mme le systme la recherche des divers types de lecteurs :
locaux, distants, disque dur, disquette, CD-ROM, etc. Lorsque lutilisateur clique sur la
liste, les diffrents choix possibles sont reprsents par des icnes (voir Figure 12.2).
Figure 12.2
Lutilisateur fait
son choix dans la liste
Lecteur.

Contrle zone
de liste Lecteur

Info

>
:

400

La zone de liste Lecteur afche dabord le lecteur depuis lequel lapplication


a t lance. Vous pouvez modier ce comportement par dfaut en spciant,
dans le code, un autre lecteur.

Prog VB6 FM2B Page 401 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

La zone de liste Dossier


La zone de liste Dossier permet lutilisateur de slectionner un dossier. Ce contrle
analyse le systme pour tablir larborescence des dossiers existants. Lorsque lutilisateur
clique sur la liste, les diffrents choix possibles sont reprsents par des icnes et organiss
hirarchiquement, selon le standard Windows.
Rappelez-vous que la zone de liste Dossier ne sait pas quel lecteur est slectionn dans
la liste Lecteur. Cest vous de relier les deux contrles, comme nous lexpliquons la
n de ce chapitre.
Info

La zone de liste Dossier afche dabord le dossier contenant lapplication.


Vous pouvez modier ce comportement par dfaut en spciant, dans le
code, un autre dossier.

La zone de liste Fichier


La zone de liste Fichier permet lutilisateur de slectionner un chier. Ce contrle
analyse le systme pour tablir la liste de tous les chiers existants. Lorsque lutilisateur
clique sur la liste, les diffrents choix possibles sont reprsents par des icnes et organiss
hirarchiquement, selon le standard Windows.
Pas plus que la zone de liste Dossier, la zone de liste Fichier ne sait pas quel lecteur (ou
quel dossier) est slectionn dans la liste Lecteur (ou dans la liste Dossier). Cest vous
de relier les contrles dans le code, comme nous lexpliquons la n de ce chapitre.
Info

La zone de liste Fichier afche dabord la liste des chiers contenus dans le
dossier de lapplication. Vous pouvez modier ce comportement par dfaut
en spciant, dans le code, un autre dossier pour la liste Dossier, puis en
liant cette liste la liste Fichier.

Les commandes de traitement de fichiers


Visual Basic supporte plusieurs commandes lies aux lecteurs, dossiers et chiers (voir
Tableau 12.3).
Info

gnrera une erreur si le dossier supprimer contient encore des


chiers.

RmDir

401

<
:

Prog VB6 FM2B Page 402 Lundi, 6. aot 2001 3:38 15

Partie II

Tableau 12.3 : Commandes lies aux lecteurs et dossiers


Commande

Description

ChDrive strDrive

Spcie la place du lecteur par dfaut le lecteur strDrive.

ChDir strDirectory

Spcie la place du dossier par dfaut le dossier strDirectory. Si


aucun lecteur nest spci dans la chane, Visual Basic opte pour le
lecteur courant.

Kill strFileSpec

Supprime les chiers (reprsents par des jokers) spcis dans


strFileSpec.

MkDir strDirectory

Cre le dossier spci dans strDirectory.

RmDir strDirectory

Supprime le dossier spci dans strDirectory.

Outre les commandes du Tableau 12.3, Visual Basic supporte la fonction Dir() qui
vrie si des chiers existent bien, et la fonction CurDir() qui renvoie le nom du dossier
courant.
Supposons que vous vouliez affecter aux zones de liste Lecteur et Dossier le chemin
C:\MesFichiers. Il suft dinsrer dans la procdure Form_Load() le code suivant :
ChDrive "C:"
ChDir "\MesFichiers"

En safchant sur la feuille, les zones de liste Lecteur, Dossier et Fichier pointeront
toutes vers C:\MesFichiers, plutt que sur le dossier courant de lapplication.
La fonction Dir() requiert un peu plus dexplications. Imaginons que vous vouliez
vrier quun chier nomm VENTES98.DAT existe bien la racine du lecteur D. Vous
pouvez procder ainsi :
If (Dir("c:\VENTES98.DAT")) = "VENTES98.DAT" Then

intMsg = MsgBox ("The file exists")


Else

intMsg = MsgBox ("The file does not exist")


End If

La fonction Dir() renvoie le nom de chier pass comme argument. Le nom de chier
est renvoy seulement si le chier correspondant rside dans le dossier spci dans
largument. Si Dir() ne renvoie pas le nom de chier, cest que le chier nexiste pas
sur le lecteur dsign.

>
:

402

Prog VB6 FM2B Page 403 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

Dir() accepte galement les jokers :


Dir("c:\Ventes*.DAT")

Dir() renvoie alors le nom du premier chier correspondant aux jokers passs si
pareil chier existe. Une fois passe la premire spcication joker, vous pouvez appeler de nouveau Dir() sans parenthses ni arguments. Visual Basic renverra les noms de
chiers rpondant aux jokers, jusqu ce que le dernier chier soit trouv. Si Dir renvoie
une chane Null (""), vous devez inclure une spcication de chier dans le prochain
appel de Dir() ; autrement, Dir gnrerait une erreur.
Pour affecter la zone de liste Lecteur un lecteur spcique, vous devez dnir la
proprit Drive du contrle comme ceci :
drvDisk.Drive = "d:\"

La lettre de lecteur D: safche alors en haut de la liste. Si lutilisateur slectionne un


autre lecteur, lvnement Change() de la zone de liste Lecteur se produit. Pour dnir
comme lecteur par dfaut le lecteur spci par lutilisateur, il faut inclure dans drvDisk
_Change() linstruction suivante :
ChDrive drvDisk.Drive

Pour que le lecteur safche dans la zone de liste Dossier, dnissez la proprit Drive
du contrle laide linstruction suivante :
dirDirect.Drive = drvDisk.Drive

Cette instruction daffectation dnit, dans la liste Dossier, le lecteur spci par lutilisateur. Elle peut tre ajoute la procdure vnementielle drvDisk_Change().
Lorsque lutilisateur change de dossier dans la zone de liste Dossier, lvnement Change
du contrle se produit. Dans la procdure vnementielle Change, vous pouvez dnir le
dossier spci par lutilisateur comme dossier courant laide de linstruction suivante :
ChDir dirDirect.Path

La zone de liste Dossier supporte une mthode daccs un peu particulire : il suft de
la proprit ListIndex. La valeur de ListIndex est -1 pour le dossier slectionn, -2
pour le dossier parent du dossier slectionn, -3 pour le parent du parent, et ainsi de
suite. La valeur de ListIndex est 0 pour le premier sous-dossier du dossier slectionn,
1 pour le sous-dossier suivant, et ainsi de suite.
Pour nafcher que certains chiers dans la zone de liste Fichier, affectez la proprit
Pattern du contrle une chane spciant un ltre :
filFiles.Pattern = "*.vbp; *.frm"

403

<
:

Prog VB6 FM2B Page 404 Lundi, 6. aot 2001 3:38 15

Partie II

Vous pouvez inclure autant de spcications que vous le souhaitez, sous la forme de jokers
inclus entre les guillemets de la chane. La zone de liste Fichier se met immdiatement
jour selon les ltres spcis. Lorsque lutilisateur slectionne un chier, lvnement
Change de la zone de liste Fichier se produit, et le chier slectionn est affect la
proprit FileName. Comme pour la zone de liste Lecteur, le chier slectionn apparat
galement avec une valeur ListIndex de -1.
Si lutilisateur a slectionn un chemin daccs, vous pouvez rpercuter ce choix dans la
zone de liste Fichier laide de linstruction daffectation suivante :
filFiles.Path = dirDirect.Path

En rsum
Ce chapitre vous a appris manipuler les chiers au niveau le plus fondamental. Maintenant que vous matrisez ce bases, vous tes prt affronter les contrles et commandes
de traitement de chiers plus avancs, tels que les fonctionnalits base de donnes de
Visual Basic.
Vous avez galement appris lire et crire dans des chiers squentiels et alatoires.
Ces chiers sont utiles pour stocker des valeurs textuelles. Une fois que lon connat les
commandes, la programmation de ces chiers est relativement simple. Ainsi, linstruction
Write # rete linstruction Read #, et linstruction Get # rete linstruction Put #, etc.
Les contrles de gestion de chiers de la Bote outils, une fois installs et correctement paramtrs dans votre application, permettent lutilisateur de parcourir ses
lecteurs, dossiers et chiers. Ces contrles forment un complment intressant aux
botes de dialogue communes Ouvrir et Enregistre, et permettent dobtenir des informations spciques sur le contenu du disque.
Le chapitre suivant vous enseigne envoyer des donnes vers un autre type de
priphrique : limprimante.

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre
les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez
ces rponses lAnnexe A.

>
:

404

Prog VB6 FM2B Page 405 Lundi, 6. aot 2001 3:38 15

Chapitre 12 : Gestion des fichiers

Quiz
1. Combien de chiers peut-on fermer avec une mme instruction Close ?
2. Quelle fonction renvoie le prochain numro de chier disponible ?
3. Que se passe-t-il si vous ouvrez un chier en accs squentiel Output et que ce
chier existe dj ?
4. Que se passe-t-il si vous ouvrez un chier en accs squentiel Append et que ce
chier existe dj ?
5. Quel type de chier linstruction suivante ouvre-t-elle ?
Open "Test.dat" For Append As #1

6. Pourquoi les instructions alatoires Open doivent-elles connatre la longueur denregistrement de leurs donnes ?
7. Pourquoi faut-il spcier la longueur absolue des chanes dans un type de donnes
personnalis quand ces chanes doivent tre lues et crites dans un chier alatoire ?
8. Quelle instruction permet de dnir un nouveau type de donnes ?
9. Le code suivant dclare une nouvelle variable nomme CustRec. Vrai ou faux ?
Type CustRec

strFName As String * 10

strLName As String * 15

curBalance As Currency

blnDiscount As Boolean
End Type

10. Quelle est la diffrence entre la fonction Dir() avec arguments et la fonction Dir()
sans arguments ?

Exercices
1. Chasse au bogue : Mauricette a des problmes avec ses chiers. Lorsquelle essaie
de lancer une application contenant linstruction ci-dessous, elle obtient une erreur.
Pouvez-vous lui expliquer pourquoi son instruction ne marche pas ? (On suppose
quun dossier Factures existe bien la racine du lecteur C.)
RmDir "C:\Factures"

405

<
:

Prog VB6 FM2B Page 406 Lundi, 6. aot 2001 3:38 15

Partie II

2. Ecrivez une procdure qui cre un chier squentiel contenant les informations
suivantes : nom, ge et couleur prfre. Ecrivez dans ce chier cinq enregistrements
(chaque enregistrement devant contenir un nom, un ge et une couleur). Utilisez une
seule boucle For pour crire ces informations dans le chier. Conseil : initialisez trois
tableaux, un pour chaque catgorie de donnes.
3. Crez de toutes pices une bote de dialogue semblable la bote de dialogue
commune Ouvrir. Utilisez pour ce faire les zones de liste Lecteur, Dossier et Fichier,
ainsi que des boutons de commande OK et Annuler. Faites en sorte que les listes
Dossier et Fichier se modient chaque fois que lutilisateur slectionne un lecteur ou
un dossier diffrent. (Naturellement, vous vous servirez toujours de la bote de
dialogue commune Ouvrir. Il sagit dun exercice illustrant les relations entre ces
divers contrles.)

>
:

406

Prog VB6 FM2B Page 407 Lundi, 6. aot 2001 3:38 15

PB6
Lire et crire des fichiers
Ce Projet bonus devrait vous permettre dapprofondir votre comprhension de laccs
squentiel. Lapplication que nous vous invitons crer intgre galement le contrle
Common Dialog, sous la forme dune bote de dialogue commune Ouvrir. Mais vous
allez surtout mettre en uvre les procdures de gestion de chiers tudies au
Chapitre 12. Dans cette application, il sagit de visualiser le contenu des chiers. Voici
les tches accomplir :

permettre lutilisateur de slectionner un chier dans la bote de dialogue Ouvrir ;

permettre lutilisateur de modier la couleur darrire-plan du chier laide


dune bote de dialogue Couleur ;

permettre lutilisateur de redimensionner la feuille, et faire en sorte que le


programme ajuste automatiquement la disposition des contrles ;

intgrer au code de la bote de dialogue Ouvrir un gestionnaire derreurs, de sorte


que lutilisateur puisse, en cliquant sur Annuler, maintenir lcran le chier
courant sans faire dautre slection ;

permettre lutilisateur de visualiser les chiers .BAT et .TXT, tout en limitant


4096 octets la taille des chiers lisibles dans lapplication.

La Figure PB6.1 montre le visualiseur aprs quun chier a t slectionn.


Vous ajouterez dabord les lments graphiques de la feuille, puis vous crirez le code
charg de rpondre aux actions de lutilisateur.

407

Prog VB6 FM2B Page 408 Lundi, 6. aot 2001 3:38 15

Partie II

Figure PB6.1
Lutilisateur peut
visualiser les chiers
.BAT et .TXT dans
la zone de liste.

Crer linterface
Ajoutez la feuille les contrles dtaills dans le Tableau PB6.1.
Info

Dans le Crateur de menus, vous devez indenter tous les lments sauf le
premier, Fichier, qui constitue le nom du menu. Les lments indents apparatront comme options de ce menu Fichier.

Tableau PB6.1 : Contrles et proprits de la feuille

>
:

Contrle

Proprit

Valeur

Feuille

Name

frmFile

Feuille

Caption

Visualiseur de fichiers

Feuille

Height

4620

Feuille

Width

6570

Zone de liste

Name

lstFile

Zone de liste

Height

2205

Zone de liste

Left

720

Zone de liste

Top

1320

Zone de liste

Width

4815

408

Prog VB6 FM2B Page 409 Lundi, 6. aot 2001 3:38 15

Projet bonus 6 : Lire et crire des fichiers

Tableau PB6.1 : Contrles et proprits de la feuille (suite)


Contrle

Proprit

Valeur

Bouton de commande

Name

cmdColor

Bouton de commande

Caption

&Couleur de fond

Bouton de commande

Height

495

Bouton de commande

Left

2760

Bouton de commande

Top

480

Bouton de commande

Width

1215

Elment de menu 1

Caption

&Fichier

Elment de menu 1

Name

mnuFile

Elment de menu 2

Caption

&Ouvrir

Elment de menu 2

Name

mnuFileOpen

Elment de menu 3

Caption

Elment de menu 3

Name

mnuFileSep1

Elment de menu 4

Caption

&Quitter

Elment de menu 4

Name

mnuFileExit

Common Dialog

Name

comFile

Common Dialog

DialogTitle

Ouvrir un fichier

Common Dialog

InitDir

c:\

Common Dialog

Filter

Texte (*.txt)|*.txt|Batch
(*.bat)|*.bat

Common Dialog

CancelError

True

Common Dialog

MaxFileSize

4096

Pour paramtrer le contrle Common Dialog, double-cliquez sur lentre (Personnalis) de la fentre Proprits. Les Pages de proprits (voir Figure PB6.2) offrent une
mthode plus simple que la saisie des valeurs dans la fentre Proprits.

409

<
:

Prog VB6 FM2B Page 410 Lundi, 6. aot 2001 3:38 15

Partie II

Figure PB6.2
Utilisez la bote
de dialogue
personnalise pour
entrer les proprits
du contrle
CommonDialog.

ce
Astu

Vous naurez pas dnir de proprits lies la couleur. La bote de dialogue Couleur ne ncessite pas de tels rglages avant lexcution du
programme. Les slections de couleur de lutilisateur naffecteront pas les
proprits lis au chier dnies pour le contrle Common Dialog.

Ajouter le code
Le Listing PB6.1 fournit le code vnementiel du projet.
ce
Astu

Cliquez sur le menu Outils, puis choisissez loption Ajouter une procdure.
La bote de dialogue reproduite en Figure PB6.3 safche. Tapez le nom de
la procdure, slectionnez son type et sa porte, et Visual Basic insre automatiquement les lignes demballage. Deux lignes de moins taper, cest
toujours a !

Figure PB6.3
Laissez Visual Basic
insrer la premire
et la dernire lignes
de procdure.

>
:

410

Prog VB6 FM2B Page 411 Lundi, 6. aot 2001 3:38 15

Projet bonus 6 : Lire et crire des fichiers

Listing PB6.1 : Chargement du chier dans un contrle zone de liste

1: Private Sub cmdColor_Click()


2:
Pour changer le contrle darrire-plan
3:
de la zone de liste, lutilisateur
4:
se servira de la bote de dialogue Couleur.
5:
comFile.ShowColor
6:
lstFile.BackColor = comFile.Color
7: End Sub
8:
9: Private Sub Form_Resize()
10:
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
11:
Si lutilisateur redimensionne la feuille,
12:
ajuste la taille de la zone de liste.
13:

14:
Cette procdure vnementielle sexcute
15:
au premier chargement de la feuille.
16:

17:
Sassure que la feuille est assez grande
18:
pour afficher la zone de liste.
19:
If (frmFile.Width < 400) Or (frmFile.Height < 3500) Then
20:
Masque la zone de liste et
21:
avertit lutilisateur.
22:
lstFile.Visible = False
23:
intMsg = MsgBox("La feuille est trop petite pour afficher le
fichier", _ vbCritical)
24:
Else
25:
Active laffichage de la zone de liste,
26:
au cas o.
27:
lstFile.Visible = True
28:
Ajuste la taille de la zone de liste.
29:
Ajuste la position du bouton de commande.
30:
lstFile.Width = frmFile.Width - 1440
31:
lstFile.Height = frmFile.Height - 2500
32:
cmdColor.Left = (frmFile.Width / 2) - 500
33:
End If
34: End Sub
35:
36: Private Sub mnuFileExit_Click()
37:
Option de fermeture du programme.
38:
End
39: End Sub
40:
41: Private Sub mnuFileOpen_Click()
42:
Dim strFileLine As String
43:
Gre le bouton Annuler.
44:
On Error GoTo comErrorHandler
45:

46:
Affiche la bote de dialogue Ouvrir.
47:
comFile.ShowOpen
48:
Continue si lutilisateur clique sur OK,
49:
passe au gestionnaire derreurs sil clique sur Annuler.

411

<
:

Prog VB6 FM2B Page 412 Lundi, 6. aot 2001 3:38 15

Partie II

Listing PB6.1 : Chargement du chier dans un contrle zone de liste (suite)

50:

51:
Ouvre le fichier slectionn par lutilisateur.
52:
Open comFile.FileName For Input As #1
53:
Vide la zone de liste pour faire de la place.
54:
lstFile.Clear
55:

56:
Lit une ligne complte du fichier.
57:
Line Input #1, strFileLine
58:
lstFile.AddItem strFileLine
59:

60:
Poursuit la lecture et remplit la zone de liste
61:
jusqu ce que la fin du fichier soit atteinte.
62:
Do Until (EOF(1))
63:
Line Input #1, strFileLine
64:
lstFile.AddItem strFileLine
65:
Loop
66:
Ferme le fichier.
67:
Close
68: comErrorHandler:
69:
Ne fait rien si lutilisateur clique sur Annuler.
70: End Sub

Analyse
La premire procdure vnementielle, lignes 1 7, afche le contrle Common Dialog
laide de la mthode ShowColor. Lorsque lutilisateur fait une slection, la ligne 6
ajuste en consquence larrire-plan de la zone de liste et le chier est afch sur un
fond de la couleur choisie. (La couleur sapplique larrire-plan de la zone de liste
mme si aucun chier nest visualis.) Cette couleur restera en arrire-plan tant que
lutilisateur nen slectionnera pas une autre.
A la ligne 9 commence la deuxime procdure vnementielle. Si lutilisateur redimensionne la feuille, la procdure vnementielle Form_Resize() sexcute automatiquement.
(Elle sexcute galement au premier chargement de la feuille.)
Cette procdure dajustement fait en sorte que le bouton de commande et la zone de liste
restent centrs, quelle que soit la taille de la feuille. Si lutilisateur "ratatine" la feuille au
point que la zone de liste ne puisse plus safcher, les deux vnements suivants ont lieu
(ligne 19) :

>
:

La zone de liste est masque. (Sinon, Visual Basic gnrerait une erreur, car il ne
peut faire ce qui lui est demand sur une feuille si petite.)

Lutilisateur est averti par une bote de message que la feuille est trop petite.

412

Prog VB6 FM2B Page 413 Lundi, 6. aot 2001 3:38 15

Projet bonus 6 : Lire et crire des fichiers

En supposant que la zone de liste na pas t masque, la ligne 27 en ajuste la taille


selon les nouvelles proprits Width et Height de la feuille. La position du bouton de
commande est galement modie en fonction de cette mme proprit Width.
A la ligne 41 commence la procdure vnementielle la plus longue du programme.
Cette procdure ouvre et lit le chier slectionn. Lorsque lutilisateur clique sur
Fichier, Ouvrir, la bote de dialogue commune Ouvrir un chier safche (voir Figure
PB6.4). La procdure vnementielle appplique pour cela la mthode ShowOpen au
contrle Common Dialog.
Figure PB6.4
Lutilisateur peut
choisir un chier .BAT
ou .TXT dans la bote
de dialogue Ouvrir
un chier.

ntion
Atte

Evidemment, la liste des chiers afche dans la bote de dialogue Ouvrir


dpend du contenu du disque de lutilisateur, et ne sera donc pas identique
la Figure PB6.4.

Dans la bote de dialogue Types de chier, lutilisateur peut slectionner les types .TXT
et .BAT (tous les dossiers sont afchs, quelle que soit la slection). Il peut aller
chercher son chier dans nimporte quel dossier de son PC, voire dun autre PC du
rseau.
La ligne 44 dnit le gestionnaire derreur charg de rpondre au bouton Annuler.
Si lutilisateur clique sur Annuler, le code saute la n de la procdure vnementielle,
et laisse tel quel tout le contenu de la feuille.
Quand lexcution du programme a atteint la ligne 52, lutilisateur a slectionn un
chier. La ligne 52 ouvre ce chier en accs squentiel, en mode lecture seule.
Info

Le chier est ouvert en lecture seule an que le programme ne puisse en


modier le contenu.

413

<
:

Prog VB6 FM2B Page 414 Lundi, 6. aot 2001 3:38 15

Partie II

La ligne 54 vide la zone de liste an de faire place au contenu du chier nouvellement


slectionn. Les lignes 57 et 58 lisent la premire ligne du chier et ajoutent cette ligne
la zone de liste laide de la mthode AddItem. La ligne 57 introduit une nouvelle
commande : Line Input #. Vous connaissez dj Input # et Get #. Line Input # ne
devrait donc pas vous poser de problme. En voici le format :
Line Input #intFileNumber, strLineVar

Line Input # lit une ligne complte (ou enregistrement) depuis le chier, et la stocke
dans la variable chane strLineVar. Si cest Input # qui avait t employe, la ligne
naurait peut-tre pas t lue en entier. En effet, les lignes contiennnent sans doute des
virgules et des espaces, et vous savez que Input # arrte sa lecture chaque fois quun tel
caractre est rencontr mme si cest au milieu de la ligne.
Une fois la premire ligne lue et envoye la zone de liste, la ligne 62 amorce une
boucle qui lira le reste du chier. La fonction EOF() permet de localiser la n dun
chier. Le chier peut contenir plusieurs lignes, et le programme ne peut en connatre
lavance le nombre exact. EOF() renvoie la valeur True lorsque la n du chier est
atteinte. Si True est renvoye, la boucle cesse de lire le chier et le programme poursuit
son excution la ligne 66.

ce
Astu

La ligne 62 aurait pu tre celle-ci :


Do Until (EOF(1) = True)

Certes, la line 62 aurait pu interroger la valeur renvoye par EOF(). Mais


cette faon de faire aurait, en vrit, donn un programme moins efcace.
La fonction EOF() renvoie une valeur True ou False selon que la condition
de n de chier est satisfaite ou non. Les fonctions, vous vous en souvenez
sans doute, deviennent leur valeur de renvoi. En loccurrence, lappel de
EOF() devient lui-mme True ou False, et linstruction conditionnelle Do
Until est donc tout fait inutile.
La ligne 67 ferme le chier, et le programme se poursuit pour permettre lutilisateur
den choisir un nouveau.

>
:

414

Prog VB6 FM2B Page 415 Lundi, 6. aot 2001 3:38 15

Chapitre

13

Gestion de limprimante
Vous apprendrez, dans ce chapitre, comment on envoie une sortie vers limprimante. Vous
matrisez dj lenvironnement de dveloppement, connaissez lessentiel du langage et
tes en mesure de crer des applications fonctionnelles. Il sagit maintenant de permettre
ces applications denvoyer des donnes limprimante.
Sachez que linterface dimpression Visual Basic est un peu plus complexe que la
plupart des composants udis jusquici. Imprimer des donnes depuis un programme
Visual Basic est en gnral une opration dlicate. Les sections suivantes dcrivent les
divers outils disponibles cet effet.
Voici ce que nous dcouvrirons aujourdhui :

les objets Printer ;

comment dterminer les paramtres dimpression de lutilisateur ;

linstruction Is TypeOf ;

les mthodes dimpression ;

la similitude entre les mthodes dimpression et les mthodes de feuilles ;

les techniques dimpression ;

comment avertir lutilisateur ;

comment imprimer des feuilles.

415

Prog VB6 FM2B Page 416 Lundi, 6. aot 2001 3:38 15

Partie II

La collection dobjets Printers


Supposons que vous vouliez imprimer une copie du contenu de la fentre Code. Pour ce
faire, vous choisissez Fichier, Imprimer. Un PC peut disposer de plusieurs imprimantes.
Vos applications doivent avoir accs toutes les imprimantes connectes, ainsi quaux
ventuels fax internes qui fonctionnent comme des imprimantes. Il suft, pour envoyer
limpression, de slectionner le priphrique adquat comme imprimante par dfaut de
Visual Basic. Visual Basic transmettra toutes les sorties cet imprimante, ignorant la
spcication par dfaut du systme, et cela, jusqu ce que lapplication se termine ou
jusqu ce que vous dnissiez une autre imprimante par dfaut.
Rien de plus simple, donc, que dimprimer vos listings. Il nen va pas de mme pour
imprimer des sorties depuis un programme Visual Basic. Avant dentrer dans les dtails,
nous allons prsenter un jeu dobjets spcial : la collection Printers.

ce
Astu

La collection Printers est la liste de toutes les imprimantes connectes au PC


qui excute lapplication, incluant les modems internes faisant ofce de fax.
Cette collection ne concerne pas le PC sur lequel lapplication est dveloppe,
mais bien celui sur lequel elle est excute.

La collection Printers tant la liste des imprimantes du systme exploitant lapplication, son contenu change dun systme lautre. Si, entre deux excutions, lutilisateur
dsinstalle une imprimante, la collection Printers en sera modie. Comment accder
aux imprimantes de la collection courante ? Cest ce que nous vous invitons dcouvrir.

Info

La collection Printers est la mme liste dimprimantes qui apparat dans la


bote de dialogue Imprimantes de Windows.

Accder la collection Printers


Comme pour les autres types de listes internes que nous avons tudis jusquici, le
programme peut se rfrer aux objets de la collection Printers au moyen de valeurs
dindex. La premire imprimante (imprimante par dfaut) a lindice 0, la deuxime
lindice 1, et ainsi de suite. On peut ainsi dterminer le nombre dimprimantes du
systme en incluant dans une boucle For la rfrence Printers.Count-1. Linstruction
For Each permet de parcourir la liste des imprimantes sans quil soit besoin de spcier
un numro (voir Listing 13.1).

>
:

416

Prog VB6 FM2B Page 417 Lundi, 6. aot 2001 3:38 15

Chapitre 13 : Gestion de limprimante

Linstruction Set Printer permet de dnir lune des imprimantes comme imprimante
par dfaut. Linstruction suivante dnit comme imprimante par dfaut de Visual Basic
la deuxime imprimante du systme :
Set Printer = Printers(1)

Change limprimante par dfaut.

Il nest toutefois pas toujours vident de dterminer en cours dexcution limprimante


utiliser. Comment savoir de quel type dimprimante il sagit ? On ne peut interroger que
des proprits spciques. Si, par exemple, vous devez envoyer la sortie vers une imprimante supportant un format de papier particulier, il faudra boucler travers toutes les
imprimantes du systme, jusqu ce vous trouviez le priphrique adquat.

Interroger les proprits


Le Tableau 13.1 prsente les proprits dimprimante les plus importantes, qui permettent
de chosir une imprimante en fonction des besoins de lapplication. Ces proprits sont,
pour la plupart, associes des constantes nommes. On peut ainsi, pour rechercher
notre format de papier, interroger les proprits laide de constantes nommes telles
que vbPRPSLetter et vbPRPSLetterSmall, plutt que de simples valeurs comme 1 ou 2.
Les constantes nommes sont un peu plus longues saisir, mais rendent le programme
plus clair et la maintenance plus aise.
ce
Astu

Faites dans laide en ligne une recherche sur une proprit pour obtenir la
liste des constantes nommes quelle supporte.

Tableau 13.1 : Proprits des imprimantes


Proprit

Description

ColorMode

Dtermine si limprimante peut imprimer en couleur.

Copies

Spcie le nombre de copies imprimer.


(Cette proprit peut est dnie par lutilisateur dans la bote de dialogue
Imprimer de votre application, ou par vous-mme dans le code.)

CurrentX,
CurrentY

Renvoie ou spcie les cordonnes X et Y auxquelles le prochain caractre


(ou dessin) apparatra.

DeviceName

Contient le nom de limprimante, tel que Epson Stylus Color 500.

DriverName

Contient le nom du pilote dimpression. (Plusieurs imprimantes dun mme


fabriquant peuvent exploiter le mme pilote.)

417

<
:

Prog VB6 FM2B Page 418 Lundi, 6. aot 2001 3:38 15

Partie II

Tableau 13.1 : Proprits des imprimantes (suite)


Proprit

Description

Duplex

Dtermine si limprimante peut imprimer recto-verso.

Height

Revoie la hauteur de la page imprime pour limprimante slectionne


(en mesures ScaleMode).

Orientation

Renvoie ou dnit lorientation de la page (portrait/paysage).

Page

Renvoie le numro de la page courante.

PaperBin

Renvoie ou dnit le bac dalimentation utilis.


(Toutes les imprimantes ne disposent pas de bacs multiples.)

PaperSize

Renvoie ou dnit le format de papier courant.

Port

Renvoie le port de limprimante.

PrintQuality

Renvoie la rsolution de limprimante.

TrackDefault

Si la valeur est False, les paramtres dimpression courants sont conservs


lorsquon change dimprimante par dfaut ; si la valeur est True, ces
paramtres sont modis chaque changement dimprimante par dfaut.

Width

Renvoie la largeur de la page imprime pour limprimante slectionne (en


mesures ScaleMode).

Zoom

Renvoie ou dnit le pourcentage dchelle de limpression. Pour une valeur de


Zoom de 75, par exemple, la page sera imprime 75 % de sa taille relle. (Cette
proprit nest pas supporte par toutes les imprimantes.)

A lexcution, les proprits de lobjet Printer sajustent celles de limprimante par


dfaut du systme. Si une nouvelle imprimante par dfaut est slectionne, les proprits se modient automatiquement. La plupart des proprits prsentes au Tableau 13.1
peuvent tre dnies lexcution.

Info

>
:

418

On se sert galement des proprits du Tableau 13.1 pour appliquer les


mthodes spciques dimpression dcrites la section suivante.

Prog VB6 FM2B Page 419 Lundi, 6. aot 2001 3:38 15

Chapitre 13 : Gestion de limprimante

Le code du Listing 13.1 parcourt les imprimantes courantes du systme.


Listing 13.1 : Le code prend connaissance de chaque imprimante du systme

1:
2:
3:
4:

Dim prnPrntr As Printer


For Each prnPrntr In Printers Boucle dans la collection.
frmMyForm.Print prnPrntr.DeviceName
Next

Ce code se contente dafcher sur la feuille courante le nom de chaque imprimante du


systme.
A la ligne 1, une variable est dclare comme de type Printer. En progressant dans votre
apprentissage, vous dcouvrirez que les variables peuvent tre dclares pour peu prs
nimporte quel type : Printer, Form, etc. Ici, la variable prnPrntr permet la boucle For
Each de parcourir les imprimantes du systme. Linstruction For quivalente serait :
For prnPrntr = 1 to (Printers.Count - 1)

Info

Rappelez-vous que Printer et Form sont des objets Visual Basic. Vous en
apprendrez plus propos des objets au Chapitre 16.

Afcher sur la feuille le nom de chaque imprimante, a ne sert pas grand-chose.


Nanmoins, la boucle mise en uvre dans cet exemple fournit le modle de la plupart
des traitements dimprimante.
Pour continuer dans nos exemples, le Listing 13.2 recherche, parmi toutes les imprimantes du systme, une imprimante capable dimprimer un graphique en couleur.
Listing 13.2 : Recherche dune imprimante couleur sur le systme de lutilisateur

1:
2:
3:
4:
5:
6:
7:
8:

Dim prnPrntr As Printer


For Each prnPrntr In Printers
If prnPrntr.ColorMode = vbPRCMColor Then
Dfinit limprimante couleur comme imprimante par dfaut.
Set Printer = prnPrntr
Exit For Ne cherche pas plus loin.
End If
Next
Continue la boucle si ncessaire.

419

<
:

Prog VB6 FM2B Page 420 Lundi, 6. aot 2001 3:38 15

Partie II

Contrle de la sortie
Lobjet Printer permet denvoyer des donnes vers limprimante par dfaut sans se
soucier du type du priphrique ni du port. Pour envoyer une sortie (documents,
images, etc.) vers limprimante, on applique lobjet Printer des mthodes. Lobjet
Printer est dune programmation un peu fastidieuse, mais il permet de dvelopper des
procdures gnralistes qui simplieront la gestion des sorties dans les programmes
subsquents.
ce
Astu

Pour envoyer les donnes une imprimante autre que limprimante par
dfaut, il faut dabord la dnir laide de linstruction Set Printer.

Une fois slectionne limprimante par dfaut, on peut envoyer la sortie vers limprimante de lutilisateur. Cette section explique comment contrler lobjet Printer et diriger
du texte vers limprimante. Vous dcouvrirez, dans le chapitre suivant, des mthodes et
commandes graphiques qui peuvent galement sappliquer lobjet Printer.
Avec lobjet Printer, on construit la sortie. En dautres termes, envoyer une sortie
lobjet Printer ne signie pas imprimer rellement. Ce sont les mthodes NewPage
ou EndDoc qui amorcent rellement limpression. (Si aucune mthode EndDoc na t
applique, limpression se lance automatiquement la fermeture de lapplication.)

Imprimer vers lobjet Printer


La mthode Print offre le plus simple moyen de diriger une sortie vers lobjet Printer.
Les instructions suivantes envoient un message vers limprimante :
Printer.Print "Ce rapport prsente les rsultats du "
Printer.Print dteStart; " au "; dteFinish; "."
Printer.Print "Pour plus dinformations, contactez M. Pichot."
ntion
Atte

En fait, Windows se charge des dtails de limpression. Ainsi, si limprimante na plus de papier ou est hors tension lorsque limpression dmarre,
Windows envoie lutilisateur un message davertissement (voir
Figure 13.1). Celui-ci peut cliquer sur Ressayer sil a rgl le problme, ou
sur Annuler pour dcommander la tche dimpression.

On peut aussi bien envoyer vers limprimante des littraux, des variables, des valeurs de
contrles, etc. En fait, tout ce que lon peut envoyer la feuille avec Print, on peut
lenvoyer lenvoyer lobjet Printer. Voici un exemple :

>
:

420

Prog VB6 FM2B Page 421 Lundi, 6. aot 2001 3:38 15

Chapitre 13 : Gestion de limprimante

Figure 13.1
Windows avertit
lutilisateur des
erreurs dimpression.

sngTaxRate = 12.5
strTitle = "Encyclopdie du gibolin"
Printer.Print "Ouvrage achet : " & strTitle
Printer.Print "Montant de la taxe : " & sngTaxRate

Sans arguments, la mthode Print imprime des lignes vierges :


Printer.Print

ce
Astu

Imprime une ligne vierge.

Il convient de signaler lutilisateur le dbut de limpression. La dernire


section de ce chapitre explique comment envoyer ce type davertissements.

Nous avons vu, au Chapitre 11, que la mthode Print permettait denvoyer une sortie vers la
feuille. Comme vous le voyez ici, Print est une mthode gnraliste capable denvoyer une
sortie vers tout objet valide qui accepte les donnes textuelles.
La mthode NewPage permet dafcher la sortie en haut de la page suivante :
Printer.NewPage

Passer la page suivante.

Lchelle de la sortie
Lchelle permet, par exemple, de crer des marges qui seront respectes par toutes les
mthodes dimpression. Une fois dnie la proprit ScaleMode, qui spcie le type de
mesures employes par le programme, vous pouvez dterminer la disposition de la sortie
sur la page laide des autres proprits dchelle. Le Tableau 13.2 prsente ces proprits.
Les mthodes suivantes dnissent une marge suprieure de 3 cm et une marge gauche
de 5 cm :
Printer.ScaleMode = vbCentimeters Echelle centimtres.
Printer.ScaleTop = 3
Printer.ScaleLeft = 5

Les mthodes Print subsquentes respecteront ces spcications.

421

<
:

Prog VB6 FM2B Page 422 Lundi, 6. aot 2001 3:38 15

Partie II

Tableau 13.2 : Proprits dchelle


Proprit

Description

ScaleLeft

Dnit lorigine de la coordonne horizontale X pour la zone dimpression.


Par exemple, une valeur ScaleLeft de 10 dplace la marge de gauche de 10
units ScaleMode.

ScaleMode

Spcie lunit de mesure utilise pour lchelle. Les valeurs les plus
couramment employes pour limpression de texte sont vbPoints (valeur 2),
vbCharacters (largeur de caractres par dfaut de limprimante), vbInches
et vbCentimeters.

ScaleHeight

Modie le systme de coordonnes verticales de lobjet Printer.

ScaleTop

Dnit lorigine de la coordonne verticale Y pour la zone dimpression.


Par exemple, une valeur ScaleTop de 5 dplace la marge suprieure de
5 units ScaleMode.

ScaleWidth

Modie le systme de coordonnes horizontales de lobjet Printer.

Les proprits CurrentX et CurrentY


A moins que les proprits ScaleHeight et ScaleWidth ne dnissent un autre systme
de coordonnes X,Y, les proprits CurrentX et CurrentY de lobjet Printer ont toutes
deux pour valeur de dpart 0 (origine 0, 0). (Les coordonnes utilisent toujours les
units de mesure spcies par ScaleMode.) Vous pouvez modier cette origine pour
imprimer une sortie une position prcise sur la page.
Info

Les proprits CurrentX et CurrentY respectent toujours les marges dnies


par ScaleLeft et ScaleTop. Ainsi, la paire de coordonnes CurrentX,
CurrentY correspond au premier caractre en haut gauche de la page,
lintrieur des marges.

Le code suivant imprime un message 15 lignes de la marge suprieure et


25 caractres de la marge gauche :

>
:

Printer.ScaleMode = VbCharacters
Printer.CurrentY = 14
La valeur de dpart est 0 !
Printer.CurrentX = 24
Printer.Print "Ce nest plus Catilina qui est nos portes, cest la mort."

422

Prog VB6 FM2B Page 423 Lundi, 6. aot 2001 3:38 15

Chapitre 13 : Gestion de limprimante

Plusieurs mthodes, appliques lobjet Printer, permettent de contrler le processus


dimpression. Ainsi, la mthode NewPage dj mentionne :
Printer.NewPage

Passer la page suivante.

La mthode KillDoc permet dannuler limpression tout moment de la prparation :


Printer.KillDoc

Ne pas envoyer la sortie vers limprimante.

KillDoc retire compltement la sortie de lobjet Printer. Si lutilisateur veut imprimer le


document par la suite, la sortie devra tre r-envoye lobjet Printer.
Info

KillDoc ne
PrintForm.

peut annuler une impression dj commence, ni les tches

Microsoft recommande de crer dans un module standard une sous-routine dimpression, qui pourra tre appele depuis toutes les applications disposant de ce module.
Cette sous-routine poura aussi servir aux impressions de feuilles. Le code du
Listing 13.3 contient deux arguments de type Object. Ce type de donnes permet de
passer la sous-routine aussi bien un objet Form quun objet Printer.
Listing 13.3 : Cette procdure permet dimprimer les contrles de la feuille

1:
2:
3:
4:
5:
6:

Sub PrintAnywhere (Src As Object, Dest As Object)


Dest.PaintPicture Src.Picture, Dest.Width / 2, Dest.Height / 2
If TypeOf Dest Is Printer Then
Printer.EndDoc
End If
End Sub

On peut ainsi imprimer une feuille contenant une image. Ou bien une feuille dans
laquelle lutilisateur entre des donnes qui seront par la suite envoyes limprimante.
A la ligne 1, la sous-routine exige des arguments de source et de destination. La source
esr toujours la feuille imprimer. La destiantion peut tre Printer. Lorsque vous tes
prt imprimer, vous appelez la procdure de cette faon :
Call PrintAnywhere (frmUserForm, Printer)

Print form.

La sous-routine imprime la feuille laide de la mthode PaintPicture. PaintPicture


dessine la feuille sur lobjet auquel elle est applique (la mthode). La mthode PaintPicture requiert trois valeurs : la forme dessiner, la largeur de destination et la hauteur

423

<
:

Prog VB6 FM2B Page 424 Lundi, 6. aot 2001 3:38 15

Partie II

de destination. Le code du Listing 13.3 dessine une feuille mesurant la moiti de la taille
de la zone de destination.
Linstruction If sassure que le destination est bien lobjet Printer, et non une autre
feuille, et envoie la sortie laide de la mthode EndDoc. (On aurait pu passer une
deuxime feuille comme destination.)
Linstruction If TypeOf implique un nouveau genre de If. If TypeOf... Is permet
dinterroger le type dun objet.
Info

En fait, linstruction If TypeOf... Is fait plus que vrier le type dun


objet, comme vous lapprendrez au Chapitre 16.

Les proprits Font


Le Tableau 13.3 prsente certaines des proprits de Printer qui permettent de spcier
la mise en forme du texte avant de lenvoyer limprimante.
Tableau 13.3 : Les proprits Font permettent de mettre le texte en forme avant
dimprimer

>
:

Proprit

Description

Font

Dtermine la police utiliser.

FontBold

Si la valeur est True, le texte sera imprim en gras.

FontCount

Renvoie le nombre de polices supportes par limprimante.

FontItalic

Si la valeur est True, le texte sera imprim en italique.

FontName

Contient le nom de la police utilise.

Fonts

Contient la liste de toutes les polices installes sur le systme. On accde


cette liste comme un tableau de contrle : Fonts(0) et
Fonts(FontCount - 1) sont le premier et le dernier indice.

FontSize

Dtermine la taille (en points) de la police utilise.

FontStrikeThru

Si la valeur est True, le texte sera imprim en barr.

FontTransparent

Si la valeur est True, le texte sera imprim en transparent.

FontUnderline

Si la valeur est True, le texte sera imprim en soulign.

424

Prog VB6 FM2B Page 425 Lundi, 6. aot 2001 3:38 15

Chapitre 13 : Gestion de limprimante

Les attributs de police permettent denjoliver ou de mettre en valeur le texte imprim.


Le code suivant imprime les mots "Visual Basic" en gros caractres, gras et italiques :

Printer.FontItalic = True
Printer.FontBold = True
Printer.FontSize = 72
Corps 72.
Printer.Print "Visual Basic"

Les mthodes de Printer, nous lavons dit, ne permettent pas seulement denvoyer la
sortie vers une imprimante, mais aussi vers une feuille. Examinez le Listing 13.4 et
tentez de deviner ce qui apparatra sur la feuille. (Une sortie identique aurait pu tre
envoye vers Printer, mais cet exemple permet de constater le rsultat lcran.)
Listing 13.4 : Print permet galement denvoyer une sortie vers la feuille

1: Private Sub cmdPrint_Click()


2:
Envoie une sortie vers la feuille
3:
laide de la mthode Print.
4:
Dim intCtr As Integer
5:
Dim intCurX As Integer
6:
Dim intCurY As Integer
7:

8:
Dfinit les attributs de police.
9:
frmPrint.FontItalic = True
10:
frmPrint.FontBold = True
11:
frmPrint.FontSize = 36
12:

13:
Spcifie des mesures en twips.
14:
frmPrint.ScaleMode = vbTwips
15:

16:
Enregistre les positions X et Y (en twips)
17:
chaque itration de la boucle.
18:
For intCtr = 1 To 10
19:
intCurX = frmPrint.CurrentX
20:
intCurY = frmPrint.CurrentY
21:
Texte noir et blanc en alternance.
22:
If (intCtr Mod 2) = 1 Then Compteur de boucle.
23:
frmPrint.ForeColor = vbWhite
24:
Else
25:
frmPrint.ForeColor = vbBlack
26:
End If
27:
Affiche le texte.
28:
frmPrint.Print "Visual Basic"
29:

30:
Change les positions X et Y.
31:
frmPrint.CurrentX = intCurX + 350
32:
frmPrint.CurrentY = intCurY + 300
33:
Next intCtr

425

<
:

Prog VB6 FM2B Page 426 Lundi, 6. aot 2001 3:38 15

Partie II

Listing 13.4 : Print permet galement denvoyer une sortie vers la feuille (suite)

34:
35:
36:
37:
38:

End Sub
Private Sub cmdExit_Click()
End
End Sub

Les lignes 9 11 spcient le format du texte : corps 36, italique, gras. La ligne 14
spcie que les positions CurrentX et CurrentY doivent tre rgles en twips, et non en
caractres. La ligne 18 commence la boucle qui afchera sur la feuille dix fois "Visual
Basic".
ntion
Atte

Si vous modiez ce code pour envoyer la sortie vers une imprimante, choisissez, la ligne 23, une autre couleur que vbWhite. Si vous ne disposez pas
dune imprimante couleur, des valeurs comme vbBlue ou vbRed simprimeront
de toute faon en niveaux de gris.

Au dbut de la boucle (lignes 19 et 20), le code stocke les valeurs courantes de CurrentX
et CurrentY. Si ces valeurs ntaient pas enregistres, chaque mthode Print apparatrait
sur une ligne pleine aprs la premire mthode Print. En effet, chaque Print envoie
automatiquement le curseur texte au dbut de la ligne suivante, moins que lon ne
place un point-virgule la n de la mthode Print, ou que lon ne rgle les proprits
CurrentX et CurrentY, ce qui a t fait ici.
A la ligne 22, linstruction If gre la couleur de la sortie. A chaque itration de la
boucle, la couleur change du noir au blanc et vice versa. Loprateur Mod renvoie 0 ou 1,
selon la valeur du compteur de boucle. Si intCtr est pair, Mod prend la valeur 0, si
intCtr est impair, Mod prend la valeur 1.
Cest la ligne 28 qua lieu lafchage comme tel. La mthode Print devrait normalement envoyer le curseur texte la ligne suivante, de sorte que les sorties Print
subsquentes ne se surperposent pas. Mais les lignes 31 et 32 positionnent le curseur
texte de sorte que chaque sortie morde un peu sur la prcdente. Les lignes 31 et 32
ajoutent quelques twips aux valeurs CurrentX et CurrentY de la Print prcdente
(valeurs enregistres aux lignes 19 et 20). A chaque itration de la boucle, les mots
"Visual Basic" safchent dans une couleur diffrente et en surimpression partielle de
la ligne prcdente, et cela jusqu la dixime itration. La Figure 13.2 montre le
rsultat qui apparat sur la feuille. Celui-ci aurait t le mme si la sortie avait t envoye
vers lobjet Printer.

>
:

426

Prog VB6 FM2B Page 427 Lundi, 6. aot 2001 3:38 15

Chapitre 13 : Gestion de limprimante

Figure 13.2
Les mthodes Print
permettent denvoyer
du texte mis en forme.

Impression des feuilles


Lune des faons les plus simples denvoyer des donnes limprimante est dimprimer
une feuille. La mthode PrintForm peut sappliquer nimporte quelle feuille de votre
projet. Limpression de feuilles relve des mmes techniques que celles que nous avons
tudies pour la mthode Print.
Lorsque la mthode PrintForm est applique une feuille, Visual Basic lance immdiatement limpression. La feuille comme limprimante doivent donc tre prtes ce
moment. Cette section vous explique comment obtenir les meilleurs rsultats avec
PrintForm. La mthode PrintForm ne se prte pas tous les types dimpression Visual
Basic, mais suft amplement pour limpression de feuilles.
ce
Astu

Le plus grand avantage de PrintForm, comme des autres fonctionnalits


dimpression de Visual Basic, est que la sortie exploite les objets imprimante de
Windows. Vous navez donc pas vous soucier dventuelles spcicits lies
la marque ou au modle du priphrique.

Voici le format de la mthode PrintForm :


[frmFormName.]PrintForm

frmFormName est optionnel. Si aucun nom de feuille nest spci, Visual Basic applique
automatiquement PrintForm la feuille courante.

427

<
:

Prog VB6 FM2B Page 428 Lundi, 6. aot 2001 3:38 15

Partie II

Pour imprimer, par exemple, une feuille nomme frmAccPayable, on insrerait dans la
procdure vnementielle ou le module appropri linstruction suivante :
frmAccPayable.PrintForm

Imprime la feuille frmAccPayable.

Si frmAccPayable se trouve tre la feuille courante (cest--dire la feuille qui a le focus


et dont la barre de titre est en surbrillance), le nom de la feuille source peut tre omis :
PrintForm

Imprime la feuille frmAccPayable.

Me se rfre toujours la feuille courante. Ainsi linstruction suivante est-elle quivalente aux deux prcdentes :
Me.PrintForm

ce
Astu

Imprime la feuille frmAccPayable.

Comme nous lavons vu au Chapitre 11, la mthode Print envoie du texte


directement la feuille. Vous pouvez donc envoyer la sortie vers la feuille
avec Print, pour ensuite envoyer la feuille vers limprimer avec PrintForm.
Gardez cependant lesprit que tous les contrles de la feuille apparatront
galement sur la sortie imprime.

Inconvnients de PrintForm
Cest la simplict de PrintForm qui fait sa force. PrintForm est certainement la technique
dimpression la plus utile et la plus simple que Visual Basic puisse offrir. Malheureusement, cette simplicit cote quelques dsavantages, dont vous devez tre avis.
Quelle que soit la rsolution relle de limprimante, PrintForm imprime toujours la
feuille selon la rsolution dcran courante. Ce qui signie, en gnral, un maximum
de 96 dpi (dots per inch, points par pouce). La rsolution des imprimantes atteignant
en moyenne les 600 dpi, le rendu de la feuille imprime sera nettement infrieur au
rendu lcran. En effet, 96 dpi est une rsolution tout fait honnte pour un cran,
mais tout fait insufsante pour une sortie papier de qualit.
Avant dimprimer une feuille contenant des contrles de type graphique ou tout autre
lment visuel, vous devez vous assurer que la proprit AutoRedraw de la feuille est
dnie comme True. La valeur par dfaut de AutoRedraw est False, ce qui implique que
Print imprimera les contrles graphiques directement au premier-plan. Lorsque AutoRedraw est True, limage reste en arrire-plan pendant que Print fait son travail, de sorte
quaucun lment ne se superpose dautres. Dnie comme False, AutoRedraw peut
permettre dimprimer les images darrire-plan en premier. Vous pouvez ensuite imprimer

>
:

428

Prog VB6 FM2B Page 429 Lundi, 6. aot 2001 3:38 15

Chapitre 13 : Gestion de limprimante

le texte par-dessus, mais il faudra rednir AutoRedraw comme True juste avant de
lancer limpression, an que lensemble de la feuille sorte correctement.
Attention : pour que PrintForm puisse imprimer les objets placs sur la feuille au
moment de la cration (ainsi que les valeurs de contrles initialises lors de lexcution,
telles que le contenu des labels et autres zones de texte), AutoRedraw doit imprativement tre False. Ainsi, si vous ajoutez des lments graphiques en cours dexcution,
pour ensuite imprimer la feuille avec PrintForm, vous devrez dnir comme True la
proprit AutoRedraw de la feuille avant de procder aux ajouts. Autrement, les lments
intgrs lors de lexcution napparatraient pas sur la feuille imprime.
ntion
Atte

Limpression peut tre le au du programmeur Windows. Pour tre certain


des rsultats, il faut tester lapplication sur le plus grand nombre de modles
dimprimantes possible. Il est intressant, cet effet, de distribuer votre
programme plusieurs utilisateurs-testeurs disposant dimprimantes diffrentes. En fait, on ne peut jamais tre certain du rsultat pour toutes les sortes
dimprimantes, mais on obtient ainsi un chantillon signicatif. La validit de
tels tests dpend videmment de ce que les pilotes de lutilisateur soient
correctement installs, et de ce que cet utilisateur slectionne limprimante
adquate.
Il faut toutefois noter que le rle de votre application, quant la qualit des
impressions, est toujours limit. En effet, cest un peu l le "domaine
rserv" de linterface dimpression Windows. En se plaant ainsi entre
votre application et limprimante, Windows vous pargne dailleurs pas mal
de codage. Les programmeurs MS-DOS, eux, devaient tenir compte de tous
les types dimprimantes existants tche sisyphenne, puisque de nouveaux
modles devaient forcment sortir entre le moment o le programme tait
crit et celui de sa distribution.

Dans le Listing 13.5, on envoie un message textuel vers une feuille, puis cette feuille
vers limprimante.
Listing 13.5 : Afchage dun message sur la feuille, puis impression de la feuille

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:

Dim blnAutoRedraw As Boolean


Contiendra la valeur de AutoRedraw.

frmBlank.Print "Rpartition du matriel"


frmBlank.Print
Blank line
frmBlank.Print "Zone"; Tab(20); "Machines"
frmBlank.Print "--------"; Tab(20); "--------"
frmBlank.Print "Nord"; Tab(20); "Fraises"
frmBlank.Print "Sud"; Tab(20); "Presses"
frmBlank.Print "Est"; Tab(20); "Broyeurs"
frmBlank.Print "Ouest"; Tab(20); "Giboliniseurs"

429

<
:

Prog VB6 FM2B Page 430 Lundi, 6. aot 2001 3:38 15

Partie II

Listing 13.5 : Afchage dun message sur la feuille, puis impression de la feuille
(suite)

11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

Enregistre la valeur de AutoRedraw.

blnAutoRedraw = frmBlank.AutoRedraw

Imprime la feuille.

frmBlank.AutoRedraw = True
frmBlank.PrintForm

Restaure AutoRedraw.

frmBlank.AutoRedraw = blnAutoRedraw

Dans ce code, on enregsitre la valeur de AutoRedraw avant dappliquer la mthode


PrintForm. Dans un cas pareil, il est plus sr de dnir AutoRedraw comme True lors de
la cration (en supposant que la feuille ne recevra pas dimage ailleurs dans le
programme). Mais vous pouvez recourir cette sauvegarde de AutoRedraw avant
dimprimer une feuille.
ce
Astu

Crez une procdure de module standard qui reoit une feuille comme argument (les feuilles peuvent tre passes au mme titre que les variables),
stocke la valeur de AutoRedraw, puis imprime la feuille laide de PrintForm. Cette procdure gnraliste vous pargnera de rgler AutoRedraw
pour chaque sortie PrintForm.

Avant toute impression, il convient de vrier labsence derreurs. Limprimante pourrait


tre hors tension, non connecte ou ne plus avoir de papier. Le Listing 13.6 exploite cet
effet linstruction On Error Goto.
Listing 13.6 : On Error Goto permet de grer les erreurs dimpression

>
:

1:
2:
3:
4:
5:
6:
7:
8:

430

Private Sub cmdPrintForm_Click ()


Dim intBtnClicked As Integer
On Error Goto ErrHandler
Dfinit le gestionnaire derreur.
frmAccPayable.PrintForm
Imprime la feuille.
Exit Sub
ErrHandler:
intBtnClicked = MsgBox("Limprimante a un problme", vbExclamation,
"Erreur dimpression")
End Sub

Prog VB6 FM2B Page 431 Lundi, 6. aot 2001 3:38 15

Chapitre 13 : Gestion de limprimante

Info

Vous pouvez imprimer une feuille sans la barre de titre, les icnes de contrles
et autres boutons Windows. Il suft pour cela de dnir comme False les
proprits correspondantes.

Avertir lutilisateur
Il convient, avant de lancer une impression, den avertir lutilisateur. Il a ainsi le temps
dallumer limprimante ou de charger le papier. Une simple bote de dialogue lui
permettra dindiquer que limprimante est prte. Dinopportuns messages derreurs
pourraient autrement apparatre, qui donneraient de votre application une image ngative.
Le Listing 13.7 contient une procdure vnementielle qui peut tre adapte aux
besoins de lapplication particulire. Cette procdure afche la bote de message reproduite en Figure 13.3. Cette bote de message ne dit rien de trs intressant, mais laisse
lutilisateur le temps de prparer limprimante avant le lancement de limpression.
Listing 13.7 : Afche une bote de message avant de lancer limpression

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:

Public Function PrReady() As Boolean


Laisse lutilisateur le temps de se prparer.
Dim intIsReady As Integer

Lutilisateur rpond la bote de message


pour indiquer quil est prt.
intIsReady = MsgBox("Veuillez prparer limprimante", vbOKCancel,
"Impression")

If (intIsReady = vbCancel) Then


PrReady = False
Else
PrReady = True
End If
End Function

Notez que la fonction dclare doit renvoyer une valeur de type Boolean. Lappel de
cette fonction peut donc tre plac partout o un boolen valide est susceptible dtre
reu. Si lutilisateur clique sur le bouton OK, la ligne 12 renvoie la valeur True la
fonction. Si, au contraire, lutilisateur clique sur le bouton Annuler, la ligne 10 renvoie
la valeur False. Le code interprte ces valeurs pour dterminer si limpression doit avoir
lieu ou non.
Le Listing 13.8 contient une procdure vnementielle de bouton de commande qui
peut servir appeler la fonction PrReady().

431

<
:

Prog VB6 FM2B Page 432 Lundi, 6. aot 2001 3:38 15

Partie II

Figure 13.3
La bote de message
permet lutilisateur
dindiquer quil est prt.

Listing 13.8 : Interroge la valeur de PrReady() avant dimprimer

1:
2:
3:
4:
5:
6:
7:

Private Sub cmdPrint_Click()


Imprime seulement si lutilisateur
indique quil est prt.
If PrReady() Then
Appelle ReportPrint
End If
End Sub

La ligne 4 lance limpression si et seulement si lutilisateur rpond la fonction


PrReady() en cliquant sur OK.

En rsum
Vous tes maintenant capable denvoyer une sortie vers limprimante. La gestion de
limpression est lun des aspect les plus fastidieux de Visual Basic, car aucun contrle
spcique nest disponible pour assurer cette tche. Pour obtenir des rsultats satisfaisants, vous devez matriser les diverses mthodes de lobjet Printer. Cette technique
a cependant lavantage de vous laisser paramtrer exactement la sortie.
Les mthodes de Printer sappliquent galement aux objets Form. Vous pouvez ainsi
envoyer du texte, enrichi de divers attributs de police, vers la feuille comme vers
limprimante. Pour limpression de feuilles, la mthode PrintForm est toutefois la plus
indique.
Dans le chapitre suivant, vous dcouvrirez les fonctionnalits graphiques et multimdias
de Visual Basic.

>
:

432

Prog VB6 FM2B Page 433 Lundi, 6. aot 2001 3:38 15

Chapitre 13 : Gestion de limprimante

Questions-rponses
Q Que se passe-t-il quand deux applications envoient une sortie vers limprimante
en mme temps ?
R Heureusement, Windows se charge de grer la priorit des sorties. Le PC ne peut
faire rellement deux choses la fois. Mme si deux applications semblent envoyer
simultanment deux sorties vers limprimante, lune passe toujours avant lautre.
Windows place toutes les tches dimpression dans la le dattente et procde selon
lordre denvoi de ces tches.
Q Ne vaut-il pas mieux envoyer dabord toutes les sorties vers la feuille, puis cette
feuille vers limprimante ?
R Les feuilles simpriment la rsolution de lcran, et non celle de limprimante. La
sortie sera de bien meilleure qualit si elle est envoye directement limprimante.
En outre, les lments devant apparatre sur la sortie imprime ne doivent pas forcment apparatre sur la feuille. Ainsi, une application qui imprime des chques sur du
papier spcial naura aucun besoin de passer par une feuille pour chaque chque. Un
chque, soit dit en passant, nest pour le programme quune page comme une autre,
et ncessite seulement que vous positionniez la sortie conformment aux diffrents
"champs" du chque papier.

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez ces rponses lAnnexe A.

Quiz
1. Comment le programme peut-il dterminer le nombre dimprimantes installes sur
le systme ?
2. Linstruction suivante dclare deux variables. Vrai ou faux ?
Dim intI As Integer, prnP As Printer

3. Quelle proprit permet de spcier lchelle des proprits de lobjet Printer ?

433

<
:

Prog VB6 FM2B Page 434 Lundi, 6. aot 2001 3:38 15

Partie II

4. Comment force-t-on le programme imprimer sur une nouvelle page ?


5. Quelle instruction If spciale permet de vrier le type de donnes dun objet ?
6. Aux procdures ne peuvent tre passes que des variables. Vrai ou faux ?
7. KillDoc peut annuler nimporte quelle sortie imprimante, incluant celles qui ont t
envoyes par Printer.Print et PrintForm. Vrai ou faux ?
8. Quelle rfrence abrge renvoie la feuille courante ?
9. A quelle rsolution la mthode PrintForm imprime-t-elle gnralement ?
10. Quelle valeur faut-il affecter la proprit AutoRedraw avant dimprimer une
feuille ?

Exercices
1. Ecrivez une ligne de code qui imprime votre nom la colonne 32.
2. Chasse au bogue. Yolande narrive pas imprimer convenablement ses rapports.
Elle a appris, il y a des annes, le langage BASIC et vient de se mettre la programmation Windows en Visual Basic. A lpoque, Yolande partait du principe quune
page normale de texte en environnement texte seul contient exactement 66
lignes. Consquemment, elle incrmente une variable compteur chaque fois quelle
imprime une ligne. Lorsque le compteur atteint la valeur 66, on est cens tre la
premire ligne de la page suivante. Maintenant que Yolande est passe Windows,
sa logique ne fonctionne plus. Pourquoi ses rapports ne contiennent-ils plus exactement 66 lignes par page ?
3. Modiez le Listing 13.2, qui recherche une imprimante couleur, en ajoutant une
variable Boolean qui prendra la valeur True si une imprimante couleur est
dcouverte. Si aucune imprimante couleur nest trouve, limprimante par dfaut
reste la mme. La nouvelle variable boolenne indiquera au code subsquent si la
boucle a ou non dcouvert une imprimante couleur. Faites du code une fonction qui
renvoie une valeur Boolean.

>
:

434

Prog VB6 FM2B Page 435 Lundi, 6. aot 2001 3:38 15

Chapitre

14

Image et multimdia
Cercles, ovales, carrs... Ce nest pas un retour lcole maternelle que vous propose ce
chapitre, mais une initiation aux fonctionnalits graphiques de Visual Basic. Vous
dcouvrirez galement ce qui distingue le contrle Image du contrle PictureBox. Enn,
vous apprendrez crer des applications vivantes en intgrant son et vido.
Les ordinateurs daujourdhui sont foncirement multimdias. Le multimdia est impliqu dans tous les types de programmes, des progiciels aux applications familiales, en
passant par les logiciels ducatifs. Plusieurs socits proposent des outils multimdias
supplmentaires pour Visual Basic. Ces produits sont utiles au programmeur qui dveloppe des applications hautement multimdias. Pour les autres, Visual Basic dispose
dun assortiment de contrles multimdias internes tout fait satisfaisant. Ce chapitre
vous propose den dcouvrir lessentiel.
Voici ce que nous tudierons aujourdhui :

les contrles Image et PictureBox ;

pourquoi le contrle PictureBox est plus exible que le contrle Image ;

les mthodes de dessin ;

comment dessiner points, lignes, carrs, cercles et ellipses ;

le contrle multimdia et les priphriques quil supporte ;

comment obtenir le statut dun priphrique multimdia.

435

Prog VB6 FM2B Page 436 Lundi, 6. aot 2001 3:38 15

Partie II

Les contrles Image et PictureBox


Les contrles Image et PictureBox ont essentiellement le mme rle. Ils permettent de
placer des images sur la feuille, partir de chiers graphiques. Ils se distinguent seulement en ceci :

Le contrle PictureBox, plus exible, supporte des mthodes et proprits supplmentaires.

Le contrle Image est plus efcace pour les applications excutes sur des machines
lentes.
Info

Vu la rapidit des ordinateurs modernes, vous nobserverez quexceptionnellement la supriorit de PictureBox sur Image. En fait, moins que vous
nayez programmer pour des machines un peu fatigues (comme en
rencontre encore dans beaucoup dentreprises, sans parler des administrations), le contrle PictureBox est toujours le plus indiqu.

Les contrles Image et PictureBox supportent tous deux les formats graphiques suivants :

chiers bitmaps, dextension .BMP ;

chiers curseurs, dextension .CUR ;

chiers GIF, dextension .GIF extension ;

chiers icnes, dextension .ICO ;

chiers JPEG, dextension .JPEG ou .JPG ;

mtachiers, dextension .WMF ou .EMF ;

chiers dextension .RLE.

Des chiers relevant de plusieurs de ces formats apparaissent dans le dossier Graphics
de Visual Basic que vous avez peut-tre install.
La proprit la plus importante, que se partagent les contrles Image et PictureBox, est
Picture qui contient limage. Lors de la cration, vous pouvez cliquer sur la proprit
Picture de la fentre Proprits pour choisir dans la bote de dialogue Charger une
image un chier portant lune des extensions supportes. Pour afcher une image lors
de lexcution, vous devez, laide de la fonction LoadPicture(), associer le chier
graphique la proprit Picture du contrle concern.
Linstruction suivante affecte une image la proprit Picture dun contrle PictureBox :
picPortrait.Picture = LoadPicture("c:\Photos\Josette.wmf")

>
:

436

Prog VB6 FM2B Page 437 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

On ne peut affecter directement le chemin daccs du chier la proprit Picture.


Cest pourquoi la fonction LoadPicture() est la plus importante pour ce qui a trait aux
images.
Voici le format complet de la fonction LoadPicture() :
LoadPicture([GraphicFileName] [,varSize] [,varColorDepth], [varX, varY])

Le premier argument, soit le nom du chier, est optionnel. Si vous appelez la fonction
LoadPicture() sans spcier de nom de chier, Visual Basic efface limage du contrle.
Le Tableau 14.1 prsente les constantes nommes qui peuvent tre employes pour
largument varSize, si du moins vous le spciez. Cet argument dnit la taille des icnes
et curseurs. varSize est important, car les utilisateurs se servent souvent des paramtres
dafchage du Panneau de conguration pour xer la taille des icnes et curseurs. Largument varSize permet votre programme dexploiter ces valeurs systme.
Tableau 14.1 : Constantes nommes pour largument varSize de la fonction
LoadPicture()
Constante nomme

Valeur

Description

vbLPSmall

Petite icne systme (varie selon la rsolution dcran).

vbLPLarge

Grande icne systme (varie selon la rsolution dcran).

vbLPSmallShell

Dtermin par les paramtres dafchage du Panneau de


conguration. Longlet Apparence prsente les lments
qui seront affectes par cette valeur varSize.

vbLPLargeShell

Dtermin par les paramtres dafchage du Panneau de


conguration. Longlet Apparence prsente les lments
qui seront affectes par cette valeur varSize.

vbLPCustom

Les arguments varX et varY dnissent la taille.

Le Tableau 14.2 prsente les valeurs que peut prendre largument optionnel varColorDepth (profondeur de couleur pour les icnes et les curseurs).
Les arguments varX et varY sont requis si vous utilisez les valeurs de taille vbLPSmallShell ou vbLPLargeShell.
Sur la feuille, les contrles Image et PictureBox agissent diffremment, mme si vous
leur attribuez la mme taille et leur affectez le mme chier graphique. Pour le contrle
Image, vous devez dnir la proprit Stretch comme True avant de pouvoir rgler les

437

<
:

Prog VB6 FM2B Page 438 Lundi, 6. aot 2001 3:38 15

Partie II

Tableau 14.2 : Constantes nommes pour largument varColorDepth


de la fonction LoadPicture()
Named Constant

Value

Description

vbLPDefault

Meilleure adquation

vbLPMonochrome

2 couleurs

vbLPVGAColor

16 couleurs

vbLPColor

256 couleurs

proprits Width et Height. Autrement, la taille du contrle sajusterait celle de


limage, et les proprits Width et Height se modieraient automatiquement. Lorsque
vous placez un contrle PictureBox sur la feuille, cest limage qui sajuste automatiquement aux mesures du contrle. Ainsi, le contrle PictureBox changera toujours
la taille de son image pour rpondre vos spcications, alors que le contrle Image
modie ces mmes valeurs tant que sa proprit Stretch nest pas True.

ce
Astu

La fonction LoadPicture() ne sapplique pas quaux contrles Image et


PictureBox, mais galement aux feuilles. Au lieu dune couleur, vous pouvez
ainsi affecter votre feuille une image darrire-plan. Cest ce que fait
linstruction suivante :
frmCheck.Picture = LoadPicture("Check.wmf")

Vous devez spcier le chemin daccs complet du chier graphique affect.


Ce qui peut donner des instructions assez longues, par exemple :
frmCheck.Picture = LoadPicture("d:\Program Files\Microsoft Visual
Studio\Common\Graphics\metafile\business\Check.wmf")

La Figure 14.1 montre la feuille rsultante, avec labels et boutons de


commande. Limage occupe tout larrire-plan. (Pour affecter une image
darrire-plan lors de la cration, utilisez la proprit Picture.)

Les contrles de dessin


La Bote outils comprend deux outils de dessin :

>
:

Le contrle Line. Trace une droite entre les deux points que vous spciez.

Le contrle Shape. Trace la forme spcie dans les valeurs de proprits.

438

Prog VB6 FM2B Page 439 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

Figure 14.1
Une image peut tre
affecte larrireplan de la feuille.

Le contrle Line
Le contrle Line est utile plusieurs gards, mme dans une application qui nexploite
pas dimages. Les lignes permettent notamment de mettre en valeur les points importants dune feuille. La Figure 14.2 illustre lemploi de lignes pour une feuille qui safche chaque dmarrage dune application.
Figure 14.2
Les lignes aident
mettre en relief
les informations
de la feuille.

Lorsque vous double-cliquez sur le contrle Line, Visual Basic afche sur la feuille une
ligne prsentant chaque extrmit des poignes de dimensionnement. Vous pouvez
faire glisser ces poignes pour modier la longueur de la ligne, et les dplacer la
verticale pour modier langle. A mesure que vous modiez la taille et les coordonnes
de la ligne, Visual Basic actualise les valeurs de proprits correspondantes.

439

<
:

Prog VB6 FM2B Page 440 Lundi, 6. aot 2001 3:38 15

Partie II

Voici les proprits importantes pour le contrle Line :

BorderColor dnit la couleur de la ligne.

BorderStyle dnit le format de la ligne, laide des valeurs prsentes au


Tableau 14.3 et illustres par la Figure 14.3.

Figure 14.3
La proprit
BorderStyle
dtermine laspect
de la ligne.

BorderWidth dnit lpaisseur (en points) de la ligne.

X1, Y1, X2 et Y2 dterminent les coordonnes des deux extrmits de la ligne.


A chaque point de la feuille correspondent deux valeurs, et la ligne est dnie par
deux points (les points entre lesquels elle apparat).
ntion
Atte

Pour que BorderStyle puisse sappliquer la ligne, BorderWidth doit


avoir la valeur 1.

Le contrle Shape
Alors que le contrle Line ne trace que des lignes simples, le contrle Shape permet de
dessiner des formes diverses. Cest la proprit Shape qui dnit cette forme. En voici
les valeurs possibles :

>
:

0-Rectangle dessine un rectangle.

1-Square dessine un carr.

440

Prog VB6 FM2B Page 441 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

3-Circle dessine un cercle.

4-Rounded Rectangle dessine un rectangle aux coins arrondis.

5-Rounded Square dessine un carr aux coins arrondis.

Tableau 14.3 : Valeurs de la proprit BorderStyle du contrle Line


Constante nomme

Description

0-Transparent

Larrire-plan de la feuille apparat travers la ligne.

1-Solid

Ligne pleine.

2-Dash

Ligne divise en petits tirets.

3-Dot

Ligne pointille.

4-Dash-Dot

Chaque tiret est suivi dun point.

5-Dash-Dot-Dot

Chaque tiret est suivi de deux points.

Le Tableau 14.4 prsente les autres proprits susceptibles daffecter les diffrentes
formes traces avec le contrle Shape.
Tableau 14.4 : Proprits affectant les formes dessines avec le contrle Shape
Proprit

Description

BackStyle

Si la valeur est True, la forme sera transparente et laissera voir larrire-plan


de la feuille.

BorderColor

Dnit la couleur de la bordure.

BorderStyle

Dnit le style de la bordure (valeurs du Tableau 14.3).

BorderWidth

Dnit lpaisseur de la bordure (en twips).

FillColor

Dnit la couleur du motif de remplissage (spci par la proprit


FillStyle).

FillStyle

Dnit le motif de remplissage. La Figure 14.4 illustre les huit motifs


disponibles.

Height

Spcie le point le plus haut de la forme.

Width

Spcie laxe le plus large de la forme.

441

<
:

Prog VB6 FM2B Page 442 Lundi, 6. aot 2001 3:38 15

Partie II

Figure 14.4
Les huit motifs
disponibles pour
FillStyle.

Pour illustrer le fonctionnement du contrle Shape et de ses diverses proprits, rien de


mieux quune petite application. La Figure 14.5 montre le rsultat de lapplication que
vous allez crer. Il sagit de slectionner, dans deux zones de liste, une forme et un motif
de remplissage. La forme afche en haut de la feuille se met jour pour reter les choix
effectus.

Figure 14.5
Slectionnez une
forme et un motif,
et voyez le rsultat.

>
:

442

Prog VB6 FM2B Page 443 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

Suivez ces tapes :


1. Crez une nouvelle application.
2. Placez sur la feuille les contrles indiqus au Tableau 14.5.
3. Ajoutez le code du Listing 14.1 pour initialiser lexcution les deux zones de liste.
4. Lancez lapplication et essayez diverses combinaisons de formes et de motifs
laide des zones de liste.
Tableau 14.5 : Contrles et proprits de la feuille
Contrle

Proprit

Valeur

Feuille

Name

frmShape

Feuille

Height

7005

Feuille

Left

105

Feuille

Top

105

Feuille

Width

7965

Option de menu 1

Name

mnuFile

Option de menu 1

Caption

&Fichier

Option de menu 2

Name

mnuFileExit (un

Option de menu 2

Caption

&Quitter

Shape

Name

shpSample

Shape

Height

2025

Shape

Left

1710

Shape

Top

720

Shape

Width

4560

Label 1

Name

lblShape

Label 1

Caption

Forme

Label 1

Height

420

Label 1

Left

2160

niveau seulement)

443

<
:

Prog VB6 FM2B Page 444 Lundi, 6. aot 2001 3:38 15

Partie II

Tableau 14.5 : Contrles et proprits de la feuille (suite)


Contrle

Proprit

Valeur

Label 1

Top

3390

Label 1

Width

1215

Label 2

Name

lblPattern

Label 2

Caption

Motif

Label 2

Height

420

Label 2

Left

5040

Label 2

Top

3360

Label 2

Width

1215

List box 1

Name

lstShape

Zone de liste 1

Height

1425

Zone de liste 1

Left

1560

Zone de liste 1

Top

3960

Zone de liste 1

Width

2010

Zone de liste 2

Name

lstPattern

Zone de liste 2

Height

1425

Zone de liste 2

Left

4680

Zone de liste 2

Top

3960

Zone de liste 2

Width

2010

Listing 14.1 : Initialise les zones de liste et rpond aux slections de lutilisateur

>
:

1:
2:
3:
4:
5:
6:
7:

444

Private Sub Form_Load()


Initialise la liste
lstShape.AddItem "0 lstShape.AddItem "1 lstShape.AddItem "2 lstShape.AddItem "3 lstShape.AddItem "4 -

droulante Forme.
Rectangle"
Square"
Oval"
Circle"
Rounded Rectangle"

Prog VB6 FM2B Page 445 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:

lstShape.AddItem "5 - Rounded Square"


Initialise la liste
lstPattern.AddItem "0
lstPattern.AddItem "1
lstPattern.AddItem "2
lstPattern.AddItem "3
lstPattern.AddItem "4
lstPattern.AddItem "5
lstPattern.AddItem "6
lstPattern.AddItem "7

droulante Motif.
- Solid"
- Transparent"
- Horizontal Line"
- Vertical Line"
- Upward Diagonal"
- Downward Diagonal"
- Cross"
- Diagonal Cross"

Dfinit la premire valeur de chaque liste comme valeur par dfaut.


lstShape.ListIndex = 0
lstPattern.ListIndex = 0
End Sub
Private Sub lstPattern_Click()
Change le motif en fonction de la slection.
shpSample.FillStyle = lstPattern.ListIndex
End Sub
Private Sub lstShape_Click()
Change la forme en fonction de la slection.
shpSample.Shape = lstShape.ListIndex
End Sub
Private Sub mnuFileExit_Click()
End
End Sub

ntion
Atte

Ni le contrle Line ni le contrle Shape ne supportent les procdures vnementielles.

Les mthodes de dessin


Les fonctionnalits de dessin de Visual Basic ne se limitent naturellement pas aux
contrles Line et Shape. Il est possible de manipuler individuellement les pixels de la
feuille pour dessiner une image point par point. La mthode PSet qui sapplique aux
feuilles, permet de dessiner des lignes, des cadres et des cercles sans laide des contrles.
Les lignes et formes dessines en cours dexcution par les contrles Line et Shape ne
donnent pas de trs bons rsultats. Les mthodes de dessin offrent beaucoup plus de
prcision.

445

<
:

Prog VB6 FM2B Page 446 Lundi, 6. aot 2001 3:38 15

Partie II

Info

Les mthodes de dessin peuvent tre appliques aux contrles de la feuille


aussi bien qu la feuille elle-mme.

La mthode PSet afche ou masque individuellement les pixels de la feuille. Voici le


format de PSet :
frmName.PSet [Step] (intX, intY) [color]

A moins que lon ne spcie une autre chelle pour les proprits ScaleX et ScaleY,
lintersection ligne/colonne 0, 0 (soit intX et intY) correspond au premier pixel du coin
suprieur gauche de la feuille. Linstruction suivante provoque lafchage du pixel situ
100 pixels droite et 200 pixels en bas de lorigine (coin suprieur gauche) :
frmDraw.PSet (100, 200)

Affiche un pixel.

Le pixel afch prend par dfaut la couleur spcie de la proprit ForeColor de la


feuille (ou du contrle PictureBox). On peut dnir une nouvelle couleur laide dune
valeur hexadcimale, ou de lune de ces constantes nommes vbBlack, vbRed, vbGreen,
vbYellow, vbBlue, vbMagenta, vbCyan et vbWhite.
Linstruction suivante masque le pixel situ la position (100, 200) en lui affectant la
couleur employe pour larrire-plan de la feuille :
frmDraw.PSet (100, 200) frmDraw.BackColor

Masque un pixel.

Si cette mthode PSet succdait la suivante, un autre pixel apparatrait la position


(300, 350) :
frmDraw.PSet (300, 350)

Affiche un pixel

Loption Step de la mthode PSet change la position des pixels subsquents. Aprs le
premier appel de la mthode PSet, loption Step rend relatives les valeurs intX et intY
de la prochaine mthode PSet. Ainsi, si lon avait ajout la mthode PSet prcdente
loption Step, le pixel serait apparu 300 pixels droite et 350 pixels en bas du premier
pixel dessin. Cest justement ce que fait linstruction suivante :
frmDraw.PSet Step (300, 350)

Position relative.

On peut galement tracer des lignes en incluant PSet dans une boucle :
For intX = 1 to 100

frmDraw.PSet (intX, 250)


Next intX

>
:

446

Prog VB6 FM2B Page 447 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

ntion
Atte

Ne spciez jamais de coordonnes qui dpassent les limites relles de la


feuille. Cela gnrerait une erreur dexcution.

Plutt que de tracer une ligne pixel par pixel, ou laide dune boucle, utilisez la
mthode Line. Elle est faite pour a. En voici le format :
frmName.Line [Step] (intX1, intY1) - [Step] (intX2, intY2), [Color] [B][F]

Les deux paires de coordonnes dnissent les pixels de dbut et de n de la ligne.


Loption Step transforme les coordonnes quelle prcde en coordonnes relatives,
cest--dire relatives au dernier point dessin.
La mthode suivante trace une ligne du pixel 100, 100 au pixel 150, 150 :
frmDraw.Line (100, 100) - (150, 150)

Comme dans la mthode PSet, la valeur optionnelle Color permet de spcier une
couleur, laide dune valeur hexadcimale ou dune constante nomme. Si vous ne
spciez pas de couleur, Visual Basic emploie pour la ligne la couleur darrire-plan de
la feuille.
Loption B permet de dessiner un cadre avec la mthode Line :
frmDraw.Line (100, 100) - (150, 150), , B

Les deux virgules doivent imprativement tre incluses, mme si Color nest pas spci.
Cela an que Visual Basic reconnaisse B comme loption "cadre". Les deux paires de
coordonnes spcient la position des coins suprieur gauche et infrieur droit du cadre.

Info

Les paires de coordonnes dnissent les extrmits de la lignes et les coins


opposs du cadre. Les lignes peuvent tre diriges vers le haut comme vers
le bas ; la premire paire de coordonnes peut dsigner un point situ en bas
ou droite de la seconde paire de coordonnes.

Si loption F est spcie, le cadre sera rempli de la mme couleur que celle qui a t
dnie pour le contour :
frmForm.Line (35, 40) - (150, 175), vbGreen, BF

Cadre rempli de vert.

Si vous dessinez un cadre plus grand que la feuille, Visual Basic le tronque et afche ce
qui est afchable. Mme si vous agrandissez la feuille, le cadre ne sera pas afch en
entier. Il faut le redessiner.

447

<
:

Prog VB6 FM2B Page 448 Lundi, 6. aot 2001 3:38 15

Partie II

Le Listing 14.2 contient une procdure vnementielle de bouton de commande. Cette


procdure dessine sur la feuille une srie de cadres, depuis le coin suprieur droit
jusquau coin infrieur gauche. La Figure 14.6 montre le rsultat.
Listing 14.2 : Dessin dun motif laide de la mthode Line, option "cadre"

1: Private Sub cmdBoxes_Click()


2:
Dim intStartX As Integer
3:
Dim intStartY As Integer
4:
Dim intLastX As Integer
5:
Dim intLastY As Integer
6:
Dim intCtr As Integer
7:
8:
intStartX = 0
9:
intStartY = 0
10:
intLastX = 1000
11:
intLastY = 800
12:
13:
For intCtr = 1 To 20
14:
frmBoxes.Line (intStartX, intStartY)-(intLastX, intLastY), , B
15:
16:
prpare la position des prochains cadres.
17:
intStartX = intStartX + 400
18:
intStartY = intStartY + 400
19:
intLastX = intLastX + 400
20:
intLastY = intLastY + 400
21:
Next intCtr
22:
23: End Sub

Figure 14.6
La mthode Line
permet aussi
de dessiner
des cadres.

>
:

448

Prog VB6 FM2B Page 449 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

Il existe galement des mthodes pour dessiner des formes courbes. Voici le format de la
mthode Circle, qui permet de dessiner des cercles et des ellipses :
frmDraw.Circle [Step] (intX, intY), sngRadius, [Color], , , ,
sngAspect

ition
Dfin

Une ellipse est un cercle allong (ce que lon appelle couramment, et tort,
un ovale).

Info

Dans le format indiqu ci-haut, les quatre virgules correspondent des


arguments de Circle que nous ne prsenterons pas ici. Ces virgules doivent
cependant tre incluses si vous spciez largument sngAspect.

Un cercle nayant pas dextrmits, les coordonnes intX et intY dsignent le centre.
sngRadius spcie le rayon (en pixels, sauf valeur contraire de ScaleMode). Le mot cl
optionnel Step dtermine si les coordonnes du centre sont relatives un autre objet
dessin.
Linstruction suivante dessine un cercle dont le centre se situe 300 pixels du bord gauche
de la feuille et 200 pixels du bord suprieur, et dont le rayon mesure 100 pixels :
frmDraw.Circle (300, 200), 100

Tant quune autre valeur Color nest pas spcie, la mthode Circle emploie la
couleur darrire-plan de la feuille.
Pour dessiner une ellipse, il faut spcier la valeur de largument sngAspect, qui
dtermine le ratio daspect. En fonction de la valeur, le cercle sera tir selon laxe horizontal X (valeur sngAspect infrieure 1), ou dans laxe vertical Y (valeur sngAspect
suprieure 1). Une valeur sngAspect de 1 donne un cercle parfait.
ition
Dfin

Le ratio daspect dnit la forme de lellipse. Il sagit en fait dune mesure


hauteur/largeur qui partirait du centre. Le ratio daspect multiplie le rayon
dans chaque direction. Un ratio daspect de 4, par exemple, donne une
ellipse quatre fois plus haute que large ; un ratio daspect de 4/10/2 (ou
.2) donne une ellipse cinq fois plus large que haute.

Linstruction suivante dessine sur la feuille lellipse reproduite en Figure 14.7 :


frmDraw.Circle (1000, 1250), 400, , , , (4 / 10 / 2)
frmDraw.Circle (1750, 1250), 400, , , , 4

449

<
:

Prog VB6 FM2B Page 450 Lundi, 6. aot 2001 3:38 15

Partie II

Figure 14.7
Le ratio daspect
dtermine la forme
de lellipse.

Ratio d'aspect de 0,2

Ratio d'aspect de 4

Le contrle multimdia
Malgr sa puissance, le contrle multimdia est trs simple dutilisation. Il ncessite un
minimum de code. Le contrle multimdia permet dincorporer des objets correspondant aux priphrique multimdias simples suivants :

lecteur de CD audio (CDAudio) ;

lecteur de DAT (DAT) ;

vido numrique (DigitalVideo) ;

overlay (Overlay) ;

scanner (Scanner) ;

magntoscope (Vcr) ;

lecteur de vidodisques (Videodisc) ;

autres priphriques avec pilote fourni (Other).


Info

Entre parenthses gurent les valeurs que peut prendre la proprit Devidu contrle multimdia (voir plus loin).

ceType

Visual Basic supporte aussi les objets reprsentant les priphriques multimdias
composites suivants :
lecteur/enregistreur audio (chiers .WAV) ;

>
:

450

Prog VB6 FM2B Page 451 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

squenceur MIDI (chiers .MID) ;

lecteur/enregistreur vido (chiers .AVI).


Info

Les priphriques multimdias simples nexigent pas quun chier soit associ
au contrle. Les CD audio, par exemple, ne requirent pas de chier spcique. Les priphriques multimdias composites ncessitent un chier
externe. Par exemple, un lecteur audio doit lire un chier .WAV prcis.

Evidemment, le PC sur lequel sexcute votre application multimdia doit reconnatre les priphriques multimdias standards pour le son, les images, la vido, etc., ainsi
que disposer dun lecteur de CD-ROM (ou priphrique compatible, tel quun DVD).

Exploitation du contrle multimdia


Comme le contrle Common Dialog, le contrle multimdia nest pas inclus dans la
Bote outils standard. Il faut donc lajouter. Appuyez sur Ctrl-T pour ouvrir la bote de
dialogue Composants, puis slectionnez loption Microsoft Multimedia Control 6.0.
Lorsque vous placez le contrle multimdia sur la feuille, un jeu de boutons apparat,
semblables ceux que lon trouve sur les magntoscopes ou radiocassettes (voir
Figure 14.8).
Figure 14.8
Le contrle
multimdia
sur la feuille.

Avance
Suivant
(Step)
(Next)
Enregistrer
Pause
(Record)
(Pause)

Prcdent
(Prev)

Ejecter
(Eject)

Arrt
Lecture
(Stop)
(Play)
Retour
(Back)

451

<
:

Prog VB6 FM2B Page 452 Lundi, 6. aot 2001 3:38 15

Partie II

Le contrle multimdia est un contrle intelligent qui reconnat les possibilits du


priphrique qui lui est associ. Ainsi, le bouton Lecture ne sera pas disponible si vous
avez eject le CD. Naturellement, vous pouvez choisir les boutons qui apparaissent, par
le biais de diverses proprits. Par exemple, les CD audio ne pouvant tre enregistrs, il
convient de masquer le bouton Enregistrer, plutt que de simplement le dsactiver.
Info

Le contrle multimdia renseigne votre application sur le priphrique et


ses paramtres courants. Lapplication peut ainsi afcher le nombre de
pistes contenues sur un CD audio.

Le contrle multimdia contient une liste de priphriques aux boutons prslectionns,


de sorte que vous navez pas dnir la conguration de chaque mdia spcique.
Le contrle multimdia exploite la proprit DeviceType qui, lorsquon lui affecte la
valeur correspondant au priphrique dsir (par exemple CDAudio pour faire du
contrle multimdia un lecteur CD), afche automatiquement les boutons requis. Toutes
les valeurs possibles de DeviceType ont t donnes dans la liste des priphriques
supports, au dbut de la section prcdente. Il suft dindiquer au contrle multimdia
ce que vous voulez quil soit, et il se congure lui-mme.
Le contrle multimdia dispose lui aussi de ses Pages de proprits (que lon obtient en
double-cliquant sur la proprit (Personnalis) dans la fentre Proprits), qui facilitent le rglage. Ainsi, longlet Contrles, vous pouvez slectionner les boutons qui
doivent apparatre, ainsi que les activer ou les dsactiver (voir Figure 14.9).
Figure 14.9
Les Pages de
proprits du contrle
multimdia facilitent
le rglage des diverses
options, par exemple
les boutons.

Info

>
:

452

Lorsque vous placez le contrle multimdia sur la feuille, les boutons sont
tous afchs, mais tous dsactivs. Ils le restent tant que vous ne slectionnez
pas une valeur DeviceType.

Prog VB6 FM2B Page 453 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

Lecteur de CD audio
Pour exploiter un CD audio depuis une application Visual Basic, il suft de placer sur
une feuille le contrle multimdia, et den rgler la proprit DeviceType comme
CDAudio. Le jeu de boutons adquat apparat automatiquement : vous avez votre lecteur
CD. Libre vous dajouter quelques dtails, par exemple un label qui afche les pistes.
Le contrle multimdia se met jour chaque fois quun vnement StatusUpdate a lieu.
Par exemple, pour un DeviceType CDAudio, StatusUpdate suit chaque changement de
piste, ainsi que le dbut et larrt de la lecture. Le label des pistes pourra ainsi tre
adquatement initialis par une procdure vnementielle de StatusUpdate.

Le langage de commandes du contrle multimdia


Le contrle multimdia supporte son propre langage de commandes miniature (rien voir,
bien sr, avec un vrai langage de programmation). La proprit Command peut prendre pour
valeurs des commandes en un seul mot. Le Tableau 14.6 dcrit ces commandes.
Tableau 14.6 : Valeurs de la proprit Command du contrle multimdia
Command

Description

Back

Recule dune piste.

Close

Ferme le priphrique.

Eject

Ejecte le Cd du lecteur de CD-ROM.

Next

Passe au dbut de la piste suivante (au dbut de la dernire piste si cest la


piste en cours de lecture).

Open

Ouvre le priphrique.

Pause

Suspend la lecture.

Play

Lance la lecture.

Prev

Revient au dbut de la piste lue. Si deux commandes Prev ont lieu en moins
de trois secondes, revient au dbut de la piste prcdente (au dbut de la
premire piste si cest la piste en cours de lecture).

Record

Initialise lenregistrement.

Save

Enregistre le chier ouvert.

453

<
:

Prog VB6 FM2B Page 454 Lundi, 6. aot 2001 3:38 15

Partie II

Tableau 14.6 : Valeurs de la proprit Command du contrle multimdia (suite)


Command

Description

Seek

Recherche une piste vers lavant ou vers larrire. (On prfre en gnral
Next et Prev, en raison de lambigut directionnelle de Seek.)

Stop

Arrte la lecture.

Step

Avance dune piste.

Le code peut modier la valeur de la proprit Command en cours dexcution, et le


contrle multimdia rpondra adquatement.
ce
Astu

Le contrle multimdia peut se passer totalement des interventions de


lutilisateur. Il suft de masquer tous les boutons et de piloter le priphrique depuis le code, laide de la proprit Command.

Cration dun lecteur de CD


Maintenant que nous vous avons prsent le contrle multimdia, vous allez lutiliser
pour concevoir un lecteur de CD audio. Crez un nouveau projet et adaptez feuille,
contrles et proprits aux spcications du Tableau 14.7.
Tableau 14.7 : Proprits et valeurs utiliser pour la feuille du contrle
multimdia

>
:

Contrle

Proprit

Valeur

Feuille

Name

frmCD

Feuille

Caption

Lecteur CD

Feuille

Height

3600

Feuille

Width

4800

Label 1

Name

lblCD

Label 1

Alignment

2-Center

Label 1

BorderStyle

1-Fixed Single

Label 1

Caption

Lecteur CD

454

Prog VB6 FM2B Page 455 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

Tableau 14.7 : Proprits et valeurs utiliser pour la feuille du contrle


multimdia (suite)
Contrle

Proprit

Valeur

Label 1

Font style

BoldUnderline

Label 1

Font size

18

Label 1

Height

495

Label 1

Left

1320

Label 1

Top

480

Label 1

Width

1935

Label 2

Name

lblTrack

Label 2

Alignment

1-Right Justify

Label 2

Caption

Piste :

Label 2

Font style

Bold

Label 2

Font size

12

Label 2

Height

255

Label 2

Left

1200

Label 2

Top

2280

Label 2

Width

1215

Label 3

Name

lblTrackNum

Label 3

Caption

(vide)

Label 3

Font style

Bold

Label 3

Font size

12

Label 3

Height

375

Label 3

Left

2520

Label 3

Top

2280

455

<
:

Prog VB6 FM2B Page 456 Lundi, 6. aot 2001 3:38 15

Partie II

Tableau 14.7 : Proprits et valeurs utiliser pour la feuille du contrle


multimdia (suite)
Contrle

Proprit

Valeur

Label 3

Width

615

Contrle multimdia

Name

mmcCD

Contrle multimdia

DeviceType

CDAudio

Une fois les contrles placs et congurs, saisissez le code du Listing 14.3.
Listing 14.3 : Gestion du lecteur CD

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:

Private Sub Form_Load()


Ouvre le CD.
mmcCD.Command = "Open"
End Sub
Private Sub Form_Unload(Cancel As Integer)
Rinitialise le contrle multimdia.
mmcCD.Command = "Close"
End Sub
Private Sub mmcCD_StatusUpdate()
Met jour le label de pistes.
lblTrackNum.Caption = mmcCD.Track
End Sub

Au premier chargement de la feuille, lapplication ouvre le lecteur CD. La ligne 8 vide


le priphrique de la mmoire avant que lapplication ne se ferme (au mme titre que les
chiers, il faut toujours refermer un priphrique multimdia). La ligne 13 met jour le
numro de piste chaque changement dtat (StatusUpdate) du CD. La valeur de la
proprit UpdateInterval du contrle multimdia spcie lintervalle entre chaque mise
jour (la valeur par dfaut est 1000, cest--dire mille millisecondes).
La Figure 14.10 montre le rsultat. Lapplication est simple, mais elle marche ! Vous
pourriez lamliorer encore en ajoutant une option de menu Fichier, Quitter, ainsi quun
gestionnaire derreurs (voir section suivante).
Info

>
:

456

Certains des boutons dsactivs, tels le bouton Enregistrer, sont absolument


inutiles dans cette application. Vous pouvez les cacher pour faire un peu de
mnage.

Prog VB6 FM2B Page 457 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

Figure 14.10
Ce lecteur CD tout
fait fonctionnel ne
vous a pas cot
beaucoup de peine !

ce
Astu

Vous ne matrisez pas seulement la fonction lecteur CD du contrle multimdia, mais aussi tous les autres priphriques supports ! Comme vous le
verrez dans les sections suivantes, les autres types de priphriques fonctionnent de la mme manire.

Notification et gestion derreurs


Lors de lexcution du contrle multimdia, plusieurs vrications derreurs sont effectues, an que la lecture se fasse sans accrocs.
La proprit Notify dclenche un vnement Done chaque fois que la commande suivante
du contrle multimdia sexcute correctement. Pour lancer automatiquement une
commande lorsque la commande prcdente est termine, vous pouvez dnir la proprit
Notify comme True. Dnie comme True, la proprit Wait garantit que le contrle ne
renviendra pas lapplication avant que la commande prcdente du contrle multimdia
ne se soit correctement excute. Le code suivant permet de vrier si une erreur a eu lieu
aprs envoi dune commande :
If (frmCD.mmcCD.Error) then

intMsg = MsgBox("Problme avec le CD", vbCritical)


Else

Le code continue et lit le CD.

Mieux vaut ne pas placer dinstruction On Error Goto au dbut de la procdure, car
vous ne pourriez alors savoir quelle commande prcise a gnr lerreur. En faisant
suivre chaque commande dune routine de vrication derreur, vous assurez un
meilleur suivi des problmes et de leur signication.
Le Tableau 14.8 prsente plusieurs valeurs de la proprit Mode. La proprit Mode
permet dinterroger divers tats, ou modes, du contrle multimdia lors de lexcution
de lapplication.

457

<
:

Prog VB6 FM2B Page 458 Lundi, 6. aot 2001 3:38 15

Partie II

Tableau 14.8 : Valeurs de la proprit Mode du contrle multimdia


Constantes nommes

Description

mciModeNotOpen

Priphrique non ouvert

mciModeStop

Priphrique arrt

mciModePlay

Priphrique en cours de lecture

mciModeRecord

Priphrique en cours denregistrement

mcuModeSeek

Priphrique en cours de recherche

mciModePause

Priphrique mis en pause

mciModeReady

Priphrique prt

Cration dun lecteur WAV


Les chiers WAV sont des chiers stocks sur lordinateur. Pour les lire, un priphrique multimdia composite est requis. Les priphriques multimdias composites
obtiennent les donnes dun chier, et non dune source extrieure telle quun CD
audio. Votre PC contient beaucoup de chiers WAV. Cest de ce type de chiers que le
Panneau de conguration se sert pour associer des sons aux vnements systme.
Cette section vous explique comment crer un lecteur de chier WAV. Vous pourrez ainsi
mettre en uvre les valeurs de Mode prsentes au Tableau 14.8. Nous nous servirons pour
cette application du chier Windows TADA.WAV, situ dans le dossier Windows\Media.
Sil est toujours ouvert, enregistrez puis fermez le projet lecteur CD. Il servira de base
ce nouveau projet. Enregistrez-le donc sous un nouveau nom, puis modiez-le en
suivant ces tapes :
1. Renommez le label du haut lblWav et dnissez la proprit Caption comme
Lecteur WAV. Dnissez Width comme 2415.
2. Renommez la feuille frmWav et dnissez sa Caption comme Lecteur audio WAV.
3. Donnez au contrle multimdia le nom mmcWav et changez sa proprit DeviceType
en WaveAudio. Vous pouvez changer les autres proprits depuis la fentre Proprits
ou dans les Pages de proprits. Affectez Filename le chemin daccs du chier
TADA.WAV.
4. Les chiers WAV ne contiennent pas de pistes, mais le label va quand mme nous
servir. Renommez le label de gauche (lblTrack) en lblStatus et dnissez sa
proprit Caption comme Etat.

>
:

458

Prog VB6 FM2B Page 459 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

5. Renommez le label de droite (lblTrackNum) en lblStatusValue et videz la Caption.


Dnissez une Width de 2565.
6. Ajoutez deux labels en-dessous des prcdents, et attribuez-leurs les mmes proprits Width et Font. (Vous pouvez les copier pour crer un jeu de tableaux de labels.)
Nommez le premier lable lblFile ( moins que vous nayez cr un tableau de
contrle) et dnissez sa Caption comme Fichier :. Il faudra sans doute lagrandir.
7. Nommez le label de droite lblFileValue ( moins que vous nayez cr un tableau
de contrle). Laissez la proprit Caption vide. Centrez les labels sous les boutons.
Le rsultat devrait ressembler la Figure 14.11.
Figure 14.11
Notre lecteur WAV est
presque termin.

Modiez la procdure vnementielle Form_Load() comme ceci :


Private Sub Form_Load ()

Ouvre le lecteur WAV.

mmcWAV.Command = "Open"
End Sub

Vous devez galement modier la procdure vnementielle Form_Unload() :


Private Sub Form_Unload(Cancel As Integer)

Referme le lecteur WAV.

mmcWAV.Command = "Close"

Unload Me Dcharge aussi la feuille.


End Sub

Excutez lapplication. Lorsque vous cliquez sur le bouton Lecture, un son se fait entendre.
Cliquez sur Retour pour lentendre de nouveau.
Le lecteur WAV nest pas encore tout fait termin. Les labels situs sous les boutons
nafchent pas encore ltat ni le nom du chier. Initialisez ces labels dans la procdure
vnementielle StatusUpdate() (voir Listing 14.4). Vous devrez utiliser les valeurs de Mode.

459

<
:

Prog VB6 FM2B Page 460 Lundi, 6. aot 2001 3:38 15

Partie II

Listing 14.4 : Initialise les labels avec les informations dtat

1: Private Sub mciWAV_StatusUpdate()


2:
Affiche ltat.
3:
If mmcWAV.Mode = mciModeNotOpen Then
4:
lblStatusValue(0).Caption = "Non prt"
5:
ElseIf mmcWAV.Mode = mciModeStop Then
6:
lblStatusValue(0).Caption = "Arrt"
7:
ElseIf mmcWAV.Mode = mciModePlay Then
8:
lblStatusValue(0).Caption = "Lecture"
9:
ElseIf mmcWAV.Mode = mciModeRecord Then
10:
lblStatusValue(0).Caption = "Enregistrement"
11:
ElseIf mmcWAV.Mode = mciModePause Then
12:
lblStatusValue(0).Caption = "Pause"
13:
ElseIf mmcWAV.Mode = mciModeReady Then
14:
lblStatusValue(0).Caption = "Prt"
15:
End If
16:
Affiche le nom du fichier lu.
17:
lblStatusValue(1).Caption = mmcWAV.FileName
18: End Sub

ntion
Atte

La procdure vnementielle StatusUpdate prsuppose que vous ayez cr


un tableau de contrle pour les labels. Si vous ne lavez pas fait, modiez le
nom des labels selon les noms que vous avez employs. Sinon, lapplication
ne pourra sexcuter correctement.

Lancez le lecteur WAV pour tester lapplication. Notez ceci :

Le lecteur nafche pas de bouton Arrt, sauf pendant la brve lecture du chier. Le
chier sarrte de lui-mme. Sil tait plus long, vous auriez la possibilit de larrter.

Le chier est lu une fois, puis le lecteur se positionne la n du chier. Vous pouvez
cliquer sur le bouton Retour pour lentendre de nouveau.
Le bouton Enregistrer est actif. Vous pouvez enregistrer au dbut ou la n du
chier, puis rembobiner pour entendre le rsultat.

Lecture de fichiers vido


Lire un chier vido nest trs diffrent de lire un chier audio. Le lecteur vido du
contrle multimdia tant un priphrique composite, vous devez imprativement
fournir un nom de chier. Vous devez galement congurer le contrle multimdia pour
la lecture vido.
En fait, le contrle multimdia exige un petit peu plus de vous quand il sagit de lire des
chiers vidos. En plus de la simple suite de boutons, il faut aussi un cran de projection
pour la vido. Le contrle le plus indiqu cet effet est le contrle PictureBox.

>
:

460

Prog VB6 FM2B Page 461 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

Vous avez, jusquici, dni la proprit DeviceType du contrle multimdia comme


CDAudio pour lire les CD et comme WaveAudio pour lire les chiers WAV, et cela dans
la fentre Proprits ou les Pages de proprits. Mais si votre contrle multimdia est
appel lire plusieurs types de mdias dans une mme application, les diffrentes
valeurs devront tres dnies en cours dexcution laide dinstructions daffectation.
Votre application peut contenir plusieurs contrles PictureBox. Le contrle multimdia
doit donc savoir quel contrle PictureBox envoyer la vido. Cest le rle de la proprit
hWndDisplay.
hWnd est un prxe souvent employ en programmation Windows pour dsigner un
gestionnaire, ou plus prcisment un contexte de priphrique. Les sorties Visual Basic ne
safchent pas vraiment sur lcran lui-mme, mais dans des fentres. (En fait, on peut
envoyer une sortie vers nimporte quel priphrique Windows laide des mmes
commandes de bases, et les priphriques Windows sont plus virtuels que rels pour votre
programme. Windows se charge de toutes les conversions compliques pour envoyer la
sortie vers une imprimante ou un cran couleur.) Limportant est que votre programme
nenvoie pas la sortie vido lcran, mais un contexte de priphrique. Ce contexte de
priphrique est presque toujours lcran, mais le contrle multimdia doit connatre le
contexte de priphrique adquat. Il peut ainsi dterminer vers quelle fentre la sortie
vido doit tre envoye, et ajuster en consquence la taille de cette fentre.
Assez parl. Crez maintenant un nouveau projet. Nommez la feuille frmVideo et entrez
Lecteur vido dans sa proprit Caption. Ajoutez un contrle multimdia en haut de la
feuille. Nommez ce contrle mmcVideo.
Au centre de la feuille, ajoutez un contrle PictureBox. Disposez-le tel que le montre la
Figure 14.12. Nommez ce contrle picVideo.
Figure 14.12
Cest dans le contrle
PictureBox que
safchera la vido.

461

<
:

Prog VB6 FM2B Page 462 Lundi, 6. aot 2001 3:38 15

Partie II

Dnissez la proprit DeviceType comme AVIVideo. A la proprit Filename, affectez


le chier nomm Count24.AVI. Vous trouverez ce chier dans le dossier
\Graphics\Videos de Visual Basic. Cest presque termin ! Crer un lecteur vido, vous
le voyez, ce nest pas sorcier. Maintenant, ajoutez la procdure vnementielle
Form_Load() du Listing 14.5.
Listing 14.5 : Associe le lecteur vido au contrle PictureBox

1:
2:
3:
4:
5:
6:

Private Sub Form_Load()


Ouvre le lecteur vido.
mmcVideo.Command = "Open"
Connecte le lecteur vido au contrle PictureBox.
mmcVideo.hWndDisplay = picVideo.hWnd
End Sub

Excutez le programme. La Figure 14.13 montre un extrait du rsultat.


Figure 14.13
Digne de Hollywood !

En travaillant avec le contrle multimdia, vous dcouvrirez des raccourcis. Par exemple, il est inutile de spcier le type de priphrique pour les priphriques multimdias
composites, car Visual Basic peut le dduire lui-mme de lextension du chier utilis.
Par ailleurs, vous navez point remarqu que les labels dtat ne sactualisent pas
toujours temps. En loccurrence, le label na afch "Lecture" quune fois la lecture
termine ! Lvnement StatusUpdate a lieu toutes les quelques millisecondes. Pour
que la mise jour se fasse plus souvent, donc avec plus dexactitude, affectez la
proprit UpdateInterval une valeur plus petite (selon la valeur par dfaut, 1000, ltat
se met jour toutes les secondes).

>
:

462

Prog VB6 FM2B Page 463 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

ntion
Atte

Ne dnissez pas pour UpdateInterval une valeur trop petite, car lapplication contenant le contrle multimdia consommerait trop de temps
mettre jour le label, ce qui ralentirait le systme. De tels ralentissements
provoquent souvent quelques tressautements lors de la lecture des chiers
multimdias.

En rsum
Ce chapitre vous a montr combien il tait facile de relever vos applications dune
pointe de graphisme et dun trait de multimdia. Les contrles Line et Shape permettent
de mettre en valeur les lments de la feuille ou de sparer les contrles.
Visual Basic propose galement des mthodes de dessin qui vous permettent de tracer
des lignes, des cadres ou des ellipses, ainsi que de dessiner pixel par pixel. Ces mthodes sont assez simples, mais elles vous laissent le plein contrle sur vos dessins.
Les dernires sections de ce chapitre ont dtaill le fonctionnement du contrle multimdia. Le contrle multimdia est lun des contrles les plus complets de Visual Basic,
car il supporte de multiples types de priphriques. Il permet vos programmes de lire
des CD audio, des chiers son et mme des vidos. Le contrle multimdia peut tre
pilot par lutilisateur laide de boutons, ou depuis le code laide de la proprit
Command.
Le chapitre suivant explique comment ajouter des modles de feuilles vos projets an
de standardiser vos applications.

Questions-rponses
Q Puis-je utiliser le contrle multimdia pour afcher de simples images ?
R Le contrle multimdia, comme son nom lindique, est destin aux priphriques
multimdias. Ce qui ninclut pas les simples images et photos. Pour les chiers de ce
type, optez plutt pour les contrles Image ou PictureBox.
Q Vaut-il mieux utiliser les contrles de dessin ou les mthodes ?
R Les deux ne sexcluent pas. Les contrles Line et Shape prennent diverses formes
que vous pouvez placer sur la feuille lors de la cration ou dnir lexcution par
des valeurs de proprits. Les mthodes de dessin offrent plus de exibilit, en
permettant de dessiner point point. Elles permettent galement de tracer des lignes
et des cadres.

463

<
:

Prog VB6 FM2B Page 464 Lundi, 6. aot 2001 3:38 15

Partie II

Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre
les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez
ces rponses lAnnexe A.

Quiz
1. Quel contrle dessine des cercles sur la feuille ?
2. Quelle mthode dessine des carrs sur la feuille ?
3. Laquelle des mthodes suivantes permet de dessiner des cadres ?
a. PSet
b. Line
c. Box
d. Draw

4. Les contrles Line et Shape gnrent des dessins qui supportent E/S proprits, mais
pas des vnements. Vrai ou faux ?
5. Quelle option de la mthode Line applique une couleur de fond aux cadres ?
6. Pourquoi Visual Basic nactive-t-il pas tous les boutons lorsque vous placez le
contrle multimdia sur une feuille ?
7. A quoi sert la proprit Mode ?
8. Comment faire en sorte que ltat du priphrique du contrle multimdia se mette
jour plus souvent ?
9. Pourquoi doit-on utiliser un contrle PictureBox pour les vidos ?
10. Comment le contrle multimdia sait-il quel contrle PictureBox il doit envoyer la
sortie vido ?

>
:

464

Prog VB6 FM2B Page 465 Lundi, 6. aot 2001 3:38 15

Chapitre 14 : Image et multimdia

Exercices
1. Ajoutez lapplication reproduite en Figure 14.5 des zones de liste Couleur de
remplissage et Couleur de bordure, de faon pouvoir aussi modier ces paramtres.
La Figure 14.14 montre ce quoi votre feuille devrait ressembler.
Figure 14.14
Vous avez maintenant
plus de contrle sur
le dessin.

Truc. Utilisez une constante nomme, telle que vbBlue, pour rpondre aux slections de lutilisateur. Vous ntes pas oblig de proposer toutes les couleurs dans
toutes les zones de liste.
2. Exercez-vous au dessin de lignes et de cercles laide des mthodes appropries,
mais sur un contrle PictureBox cette fois. Le contrle PictureBox accepte les
mmes mthodes de dessin que la feuille.
3. Reprenez le lecteur WAV que nous avons cr. Offrez lutilisateur la possibilit de
choisir son chier dans une bote de dialogue Ouvrir.

465

<
:

Prog VB6 FM2B Page 466 Lundi, 6. aot 2001 3:38 15

Prog VB6 FM2B Page 467 Lundi, 6. aot 2001 3:38 15

PB7
Les barres de dfilement
En plus de vous proposer un peu dentranement, ce Projet bonus introduit deux
nouveaux contrles : les barres de dlement verticale et horizontale. Ils sont toutefois
trs simples manipuler, leur comportement tant en grande partie contrl par les
proprits dnies lors de lexcution. Il suft ensuite dcrire les procdures vnementielles qui rpondront aux actions de lutilisateur.

Prsentation des barres de dfilement


Beaucoup des applications que vous avez dj cres contenaient des barres de
dlement, car certains contrles les intgrent dofce. Par exemple, une zone de texte
multiligne qui contient beaucoup de donnes afchera des barres de dlement, moins
que vous ne spciez le contraire dans la proprit ScrollBars. Sans les barres de
dlement, lutilisateur serait incapable daccder la totalit du contenu. Les barres de
dlement sont galement intrinsques aux zones de liste droulante. La Figure PB7.1
dtaille les diffrentes parties de chaque barre de dlement.
Les barres de dlement ne sont pas seulement utiles dans les zones de texte et zones de
liste. Elles peuvent galement offrir lutilisateur un contrle exible sur des valeurs
graduelles, telles que la profondeur dune couleur, la taille dune image, ou autres
valeurs numriques.
La Bote outils comporte les contrles HScrollBar et VScrollBar, qui correspondent
respectivement aux barres de dlement horizontale et verticale. Une fois ces contrles
disposs sur la feuille, vous devez rgler les proprits qui en dnissent le comportement.

467

Prog VB6 FM2B Page 468 Lundi, 6. aot 2001 3:38 15

Partie II

Figure PB7.1
Les barres
de dlement
horizontale et
verticale peuvent
apparatre
automatiquement.

Barre de
dfilement
verticale

flches de
dfilement

Hampe

Barre de
dfilement
horizontale
Curseur de
dfilement

Position
fin

Position
dbut

Fonctionnement des barres de dfilement


Une fois que vous avez saisi le fonctionnement des barres de dlement, il ne vous reste
pas grand-chose apprendre pour tre en mesure de les programmer. Voici les principes
de ce fonctionnement :

>
:

Lorsque le curseur de la barre de dlement horizontale est mis la position la plus


gauche (le plus en haut pour la barre de dlement verticale), la valeur de
dlement est la plus basse.

Dplac vers la droite ou la gauche (vers le haut ou le bas pour la barre de


dlement verticale), le curseur dcrot ou accrot dautant la valeur de dlement
correspondante.

Lorsque le curseur de la barre de dlement horizontale est mis la position la plus


droite (le plus en bas pour la barre de dlement verticale), la valeur de dlement
est la plus haute.

En cliquant sur les ches de dlement, on dcrot ou accrot de petites units la


valeur de dlement.

En cliquant dun ct ou de lautre du curseur de dlement (sur la hampe, donc), on


dcrot ou accrot de grandes units la valeur de dlement.

468

Prog VB6 FM2B Page 469 Lundi, 6. aot 2001 3:38 15

Projet bonus 7 : Les barres de dfilement

Proprits des barres de dfilement


Le Tableau PB7.1 prsente les proprits les plus importantes des barres de dlement.
Ces proprits peuvent tre dnies lors de lexcution, mais on sen occupe gnralement pendant la phase de cration. Ces proprits correspondent aux principes de
fonctionnement dcrits ci-dessus.
Tableau PB7.1 : Proprits des contrles HScrollBar et VScrollBar
Proprit

Description

LargeChange

Spcie la valeur selon laquelle la barre de dlement change le


positionnement lorsquon clique sur la hampe (dun ct ou de lautre du
curseur de dlement).

Max

Nombre maximal dunits correspondant la valeur de dlement la plus


haute. La valeur par dfaut est 32 767.

Min

Nombre minimal dunits correspondant la valeur de dlement la plus


basse. La valeur par dfaut est 1.

SmallChange

Spcie la valeur selon laquelle la barre de dlement change le


positionnement lorsquon clique sur les ches de dlement.

Value

Spcie lunit de mesure courante pour la valeur de dlement.

La plage par dfaut des valeurs de dlement va de 1 32 767. Mais vous pouvez ajuster
cete plage aux besoins de votre application. Supposons, par exemple, que vous criviez un
programme qui traite des montants allant de 3000 F 60 000 F. Vous pourriez obtenir les
montants de lutilisateur par lintermdiare de zones de texte. Mais il serait plus simple de
fournir une espce de gradateur, sans la forme dune barre de dlement. Les valeurs
de dlement seraient alors incluses dans les valeurs de proprits suivantes :
Min: 3000
Max: 60000

Il suft ensuite de dnir les incrments correspondant aux valeurs de dlement.


Supposons que les montants traits par votre programme puissent tre incrments de
500 F. Le montant (indiqu dans la proprit Value de la barre de dlement) peut alors
changer par tranches de 500 F si lutilisateur clique sur les ches (petit changement),
ou par tranches de 2500 F (grand changement) sil clique sur la hampe. Les proprits
devraient alors tre rgles comme ceci :
LargeChange: 2500
SmallChange: 500

469

<
:

Prog VB6 FM2B Page 470 Lundi, 6. aot 2001 3:38 15

Partie II

Info

Vous tes libres de modier la taille de la barre de dlement, en hauteur


comme en largeur. La taille "physique" de la barre de dlement naffecte en
rien les valeurs de dlement.

Crer lapplication
La Figure PB7.2 montre lcran de lapplication que vous allez maintenant crer.
Lutilisateur se sert des barres de dlement pour modier la taille de limage. Le code
requis est minime, parce que lessentiel du travail est effectu par les proprits des
barres de dlement.
Figure PB7.2
Les barres de
dlement contrlent
la taille de limage.

Augmenter
la largeur

Rduire
la largeur
Augmenter
la longueur

>
:

Rduire la
longueur

ntion
Atte

Gardez lesprit le sens dans lequel les barres de dlement fonctionnent.


Dans notre petite application, pour accrotre la taille de limage, il faut
accrotre la valeur de dlement, cest--dire faire glisser le curseur de
feuilles vers le bas. Intuitivement, on penserait plutt rduire la taille de
limage en faisant descendre le curseur. Rien nempche dcrire lapplication de faon inverser ces directions. Pour notre exemple, toutefois, nous
nous en sommes tenus aux paramtres par dfaut.

ntion
Atte

Cette application exploite les chiers graphiques livrs avec Visual Basic. Si
vous ne les avez pas installs, faites-le, copiez le chier requis sur votre
disque, ou travaillez directement sur le CD-ROM Visual Basic.

470

Prog VB6 FM2B Page 471 Lundi, 6. aot 2001 3:38 15

Projet bonus 7 : Les barres de dfilement

Le Tableau PB7.2 dtaille les contrles ncessaires notre application.


Tableau PB7.2 : Contrles et proprits congurer pour la feuille
Contrle

Proprit

Valeur

Feuille

Name

frmScoll

Feuille

Caption

Money money money

Feuille

Height

4650

Feuille

Width

5295

PictureBox

Name

picScroll

PictureBox

Height

1600

PictureBox

Left

1560

PictureBox

Picture

Common\Graphics\Metafile\Business
\Moneybag

PictureBox

Top

1200

PictureBox

Width

1575

Barre de dlement verticale

Name

vscScroll

Barre de dlement verticale

Height

3975

Barre de dlement verticale

LargeChange

100

Barre de dlement verticale

Left

4920

Barre de dlement verticale

Max

3750

Barre de dlement verticale

Min

1600

Barre de dlement verticale

SmallChange

50

Barre de dlement verticale

Top

Barre de dlement verticale

Width

255

Barre de dlement horizontale

Name

hscScroll

Barre de dlement horizontale

Height

255

Barre de dlement horizontale

LargeChange

100

471

<
:

Prog VB6 FM2B Page 472 Lundi, 6. aot 2001 3:38 15

Partie II

Tableau PB7.2 : Contrles et proprits congurer pour la feuille (suite)


Contrle

Proprit

Valeur

Barre de dlement horizontale

Left

Barre de dlement horizontale

Max

3750

Barre de dlement horizontale

Min

1600

Barre de dlement horizontale

SmallChange

50

Barre de dlement horizontale

Top

3960

Barre de dlement horizontale

Width

4935

Chaque fois que lutilisateur clique sur une che de dlement, la taille de limage
change de 50 pixels, tel que spci dans la proprit SmallChange des deux barres de
dlement. Chaque fois que lutilisateur clique sur la hampe, la taille de limage change
de 100 pixels, tel que spci dans la proprit LargeChange.

Ajouter le code
Le Listing PB7.1 fournit le code de ce projet.
ce
Astu

La taille de limage ne doit pas tre seule changer, mais galement la


position : limage doit rester centre.

Listing PB7.1 : Les barres de dlement modient la taille de limage

>
:

1:
2:
3:
4:

Private Sub hscScroll_Change()


Change la largeur et la position horizontale de limage.
picScroll.Width = hscScroll.Value
picScroll.Left = (frmScroll.Width / 2) - (picScroll.Width
/ 2) - 300
5: End Sub
6:
7: Private Sub vscScroll_Change()
8:
Change la hauteur et la position verticale de limage.
9:
picScroll.Height = vscScroll.Value
10:
picScroll.Top = (frmScroll.Height / 2) - (picScroll.Height
/ 2) -300
11: End Sub
12:
13: Private Sub vscScroll_Scroll()

472

Prog VB6 FM2B Page 473 Lundi, 6. aot 2001 3:38 15

Projet bonus 7 : Les barres de dfilement

14:
Rpond au curseur de dfilement.
15:
Call vscScroll_Change
16: End Sub
17:
18: Private Sub hscScroll_Scroll()
19:
Rpond au curseur de dfilement.
20: Call hscScroll_Change
21: End Sub

Analyse
Le code est rptitif, parce que les deux barres de dlement font foncirement la mme
chose : contrler les proprits Width et Height de limage. A la ligne 3, la premire
procdure modie la largeur de limage en fonction de la valeur de la barre de
dlement horizontale. (Pour les deux barres de dlement, les proprits Min et Max ont
t dnies, lors de la cration, de faon que la taille de limage garde toujours une taille
raisonnable.) La ligne 4 spcie la nouvelle position de limage redimensionne. Cette
position est xe en fonction de la hauteur de limage par rapport la hauteur de la feuille.
frmScroll .Width / 2 dnit le milieu de la feuille, picScroll.Width / 2 celui de limage.
Les 300 pixels soustraits correspondent la largeur de la barre de dlement verticale.
Les lignes 7 11 font exactement la mme chose, mais en fonction de la barre de
dlement horizontale et pour la largeur de limage.
Les deux dernires procdures ont cela de particulier quelles ne font quappeler les
autres procdures. La premire de ces deux procdures sexcute quand lutilisateur
clique sur lune des ches ou sur la hampe. Mais quen est-il du curseur de
dlement ? Sans les procdures des vnements Change, limage ne bougerait pas tant
que lutilisateur na pas relch le bouton de la souris cest--dire tant que lvnement Scroll nest pas achev. En appelant la procdure vnementielle Scroll depuis
la procdure vnementielle Change, on synchronise les mouvements du curseur de
feuille aux modications de la taille. En fait, la procdure vnementielle Scroll est
appele pendant tout le dplacement du curseur, pour chacune des valeurs par lesquelles
il passe.
Info

On aurait pu placer le code de la procdure vnementielle Click directement dans la procdure vnementielle Change, pour ne garder que cette
dernire. La procdure vnementielle Change sexcuterait chaque fois que
lutilisateur agit sur une barres de dlement, le curseur, les ches et la
hampe pouvant tous gnrer des vnements Change. On aurait pu, certes,
mais vous navez pas encore appris appeler une procdure depuis une
autre, et cet exemple sy prtait parfaitement.

473

<
:

Prog VB6 FM2B Page 474 Lundi, 6. aot 2001 3:38 15

Prog VB6 FM2B Page 475 Lundi, 6. aot 2001 3:38 15

Rsum de la Partie II
Vous tes maintenant pass du stade de dbutant celui de programmeur avanc.
Lenvironnement de programmation Visual Basic vous est tout fait familier, et vous
matrisez lessentiel du langage.
Dans les chapitres qui viennent, il sagira donc surtout daffter et de perfectionner les
notions et les techniques dj acquises. Vous avez maintenant un bagage sufsant pour
rechercher par vous-mme, en dehors de cet ouvrage, des informations complmentaires. Manuels plus avancs, revues et sites Web spcialiss vous permettront de
perfectionner votre pratique de Visual Basic et de devenir rapidement un authentique
dveloppeur professionnel.
Voici ce que nous avons tudi dans ces sept chapitres :

La structure des applications. Un programme Visual Basic est plus quun simple
assemblage de contrles et de procdures vnementielles. Lapplication peut tre
constitue de plusieurs feuilles et modules de code travaillant en commun
(Chapitre 8).

La porte des variables. Alors que vos codes deviennent plus modulaires (et donc
plus faciles maintenir), vous devez toujours garder lesprit la porte des variables,
qui dtermine quelles procdures auront accs quelles variables de lapplication
(Chapitre 8).

Passer des donnes. Quil sagisse de sous-routines ou de fonctions, vos procdures


doivent tre en mesure de passer des donnes aux autres procdures (Chapitre 8).

Passer des contrles. Les procdures peuvent, entre elles, se passer tous types
dobjets : variables, mais aussi contrles (Chapitre 8).

Les fonctions internes. Grce une exploitation adquate des fonctions internes, vous
allgerez votre travail de programmation pour ce qui est des tches communes, telles que
calculer une racine carre ou convertir une chane (Chapitre 8).

475

Prog VB6 FM2B Page 476 Lundi, 6. aot 2001 3:38 15

Partie II

>
:

Les botes de dialogues communes. Le contrle Common Dialog permet doffrir


aux utilisateurs une interface standard pour louverture et lenregistrement de
chiers, la slection de couleurs ou limpression (Chapitre 9).

La gestion de la souris. Vos programmes peuvent suivre les dplacements et les


clics de la souris (Chapitre 10).

Les contrles de listes. Visual Basic met votre disposition divers types de zones
de liste (Chapitre 10).

Le contrle Timer. Le contrle Timer interroge lhorloge interne du PC pour excuter


des procdures intervalles prcis (Chapitre 10).

Les tableaux. Les simples variables ne peuvent stocker des listes de donnes. Pour
traiter de grandes quantits de donnes, il faut les stocker dans des tableaux de variables (Chapitre 10).

Les feuilles. Comme les autres objets Visual Basic, les feuilles supportent une vaste
gamme de proprits, vnements et mthodes, permettant notamment de les masquer
et de les afcher volont lors de lexcution (Chapitre 11).

Envoyer du texte aux feuilles. La mthode Print permet denvoyer du texte directement sur la feuille, sans passer par des contrles (Chapitre 11).

Les barres doutils. Les barres doutils sont un aspect capital de linterface utilisateur (Chapitre 11).

Les coolbars. Les coolbars sont relativement nouvelles dans les logiciels Windows,
mais elles offent un moyen supplmentaire de dynamiser et personnaliser vos
applications (Chapitre 11).

Le traitement des chiers. Le traitement des chiers na rien de sorcier, mais


rclame un peu de programmation (Chapitre 11).

Les chiers squentiels. Les chiers squentiels se lisent et scrivent dans un


ordre prcis et immuable, mais sont faciles manipuler (Chapitre 12).

Les chiers alatoires. Laccs alatoire permet de lire et dcrire nimporte quel
endroit du chier (Chapitre 12).

Les contrles de chiers. Les contrles ne manipulent pas eux-mmes les chiers,
mais permettent lutilisateur de faire son choix parmi les lecteurs, dossiers et types
de chiers de son systme (Chapitre 12).

Limpression. A laide de mthodes spciques, votre application peut envoyer des


sorties aux diverses imprimantes prsentes sur le systme de lutilisateur
(Chapitre 13).

476

Prog VB6 FM2B Page 477 Lundi, 6. aot 2001 3:38 15

Rsum de la Partie II

Limpression de feuilles. Vous pouvez, aussi bien, imprimer les feuilles de votre
projet (Chapitre 13).

Les chiers graphiques. Les contrles Image et PictureBox permettent dafcher


les images contenues dans des chiers graphiques (Chapitre 14).

Les contrles de dessin. Grce aux contrles Line et Shape, vous pouvez enjoliver
ou mettre en relief les lments de la feuille (Chapitre 14).

Les mthodes de dessin. Les mthodes de dessin permettent de tracer des images
sur les feuilles comme sur le contrle PictureBox (Chapitre 14).

Le contrle multimdia. Le contrle multimdia permet de grer, lintrieur de


lapplication, nimporte quel priphrique multimdia : lecteur CD, afcheur
vido, etc. (Chapitre 14).

477

<
:

Prog VB6 FM2B Page 478 Lundi, 6. aot 2001 3:38 15

Prog VB6 FM3A Page 479 Lundi, 6. aot 2001 3:45 15

Partie

III

Dun coup dil


15. Les modles de feuilles . . . . . . . . . . . . . . . . . . . .

481

16. Visual Basic et les objets . . . . . . . . . . . . . . . . . .

505

17. Contrles ActiveX . . . . . . . . . . . . . . . . . . . . . . . .

531

PB8. Ces lments qui enjolivent les applications . . .

567

18. Interactions avec les donnes . . . . . . . . . . . . . . .

577

PB9. Contrles ADO . . . . . . . . . . . . . . . . . . . . . . . . . .

601

19. Ajout dun accs Internet . . . . . . . . . . . . . . . . . .

619

20. Fournir de laide . . . . . . . . . . . . . . . . . . . . . . . . .

641

21. Distribution de vos applications . . . . . . . . . . . . .

663

Rsum de la Partie III . . . . . . . . . . . . . . . . . . . .

689

22. Tableaux multidimensionnels . . . . . . . . . . . . . . .

693

23. LAPI Windows . . . . . . . . . . . . . . . . . . . . . . . . . .

731

479

Prog VB6 FM3A Page 480 Lundi, 6. aot 2001 3:45 15

Partie III

Vous avez suivi un long trajet depuis que ce livre a commenc vous enseigner
comment crire des programmes Visual Basic. Vous devez dsormais vous considrer
comme tant meilleur quun programmeur dbutant. Vous pouvez dj presque
raliser ce que vous voulez avec Visual Basic. Il vous reste maintenant amliorer vos
comptences.
La troisime et dernire partie de ce didacticiel commence par examiner certains aspects
avancs de la programmation Visual Basic, ce qui ne signie cependant pas "difcile".
Presque tous les lments que vous apprendrez dans cette partie sont considrs comme
avancs. Quoi quil en soit, vous avez des bases si solides dsormais que vous devriez
acqurir assez facilement ces comptences supplmentaires.
Lorsque vous commencerez explorer les objets et les contrles ActiveX, vous verrez
que ces lments vous aident produire un meilleur code et crire des programmes
plus rapidement. Vous apprendrez rutiliser les composants que vous crez de la
mme manire que vous avez rutilis les procdures dans la Partie II. Vous dvelopperez vos propres outils dans la fentre Bote outils de Visual Basic en crant vos
propres contrles ActiveX.
Comme vous le verrez, Visual Basic peut vous proposer une grande diversit de contrles. Dans cette dernire partie, vous apprendrez comment accder aux chiers, grer les
donnes dans les formats courants de bases de donnes, et comment accder lInternet
en utilisant les outils fournis avec Visual Basic. Vous ncrirez que trs rarement une
application qui exige plus de contrles que ceux dont vous disposez dj. Toutefois, vous
serez soulag dapprendre que vous pourrez en obtenir dautres, et mme crire les
vtres, si lenvie vous en prend. Vous pourrez utiliser ces contrles non seulement dans
lenvironnement de programmation Visual Basic, mais galement dautres manires, par
exemple les incorporer dans les pages Web pour les navigateurs compatibles avec
ActiveX.
Une fois lapplication crite, il faut la tester laide des outils de test et de dbogage de
Visual Basic. Si certains bogues sont difciles pister, Visual Basic va cependant assez
loin pour vous aider les localiser. Une fois votre application dveloppe, vous devez la
compiler pour la distribuer aux autres. A la n de cette partie, vous apprendrez empaqueter vos applications avec des routines dinstallation pour permettre aux utilisateurs
de les installer et de les excuter.

>
:

480

Prog VB6 FM3A Page 481 Lundi, 6. aot 2001 3:45 15

Chapitre

15

Les modles de feuilles


La leon daujourdhui vous montre les bnces que vous pouvez tirer des modles de
feuilles an de donner une apparence plus uniforme aux feuilles cres dans un but
commun. Visual Basic fournit plusieurs modles de feuilles que vous pouvez ajouter,
personnaliser et utiliser dans vos projets. Beaucoup de feuilles utilises actuellement
comme la bote de dialogue "A propos de" safchant lorsquon slectionne Aide, A
propos de ont labor une forme de standard de facto dans la prsentation, dont vous
pouvez aussi bien suivre la tendance. La bote de dialogue "A propos de" et quelques
autres feuilles standards sont fournies avec Visual Basic.
Une fois que vous saurez utiliser les modles de feuilles, vous pourrez crer les vtres.
Supposons que votre entreprise prfre que lapparence de chaque bote de dialogue soit
normalise et prsente le nom de lentreprise, le logo, lheure et la date en haut de la
feuille. En crant un modle de feuille contenant ces informations, toutes les feuilles
utilises ensuite dans les applications pourront prsenter ces lments sans que vous
ayez les ajouter chaque fois que vous crez une nouvelle feuille dans un projet.
Vous apprendrez aujourdhui :

le rle des modles de feuilles ;

pourquoi les utiliser ;

comment les implmenter dans vos projets ;

comment les ajouter partir de lassistant Cration dapplications ;

comment crer un chier "Astuce du jour" ;

comment ajouter vos propres modles de feuilles lensemble fourni avec Visual
Basic.

481

Prog VB6 FM3A Page 482 Lundi, 6. aot 2001 3:45 15

Partie III

A propos des modles de feuilles


Un modle de feuille est une sorte de gabarit. Lorsque vous dmarrez avec un modle de
feuille, au lieu de partir dune fentre vierge, vous conomisez du temps, et vos feuilles
ont une apparence uniforme.
Supposons que vous vouliez ajouter un cran Astuce du jour votre application pour
permettre aux utilisateurs de lire une astuce diffrente chaque fois quils dmarrent le
programme. LAstuce du jour la plus connue est sans nul doute celle qui safche au
dmarrage de Windows 95. Dautres applications clbres utilisent aussi un cran
Astuce du jour, qui se prsente souvent comme celui de Windows 95. La plupart ont par
exemple une case cocher en bas de la fentre qui permet dempcher quelle se
rafche lors des dmarrages suivants de lapplication.
Comme vous lavez dj appris dans ce livre, la cration dapplications normalises
prsente de nombreux avantages : les utilisateurs sy adaptent plus rapidement, ils
seront plus mme de les apprcier, ils seront enclins utiliser les mises jour, ils
apprendront plus vite les utiliser et vous aurez moins dappels de support. Si ces
raisons ne sufsent pas vous inciter utiliser des crans et des menus standards, vous
verrez aussi que vous gagnerez du temps : votre application sera termine plus vite et
vous aurez moins de bogues supprimer.
La Figure 15.1 montre le modle de feuille Astuce du jour fournie par Visual Basic. Si
vous aviez ajouter un cran Astuce du jour une application, prfreriez-vous lutiliser
ou partir dune fentre vierge ? Vous choisirez videmment le modle. Il donne une
apparence uniforme et demande moins de travail.
Figure 15.1
Visual Basic propose
ce modle de feuille
Astuce du jour.

Info

>
:

482

Comme pour les squelettes dapplications cres par lassistant Cration


dapplications, un modle de feuille contient des emplacements pour les
lments courants, mais vous aurez le modier. Vous devrez remplacer

Prog VB6 FM3A Page 483 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

les lments inutiles et personnaliser la feuille pour ladapter aux exigences


de votre application. Malgr cela, vous achverez la feuille bien plus
rapidement quen partant dune feuille vierge.
Les modles de feuilles contiennent des lments visuels, tels que des icnes et des
contrles, et le code sous-jacent pour vous aider lintgrer dans votre application.
ce
Astu

Un modle de feuille nest rien dautre quune feuille avec des lments dj
placs. Ce nest pas un type de feuille particulier, mais plutt un ensemble de
feuilles prdnies. Lorsque vous crez des feuilles que vous souhaitez rutiliser, vous pouvez tout simplement les ajouter la collection des modles de
votre systme. Nous lexpliquerons ci-dessous.

Les modles de feuilles proposs


Visual Basic fournit les modles de feuilles suivants :

A propos de. Gnralement afch par loption de menu Aide, A propos de.

Navigateur. Pour une simple navigation sur le Web.

Feuille de donnes. Pour grer les tables de type base de donnes.

Bote de dialogue. Pour crer des botes de dialogue.

Bote de dialogue Connexion. Pour demander un nom et un mot de passe.

Bote de dialogue Connexion ODBC. Pour les activits lies ODBC.

Bote de dialogue Option. Pour grer les botes de dialogues multipages et les
paramtrages de personnalisation.

Ecran daccueil. Pour afcher un cran de dmarrage au cours du chargement de


lapplication, qui napparat habituellement que quelques secondes.

Astuce du jour. Pour ajouter une astuce au dmarrage.


ition
Dfin

Info

ODBC (Open Database Connectivity) signie connexion ouverte aux bases


de donnes, et fournit un ensemble de commandes standard pour accder
diffrents types de donnes enregistrs sur divers types dordinateurs.
Le reste de cette leon dcrit comment mettre en place nombre de ces modles
de feuilles dans vos applications. Certains sont trop particuliers pour entrer
dans le cadre de ce chapitre : le Chapitre 19 traite plus en dtail de la navigation sur lInternet en utilisant le modle Navigateur ; le Chapitre 18 dcrit

483

<
:

Prog VB6 FM3A Page 484 Lundi, 6. aot 2001 3:45 15

Partie III

comment lier les applications Visual Basic aux informations de base de


donnes, laide des modles Feuilles de donnes ou ODBC.
Les sections suivantes passent en revue les modles de feuilles les plus courants que
vous utiliserez. Vous apprendrez utiliser lassistant Cration dapplications pour ajouter des modles et vous verrez en dtail comment ajouter et personnaliser la bote de
dialogue A propos de dans vos applications. Les autres modles nen diffrent que par
les options quils prsentent.
Voici les tapes gnrales pour ajouter un modle de feuille votre application :
1. Ajouter le modle de feuille dans la fentre Projet de lapplication ;
2. Le personnaliser avec les dtails exigs par votre application ;
3. Connecter le modle votre projet par programmation.

Lassistant Cration dapplications


Vous pouvez ajouter un modle de feuille votre application tout moment. Si vous utilisez lassistant Cration dapplications, vous devez cependant lui signaler que vous
souhaitez utiliser un modle de feuille particulier an quil soccupe de tous les dtails
et lajoute automatiquement.
La Figure 15.2 montre la bote de dialogue de lassistant Cration dapplications dans
laquelle vous spciez un modle de feuille. Comme vous pouvez le voir, lassistant ne
propose que quatre options : Ecran de prsentation au dmarrage, Bote de dialogue de
connexion, Bote de dialogue de paramtrage doptions et Bote de dialogue A propos de.
Vous pouvez cependant ajouter dautres modles en cliquant sur le bouton Modles de
feuilles.
Info

La liste qui safche comporte non seulement les feuilles fournies avec
Visual Basic, mais aussi celles que vous avez ajoutes la bibliothque des
modles.

Ajouter des modles de feuilles une application


Lajout dun modle de feuille une application seffectue, comme pour toute autre
feuille, de lune des deux manires suivantes :

>
:

Slectionnez loption Ajouter une feuille dans le menu Projet et choisissez un


modle dans la liste des icnes de modles qui safche dans la bote de dialogue,
illustre la Figure 15.3.

484

Prog VB6 FM3A Page 485 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

Figure 15.2
Lassistant Cration
dapplications
ajoutera des feuilles
votre application.

Figure 15.3
Lajout dun modle
de feuille est simple.

Cliquez du bouton droit dans la fentre Projet, slectionnez Ajouter, Feuille et slectionnez le modle dans la liste.

Pour ajouter une feuille vierge, slectionnez la premire icne de la liste (intitule
Form). Pour ajouter un modle, slectionnez licne correspondante.

485

<
:

Prog VB6 FM3A Page 486 Lundi, 6. aot 2001 3:45 15

Partie III

Modifier les modles


Lorsque vous slectionnez Outils, Options et que vous cliquez sur longlet Environnement, Visual Basic afche la bote de dialogue illustre la Figure 15.4. En cochant la
case Feuilles, vous indiquez Visual Basic sil doit proposer la liste des modles de
feuilles dans lassistant Cration dapplications et dans la bote de dialogue Projet,
Ajouter une feuille.
Figure 15.4
Vous pouvez
contrler
les modles proposs
par Visual Basic.

Option des
modles
de feuilles

Emplacement
des modles
de feuilles

Comme le montre cette bote de dialogue, Visual Basic fournit des modles pour bien
dautres objets que les feuilles. Il existe des modles de modules, de contrles, de pages
de proprits, etc. Si certains, ne correspondant pas des feuilles, ne sont utiliss que
dans des applications assez avances, vous pouvez constater quil existe un modle pour
presque tout type dobjet que vous pourrez crer.
Info

Si vous ne cochez pas loption Feuille pour masquer lafchage des modles,
lorsque vous crez un nouveau projet, Visual Basic cre automatiquement
une feuille vierge dans votre projet sans vous laisser la possibilit de slectionner un autre type de feuille.

La bote de dialogue Options montre le dossier o Visual Basic recherche les modles
de feuilles. Il sattend ce que tous les modles se trouvent dans ce dossier. Si vous
congurez diverses bibliothques de modles pour des usages divers (ce quun
programmeur indpendant pourrait faire sil travaille avec plusieurs entreprises), vous

>
:

486

Prog VB6 FM3A Page 487 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

pouvez enregistrer chacun des ensembles de modles dans des dossiers diffrents.
Quand vous souhaitez travailler avec un de ces ensembles, entrez le chemin dans la
bote de dialogue Options.
Info

Faire
Pour modier de manire permanente un modle et ladapter vos besoins si
vous utilisez souvent le mme, enregistrez-en une copie sous un autre nom et
modiez cette dernire. Utilisez ensuite la copie.
Ne pas faire
Ne faites pas de modications directement sur le modle dorigine.

Le modle de feuille A propos de


Le but de chaque modle de feuille est diffrent, mais la procdure gnrale de
connexion du modle une application est toujours la mme. Dans cette section, vous
allez ajouter un modle de feuille une application pour vous familiariser avec le
processus. Une des botes de dialogue les plus courantes, qui safche dans la plupart
des applications Windows, est la bote de dialogue A propos de, lorsquon slectionne
loption de menu Aide, A propos de. La Figure 15.5 montre quoi ressemble le modle
dans la fentre de lenvironnement Visual Basic.
Figure 15.5
Le modle de feuille
de la bote de
dialogue A propos
de, qui safche
dans la plupart
des applications
Windows.

Pour vous donner une ide de la diffrence entre le modle et la feuille laquelle vous
allez aboutir, voyez la Figure 15.6. Elle montre la bote de dialogue A propos de Visual
Basic. Comme vous le constatez, le modle fournit les emplacements qui contiendront
les informations que vous y placerez dans lapplication nale.

487

<
:

Prog VB6 FM3A Page 488 Lundi, 6. aot 2001 3:45 15

Partie III

Figure 15.6
La bote de dialogue
A propos de Visual
Basic correspond
au format du modle
de feuille.

Pour mettre en pratique lajout dun modle de feuille A propos de, dmarrez une
nouvelle application et suivez ces tapes :
1. Ouvrez le Crateur de menus, ajoutez Aide la barre de menus, indiquez A
propos de comme unique option du menu Aide et nommez-la mnuHelpAbout.
2. Nommez la feuille du projet frmTestAbout et changez son titre en Dmonstration de la
bote de dialogue A propos de.
3. A partir du menu Fichier, choisissez Enregistrer la feuille sous et tapez Feuille A
propos de comme nom de chier.
4. Choisissez Enregistrer le projet sous dans le menu Fichier et tapez Projet A
propos de comme nom de projet (la bote de dialogue que vous ajouterez utilisera le
nom de projet).
5. Dans le menu Projet, slectionnez Ajouter une feuille pour afcher la bote de dialogue correspondante. Double-cliquez sur A propos de pour ajouter la bote de dialogue,
qui nest rien dautre quune feuille avec des contrles. Elle est ajoute votre
application sous le nom frmAbout.
6. Utilisez loption du menu Fentre pour revenir votre feuille de dpart (frmTestAbout). Ajoutez la procdure vnementielle suivante :
Private Sub mnuHelpAbout_Click()

frmAbout.Show
End Sub

>
:

488

Prog VB6 FM3A Page 489 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

7. Vous pouvez maintenant excuter lapplication. Lorsque vous choisissez A


propos de dans le menu Aide, la bote de dialogue safche. Le modle de feuille A
propos de connat le nom du projet et lafche dans la zone de titre.
8. Cliquez sur OK pour fermer la bote de dialogue A propos de, puis fermez la feuille
principale pour arrter lapplication.
Le modle de la bote de dialogue A propos de connat le nom du projet et lafche dans
la zone de titre. Le nom provient de lobjet App, que nous tudierons dans la leon de
demain.
Utilisez le Menu Fentre pour afcher la feuille A propos de dans la zone ddition. La
procdure vnementielle Form_Load() de la bote de dialogue contient le code suivant qui
initialise le titre partir de lobjet App :

1: Private Sub Form_Load()


2:
Me.Caption = " propos de " & App.Title
3:
lblVersion.Caption = "Version " & App.Major & "." &
App.Minor & "." & App.Revision
4:
lblTitle.Caption = App.Title
5: End Sub

La ligne 3 congure les numros de version majeur, mineur et de rvision de lapplication dans la procdure vnementielle Form_Load() de la feuille principale. Vous
pouvez supprimer les rfrences ces valeurs du module de la feuille A propos de (et les
tiquettes les afchant) si vous ne souhaitez pas les utiliser.
Le module de la bote de dialogue A propos de contient du code initialisant automatiquement les valeurs titre et numro de version, mais pas certaines tiquettes telles que la
description de lapplication et la zone davertissement. Vous devez initialiser la proprit
Caption de la description (tiquette lblDescription). Si vous ne souhaitez pas de zone
davertissement ou de copyright, supprimez ltiquette correspondante (lblDisclaimer).
Vous pouvez insrer la place une icne ou une image pour attirer lattention de
lutilisateur.
La bote de dialogue A propos de implique plus de code que le simple afchage du nom
et du numro de version de lapplication, par exemple le code permettant de fermer la
fentre lorsque lutilisateur clique sur OK. Mais la vritable puissance de la bote de
dialogue A propos de rside dans la procdure vnementielle du bouton de commande
Infos systme :
1: Private Sub cmdSysInfo_Click()
2:
Call StartSysInfo
3: End Sub

489

<
:

Prog VB6 FM3A Page 490 Lundi, 6. aot 2001 3:45 15

Partie III

StartSysInfo est une procdure gnrale liste un peu plus loin dans le module de code
de la bote de dialogue A propos de. Elle lance un programme systme nomm
MSINFO32.EXE qui se trouve dans un dossier de Windows. Vous pourriez remplacer ce
programme par votre propre code, mais pourquoi ne pas se tenir au programme standard
dinformations sur le systme que les utilisateurs sont habitus voir dans les autres
applications Windows ?
Si vous excutez une nouvelle fois votre application, afchez la bote de dialogue A
propos de et cliquez sur le bouton Infos systme, lapplication correspondante dmarre.
(On dit que cest un processus enfant de votre application.) La Figure 15.7 montre la
fentre Infos systme.
Figure 15.7
Le code
accompagnant
la bote de dialogue A
propos de afche la
fentre Infos systme.

Info

La fentre Infos systme peut diffrer de celle illustre la Figure 15.7,


suivant la conguration de votre machine.

Autres modles de feuilles


Maintenant que vous avez cr un projet utilisant la bote de dialogue A propos de, vous
naurez pas de problme placer les trois autres modles principaux de feuilles. Quand
vous slectionnez Ajouter une feuille dans le menu Projet, vous avez la possibilit
dajouter plusieurs modles au projet en cours.

>
:

490

Prog VB6 FM3A Page 491 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

Cette section tudie plus en dtail les modles de feuilles suivants :

lcran daccueil ;

la bote de dialogue Connexion ;

la bote de dialogue Astuce du jour ;

la bote de dialogue Connexion ODBC.

Les applications ne doivent pas toujours inclure tous les modles. La bote de dialogue
A propos de faisant partie de la plupart des applications Windows, il est bon de prendre
lhabitude de linclure systmatiquement. Lutilisation des autres modles dpend
surtout du but et des exigences de lapplication. Cette section les tudie en dtail, pour
vous permettre de connatre ceux que vous voudrez ajouter vos projets.
ce
Astu

Dans cette section, vous apprendrez comment connecter les diffrents


modles vos applications. Si vous les ajoutez au moment o vous utilisez
lassistant Cration dapplications, vous vous pargnerez une partie du
travail pris en charge par lassistant. Il sera ainsi plus facile dinsrer les
modles dans vos projets.

Ecran daccueil
Un cran daccueil afche un message dintroduction et ventuellement des informations de copyright et de contact sur le projet. (Bien quon parle dcran, cest en fait une
feuille de la collection Forms de votre projet). Son objet premier est de saluer lutilisateur. Contrairement la bote de dialogue A propos de, lcran daccueil ne safche
quau dmarrage de lapplication.
Un cran daccueil afche souvent une image accompagne dun cran de prsentation.
La Figure 15.8 montre lcran daccueil afch au dmarrage de Microsoft Word. Il
comporte une image pour attirer lattention et des informations sur le produit.
Figure 15.8
Un cran daccueil
identique celui-ci
apparat lorsque
lapplication Word
se charge.

491

<
:

Prog VB6 FM3A Page 492 Lundi, 6. aot 2001 3:45 15

Partie III

Un cran daccueil disparat gnralement au bout dun court moment. Vous pouvez
ajouter un bouton de commande ou du code qui vrie une action clavier pour permettre
lutilisateur de sen dbarrasser sa convenance. Mais on utilise gnralement un
contrle Timer pour afcher lcran daccueil pendant une dure dtermine. Lcran
daccueil sert aussi masquer lattente au dmarrage due linitialisation des chiers et
des donnes.
Lcran daccueil impose une contrainte absente de la bote de dialogue A propos de.
Vous devez indiquer votre application de lafcher avant la fentre normale. Il doit tre
congur en tant que fentre de dmarrage dans la bote de dialogue Proprits,
laquelle on accde par loption Proprits du menu Projet. Ds que le modle Ecran
daccueil est ajout au projet, la bote de dialogue contient la feuille dans la liste des
objets de dmarrage. Vous devez aussi ajouter un bouton de commande ou un Timer
lcran daccueil pour afcher la fentre suivante quand il est temps de le faire.
Suivez ces tapes pour mettre en pratique la cration dun projet contenant un cran
daccueil :
1. Crez un nouveau projet. Vous laisserez telle quelle la feuille Form1.
2. Dans le menu Projet, choisissez Ajouter une feuille, puis slectionnez lcran
daccueil. Visual Basic afche lcran chantillon.
3. Modiez les tiquettes pour quelles correspondent celles de la Figure 15.9.
Figure 15.9
Lcran daccueil
est modi.

4. Choisissez Proprits dans le menu Projet. Indiquez frmSplash (cest le nom de


lcran daccueil) comme Objet de dmarrage et cliquez sur OK.

>
:

492

Prog VB6 FM3A Page 493 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

5. Ajoutez la ligne suivante dans les vnements Form_Keypress() et Frame1 _Click()


( la suite de linstruction Unload Me des deux procdures) :
Form1.show Affiche la feuille normale

6. Excutez lapplication. La premire feuille safcher est lcran daccueil. Si vous


appuyez sur une touche ou cliquez, il sefface et laisse la place la feuille normale,
Form1. Fermez la feuille pour revenir dans lenvironnement de dveloppement de
Visual Basic.
ntion
Atte

Lcran daccueil prend automatiquement le nom de programme du projet,


quel que soit le texte que vous saisissez dans ltiquette centrale. Vous devez
donc enregistrer le projet sous le nom Boursi-coteur ou modier le code
pour conserver ltiquette dorigine.

Bote de dialogue Connexion


Le besoin de scurit saccrot avec le nombre dordinateurs connects. La bote de
dialogue Connexion est un modle intressant ajouter vos projets. Elle demande la
saisie dun nom dutilisateur et dun mot de passe et renvoie les valeurs lapplication
pour traitement. La Figure 15.10 montre la bote de dialogue Connexion.
Figure 15.10
Utilisez la bote de
dialogue Connexion
pour demander
un nom dutilisateur
et un mot de passe.

Quand un utilisateur entre son nom et son mot de passe, le premier safche, mais le
second est masqu sous des astrisques (grce la proprit PasswordChar de la bote de
dialogue), pour protger la saisie dun il fouineur. Votre programme a cependant accs
au mot de passe tel quil a t saisi. Le mot de passe dorigine est password ; vous pouvez
lutiliser pour les tests. Le Listing 15.1 montre le code du module sous-jacent.
Listing 15.1 : La bote de dialogue Connexion permet lutilisateur
de se connecter votre application

1: Option Explicit
2: Public LoginSucceeded As Boolean
3:

493

<
:

Prog VB6 FM3A Page 494 Lundi, 6. aot 2001 3:45 15

Partie III

Listing 15.1 : La bote de dialogue Connexion permet lutilisateur


de se connecter votre application (suite)

4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:

Private Sub cmdCancel_Click()


Affecte la valeur False la variable globale
pour indiquer lchec de la connexion.
LoginSucceeded = False
Me.Hide
End Sub
Private Sub cmdOK_Click()
Vrifie si le mot de passe est correct.
If txtPassword = "password" Then
Placer le code ici pour signaler
la procdure appelante la russite de la fonction.
Dfinir une variable globale est plus facile.
LoginSucceeded = True
Me.Hide
Else
MsgBox "Mot de passe non valide, ressayez !", , "Connexion"
txtPassword.SetFocus
SendKeys "{Home}+{End}"
End If
End Sub

Le module de feuille utilise une variable globale nomme LoginSucceeded (dclare la


ligne 2) dont la valeur True ou False peut tre teste dans votre application au retour
de la bote de dialogue. Si lutilisateur clique sur le bouton Annuler, la procdure
cmdCancel_Click() paramtre LoginSucceeded False la ligne 7 et masque la feuille
de connexion.
Pour adapter le code vos besoins propres, suivez ces tapes :
1. Modiez la chane de caractres du mot de passe dans la procdure vnementielle
cmdOK_Click() pour ladapter votre application. Le mot de passe est souvent plac
dans un chier et chiffr. Si vous enregistrez le chier dans un chier index, binaire
ou de base de donnes, personne ne pourra lire le mot de passe partir dun simple
diteur de texte, comme cest le cas avec un chier texte.
2. Modiez le texte de la bote de message que vous voulez afcher si lutilisateur se
trompe de mot de passe.
3. Pour des raisons de scurit, pensez mettre la routine de contrle du mot de passe
dans une boucle For pour ne laisser lutilisateur quun nombre limit de tentatives
et interdire ensuite lafchage de la bote de connexion. Cela rend plus difcile de
percer le mot de passe.

>
:

494

Prog VB6 FM3A Page 495 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

ntion
Atte

Ce nest pas parce que Microsoft a insr une variable globale dans le code
de la bote de dialogue que cela en justie lemploi. Comme lexplique la
remarque de la procdure cmdOK_Click(), la variable globale est la mthode
la plus facile pour informer lapplication du succs de la connexion, mais une
programmation de qualit demande que vous remplaciez la variable globale
par des variables locales. La meilleure manire de modier ce code an den
amliorer la maintenance consiste sans doute changer la sous-routine
en une fonction boolenne. Lapplication appelante peut alors tester si la
valeur de retour de la fonction est True ou False.

Le code la n de la procdure cmdOK_Click() peut paratre troublant, car son style


diffre de ce quoi vous avez t habitu et vous y trouverez de nouvelles instructions. Jusquici, MsgBox () a t utilis comme une fonction, mais le code contient
linstruction suivante :
MsgBox "Mot de passe non valide, ressayez !", , "Connexion"

Si Visual Basic supporte encore ce format de linstruction MsgBox, Microsoft tente


damener les programmeurs utiliser de prfrence la fonction MsgBox(). Pour la transformer en fonction, vous devez lassigner une variable (un type Variant conviendra) et
ajouter des parenthses, comme ceci :
varKeys = MsgBox("Mot de passe non valide, ressayez !", ,
"Connexion")

Info

Linstruction MsgBox ne permet pas de dterminer le bouton de commande


utilis pour fermer la bote de message. Par contre, la fonction MsgBox()
renvoie le bouton sur lequel lutilisateur a cliqu. Si OK est lunique bouton
afch, il est inutile de tester la valeur retourne.

Linstruction suivante renvoie lactivit clavier la zone de texte du mot de passe (cela
ne survient que si lutilisateur a saisi un mot de passe incorrect) par la mthode SetFocus. Cette mthode oblige lapplication rendre lactivit du clavier au contrle auquel
elle sapplique, mme si elle doit normalement passer un autre contrle.
La dernire instruction utilise linstruction SendKeys pour slectionner le texte du mot
de passe saisi par lutilisateur, quelle quen soit la longueur. SendKeys dplace le curseur
au dbut de la zone de texte, puis la n ce qui a pour effet de slectionner toute la
zone. La premire frappe de lutilisateur remplacera le contenu prcdent.
Info

Linstruction SendKeys est explique en dtail dans la leon du Chapitre 7.

495

<
:

Prog VB6 FM3A Page 496 Lundi, 6. aot 2001 3:45 15

Partie III

Bote de dialogue Options


De tous les modles de feuilles, la bote de dialogue Options est celle qui effectue le
moins de tches par elle-mme, mais qui a le plus de possibilits dutilisations. Lorsque
vous lajoutez, vous verrez le modle illustr la Figure 15.11. La bote de dialogue
comporte quatre pages, avec des onglets et un cadre dans le corps de chaque page. Vous
pouvez ajouter des pages et des contrles dans les cadres des pages, avec les options
dont vous avez besoin.
Figure 15.11
La bote de dialogue
Options afche des
pages pour prsenter
diverses options.

De nombreux programmes Windows contiennent une bote de dialogue Options,


laquelle on accde par le menu Outils, qui ressemble beaucoup celle cre par ce
modle. Ce nest peut-tre quun noyau, mais cest le point de dpart qui vous permettra
de crer une bote de dialogue plus complte.
La bote de dialogue Options utilise un contrle ActiveX particulier, la Barre donglets
(TabStrip). Pour ajouter un contrle Barre donglets une application sans passer par
ce modle de feuille vous devez lajouter dans la bote outils partir de la bote de
dialogue Composants. Dans le menu Projet, Composants, choisissez Microsoft
Windows Common Controls 6.0.
Pour utiliser la bote de dialogue Options, suivez ces rgles gnrales :

>
:

Ajoutez autant de pages doptions que vous en avez besoin. La manire la plus
simple de modier les onglets et les pages consiste cliquer sur un des onglets puis
sur les points de suspension de la proprit (Personnalis). La bote de dialogue
Pages de proprits qui safche vous aide congurer les pages, les onglets et les

496

Prog VB6 FM3A Page 497 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

info-bulles que vous voulez utiliser dans la bote de dialogue Options (voyez la
Figure 15.12).
Figure 15.12
Utilisez la bote de
dialogue Pages
de proprits pour
congurer les pages
de la bote de
dialogue.

Ajoutez une procdure gnrale qui lit tous les contrles de la bote de dialogue
Options et congure les options correspondantes.

Appelez la procdure de conguration des options partir de la procdure


cmdApply_Click() pour que les options prennent effet lorsque lutilisateur clique sur
le bouton Appliquer. (Vous pouvez aussi supprimer le bouton Appliquer et sa procdure associe si vous ne voulez pas que lutilisateur ait accs cette caractristique.)

Remplacez linstruction suivante, dans la procdure vnementielle cmdOK _Click(),


par un appel votre propre procdure de conguration des options :
MsgBox "Placez le code ici pour dfinir les options et fermer la
bote de dialogue!"

Modiez la procdure vnementielle Form_KeyDown() pour quelle gre lordre


dafchage des pages de la bote de dialogue quand lutilisateur se sert des touches
Ctrl-Tab. Ce code nest pas vident, car vous devez dterminer prcisment le passage
de lactivit dun contrle lautre par des instructions du programme.
Info

La procdure vnementielle tbsOptions_Click() afche la bonne page (et


masque les autres) dans le contrle Barre donglets lexcution du
contrle.

497

<
:

Prog VB6 FM3A Page 498 Lundi, 6. aot 2001 3:45 15

Partie III

Vous pouvez aussi mettre en pratique lajout de modles de feuilles en utilisant lassistant
Cration dapplications. Pour cela, crez un nouveau projet et dmarrez lassistant.
Acceptez les valeurs par dfaut jusqu ce que vous arriviez la bote de dialogue Feuilles
standard. Cochez les quatre cases de modles standards, puis double-cliquez sur Suivant,
et enn sur Terminer. Visual Basic cre le noyau de lapplication. Une fois lassistant
achev, cliquez sur OK pour lire les instructions de conguration avant de fermer la bote
de dialogue.
Lassistant Cration dapplications ne cre quun noyau dapplication. Vous devez
complter les dtails. Cependant, ce noyau comporte les quatre modles de feuilles
standards proposs par dfaut.
Testez lapplication en lexcutant pour voir ce qui fonctionne dj. Nentrez pas de mot
de passe (il est vierge par dfaut tant que vous ne lajoutez pas au module de code), mais
vous pouvez observer que lcran daccueil a rcupr le nom de lutilisateur dans lobjet
App et la automatiquement afch dans la zone de texte Nom dutilisateur.
Lcran daccueil ne safche que brivement avant de laisser la place la feuille principale. La bote de dialogue A propos de safche si vous choisissez A propos de dans le
menu Aide, et la bote de dialogue Options apparat quand vous choisissez Options
dans le menu Afchage. Ce projet, mme si ce nest quun noyau dapplication, vous
offre une quantit de code de qualit tudier pour la mise en place de vos propres
applications qui demandent un ou plusieurs modles de feuilles standards.
Info

Lassistant Cration dapplications listera vos modles personnels (si vous


en avez cr) parmi les modles standards fournis lorsque vous cliquez sur le
bouton Modles de feuilles dans la bote de dialogue Feuilles standard.

Ecran Astuce du jour


Avez-vous dj dmarr un logiciel et t salu par une astuce sur la manire de mieux
lutiliser ? Windows 95 offre exactement ce type dastuce (tant que vous ne coupez pas
loption dafchage). Chaque fois que vous dmarrez Windows 95, vous voyez une
astuce diffrente. Pour interrompre cet afchage, dcochez la case Afcher les astuces au
dmarrage. La Figure 15.13 montre le modle de feuille Astuce du jour.
Lorsque vous ajoutez la bote de dialogue Astuce du jour dans une fentre feuille, Visual
Basic lajoute la collection Forms. Selon la taille de votre cran et les paramtres de
police par dfaut, vous pouvez avoir agrandir ltiquette qui contient le texte Afcher
les astuces au dmarrage. Cliquez en dessous de ltiquette Savez-vous pour
slectionner ltiquette lblTipText. Cest dans cette zone de texte que sera afche
lastuce.

>
:

498

Prog VB6 FM3A Page 499 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

Figure 15.13
Une bote de dialogue
Astuce du jour peut
fournir une assistance
aux nouveaux
utilisateurs
du programme.

Le code du module congure la feuille pour afcher une nouvelle astuce du jour chaque
fois que lutilisateur dmarre lapplication. Les rgles suivantes aident comprendre les
exigences lies la bote de dialogue Astuce du jour :

Le code de la bote de dialogue cre une nouvelle collection nomme Tips. La


procdure y rcupre lastuce afcher.

Naturellement, la collection Tips doit lire les astuces dans un chier que vous devez
crer et fournir avec le projet. Il doit contenir une astuce par ligne.

Le code charge le nom du chier de la constante nomme TIP_FILE dans la fonction


Load_Tips(). La procdure utilise la mthode Add pour ajouter chaque astuce la
collection en lisant le chier. Votre seule vritable tche consiste crer ce chier
dastuces laide dun diteur de texte tel que le Bloc-notes de Windows.

La procdure DoNextTip() slectionne de manire alatoire une astuce dans la


collection et lafche laide dune mthode particulire, DisplayCurrentTip (qui
est en fait une sous-routine se trouvant la n du code).

La partie la plus technique du code est la plus courte. Elle se trouve dans la procdure chkLoadTipsAtStartup(). Microsoft en fournit heureusement le code. Il utilise
la commande SaveSetting pour modier la base de registres du systme. Elle
enregistre dans ce cas la valeur qui dtermine sil faut ou non afcher cette feuille au
dmarrage. Si la case Afcher les astuces au dmarrage est dcoche, la base de
registres est modie en consquence et le code nafchera plus les astuces dans les
sessions suivantes.

Le modle de feuille Astuce du jour est sans doute le plus courant des modles qui
restent dcrire dans cette leon. Suivez ces tapes pour mettre en pratique la conguration dune bote de dialogue Astuce du jour sur votre systme :

499

<
:

Prog VB6 FM3A Page 500 Lundi, 6. aot 2001 3:45 15

Partie III

1. Dmarrez le Bloc-notes de Windows. Crez un chier Tipofday.txt (cest le nom


par dfaut utilis par la bote de dialogue Astuce du jour). Enregistrez ce chier dans
le rpertoire de lapplication. Saisissez ensuite le contenu suivant, puis enregistrez le
chier et quittez le Bloc-notes :

Brosser vos dents tous les jours et vos chaussures toutes les semaines.
Epargner pour votre retraite (personne ne sen soucie plus que vous).
Dormir beaucoup est un excellent traitement de linsomnie.
Lire un bon livre avant de voir le film.
Ne pas conduire en casse-cou ou casse-briques ; conduisez sans casse.
Faire de lexercice plus souvent que vous prenez un dessert.

2. Crez une nouvelle application et afchez la fentre de feuille standard. Avant tout,
enregistrez la feuille et le projet dans le mme rpertoire que le chier des astuces.
Cest ncessaire pour permettre au code de les trouver.
3. Dans le menu Projet, choisissez Ajouter une feuille, puis Astuce du jour.
4. Modiez la proprit Caption Savez-vous de ltiquette en Noubliez pas de.
5. Excutez lapplication pour voir les rsultats.
Pas de bote de dialogue Astuce du jour ? Vous avez bien cr le chier des astuces et
ajout la bote de dialogue votre application, mais Visual Basic afche dabord la
feuille principale du projet (Form1, si vous navez pas modi son nom). Il reste dnir
la feuille Astuce du jour comme feuille de dmarrage et congurer le code qui afche la
feuille normale quand lutilisateur ferme la bote de dialogue Astuce du jour.
Dans le menu Projet, slectionnez Proprits, et congurez frmTip comme Objet de
dmarrage. Cliquez sur OK pour fermer la bote de dialogue. Lapplication est dsormais congure pour afcher la bote de dialogue Astuce du jour au dmarrage.
Vous devez connecter la feuille principale (Form1) la bote de dialogue Astuce du jour
pour quelle safche une fois cette dernire ferme. Modiez la procdure
cmdOK_Click() comme suit :

1: Private Sub cmdOK_Click()


2:
Unload Me
Ferme la bote de dialogue Astuce du jour
3:
Form1.Show
Montre la feuille principale
4: End Sub

Il reste une chose faire. Si lutilisateur dcide de ne plus afcher les astuces au
dmarrage, il ny a alors plus moyen dafcher la feuille principale. Vous devez donc
ajouter la procdure Form_Load() une instruction Form1.show, comme ceci :

>
:

1: Private Sub Form_Load()


2:
Dim ShowAtStartup As Long
3:

500

Prog VB6 FM3A Page 501 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

4:
5:

6:
7:
8:
9:
10:

Voit si la feuille doit apparatre au dmarrage.


ShowAtStartup = GetSetting(App.EXEName, "Options", "Show
Tips at Startup", 1)
If ShowAtStartup = 0 Then
Unload Me
Form1.Show Montre la feuille normale ** Nouvelle instruction
Exit Sub
End If La suite du code nest pas reprise ici

Vous pouvez maintenant excuter lapplication et lire les astuces de manire alatoire en
cliquant sur le bouton de commande Astuce suivante. Quand vous cliquez sur OK, la
feuille principale safche. Si un utilisateur dcide de ne plus consulter les astuces dans
les sessions suivantes, la feuille principale safche directement au dmarrage.
Info

Vous pouvez aussi congurer lapplication pour quelle afche lastuce et la


feuille normale dautres faons. Par exemple, en ajoutant les mthodes Show
adquates une sous-routine Main et en utilisant cette sous-routine comme
objet de dmarrage.

Bote de dialogue Connexion ODBC


ODBC fournit un ensemble standard de commandes permettant laccs diffrents
types de donnes enregistres sur des ordinateurs de types varis. Le but du standard
ODBC est de permettre de nombreux types de systmes daccder des donnes stockes ailleurs.
La Figure 15.14 montre le modle de feuille qui safche lorsque vous insrez la bote
de connexion ODBC dans votre fentre feuille.
Figure 15.14
Le modle de feuille
Connexion ODBC
vous permet de
congurer un accs
une base de donnes
externe.

501

<
:

Prog VB6 FM3A Page 502 Lundi, 6. aot 2001 3:45 15

Partie III

La bote de dialogue Connexion ODBC peut tre ajoute une application pour permettre aux utilisateurs de slectionner une source de donnes ODBC et dy accder. La
source indique lemplacement et le type des donnes auxquelles lapplication veut
accder. Le Tableau 15.1 dcrit chaque champ ODBC.
Tableau 15.1 : Les zones de texte de la bote de dialogue Connexion ODBC
spcient les options ODBC
Nom

Description

DSN

Nom de la source de donnes. Cette option liste (dans une bote de liste
droulante) les sources ODBC actuellement enregistres dans la base
de registres de lutilisateur.

ID

Identiant de lutilisateur tel quil est dni dans la base de donnes


ODBC, pour lui permettre de valider la connexion.

Mot de passe

Mot de passe de lutilisateur permettant daccder au systme.

Base de donnes

Nom de la base de donnes laquelle il faut se connecter.

Pilote

Liste droulante qui prsente tous les pilotes prsents sur le systme
et qui permet lutilisateur denregistrer un nouveau pilote ODBC.

Serveur

Nom du serveur qui fournit la base de donnes si la DSN nest pas


disponible.

Le code ncessaire pour connecter les valeurs contenues dans la bote de dialogue
ODBC la bonne base de donnes compatible ODBC est assez complet. Vous devez
comprendre le sens des commandes ODBC ncessaires la connexion de la base de
donnes externe. Elles dpassent cependant le cadre de cet ouvrage, car les programmeurs Visual Basic ont rarement recourir de telles routines, sauf dans les applications
systme.

Ajouter vos propres modles de feuilles


Il est facile dajouter vos propres feuilles la collection de Visual Basic. Une fois que
vous avez cr une feuille que vous souhaitez ajouter aux modles, enregistrez-la dans
le dossier \Template\Forms. Chaque fois que vous ouvrirez la liste des modles, mme
partir de lassistant Cration dapplications, la feuille apparatra dsormais avec les
autres.

>
:

502

Prog VB6 FM3A Page 503 Lundi, 6. aot 2001 3:45 15

Chapitre 15 : Les modles de feuilles

ce
Astu

Info

Najoutez au dossier des modles que des feuilles assez gnrales, sans trop
de dtails, moins que vous ne souhaitiez expressment voir tous ces dtails
dans les feuilles que vous crerez partir du modle.
Pour supprimer une feuille ajoute dans le dossier des modles, dmarrez
lExplorateur Windows et allez dans le dossier \Template\Forms. Slectionnez la feuille et supprimez-la. La prochaine fois que vous afcherez la
liste des modles, elle aura disparu.

En rsum
La leon daujourdhui vous a expliqu comment utiliser les modles de feuilles pour
normaliser les applications et acclrer le dveloppement et la prcision des programmes.
Les modles de feuilles comportent plusieurs feuilles standards que les programmeurs
ajoutent souvent aux applications Windows. Vos utilisateurs apprcieront de voir des
feuilles normalises dans vos applications.
Les modles sont des feuilles dusage gnral qui peuvent sajouter tout projet. Ils
contiennent des rceptacles pour le texte et les images qui peuvent tres modis une
fois que le modle est charg dans le projet. Votre application commande lafchage de
la feuille et interagit avec le code du modle de feuille.
La leon de demain dbute une tude sur deux jours des objets et de leur relation la
programmation Visual Basic.

Questions-rponses
Q Pourquoi dois-je rendre les modles de feuilles gnraux ?
R En rendant vos modles de feuilles aussi gnraux que possibles (en ne conservant
que les dtails qui ne changent pas dune application lautre), vous simpliez la
gnration des nouvelles feuilles partir des modles. Dans la leon daujourdhui,
vous avez vu plusieurs modles fournis avec Visual Basic. La plupart des textes
quils contiennent sont des rceptacles qui indiquent o il faut que vous interveniez
pour personnaliser la feuille.

503

<
:

Prog VB6 FM3A Page 504 Lundi, 6. aot 2001 3:45 15

Partie III

Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension
des lments traits et des exercices qui vous permettent de mettre en pratique ce que vous
avez appris. Essayez de comprendre les questions et les exercices avant de passer la
leon suivante. Les rponses se trouvent lAnnexe A.

Quiz
1. Quel est le but des modles de feuilles ?
2. Dcrivez deux manires dajouter des modles de feuilles vos applications.
3. Dcrivez le code ncessaire pour connecter la bote de dialogue A propos de un
projet.
4. Vrai ou faux. Vous devez crire le code qui afche les informations systme quand
lutilisateur clique sur le bouton Infos systme de la bote de dialogue A propos de.
5. Quelle est la diffrence entre un cran daccueil et une feuille normale ?
6. Considreriez-vous que la bote de dialogue Astuce du jour est un cran daccueil ?
7. Quel est le but de la commande SaveSetting ?
8. Quelle est la signication dODBC et quel est son but ?
9. Que devez-vous faire dans la bote de dialogue Proprits pour que votre application
puisse afcher correctement un cran daccueil ou une bote de dialogue Astuce du
jour ?
10. Dcrivez le format du chier des astuces ncessaire la bote de dialogue Astuce du
jour.

Exercices
1. Suivez le conseil donn dans la partie concernant la bote de dialogue Connexion pour en
transformer le code en un meilleur ensemble de routines. Remplacez la variable globale
par des variables locales.
2. Crez une application qui afche sur le PC une astuce diffrente chaque fois que
lapplication dmarre. (Vous pouvez modier le chier des astuces dcrit dans la leon
daujourdhui.) Ajoutez une option de menu la feuille principale pour que les astuces
puissent se rafcher au dmarrage. Indice : regardez la procdure chkLoadTipsAtStartup() et utilisez la commande SaveSetting pour rinitialiser les astuces. Mme si
vous ne matrisez pas cette commande, vous disposez de tous les outils ncessaires
lachvement rapide de ce projet.

>
:

504

Prog VB6 FM3A Page 505 Lundi, 6. aot 2001 3:45 15

Chapitre

16

Visual Basic et les objets


Ce chapitre vous montre comment travailler avec les objets dans Visual Basic. Vous avez
dj utilis certains objets en manipulant les feuilles, les contrles et lobjet Printer. Nous
tendrons aujourdhui cette connaissance ; vous apprendrez un nouveau contrle nomm
contrle OLE, qui permet dutiliser des objets externes lenvironnement Visual Basic.
En outre, vous tudierez plus en profondeur les objets prdnis de Visual Basic, tels que
Screen ou App. Ils envoient vos applications des informations que vous pouvez utiliser
pour prendre des dcisions ou afcher des titres et des informations utilisateur sur la
feuille. Une fois que vous saurez comment utiliser les objets prdnis, vous apprendrez
comment travailler avec les collections dobjets.
Vous apprendrez aujourdhui :

le contrle OLE ;
les diffrences entre la liaison et lincorporation dobjet ;
comment placer les objets dautres applications dans vos applications ;
lactivation in situ ;
comment utiliser les groupes de contrles ;
comment grer des collections, ;
comment grer lExplorateur dobjets.

505

Prog VB6 FM3A Page 506 Lundi, 6. aot 2001 3:45 15

Partie III

OLE pour les objets externes


OLE est un terme familier aux utilisateurs et aux programmeurs de Windows. Vous pouvez
incorporer des objets OLE dans vos applications pour augmenter la puissance de vos
programmes et rduire la programmation. En utilisant des objets OLE dj dnis par
dautres applications, vous tirez avantage de la rutilisation dobjets.
ition
Dfin

Info

OLE (Object Linking and Embedding) signie Liaison et incorporation


dobjets. De nombreuses applications Windows offrent leurs donnes sous
forme dobjets OLE, que vous pouvez incorporer dans dautres applications
compatibles OLE.
La technologie ActiveX remplace rapidement OLE. En fait, Microsoft
appelle les contrles ActiveX les "contrles anciennement OLE". En tout
cas, OLE est toujours l et de nombreuses applications Visual Basic
lutilisent encore, comme le prouve la dcision de Microsoft de conserver
par dfaut le contrle OLE dans la fentre Bote outils. La leon
daujourdhui est non seulement importante en soi, mais elle constitue aussi
une excellente introduction la leon de demain qui concerne les objets
ActiveX.

La raison dtre de lutilisation dOLE rside dans la possibilit demployer des objets
extrieurs dans les applications que vous concevez. Le contrle OLE de la fentre Bote
outils gre la connexion lobjet OLE de votre projet. Les utilisateurs peuvent tirer
avantage de lactivation in situ lorsquils accdent des objets OLE incorpors.
ition
Dfin

Lactivation in situ fait rfrence la capacit de modier un objet


lintrieur dune application Visual Basic en utilisant les menus et les
commandes de lapplication parente. Quand lobjet OLE est incorpor dans
une application, vous navez pas crire doptions de menu pour guider
lutilisateur dans la modication de lobjet ceux de lapplication
dorigine apparatront automatiquement.

Liaison et incorporation
Le contrle OLE peut, suivant sa conguration, maintenir un lien vers un objet ou
lincorporer. Lorsque vous tablissez un lien vers une autre application, le contrle OLE
(le conteneur) contient une liaison avec un de ses documents. Si ce dernier est modi
dans lapplication dorigine, votre application le retera. Lobjet est dit permanent, car
son contenu peut tre maintenu jour par la liaison.

>
:

506

Prog VB6 FM3A Page 507 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

ition
Dfin

Un contrle conteneur est un contrle OLE qui contient lobjet de donnes


dune autre application.
Un objet permanent est un objet extrieur votre projet qui ne disparat pas
simplement parce que votre application se termine.

Lorsque vous incorporez dans votre application un objet OLE, le contrle conteneur
OLE contient une copie de lobjet document cr dans lautre application compatible
OLE. Mais aucune liaison nest maintenue entre votre application et lobjet dorigine.
Donc, si ce dernier est modi dans son application originelle, cela ne se retera pas
dans votre application, car vous disposez dune copie de cet objet.
Voici comment les deux types dactivit OLE affectent vos projets :

Si vous liez un objet au contrle OLE de votre application, Visual Basic dmarre en
fait lapplication parente lorsque lutilisateur tente dutiliser ou de modier lobjet
en double-cliquant dessus. Lutilisateur doit choisir loption de menu Fichier,
Fermer et revenir lapplication lorsquil a ni de travailler sur lobjet.

Si vous incorporez un objet dans le contrle OLE de votre application, il en fait


partie intgrante, car il rside dans votre application.

Le contrle OLE
Ouvrez une nouvelle application et double-cliquez sur le contrle OLE pour lajouter
la feuille. Une grande zone blanche safche un instant sur la feuille, puis la bote de
dialogue Insrer un objet, illustre la Figure 16.1, safche. Certains contrles
afchent une bote de dialogue lorsque vous cliquez sur la rubrique de proprit
(Personnalis), mais le contrle OLE est le seul qui afche automatiquement une bote
de dialogue ds quil est plac sur la feuille.
Figure 16.1
La bote de dialogue
Insrer un objet
contient toutes
les applications OLE
inscrites sur votre
systme.

507

<
:

Prog VB6 FM3A Page 508 Lundi, 6. aot 2001 3:45 15

Partie III

Info

La zone de liste Type dobjet contient les applications compatibles OLE parmi
lesquelles vous devez faire votre slection. La liste varie suivant les logiciels
installs sur votre machine. Une application met jour la base de registres
avec ses objets lors de son installation. Une application Windows peut produire
deux ou plusieurs contrles personnaliss. Par exemple, si PowerPoint 97 est
install, vous trouverez deux contrles PowerPoint dans la liste.

Loption Crer nouveau vous permet de spcier une application pouvant crer le type
dobjet que vous voulez incorporer. Si lobjet de donnes de lautre application existe
dj, vous pouvez cliquer sur loption Crer partir dun chier. Une page de slection
de chier safche alors (voyez la Figure 16.2). A partir de cette fentre, vous pouvez
incorporer lobjet ou cocher la case Lien pour ajouter un pointeur sur lobjet.
Figure 16.2
Vous pouvez
incorporer ou lier
un objet existant dans
votre contrle OLE.

Supposons que vous voulez crer des notes dans une application, qui peuvent par exemple se rapporter un enregistrement client. Vous pouvez :

laisser lutilisateur saisir la note dans un simple contrle zone de texte ;

amliorer le concept de zone de texte simple en crivant une routine de capture des
frappes clavier qui analyse la saisie et remplace la zone de texte simple en un traitement
de texte complet qui formate le texte et supporte les rgles et les marges (ce qui peut
tre assez long crire) ;

Incorporer un objet document WordPad laide dOLE.

A lvidence, la troisime option parat la bonne, car elle vous permet doffrir lutilisateur
la puissance dun traitement de texte sans que vous ayez en crire une ligne : WordPad
existe dj. Tout le monde ne dispose pas de Microsoft Word sur sa machine, mais
WordPad est fourni avec Windows (depuis Windows 95). Vos utilisateurs y ont donc accs,
ce qui leur permet deffectuer lactivation in situ de lobjet.

>
:

508

Prog VB6 FM3A Page 509 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

Pour incorporer un document WordPad, suivez ces tapes :


1. Aprs avoir insr le contrle OLE sur la feuille, slectionnez loption Crer
nouveau.
2. Faites dler la liste jusqu ce que vous trouviez la rubrique Document WordPad.
3. Double-cliquez sur cette entre pour incorporer un objet Document WordPad dans
votre application. Vous verrez une partie de la rgle de WordPad sur le contrle
OLE, comme lillustre la Figure 16.3.
Figure 16.3
Le contrle OLE
contient maintenant
un objet WordPad.

4. Modiez la proprit SizeMode du contrle OLE en 1 - Stretch pour que lobjet


WordPad sadapte la taille du contrle OLE.
5. Augmentez les proprits Width et Height de la feuille , respectivement, 6945 et
5670.
6. Congurez les proprits suivantes du contrle OLE :

Height : 3375
Left : 840
Top : 1080
Width : 5055

Vous pourriez ajouter dautres lments ce projet et donner un autre nom la


feuille, mais ne vous en proccupez pas pour linstant.
7. Excutez lapplication. Au dmarrage, rien de particulier ne semble se produire. Le
contour du contrle OLE est afch au centre de la feuille.
8. Double-cliquez sur le contrle OLE. Comme le montre la Figure 16.4, un menu
safche, li lactivation in situ du document WordPad incorpor, et une rgle.
Info

Il existe plusieurs autres manires dactiver un objet OLE, par exemple ds


quil obtient lactivit du clavier. La proprit AutoActivate commande la
manire dactiver lobjet. Sa valeur par dfaut est 2 - DoubleClick.

509

<
:

Prog VB6 FM3A Page 510 Lundi, 6. aot 2001 3:45 15

Partie III

Figure 16.4
Voici un traitement de
texte au milieu de
votre application
Visual Basic !

9. Tapez du texte et utilisez les menus pour le formater votre convenance. Toutes les
options de WordPad sont disponibles dans votre application Visual Basic.
10. Fermez lapplication.
ntion
Atte

Aucun enregistrement de ce que vous avez tap dans WordPad nest effectu.
Lorsque vous fermez lapplication Visual Basic, le document WordPad
svanouit et nest jamais enregistr. Ni Visual Basic, ni WordPad ne vous en
avertissent. Cet enregistrement vous incombe en tant que programmeur.
Notez que les menus in situ ne comportent pas les options habituelles du
menu Fichier.

Enregistrer le contenu de lobjet


Microsoft conseille denregistrer et de charger les objets incorpors laide dune des
mthodes denregistrement de chier. Votre application ayant la charge de contenir
lobjet incorpor, lapplication source na donc aucune autorit pour lenregistrer dans
votre application.
Utilisez la mthode SaveToFile pour enregistrer les donnes de votre contrle conteneur
OLE. Le Listing 16.1 montre un exemple de code qui enregistre les modications dans
un chier binaire particulier. Un chier binaire est plus restrictif que les types de chiers
squentiels ou indexs que vous avez dj abords, mais il offre une mthode rapide et
efcace pour enregistrer des objets, tant que vous les relisez ensuite dans le mme ordre.

>
:

510

Prog VB6 FM3A Page 511 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

Listing 16.1 : Enregistrer lobjet contrle conteneur OLE sur disque

1: Dim intFileNum as Integer


2:
3: Obtenir le premier numro de fichier disponible
4: intFileNum = FreeFile
5:
6: Ouvrir le fichier de sortie
7: Open "TEST.OLE" For Binary As #intFileNum
8:
9: Enregistrer le fichier
10: oleObj1.SaveToFile intFileNum
11:
12: Fermer le fichier
13: Close

Lors des excutions suivantes, votre application doit lire les dernires valeurs de lobjet
dans le contrle conteneur OLE en utilisant la mthode ReadFromFile, illustre dans le
Listing 16.2.
Listing 16.2 : Lire le contenu de lobjet contrle conteneur OLE enregistr
la prcdente excution

1: Dim intFileNum as Integer


2:
3: Obtenir le premier numro de fichier disponible
4: intFileNum = FreeFile
5:
6: Ouvrir le fichier de sortie
7: Open "TEST.OLE" For Binary As #intFileNum
8:
9: Lire le fichier dans lobjet
10: oleObj1.ReadFromFile intFileNum
11:
12: Fermer le fichier
13: Close

Vous pouvez placer le code de lecture et dcriture dans des procdures vnementielles
lies des boutons de commande ou des lments de menu. Rptons que cest votre
application, et non pas lapplication OLE, qui a la charge denregistrer et de charger les
donnes. Lapplication OLE soccupe quant elle de toutes les autres tches en relation
avec lobjet.

511

<
:

Prog VB6 FM3A Page 512 Lundi, 6. aot 2001 3:45 15

Partie III

Travailler avec les objets


Peut-tre avez-vous dj entendu le terme programmation oriente objet, ou POO.
Visual Basic nest pas strictement un langage orient objet, mme sil supporte les
objets en de nombreuses faons. La leon daujourdhui vous aidera mieux
comprendre les objets de Visual Basic et leur relation aux groupes et aux collections.
ition
Dfin

La programmation oriente objet ou POO est une programmation laide


dlments de donnes qui reprsentent des objets ayant des mthodes et des
proprits proches de celles des objets de Visual Basic. La vritable POO
contient des objets qui peuvent hriter dautres objets. Visual Basic ne
supporte pas compltement et exactement le modle objet, mme si, dans la
pratique, il parat en remplir les buts ultimes mieux quaucun langage
purement POO ne la fait.

Les sections qui suivent dcrivent des objets non OLE. Vous apprendrez comment
affter vos comptences en programmation en tirant avantage des groupes de contrles
et des collections dobjets.
ition
Dfin

Un groupe de contrles est un tableau de contrles auxquels on accde


laide dindices.

Programmer avec des objets


Dans le Chapitre 8, vous avez appris utiliser linstruction If TypeOf pour tester la
forme dun objet. Nous expliquerons aujourdhui plus en dtail ce que fait cette instruction elle dtermine en ralit la classe dun objet, mais nous y reviendrons.
Un objet peut tre peu prs nimporte quoi dans Visual Basic. Vous avez dj travaill
avec des objets tels que les contrles, les feuilles et lobjet Printer. Vous avez aussi transmis le type de donnes Object une procdure dans le Chapitre 13. Vous savez dj que
les objets contrles contiennent des proprits, des mthodes et des vnements. Les
contrles contiennent du code et des lments de donnes. Dune certaine faon, un objet
tel que le contrle bouton de commande est comme un paquet qui vous est tendu par
les dveloppeurs de Visual Basic. Vous navez pas crire le code qui dclenche un
bouton de commande, dclarer des variables pour dcrire son apparence et son titre, etc.
Les mthodes encapsules du bouton de commande font tout le travail votre place.
ition
Dfin

>
:

512

Les objets sont encapsuls. Comme une capsule contient des mdicaments
ou des astronautes en route vers la lune, des mthodes, des vnements et
des proprits sont encapsules dans un objet. Lencapsulation vous permet

Prog VB6 FM3A Page 513 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

de travailler sur les objets dun point de vue plus lev en vous vitant
lcriture de tout le code ncessaire leur support. Une classe dnit le
comportement et lapparence des objets quelle contient.

Classes dobjets
Les objets napportent pas seulement lencapsulation, ils font aussi partie dune hirarchie nomme classe dobjets. Lavantage dune classe est que tous ses objets partagent
les mmes caractristiques. (Un objet unique est dit tre une instance de la classe.)
Info

Vous pouvez crer vos propres objets. Si vous les intgrez dans une classe
existante, ils bncient automatiquement, ou hritent, des nombreux
proprits, mthodes et vnements de la classe.

Lorsque vous testez un objet laide de If TypeOf, Visual Basic renvoie sa classe. La
ligne de code suivante renvoie donc True ou False, suivant que lobjet myObj fait partie
ou pas de la classe CommandButton :
If TypeOf myObj Is CommandButton

ce
Astu

Vrifie la classe

Visual Basic supporte aussi la fonction TypeOf() qui renvoie le nom de la


classe. Par exemple, TypeOf(myObj) pourrait renvoyer CommandButton ou
Form.

Les classes rendent plus souple la programmation avec les objets. Par exemple, les
instructions With End With vous permettent dassigner simplement plusieurs proprits
un objet. Notez la redondance du code ci-dessous :

chkMaster.Caption = "Source principale"


chkMaster.Alignment = vbLeftJustify
chkMaster.Enabled = True
chkMaster.Font.Bold = False
chkMaster.Left = 1000
chkMaster.RightToLeft = False
chkMaster.Top = 400

En entourant un objet dun bloc With End With, vous pouvez liminer la rptition du
nom de lobjet. Le code suivant est identique au prcdent :
With chkMaster

.Caption = "Source principale"

.Alignment = vbLeftJustify

.Enabled = True

.Font.Bold = False

513

<
:

Prog VB6 FM3A Page 514 Lundi, 6. aot 2001 3:45 15

Partie III

.Left = 1000

.RightToLeft = False

.Top = 400
End With

Info

ce
Astu

Lutilisation de With End With sur deux ou trois proprits demande plus
de saisie que des assignations directes. Cependant, lorsque vous avez plus de
trois proprits assigner, la clause With devient une instruction attirante,
car elle demande moins de saisie et la maintenance est plus facile si vous
devez ajouter des proprits.
Si vous pensez avoir assigner des proprits supplmentaires dans de futures
versions du programme, vous pouvez anticiper et utiliser la clause With, mme
avec une ou deux proprits.

Objets systme
Contrairement aux objets que vous dclarez, les objets systme sont les objets comme App
ou Printer, que vous avez dj utiliss dans ce livre. Si vous ne pouvez pas transmettre les
objets systme (ils sont par nature globaux), vous pouvez les traiter comme les objets que
vous crez. Les objets systme reprsentent des lments particuliers de votre application.
Le Tableau 16.1 dcrit les objets systme et liste quelques mthodes importantes qui
peuvent leur tre appliques.
Tableau 16.1 : Les objets systme supportent plusieurs mthodes
Objet systme

Mthodes

App

Application en cours.
EXEName

Renvoie le nom de chier de lapplication.

Path

Renvoie le chemin daccs de lapplication.

Title

Renvoie le texte de la barre de titre de la fentre


principale.

PrevInstance

Renvoie True ou False, selon quune autre copie de


lapplication est en cours dexcution ou pas.

Clipboard

>
:

514

Description

Presse-papiers de Windows.
Clear

Efface le Presse-papiers.

GetData

Renvoie limage enregistre dans le Presse-papiers.

Prog VB6 FM3A Page 515 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

Tableau 16.1 : Les objets systme supportent plusieurs mthodes (suite)


Objet systme

Mthodes

Description

GetFormat

Renvoie le format de lobjet dans le Presse-papiers.

GetText

Renvoie le texte du Presse-papiers.

SetData

Copie une image dans le Presse-papiers.

SetText

Copie du texte dans le Presse-papiers.

SelStart

Utilis pour des oprations de slection dans le Pressepapiers.

SelLength

Utilis pour des oprations de slection dans le Pressepapiers.

SelText

Utilis pour des oprations de slection dans le Pressepapiers.

Debug

Fentre Excution.
Print

Err

Copie les informations lexcution dans la fentre


Excution (utilisable uniquement pour les programmes
Visual Basic non-EXE excuts depuis lenvironnement
de dveloppement).
Contient des informations sur ltat derreur actuel de
lapplication.
La proprit essentielle Number contient un code derreur
qui correspond lerreur systme la plus rcente (zro si
aucune erreur ne sest produite).

Printer

Imprimante systme. Ses mthodes ont t prsentes


dans le Chapitre 13.

Screen

Ecran de lutilisateur.
FontCount

Renvoie le nombre de polices supportes par lcran


actuel.

Fonts

Contient une liste de tous les noms des polices possibles


lcran.

Height

Renvoie la hauteur de la zone cran en twips.

515

<
:

Prog VB6 FM3A Page 516 Lundi, 6. aot 2001 3:45 15

Partie III

Tableau 16.1 : Les objets systme supportent plusieurs mthodes (suite)


Objet systme

Mthodes

Description

MousePointer

Contient la forme du curseur de la souris et dtermine sa


forme si vous spciez un autre curseur.

TwipsPerPixel
X

Renvoie le nombre de twips possibles en horizontal.

TwipsPerPixel
Y

Renvoie le nombre de twips possibles en vertical.

Width

Renvoie la largeur de lcran en twips.

Vous avez travaill avec la majorit des objets systme en particulier Printer et
Screen avant la leon daujourdhui. Lobjet App est utile pour dterminer au moment
de lexcution des informations comme le chemin et le nom de chier du programme ;
lobjet Clipboard fournit quelques fonctionnalits intressantes utiliser. Lobjet Debug
vous permet dinteragir avec votre programme lors des tests pour vous aider en
extraire les bogues.
Suivant les besoins de votre application, lobjet Clipboard est relativement simple
programmer. Cest le Presse-papiers de Windows ; vos applications peuvent donc y
couper ou copier des informations, que lutilisateur peut ensuite coller dans une autre
application Windows. Votre application peut aussi coller des informations dj contenues dans le Presse-papiers.
Vous pouvez utiliser lobjet Clipboard et ses proprits pour slectionner du texte
partir de votre programme et pour dterminer le texte slectionn par les utilisateurs. Par
exemple, la proprit SelStart marque la position du dbut de la slection dans la zone
de texte (ou dun autre type de contrle qui reoit la slection). La mise 0 de SelStart
place le curseur devant le premier caractre. SelLength dtermine le nombre de caractres choisis. Si vous slectionnez du texte en congurant SelStart et SelLength, ce texte
est transmis au Presse-papiers lorsque lutilisateur frappe Ctrl-C (pour copier) ou Ctrl-X
(pour couper). SelText est une chane qui contient le texte slectionn.
Si vous avez slectionn du texte dans une zone de texte, il se retrouve dans SelText.
Vous pouvez effacer la valeur courante de lobjet Clipboard (le Presse-papiers ne peut
contenir quune valeur la fois), puis envoyer le texte slectionn au Presse-papiers
laide du code suivant :
Clipboard.Clear
Efface le contenu du Presse-papiers
Clipboard.SetText txtName.SelText Copie le texte

>
:

516

Prog VB6 FM3A Page 517 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

Pour copier le texte du Presse-papiers dans une variable, vous pouvez utiliser
GetText(), ainsi :
strInfo = Clipboard.GetText()

Pour remplacer le texte slectionn dans un contrle par le texte contenu dans lobjet
Clipboard, vous pouvez le faire de cette manire :
txtName.SelText = Clipboard.GetText()

La mthode GetText() utilise parfois des arguments et elle exige des parenthses, mme
si vous nen spciez pas. Pour travailler sur du texte dans le Presse-papiers, il nest pas
ncessaire de fournir des arguments.

Groupes dobjets et de contrles


Une des choses les plus intressantes faire avec les objets est de dclarer un groupe
dobjets, comme un groupe de boutons de commande ou de feuilles. En outre, ces objets
nont mme pas besoin dexister. Il nest par exemple pas obligatoire de dclarer toutes
les feuilles au moment de la conception, car vous pouvez toujours crer un groupe de
feuilles lexcution.
Vous connaissez dj les collections Forms et Printers. Visual Basic supporte
galement la collection Controls, qui vous permet de parcourir tous les contrles
comme sils taient des variables de tableaux. Par exemple, le code qui suit masque tous
les contrles :
For intCtr = 0 To Controls.Count - 1

Controls(intCtr).Visible = False
Next intCtr

Si votre application contient plusieurs feuilles, vous pouvez masquer tous les contrles
de lensemble des feuilles en utilisant des boucles imbriques (lutilisation de For Each
limine la ncessit de recourir Count - 1) :
1: Dim frmAForm As Form
2: Dim ctlAControl As Control
3: For Each frmAForm In Forms

Parcours de toutes les

feuilles

4:
5:
6:
7:

For Each ctlAControl In frmAForm.Controls


ctlAControl.Visible = False
Next ctlAControl
Next frmAForm

517

<
:

Prog VB6 FM3A Page 518 Lundi, 6. aot 2001 3:45 15

Partie III

ntion
Atte

Un menu est considr comme un contrle dans la collection Controls.


Dans de nombreux cas, il est souhaitable domettre les menus dans une
boucle de ce type en testant, laide de la fonction TypeOf(), si le contrle
est un objet Menu avant de le masquer.

La collection Controls contient tous les contrles de la feuille en cours ; vous pouvez
cependant dnir un groupe de contrles dun type particulier. Un groupe de contrles
se dclare comme suit :
Dim ctlManyLabels(1 To 4) As Label

Les collections, approfondies la section suivante, fonctionnent comme des groupes qui
permettent daccder aux lments comme on le fait avec un tableau. Au lieu de crer
les objets lors de la conception, vous pouvez crer un groupe dobjets comme suit
(remarquez lutilisation du mot cl New) :
Dim fmrArray(1 To 10) As New frmFirstForm

Linstruction Dim considre quune feuille, frmFirstForm, existe. Aprs cette


dclaration, il existe 10 nouvelles feuilles, dont les indices vont de frmArray(1)
frmArray(10). On peut alors modier par programme les proprits des feuilles du
groupe pour que chacune ait les particularits souhaites, et les diffrencier de la feuille
de base, frmFirstForm.
Info

Chacune de ces feuilles ne safchera qu linvocation de sa mthode Show.

Pour par exemple diminuer la taille de police des contrles dune feuille quand un
utilisateur la redimensionne, vous pouvez utiliser la collection Controls pour le faire
dans chaque contrle :

1:
2:
3:
4:
5:
6:
7:

Private Sub Form_Resize ()


Diminue la taille de police de tous les contrles
Dim intCtr As Integer
For intCtr = 0 to Controls.Count - 1
Controls(intCtr).FontSize = Controls(intCtr).FontSize * .75
Next intCtr
End Sub

La taille de police des contrles sera rduite de 25 % par rapport ce quelle tait avant
que lutilisateur redimensionne la feuille.
Vous ne trouverez pas beaucoup de programmeurs Visual Basic qui utilisent des groupes
de contrles quand une collection existe pour le mme objet (Visual Basic fournit une

>
:

518

Prog VB6 FM3A Page 519 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

collection Forms). Pour utiliser les groupes de contrles, vous devez dclarer de la
mmoire pour les contenir et pour initialiser les tableaux.
Visual Basic supporte une technique que vous utiliserez sans doute souvent pour crer les
groupes de contrles. Lorsque vous copiez un contrle et que vous le collez nouveau sur
la feuille, Visual Basic afche la bote de message de la Figure 16.5.
Figure 16.5
Visual Basic va
crer un groupe de
contrles pour vous.

Vous pouvez vous demander pourquoi copier et coller un contrle, mais si vous avez
placer plusieurs boutons de commande ou tiquettes qui ont tous le mme format, cest
une technique utile : vous crez le premier contrle, congurez toutes ses proprits, le
copiez ensuite dans le Presse-papiers et enn, vous le collez sur la feuille pour ajouter
autant de contrles que vous le voulez.
Ds que vous collez le contrle, Visual Basic afche la bote de message de la Figure 16.5.
Si vous rpondez Oui, Visual Basic cre automatiquement un groupe de contrles en
utilisant le nom du premier. Par exemple, si le premier contrle est Command1, les lments
commenceront Command1(0) et lindice augmentera tant que vous continuerez coller le
contrle.
Votre code peut alors parcourir tous les lments du groupe, de Command1(0)
Command1(n 1), n tant le nombre de contrles du groupe, et dnir des proprits pour
chacun.

Collections
Les collections jouent un rle vital dans la programmation Visual Basic, comme vous
avez dj pu le voir. Elles sont toujours prsentes et Visual Basic les met jour automatiquement ; si vous ajoutez par exemple une feuille lors de lexcution avec la
dclaration New Form, Visual Basic actualise en consquence la proprit Count de la
collection Forms.
Les collections prdnies sont sans aucun doute utiles. Alors, pourquoi ne pas en crer
une ? Visual Basic vous y autorise. Vous devrez cependant la grer vous-mme ce qui
demande plus deffort que pour les collections prdnies.

519

<
:

Prog VB6 FM3A Page 520 Lundi, 6. aot 2001 3:45 15

Partie III

Comme vous le savez maintenant, tous les objets appartiennent une classe. Tout ce qui
sapplique une classe sapplique ses objets. Par exemple, si un contrle est un
membre de la classe CommandButton, vous savez quil supporte lvnement Click, car
tous les membres de la classe CommandButton supportent cet vnement.
Vos collections propres doivent tre des objets de la classe Collection. Elles se dnissent au niveau du module en utilisant les mots cls Public ou Private, suivant la plage
des procdures qui doivent y accder. Linstruction suivante dclare une collection
nomme colMyCol :
Private colMyCol As New Collection

Une collection fonctionne comme une tagre vide. Vous pouvez placer des objets (comme
des livres), les ter, les compter, etc. Naturellement, sur une tagre on peut mettre autre
chose que des livres. Dans une collection, on ne peut mettre quun type dlment, mais on
peut dclarer plusieurs collections contenant chacune des types dobjets diffrents. Voici les
mthodes auxquelles vos collections ont accs :

Add. Ajoute un lment la collection.

Count. Renvoie le nombre dlments de la collection.

Item. Sert dindex pour les lments de la collection.

Remove. Supprime un lment de la collection.

Comme le montre le Listing 16.3, Visual Basic soccupe de la mise jour de Count dans
lajout dlments la collection. Le code du Listing 16.3 cre une collection nomme
Cities et y ajoute quatre lments (des noms de ville).
Listing 16.3 : Utilisation de Add pour ajouter des lments la nouvelle collection

>
:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:

520

Dim Cities As New Collection


Dim intCtr As Integer
Ajoute les lments
Cities.Add "Tulsa"
Cities.Add "Miami"
Cities.Add "New York"
Cities.Add "Seattle"
Montre quil y a quatre villes
frmMyForm.Print "Il y a "; Cities.Count; " villes :"
Imprime chaque nom de ville
For intCtr = 1 To Cities.Count
frmMyForm.Print " "; Cities(intCtr)
Next

Prog VB6 FM3A Page 521 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

Si vous excutez ce code, la sortie suivante safche :

Il y a 4 villes :
Tulsa
Miami
New York
Seattle

Cette leon ne fait quefeurer les capacits des collections. Vous devez cependant
savoir que vous pouvez facilement y insrer et en ter des lments, dans lordre que
vous prfrez. Chaque lment de la collection est rfrenc par un indice, qui part de 1.
Dans lexemple prcdent, Cities(1) est la premire ville liste dans la collection. Les
indices de collection commencent toujours 1, et non 0 (comme le font les groupes de
contrles).
Vous pouvez utiliser largument nomm (un argument comprenant le nom de largument
suivi de loprateur dassignation, :=) Before pour ajouter des lments la collection
lendroit o vous les voulez. La ligne suivante ajoute une ville au dbut de la collection
Cities, quel quen soit le nombre dlments :
Cities.Add "St. Louis", Before:=1

Une position Before de 1 ajoute llment au dbut de la collection. Visual Basic ajoute
llment avant lindice spci. Si vous incluez cette instruction la n du code du
Listing 16.3, vous obtiendrez la sortie suivante :

Il y a 5 villes :
St. Louis
Tulsa
Miami
New York
Seattle

Si vous naviez pas indiqu largument Before:=1 dans linstruction, St. Louis se retrouverait la n de la collection.
Vous pouvez supprimer des lments spciques en utilisant la mthode Remove. Lorsque vous supprimez des lments, les indices sajustent pour toujours commencer 1.
Linstruction suivante supprime le second lment (Tulsa) de la collection.
Cities.Remove 2

521

<
:

Prog VB6 FM3A Page 522 Lundi, 6. aot 2001 3:45 15

Partie III

LExplorateur dobjets
En progressant dans votre connaissance de Visual Basic, votre besoin doutils performants augmente. Visual Basic en comporte un, lExplorateur dobjets, qui vous permet
dinspecter les variables, les contrles et dautres objets de votre application. Les
programmeurs Visual Basic qui dcouvrent lExplorateur dobjets lutilisent beaucoup
plus souvent quils ne pensent le faire, car ses caractristiques simplient beaucoup la
programmation.
ition
Dfin

LExplorateur dobjets vous aide localiser et grer les objets de vos


applications.

LExplorateur dobjets est un rfrentiel en ligne complet, mais pas dans le mme sens
que laide en ligne. LExplorateur dobjets vous offre un endroit unique o chercher les
objets et leurs informations. Il vous permet aussi de sauter directement au code dont
vous avez ensuite besoin.
Info

LExplorateur dobjets dcrit les bibliothques de types de votre application,


qui sont des rfrentiels des informations de classes. Vous pouvez utiliser
lExplorateur dobjets pour accder aux proprits, mthodes et vnements
des objets de vos applications, y compris ceux que vous avez crs.

La fentre de lExplorateur dobjets


Quand vous choisissez lExplorateur dobjets dans le menu Afchage ou par son icne
de la barre doutils, sa fentre, illustre la Figure 16.6, safche. Il se peut que vous
ayez lagrandir et fermer les fentres des proprits et de la bote outils pour voir
lExplorateur dobjets dans son ensemble.
Le Tableau 16.2 dcrit les parties de la fentre de lExplorateur dobjets.

>
:

522

Prog VB6 FM3A Page 523 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

Figure 16.6
LExplorateur
dobjets dcrit
les objets de votre
application.

Zone de liste
Projet/Bibliothque

Texte
rechercher

Bouton
Rechercher

Classes

Membres

Tableau 16.2 : La fentre de lExplorateur dobjets comprend plusieurs lments


avec lesquels vous devez vous familiariser
Composant

Description

Zone de liste Projet/


Bibliothque

Dcrit la source des objets que vous voulez explorer. (Vous


utiliserez souvent loption <Toutes bibliothques>, mais
vous pouvez par exemple vous limiter aux objets propres
votre projet en slectionnant son nom).

Texte rechercher

Vous permet de saisir un objet, un vnement, une mthode ou


une proprit rechercher.

Contrles de manuvre

Utiliss pour aller davant en arrire sur un chemin


dexploration dj parcouru.

Classes

Contient les noms des classes du projet ou de la bibliothque


slectionne.

Membres

Contient les membres de la classe slectionne.

523

<
:

Prog VB6 FM3A Page 524 Lundi, 6. aot 2001 3:45 15

Partie III

Parcourir lExplorateur dobjets


LExplorateur dobjets contient nombre dinformations identiques celles fournies par le
systme daide en ligne. Mais il sadresse plus particulirement au programmeur Visual
Basic et il prsente les informations dont ce dernier a besoin de manire succincte. Par
exemple, lentre <globales> de la liste des Classes dcrit lensemble des fonctions
intgres Visual Basic. Faites dler la fentre des membres jusqu la rubrique Left pour
voir des informations sur la fonction Left().
Info

Comme vous lavez dj tudi, la fonction Left() renvoie la partie de


gauche dune chane de caractres.

Lorsque vous slectionnez lentre Left, Visual Basic dcrit la fonction dans le bas de la
fentre de lExplorateur dobjets. Le texte dcrit non seulement le but de la fonction, mais
il montre aussi son format. Vous pouvez connatre la nature de chaque objet de la liste des
Membres par son icne. Par exemple, la petite icne verte indique une fonction. Faites
dler la liste pour voir toutes les constantes nommes qui safchent aprs les fonctions
et les collections dans la fentre Membres.
Si vous cliquez du bouton droit et slectionnez Membres du groupe dans le menu
contextuel, Visual Basic groupe les lments Membres et Classes par usage, et non plus
par ordre alphabtique.
ce
Astu

Aprs avoir slectionn une entre dans la fentre de lExplorateur dobjets,


cliquez sur le bouton Aide de la barre doutils (icne avec un point dinterrogation) pour obtenir les informations de laide en ligne le concernant.

Vous pouvez tre encore plus spcique avec lExplorateur dobjets. La liste des Classes
contient entre autres plusieurs entres qui rfrencent des constantes nommes. Quand
vous cliquez sur lentre ColorConstants, par exemple, seules les constantes nommes
de couleurs de Visual Basic safchent dans la liste des membres (voyez la Figure 16.7).
ce
Astu

Vous pouvez utiliser ces constantes nommes partout dans votre code o
vous avez besoin dune couleur. Par exemple, vous pouvez congurer la
couleur darrire-plan dune feuille ainsi :
frmMyForm.BackColor = vbRed

Configure la feuille en rouge

Tous les contrles de la bote outils apparaissent galement dans la liste des Classes.
Si vous cliquez sur ComboBox, par exemple, lExplorateur dobjets afche toutes les
informations pertinentes le concernant, ses proprits, ses mthodes et ses vnements.

>
:

524

Prog VB6 FM3A Page 525 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

Figure 16.7
La recherche
des objets
a t rduite
des constantes
particulires.

Constantes nommes de couleurs

Si vous cliquez sur une des entres dans la liste des Membres, vous en obtiendrez une
description.
Les programmeurs utilisent lExplorateur dobjets pour de nombreux usages. Il afche
les objets dune manire organise. Outre les objets, il coordonne toutes les particularits
de votre programme. Par exemple, si vous crivez du code et voulez utiliser des fonctions
internes de date et dheure, cliquez sur lentre DateTime dans la liste de Classes.
Comme le montre la Figure 16.8, la liste des Membres se met jour et ne montre que les
fonctions intgres qui concernent les dates et heures.
Mme si ces fonctions sont galement listes dans laide en ligne ou ailleurs, pouvoir
rviser toutes les fonctions concernant la date et lheure simplie la programmation, car
elles se retrouvent classes thmatiquement.
ce
Astu

Le bouton Prcdent retrace votre cheminement dans lExplorateur


dobjets. Il est donc facile daller davant en arrire avec la souris. Cela
imite le comportement des navigateurs Web utiliss actuellement.

LExplorateur dobjets est aussi trs utile pour dcrire votre projet. Lorsque vous ajoutez
des objets, des variables et des procdures vnementielles, lExplorateur dobjets
soccupe dans lombre tout recenser. La Figure 16.9 montre le Projet1 slectionn

525

<
:

Prog VB6 FM3A Page 526 Lundi, 6. aot 2001 3:45 15

Partie III

Figure 16.8
Trouver
la fonction
intgre sur
un certain sujet
est facile.

Les fonctions concernant la date et l'heure

dans la zone de liste Projet/Bibliothque. Quand vous cliquez sur Form1 (pour linstant le
seul objet de ce projet), lExplorateur dobjets afche la liste complte des procdures
vnementielles, des mthodes et des proprits correspondantes. Une seule entre,
Command1_Click est en gras, ce qui signie que du code a t ajout dans cette procdure.
Un des aspects les plus puissants de lExplorateur dobjets est loption Afcher la
dnition. Si vous slectionnez un membre qui fait partie de vos propres objets (par exemple une procdure vnementielle que vous avez crite ou un objet que vous avez dclar),
puis que vous cliquez du bouton droit et slectionnez Afcher la dnition, Visual Basic
saute directement au code o cet objet est dni. Vous pouvez ainsi utiliser lExplorateur
dobjets pour localiser du code spcique dans une application volumineuse. Vous navez
pas besoin de savoir dans quel projet lobjet a t dni tant que vous pouvez le localiser
dans lExplorateur dobjets.
Quand vous cherchez un lment dans lExplorateur dobjets, vous obtenez une liste de
toutes les rfrences faites cet lment dans votre application. Par exemple, si vous
cherchez Click, Visual Basic afche une fentre supplmentaire (voyez la Figure 16.10)
qui contient toutes les rfrences en rapport dans le projet (et dans tout le rpertoire
Visual Basic, car loption <Toutes bibliothques> est slectionne).

>
:

526

Prog VB6 FM3A Page 527 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

Figure 16.9
LExplorateur
dobjets
ne montre que les
caractristiques
spciques de
lapplication.

La seule procdure vnementielle contenant du code

Lvnement Click se produit sur divers objets, donc lExplorateur dobjets afche une
fentre qui contient tous les objets rfrencs qui supportent Click. Vous pouvez ensuite
afner la recherche en cliquant sur lobjet ou le projet qui contient lvnement Click
que vous recherchez.

En rsum
Ce chapitre na trait que des objets. Vous avez appris la manire dont les objets OLE
fonctionnaient dans Visual Basic. Le contrle OLE ne fait rien en lui-mme si ce nest
contenir des objets (ou des liens vers des objets) dautres applications. Une fois ces
objets en place, lutilisateur peut les modier et les manipuler lintrieur de votre
application. Vous navez pas crire de commandes pour accder lautre application,
car les objets OLE sont intelligents et ils en amnent tous les outils ddition, y compris
les menus.
Outre les collections, Visual Basic vous permet de dclarer des groupes de contrles, qui
fonctionnent souvent comme des tableaux dobjets. Vous pouvez dupliquer les contrles

527

<
:

Prog VB6 FM3A Page 528 Lundi, 6. aot 2001 3:45 15

Partie III

Figure 16.10
La fonction
de recherche
a trouv toutes
les occurrences
de Click.

Fentre de
rsultats

Sujet de
recherche

dune feuille pour quils partagent des caractristiques communes, en nayant plus qu
modier les proprits qui diffrent (par exemple le titre ou la couleur). Les objets
systme proposent des objets prdnis avec lesquels votre application peut interagir
avec les ressources extrieures lenvironnement classique du programme. En accdant
lobjet App, votre application peut dterminer en cours dexcution le chemin partir
duquel elle a t lance. Lobjet Clipboard permet votre application dinteragir avec le
Presse-papiers de Windows pour copier et coller du texte.
Visual Basic fournit un outil dorganisation, lExplorateur dobjets, qui est essentiellement un rfrentiel de donnes. Vous pouvez rechercher des vnements, des mthodes ou des proprits spciques ou consulter toute une classe dobjets. LExplorateur
dobjets suit mme dans votre code les objets que vous avez initialiss et les procdures
vnementielles que vous avez crites.
La leon de demain passe la gnration suivante des objets en dcrivant comment
utiliser et crer les contrles ActiveX.

>
:

528

Prog VB6 FM3A Page 529 Lundi, 6. aot 2001 3:45 15

Chapitre 16 : Visual Basic et les objets

Questions-rponses
Q Lutilisateur doit-il disposer de lapplication dorigine de lobjet OLE pour que
ce dernier fonctionne dans lapplication Visual Basic qui lutilise ?
R Oui, car lautomatisation in situ exige les menus et toutes les caractristiques de
lapplication dorigine. Si cette dernire nest pas installe, lutilisateur sera incapable de modier lobjet OLE. Microsoft Excel, par exemple, tableur trs puissant
qui occupe beaucoup despace disque et de mmoire, est compatible OLE. Vous
pouvez donc amener une feuille Excel dans une application que vous concevez, et
lutilisateur disposera alors de toute sa puissance dans votre programme. Etant
donn la taille dExcel, de ses menus et de ses caractristiques, il ne pourrait
jamais tre intgr dans votre application avec son objet. Il faut donc quExcel soit
install pour pouvoir utiliser un objet Excel dans votre application. Vous devez
clairement dclarer les exigences de votre application, dont la prsence de
programmes auxiliaires tels que Microsoft Excel, pour que lon puisse lutiliser
pleinement.

Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension
des lments traits et des exercices qui vous permettent de mettre en pratique ce que
vous avez appris. Essayez de comprendre les questions et les exercices avant de passer
la leon suivante. Les rponses se trouvent lAnnexe A.

Quiz
1. Quelle est la diffrence entre liaison et incorporation ?
2. Quel type de technique OLE, liaison ou incorporation, consomme votre avis le plus
despace disque ?
3. Vrai ou faux. Visual Basic enregistre automatiquement les modications que fait
lutilisateur aux objets OLE incorpors.
4. Quelle est la mthode permettant denregistrer un objet OLE dans un chier
disque ?
5. Quelle est la mthode permettant de lire un objet OLE partir dun chier disque ?
6. Indiquez deux manires de tester la classe dun objet.

529

<
:

Prog VB6 FM3A Page 530 Lundi, 6. aot 2001 3:45 15

Partie III

7. Vrai ou faux. Vous devez transmettre les objets systme si vous devez y accder
partir de plusieurs procdures.
8. Indiquez trois types dlments qui apparaissent souvent dans la liste des Membres
de lExplorateur dobjets.
9. Que se passe-t-il si vous groupez la liste des Membres dans lExplorateur dobjets ?
10. Vrai ou faux. LExplorateur dobjets ne recherche pas les objets que vous avez crs.

Exercices
1. Pourquoi lutilisation de With End With est-elle sans doute une mauvaise ide dans
ce cas ?
With chkMaster

.Caption = "Source principale"

.Alignment = vbLeftJustify
End With

2. Ecrivez une application simple qui contient un contrle OLE. Incorporez-y lobjet
Image Paintbrush de Windows. Ajoutez une option de menu permettant denregistrer
les images et une autre pour les charger. Excutez lapplication, double-cliquez sur le
contrle et dessinez une image. Enregistrez-la, quittez lapplication, puis redmarrezla. Chargez limage enregistre pour vous assurer que les procdures de chargement et
denregistrement sont correctes.

>
:

530

Prog VB6 FM3A Page 531 Lundi, 6. aot 2001 3:45 15

Chapitre

17

Contrles ActiveX
La leon daujourdhui vous montre comment apprhender et utiliser les contrles
ActiveX. En ajoutant des contrles ActiveX votre fentre de bote outils, vous ajoutez
des fonctionnalits lenvironnement Visual Basic et rduisez le temps ncessaire au
dveloppement des applications.
La technologie objet supporte par Visual Basic vous permet demprunter des fonctionnalits dautres applications qui supportent ActiveX et lautomatisation ActiveX. Par
exemple, votre application Visual Basic peut crer un document Word ou une feuille de
calcul Excel en empruntant la technologie de ces applications externes.
Une fois que vous aurez compris limportance de la technologie des contrles ActiveX et
les nombreuses manires dont vous pouvez en tirer parti, vous apprendrez comment crer
vos propres contrles ActiveX.
Aujourdhui vous apprendrez :

lhistorique des contrles ActiveX ;

le rapport entre contrles VBX et OCX et contrles ActiveX ;

comment ajouter des contrles ActiveX vos projets ;

lautomatisation des objets dans vos applications ;

comment crer une feuille de calcul Excel partir dune application Visual Basic ;

comment crer de nouveaux contrles ActiveX ;

le sous-classement des nouveaux objets ActiveX ;

comment crer des valeurs de proprits propres vos contrles.

531

Prog VB6 FM3A Page 532 Lundi, 6. aot 2001 3:45 15

Partie III

La technologie ActiveX
La technologie ActiveX est la version actuelle de lensemble de contrles dextension
VBX apparus il y a quelques annes. Lextension de chier .VBX signie "Visual Basic
eXtended". En dautres termes, les contrles ActiveX sont les descendants des contrles
que vous pouviez ajouter aux versions antrieures de Visual Basic pour tendre la bote
outils livre avec le produit.
Dans le pass, les contrles Visual Basic ntaient pas compatibles avec la technologie
des navigateurs Web, lInternet et les autres outils de programmation de Windows, tels
que Visual C++. Cependant, ils taient importants pour permettre aux programmeurs
dtendre leur capacit crire du code. Plus le programmeur dispose de contrles,
moins il a de travail faire. En consquence, une communaut et toute une activit se
sont dveloppes pour crer des contrles Visual Basic manipulant des graphiques, des
donnes, des grilles, du multimdia, etc. Leur succs a oblig Microsoft les reconcevoir (car ils ntaient compatibles avec aucun autre produit Microsoft).
Info

OLE est une technique cousine des contrles VBX, mais qui est plus
universelle dans les applications Microsoft elle na pas t conue
exclusivement pour les programmeurs Visual Basic. Cependant, comme
vous avez pu le voir hier, un objet OLE est un objet de donne (et pas un
contrle) utilisable comme un contrle Visual Basic.

Entre les contrles Visual Basic et ActiveX, Microsoft a conu des contrles OCX
32 bits particuliers. Ces nouveaux contrles Visual Basic tendaient les capacits de
Visual Basic, mais aussi dautres langages de programmation comme Visual C++. Les
contrles OCX avaient une extension de chier .OCX. Les anciens contrles VBX ne
reconnaissent que les applications 16 bits.
ntion
Atte

>
:

532

Si vous avez travaill avec de prcdentes ditions de Visual Basic qui


supportaient des contrles VBX 16 bits, ce qui a t le cas jusqu la
version 5.0, le systme actuel ne peut les utiliser que sil dispose de nouvelles versions 32 bits. Par exemple, Visual Basic est fourni avec une
version 32 bits du contrle Gauge (la version 16 bits faisait partie des
versions antrieures de Visual Basic). Donc, si vous chargez une ancienne
application Visual Basic qui utilise ce contrle, Visual Basic le remplacera
par la version 32 bits, et tout devrait fonctionner correctement. Si, par
contre, un remplacement nexiste pas ou quil ne peut pas tre fourni par le
distributeur du contrle VBX, vous devrez supprimer le contrle de lapplication et lui substituer un contrle identique.

Prog VB6 FM3A Page 533 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Les contrles OCX, bien que compatibles avec Visual C++, ne fonctionnaient pas
simplement sur lInternet ; Microsoft les a donc fait voluer en contrles ActiveX, pour
permettre aux navigateurs Internet et aux multiples applications et langages de programmation de fonctionner correctement avec eux.
Y aura-t-il un remplacement ActiveX ? Sans doute un jour, suivant les nouvelles techniques qui demanderont des fonctionnalits que ne propose pas la technologie ActiveX.
Info

Les versions actuelles dInternet Explorer et de Netscape ( laide dun


module dextension disponible sur la page de support de Netscape), supportent ActiveX sur les pages Web. Ce qui signie que les utilisateurs peuvent
interagir avec les contrles ActiveX dans toutes les pages Web qui en
contiennent.

Ajout de contrles ActiveX un projet


Les contrles ActiveX (pour vous, programmeur Visual Basic) ne reprsentent que des
contrles additionnels qui peuvent tre ajouts la fentre Bote outils et utiliss pour
dvelopper des programmes. Tous types de contrles existent. Plusieurs sont fournis
avec Visual Basic ; vous pouvez les trouver en slectionnant Projet, Composants (ou
Ctrl-T), comme vous lavez dj fait. En outre, vous trouverez des contrles ActiveX sur
lInternet. Des entreprises de programmation vendent galement des contrles ActiveX
qui peuvent tre fusionns dans lenvironnement Visual Basic.
Info

ntion
Atte

Consultez le site Web de Microsoft (http://www.microsoft.com/activex) pour


avoir des exemples de contrles ActiveX que vous pouvez tlcharger sur
votre PC.
Najoutez la fentre Bote outils que les contrles ncessaires votre
application. Chaque contrle supplmentaire est envoy dans lapplication
compile que vous distribuez. Plus lapplication contient de contrles, plus
elle sera volumineuse, plus elle sexcutera lentement et plus elle consommera de ressources sur la machine de lutilisateur. Pour supprimer les
contrles ActiveX inutiles, afchez la bote de dialogue Projet, Composants
et dcochez tous les contrles qui nappartiennent pas votre projet.

Quune application utilise tous les contrles ActiveX chargs au moment de la compilation ou pas, il est obligatoire de distribuer les chiers excutables ActiveX avec le
projet.

533

<
:

Prog VB6 FM3A Page 534 Lundi, 6. aot 2001 3:45 15

Partie III

ition
Dfin

Un chier excutable de contrle ActiveX est un chier annexe que vous


devez fournir avec lapplication qui utilise le contrle ActiveX correspondant. Ce chier contient les instructions ncessaires pour que le contrle
ActiveX fonctionne lors de lexcution.

Il existe des contrles ActiveX pour pratiquement toutes les tches de programmation
que vous pouvez avoir faire. Pour un meilleur contrle du son que celui offert par le
contrle multimdia, vous pourrez trouver de nombreux types de contrles ActiveX
relatifs au son en ligne. De mme, les contrles graphiques 3D, les contrles Internet, les
contrles mathmatiques, dimprimantes, de scanners et un vaste assortiment dautres
contrles sont disponibles. Vous devrez dcider du type de programmation que vous
effectuez le plus souvent et rechercher les contrles particuliers qui peuvent vous assister.
Par exemple, si vous crivez un logiciel de publication, vous chercherez tous les contrles
de manipulation et ddition de texte possibles.
Lorsque vous ajoutez un nouveau contrle ActiveX la fentre Bote outils,
comment lutiliser ? Pour commencer, vous pouvez considrer que les contrles ActiveX
supportent les lments suivants :

Proprits ;

Evnements ;

Mthodes.

Autrement dit, vous utilisez un contrle ActiveX exactement comme nimporte quel
autre contrle. Il vous faudra obtenir une liste des proprits, vnements et mthodes
supports par le contrle pour pouvoir le programmer correctement. Si de nombreuses
proprits des contrles apparaissent parfois dans la fentre Proprits, ce nest pas
toujours le cas (en particulier pour les contrles disponibles lexcution). Lorsque vous
achetez des contrles ActiveX ou que vous les tlchargez depuis les sites Internet qui les
proposent, vous devez aussi obtenir des instructions qui listent les proprits, vnements
et mthodes. Les contrles ActiveX fournis avec Visual Basic sont rfrencs dans laide
en ligne.
La Figure 17.1 montre la bote de dialogue Composants, qui safche quand vous
slectionnez Projet, Composants. Vous avez dj rencontr cette bote de dialogue
plusieurs fois dans ce didacticiel, car vous avez dj ajout des contrles ActiveX
auparavant, par exemple le contrle multimdia.
Lorsque vous installez Visual Basic, plusieurs contrles ActiveX sont ajouts votre
systme ; vous pouvez votre tour les ajouter un projet par la bote de dialogue
Composants. De plus, la routine dinstallation de Visual Basic recherche aussi sur votre
systme des contrles supplmentaires ajouter, dont nombre apparatront dans la bote
de dialogue Composants. Une installation de Visual Basic sur deux ordinateurs

>
:

534

Prog VB6 FM3A Page 535 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Figure 17.1
Utilisez la bote de
dialogue Composants
pour ajouter de
nouveaux contrles
ActiveX votre projet.

diffrents peut donc prsenter des ensembles de contrles ActiveX diffrents. Cliquez
sur le bouton Parcourir de la bote de dialogue pour rechercher les chiers de contrles
ActiveX de votre disque dur.
ce
Astu

La liste des contrles ActiveX de la bote de dialogue Composants peut devenir


assez longue. Vous pouvez cliquer sur loption Elments slectionns pour ne
voir apparatre dans la liste que les contrles ActiveX que vous utilisez.
Cependant, pour ajouter dautres lments, vous devrez dcocher loption
pour pouvoir trouver le contrle que vous voulez ajouter.

Lorsque vous ajoutez des contrles dans la fentre Bote outils, elle peut vite se
remplir. Observez longlet Gnral au sommet de la bote outils. En cliquant du
bouton droit sur une zone vierge dans la fentre Bote outils, vous pouvez y crer de
nouveaux onglets pour regrouper des contrles ActiveX. Pour ajouter des contrles dans
un nouveau groupe, cliquez sur longlet correspondant, puis ajoutez-les. (La bote de
dialogue Composants est disponible partir du menu contextuel de la fentre Bote
outils qui safche par un clic droit.) La Figure 17.2 montre un ensemble de contrles
ayant rapport Internet ajouts dans un groupe conu dans ce but.

535

<
:

Prog VB6 FM3A Page 536 Lundi, 6. aot 2001 3:45 15

Partie III

Figure 17.2
Les onglets de groupes permettent
dorganiser la fentre Bote outils.

Automatisation ActiveX
Jusquici, vous avez ajout quelques contrles et vous savez tout du paramtrage des
proprits, de la raction aux vnements et du dclenchement des mthodes.
Certains contrles ActiveX vous permettent cependant daller un cran au-del. Vous
pouvez en fait utiliser dans votre application un contrle incorpor et en emprunter
les fonctionnalits.
Visual Basic supporte une telle automatisation des contrles entre applications. Par
exemple, vous pouvez ouvrir Excel, charger une feuille de calcul, en manipuler les
donnes partir de commandes Excel, fermer Excel, puis incorporer la feuille de calcul
rsultante dans la fentre de votre application sans que les utilisateurs se doutent un
instant que vous avez emprunt les caractristiques dExcel.
ition
Dfin

Lautomatisation est le traitement par lequel une application utilise les


donnes dune autre application et les manipule avec laide de cette
dernire. Les utilisateurs ne se rendent pas compte que lautre application a
t lance, a travaill et a t referme.

Lutilisation de lautomatisation se limite aux applications ActiveX enregistres dans la


base de registres de votre machine. En gnral, si vous utilisez une application compatible ActiveX, elle a enregistr sa capacit dautomatisation dans la base de registres lors
de son installation.
Info

>
:

536

Lautomatisation exige normalement une connaissance approfondie de la


hirarchie des objets de lautre application, qui peut tre complexe.
Lexemple qui suit vous apprend lautomatisation par une dmonstration
utilisant un document ActiveX. Pour comprendre pleinement lautomatisation, vous devez tre vers dans les fonctionnalits internes de lapplication
emprunte. Cet ouvrage ne peut pas entrer dans les particularits des
applications autres que Visual Basic. Heureusement, la plupart des concepts

Prog VB6 FM3A Page 537 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

de lautomatisation dpassent le cadre dune application unique. Les


concepts de lexemple que vous verrez ici se transposent largement
dautres applications.
Pour commencer cet exemple, vous devez dnir une variable qui reprsente lapplication automatiser dans votre propre programme. Vous utiliserez le type de donnes
Object pour crer une variable rfrenant lapplication dautomatisation. Vous devez
dabord dnir un objet application ainsi :
Dim obExcelApp As Object

Vous devez ensuite connecter la variable lapplication. Si cette dernire nest pas en
cours dexcution, vous devez la lancer larrire-plan par la fonction CreateObject().
Cette fonction ne se limite pas dmarrer lapplication, mais elle y connecte aussi votre
variable objet, ainsi :
Set obExcelApp = CreateObject("Excel.Application")

Largument de la fonction CreateObject() est le nom de lapplication.


Info

Utilisez Set au lieu dune simple assignation pour attacher lapplication automatise votre application Visual Basic. Une variable ne peut pas contenir
une application externe ; elle ne peut contenir que des valeurs telles que des
nombres et des chanes de caractres.
Utilisez Set pour crer une rfrence lobjet externe. Set nassigne pas,
mais fait pointer la variable sur lobjet quelle reprsente.

Un problme peut se poser si lapplication sexcute dj. Dans un systme multitche et


multi-utilisateur, plusieurs copies dExcel peuvent sexcuter au mme moment. Vous
pouvez utiliser la fonction GetObject() la place de CreateObject() si lapplication est
en cours dexcution :
Set obExcelApp = GetObject(, "Excel.Application")

Remarquez la virgule au dbut de la liste des arguments. Vous pouvez, dans la plupart
des cas, omettre le premier argument, car le second dcrit lobjet que vous obtenez. Si le
second argument est absent, vous devez fournir, comme premier argument, le chemin
daccs un chier qui dcrit lobjet que vous voulez crer.
Si Excel est dj en cours dexcution, il est prfrable de ne pas en lancer une seconde
instance. En utilisant le droutement des erreurs, vous pouvez vrier si cest le cas. La
fonction GetObject() dclenchera une erreur si Excel nest pas en cours dexcution.

537

<
:

Prog VB6 FM3A Page 538 Lundi, 6. aot 2001 3:45 15

Partie III

Dans ce cas, vous pouvez alors utiliser CreateObject() pour dmarrer une instance
dExcel.
Voici un exemple de code que vous pouvez utiliser pour vrier quune instance dExcel
est dmarre :
1: Droutement des erreurs
2: On Error Resume Next
3:
4: Rfrence lapplication Excel
5: Set obExcelApp = GetObject(, "Excel.Application")
6: If Err.Number <> 0 Then
7:
Set obExcelApp = CreateObject("Excel.Application")
8:
blnRunning = False
Excel ntait pas en excution
9: Else
10:
blnRunning = True
11: End If

Vous avez dj tudi linstruction On Error Goto lors de leons prcdentes, mais cest
la premire fois que vous rencontrez loption Next. Jusquici, linstruction On Error se
droutait en cas derreur sur une tiquette dinstruction. Loption Next indique simplement Visual Basic, quand il rencontre une erreur, de passer linstruction suivante et
de continuer le programme. Cette situation fournit loccasion de dire quun code
derreur est renvoy chaque fois que linstruction On Error dtecte une erreur. Ce code
est une proprit dun objet prdni du systme nomm Err.
Tant quil ny a pas derreurs dans un programme en excution, Err.Number est 0. Par
consquent, si Err.Number contient une valeur diffrente, cela signie quune erreur
sest produite. Dans lexemple, la ligne 6 signalera un code derreur dans Err.Number si
la fonction GetObject() choue. Donc, la ligne 7, dduisant quExcel nest pas dj
dmarr, lance une instance dExcel par la fonction CreateObject(). (Pour dtecter
dautres erreurs plus loin dans le programme, comme vous devriez le faire si vous afchez des botes de dialogue et que vous aviez besoin de savoir si lutilisateur a cliqu sur
Annuler, vous pouvez rinitialiser ltat de lerreur en mettant Err.Number 0.) La variable
boolenne blnRunning est mise False pour que le programme sache quil a lanc Excel.
ntion
Atte

Si Excel tait dj en cours dexcution, il ne faut pas larrter dans votre


programme.

Quand vous ouvrez une autre application en utilisant lautomatisation, votre application
doit comprendre dans le dtail son interface. Dune certaine manire, votre programme
est un utilisateur de lautre application. Donc, si vous ouvrez Excel, vous interagissez
avec lui en utilisant la notation classique de ligne et de colonnes, mais vous devez aussi
utiliser une notation de proprits des objets spcique Excel.

>
:

538

Prog VB6 FM3A Page 539 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

ce
Astu

Les variables dobjets dautomatisation dapplication sont une exception la


rgle gnrale qui dit quil est prfrable de nutiliser que des variables locales. Lopration tant rellement en dehors de votre application, vous pouvez
utiliser en toute scurit une variable objet globale pour que vos procdures
naient pas transmettre la variable de lapplication.

Vous devez maintenant dclarer un objet feuille de calcul pour que lapplication puisse
gnrer des donnes :
Dim obWorkSheet As Object

Objet feuille de donnes

Le code suivant ajoute des donnes certaines cellules de la feuille de donnes :

Entrer des valeurs


obWorkSheet.Cells(1,
obWorkSheet.Cells(1,
obWorkSheet.Cells(2,
obWorkSheet.Cells(2,

dans des
1).Value
2).Value
1).Value
2).Value

cellules
= "Ventes"
= "Mois"
= 21913.44
= "avril"

Si vous assemblez les lments de la section prcdente et ajoutez un peu de code de


nettoyage, comme le code denregistrement de la feuille de calcul et de fermeture de
lobjet Excel, vous devriez aboutir quelque chose qui ressemble au Listing 17.1.
Listing 17.1 : Votre application peut utiliser Excel pour crer une feuille de calcul

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

Private Sub cmdSendToExcel_Click()


Dim obExcelApp As Object
Objet Appplication
Dim obWorkSheet As Object
Objet Feuille de calcul
Dim blnRunning As Boolean
Si Excel tait en excution
Droutement des erreurs
On Error Resume Next

Rfrencer lapplication Excel


Set obExcelApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Set obExcelApp = CreateObject("Excel.Application")
blnRunning = False
Excel ntait pas en excution
Else
blnRunning = True
End If
Ajouter un nouveau classeur
obExcelApp.Workbooks.Add
Rfrencer la feuille de calcul active
Set obWorkSheet = obExcelApp.ActiveSheet

539

<
:

Prog VB6 FM3A Page 540 Lundi, 6. aot 2001 3:45 15

Partie III

Listing 17.1 : Votre application peut utiliser Excel pour crer une feuille de calcul
(suite)

24:
Entrer des valeurs dans les cellules de la feuille active
25:
obWorkSheet.Cells(1, 1).Value = "Ventes"
26:
obWorkSheet.Cells(1, 2).Value = "Mois"
27:
obWorkSheet.Cells(2, 1).Value = 21913.44
28:
obWorkSheet.Cells(2, 2).Value = "avril"
29:
30:
Slectionner la deuxime ligne pour formater
31:
obWorkSheet.Rows("2:2").Select
32:
obExcelApp.Selection.NumberFormat = "$##,###.##"
33:
34:
Enregistrer le classeur (changez ce nom sil existe dj)
35:
obExcelApp.Save ("c:\VBCreated.XLS")
36:
37:
Ne pas quitter si Excel tait dj lanc !
38:
obExcelApp.ActiveWorkBook.Close False
39:
40:
If Not (blnRunning) Then Sil ntait pas lanc...
41:
obExcelApp.Quit
alors quitter Excel
42:
End If
43:
44: End Sub

Si vous avez vri quExcel ntait pas dj en cours dexcution, vous pouvez le
fermer (comme le fait la ligne 41). Dans le cas contraire (la fonction GetObject() nayant
pas renvoy derreur), il nest pas souhaitable de quitter Excel, car il peut tre en train de
sexcuter en tche de fond. Le code de cet exemple cre la petite feuille de calcul illustre la Figure 17.3.
Figure 17.3
Votre application
Visual Basic peut
crer des feuilles
de calcul Excel !

>
:

540

Prog VB6 FM3A Page 541 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Cette feuille de calcul est simple pour permettre lexemple davoir une taille raisonnable. Dordinaire, votre application Visual Basic peut modier des valeurs et mme
dclencher un graphique Excel et imprimer un tat. La chose importante retenir est
que Visual Basic a utilis lintelligence dExcel pour crer une feuille de calcul mise en
forme sans que lutilisateur, son clavier, ne sache quExcel est impliqu.
Une fois que vous avez utilis Excel ou Word ou une autre application compatible ActiveX, vous devez inclure cet objet dans votre application Visual Basic.
Info

Excel contient son propre langage dautomatisation, comme Word et toutes


les applications compatibles avec lautomatisation ActiveX. Cependant, la
plupart des applications supportent les caractristiques douverture et de
fermeture prsentes dans cette section pour connecter une application et
son objet de donnes principal des variables objet Visual Basic. De mme,
elles supportent des mthodes et des proprits comme celles qui sont
illustres ici. Vous naurez que peu de problmes tant que vous comprenez
Visual Basic. Vous devez cependant avoir accs au langage interne de
lapplication utilise pour lautomatisation. Recherchez dans son aide en
ligne pour trouver sa hirarchie des objets.

Cration de vos propres contrles ActiveX


Si lide de crer un contrle ActiveX vous effraie un peu, considrez les raisons qui
peuvent vous amener le faire. Vous pourriez non seulement distribuer (ou mme
vendre) vos contrles dautres dveloppeurs, mais aussi les rutiliser dans vos
propres applications. Par exemple, si vous vous retrouvez toujours refaire les mmes
types de modications aux contrles de Visual Basic pour quils fonctionnent comme
vous le voulez, crivez de nouveaux contrles qui ne se contentent pas dimiter ceux
dont vous disposez, mais qui prsentent des proprits et des mthodes intgres dont
vous avez besoin ! La prochaine fois que vous avez crire une application qui a
besoin de ce contrle, vous navez qu lajouter la bote outils et dnir les
proprits ncessaires. Au lieu davoir rcrire le mme code pour que le contrle se
comporte dune certaine manire, il suft de paramtrer les valeurs de ses proprits et
de revenir aux dtails importants de lapplication.

Info

Un autre avantage li au dveloppement de votre propre collection doutils


de programmation ActiveX est la possibilit de porter ces outils vers dautres
langages de programmation qui supportent ActiveX, par exemple Visual
C++.

541

<
:

Prog VB6 FM3A Page 542 Lundi, 6. aot 2001 3:45 15

Partie III

Concevoir les contrles


Visual Basic contient des outils qui vous aident concevoir vos propres contrles
ActiveX, mme si le processus doit se passer en plusieurs tapes. Pour illustrer ce que
cela implique, le reste du Chapitre vous guide dans la conception dun nouveau type de
zone de texte.

Dtails de la nouvelle zone de texte


La nouvelle zone de texte que vous allez crer tendra le contrle TextBox gnrique de
Visual Basic en proposant les caractristiques suivantes :

Il reconnatra toutes les valeurs classiques des proprits reconnues par le contrle
TextBox standard.

Il contiendra aussi une nouvelle proprit, AutoTSize qui reconnat quatre valeurs :
1-NA, 2-Small, 3-Medium et 4-Large. Ces valeurs apparatront comme une numration dans une liste droulante de la fentre Proprits. Vous pouvez assigner, dans
votre code, 1, 2, 3 ou 4 la zone de texte pour paramtrer la valeur. La valeur 1-NA,
qui est la valeur par dfaut, ne modie pas la taille courante de police de la zone de
texte, dnie dans la proprit Font.Size. Lorsquon attribue la valeur 2-Small, le
texte de la zone de texte sera dimensionn 25 % de la valeur Height. La valeur 3Medium met la taille du texte la moiti de la valeur Height. Enn, la valeur 4-Large
mettra le texte 75 %. (La valeur de la proprit Font.Size se modiera pour reter la nouvelle taille.) Cela donne une manire simple de paramtrer le texte de la
zone de texte une de ces trois valeurs.
ition
Dfin

Une numration est une liste de valeurs xes pouvant tre prises par un
contrle, par exemple, True et False. Les valeurs numres apparaissent
dans une liste droulante en face de la proprit dans la fentre Proprits.

Il contiendra galement deux nouvelles proprits appeles UCase et LCase, qui


seront des proprits boolennes. Si UCase est positionn True, le texte de la zone
de texte sera converti en majuscules. Si LCase est positionn True, le texte sera
converti en minuscules. UCase et LCase sont par dfaut tous deux paramtrs
False ; les deux ne pouvant tre True en mme temps. Votre contrle doit donc
sassurer que, lorsquune de ces proprits est True, lautre se positionne False.

Le nouveau contrle ActiveX que vous crerez ressemblera et fonctionnera comme les
autres. Vous pourrez linsrer dans la fentre Bote outils, double-cliquer dessus pour
lajouter la fentre feuille, et slectionner ses proprits partir de la fentre Proprits.
Ce nouveau contrle est visible lors de lexcution, mais vous pouvez aussi crer un
contrle larrire-plan qui ne safche pas dans la fentre feuille lors de lexcution

>
:

542

Prog VB6 FM3A Page 543 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

(comme cest le cas du contrle Timer). Il faut pour cela positionner la proprit InvisibleAtRunTime True. Un tel contrle fonctionne larrire-plan et napparat pas sur la
feuille utilisateur. (La proprit Visible dtermine simplement si le contrle peut tre vu,
alors que la proprit InvisibleAtRunTime, lorsquelle prend la valeur True, garantit que le
contrle ne peut jamais tre afch.)

Info

Le nom du nouveau contrle sera TextSizeUL.

Limportance des classes


Tous les objets Visual Basic, y compris les variables et les contrles, sont membres dune
classe. Le groupement en classes vous offre une manire de regrouper les objets identiques. De plus, vous pouvez sous-classer un objet dans une classe existante pour crer un
nouvel objet qui aura toutes les proprits du reste de la classe et de nouvelles qui lui
seront propres. Grce au sous-classement, vous navez pas rinventer la roue, car
lobjet (dans ce cas le contrle ActiveX) accepte automatiquement les proprits, les
mthodes et les vnements supports par la classe parente ; vous pouvez alors en ajouter
de nouveaux.
ition
Dfin

Une classe est un regroupement (ou en fait une description) des proprits,
des mthodes et des vnements supports par un objet. Un contrle nest
rien dautre quune instance dun objet dune classe donne. Une feuille
ajoute un projet, par exemple, est simplement une instance que vous avez
ajoute la classe Form. Le fait dtre un membre de la classe Form donne
la feuille ses proprits, ses mthodes et ses vnements, qui sont distincts
des autres classes dobjets, par exemple la classe CommandButton.

Sous-classer signie crer un nouvel objet partir dune classe dobjets existants. Le
nouvel objet prend les proprits, les mthodes et les vnements de sa classe parente.
Vous pouvez galement y ajouter vos propres proprits, mthodes et vnements.
Info

Les types de donnes intgrs, comme String, ne sont pas membres dune
classe Visual Basic, car ils ne supportent pas dvnements.

Supposons que vous vouliez crer un contrle qui en imite en partie un autre. En sousclassant ce nouveau contrle, vous lui adjoignez automatiquement toutes les proprits,
mthodes et vnements supports par le contrle parent. Le sous-classement nest
cependant pas une obligation, car vous pouvez toujours crer un contrle sans cette
aide.

543

<
:

Prog VB6 FM3A Page 544 Lundi, 6. aot 2001 3:45 15

Partie III

Visual Basic propose trois manires de crer de nouveaux contrles ActiveX :

Les contrles sous-classs simples. Vous pouvez utiliser un contrle ActiveX


existant comme base de votre nouveau contrle, qui est alors sous-class partir
du contrle dorigine (parent). Le nouveau contrle reoit toutes les fonctionnalits du contrle parent existant et peut les tendre en ajoutant de nouvelles
caractristiques. Le sous-classement dun contrle est la manire la plus simple de
crer un contrle ActiveX. Vous devez modier linterface du contrle sous-class
pour quil supporte les nouvelles caractristiques que vous voulez que votre
contrle offre.

Les contrles sous-classs agrgs. Vous pouvez sous-classer votre nouveau


contrle partir de plusieurs contrles existants. En dautres termes, si votre
nouveau contrle ressemble une bote de dialogue contenant des boutons de
commande, des botes de texte, des tiquettes, vous pouvez utiliser les contrles
existants pour rduire le travail effectuer sur le nouveau contrle. Vous pouvez
alors vous concentrer sur les fonctionnalits supplmentaires quil doit apporter.

Les contrles dessins par lutilisateur. Si votre contrle na rien en commun avec
des contrles existants, vous pouvez le crer partir de zro en dnissant toutes ses
proprits, tous ses vnements et mthodes, puis le dessiner pour quil ressemble
exactement ce que vous souhaitez. Un contrle cr par lutilisateur demande un
rel effort de cration, car on nemprunte aucune des fonctionnalits des contrles
existants.

Crer le contrle ActiveX


Les sections qui suivent vous guident dans le processus de cration du nouveau contrle
ActiveX TextSizeUL.

Prparer Visual Basic


Vous ne devez pas suivre la procdure standard de cration des applications Visual Basic
lorsque vous crez un contrle ActiveX. Lorsque vous slectionnez Nouveau, Projet
pour afcher la bote de dialogue Nouveau Projet, au lieu de cliquer sur licne EXE
standard, slectionnez licne Contrle ActiveX. Visual Basic se prpare pour le
nouveau contrle et lcran ressemble beaucoup celui de la cration dune nouvelle
application mis part que la fentre feuille semble safcher sans sa bordure habituelle (voir Figure 17.4). En ralit, la fentre ne montre pas une feuille, mais la toile de
fond du contrle ActiveX crer. Visual Basic lui attribue le nom par dfaut
UserControl1. Naturellement, le mot User est trompeur, car cest en tant que programmeur que vous crez ce contrle pour vous assister dans votre dveloppement. Une fois
le contrle conu, cependant, lutilisateur nal pourra effectivement interagir avec lui.

>
:

544

Prog VB6 FM3A Page 545 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Figure 17.4
Vous travaillez
dans un
environnement
familier
lorsque vous
crez un contrle
ActiveX.

Crez le
contrle ici

Nom par dfaut


du contrle

Pas de
bordure

Le projet contient un
nouveau contrle

Le terme excution a un sens diffrent suivant que vous crez des contrles ou des applications classiques. Alors que la conception dun contrle se produit quand vous crez ou
modiez le contrle, il peut tre excut dans les deux situations suivantes :

Quand un programmeur linsre au moment de la conception dune application, le


contrle est un excutable compil qui ragit aux instructions dinstallation du programmeur.

Lorsque le programmeur compile et excute lapplication, le contrle sexcute


aussi, mais il ragit alors un utilisateur nal.

Pour distinguer ces deux types dexcution, les programmeurs parlent respectivement
dexcution la conception et dexcution lexcution. En gnral, le contexte du
mode dexcution est vident quand vous crez ou utilisez le contrle ActiveX.
ition
Dfin

Lexcution la conception est le terme qui sapplique un contrle que


vous "excutez" pour le tester au moment de sa cration. Lexcution
lexcution sapplique au contrle qui sexcute de concert avec une application.

545

<
:

Prog VB6 FM3A Page 546 Lundi, 6. aot 2001 3:45 15

Partie III

Commencer la personnalisation
Vous pouvez ajouter votre nouveau contrle ActiveX la fentre Bote outils. Une des
premires choses faire est donc, une fois les objectifs du contrle dnis, de lui affecter une icne. La proprit ToolboxBitmap congure licne que vous voulez utiliser. Le
rectangle gris qui ressemble un peu une fentre feuille dans le coin suprieur gauche
de la zone ddition est en fait votre contrle, mais il est encore vierge. Lorsquelle est
slectionne, la fentre Proprits afche donc des valeurs pour le contrle.
Faites dler la fentre des proprits pour trouver ToolboxBitmap. Lorsque vous
double-cliquez sur la proprit, la bote de dialogue Charger un bitmap souvre pour
vous permettre de trouver une icne sur le disque et lutiliser comme icne du contrle
ActiveX. Dans notre cas, slectionnez dans le rpertoire \Graphics\Bitmaps\Assorted
\Plan, qui se trouve dans le dossier Common de Visual Basic (si vous avez install les
chiers graphiques supplmentaires lors de linstallation de Visual Basic).
ce
Astu

Vous pouvez crer votre propre image bitmap avec Windows Paint (ou un
programme de dessin du mme genre). Limage doit avoir une taille de
15 pixels par 16 pour quelle safche de la mme manire que les autres
icnes de la bote outils.

Limage Plan est une icne qui sadaptera bien cette nouvelle entre de bote outils
quest la nouvelle zone de texte. Le bitmap safchera dans le coin suprieur gauche de
la feuille du contrle lorsque vous renseignez la proprit ToolboxBitmap.
Les informations concernant votre contrle safcheront dans les applications qui en
feront usage, il est donc utile de le documenter. Slectionnez Projet, Proprits et modiez le nom du projet de Project1 en TextSizeUL. Ajoutez une description dans la zone
de texte intitule Description du projet pour que les applications qui utiliseront le
contrle puissent lafcher. Tapez ce qui suit dans la description :
Un contrle de zone de texte qui commande sa propre taille et
gre la conversion majuscule-minuscule.

Modiez le nom de proprit du contrle en NewControl. Enregistrez ensuite le contrle


et le projet lorsque la question est pose. Visual Basic enregistre le contrle sous le nom
NewControl.ctl, mais vous nirez par convertir le projet en un chier ActiveX.

Sous-classer le contrle
Vous pouvez dsormais sous-classer le nouveau contrle partir du contrle TextBox
classique, pour quil en prenne les proprits, les vnements et les mthodes. Lors du
sous-classement du contrle, lassistant Interface de contrles ActiveX vous permettra
dtendre ses fonctionnalits.

>
:

546

Prog VB6 FM3A Page 547 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

ition
Dfin

Lassistant Interface de contrles ActiveX est un assistant qui vous guide


dans le processus du sous-classement dun nouveau contrle.

Lassistant Interface de contrles ActiveX ne fait pas partie de lenvironnement Visual


Basic par dfaut. Vous pouvez ly ajouter par les tapes suivantes :
1. Slectionnez le menu Complments.
2. Slectionnez le Gestionnaire de complments pour afcher la bote de dialogue
correspondante, illustre la Figure 17.5.
Figure 17.5
Ajouter le complment
Assistant Interface de
contrles ActiveX
votre environnement.

3. Double-cliquez sur llment "Assistant Interface de contrles ActiveX". Le


message "Charg" qui apparat sa droite vous informe que lassistant fait dsormais partie de lenvironnement.
ce
Astu

Si vous crez souvent des contrles ActiveX, vous pouvez cocher la case
Charger au dmarrage pour que lassistant se charge toujours avec lenvironnement Visual Basic.

4. Cliquez sur OK pour fermer la bote de dialogue.


Si lassistant est bien charg, vous ntes pas encore prt le dmarrer ; vous devez
commencer par ajouter un contrle TextBox sous-classer dans votre contrle
ActiveX vierge. Vous pouvez cependant vrier que lassistant a bien t ajout

547

<
:

Prog VB6 FM3A Page 548 Lundi, 6. aot 2001 3:45 15

Partie III

lenvironnement Visual Basic en afchant le menu Complments. La dernire option


doit tre Assistant Interface de contrles ActiveX. Chaque fois que vous ajoutez des
composants lenvironnement Visual Basic, ils safchent dans le menu Complments.
Avant de dmarrer lassistant, vous devez ajouter un contrle TextBox votre projet. Placezle sur larrire-plan et nommez-le txtParent. Cette zone de texte sera commande par le
nouveau contrle ActiveX. Lorsquun programmeur utilisera votre contrle ActiveX et le
redimensionnera, ce sont les procdures vnementielles qui modieront la zone de texte
interne du nouveau contrle. Le contrle TextBox fournit les fonctionnalits que vous devez
sous-classer.
ce
Astu

Dune certaine manire, la zone de texte agira comme un contrle masqu


(exactement comme un objet local dans un contrle public), qui sera utilis
par dautres projets. Votre contrle utilisera ce contrle intrinsque, en
modiera le comportement et le prsentera alors dautres applications.

Dmarrer lassistant
Vous tes maintenant prt lancer lassistant Interface de contrles ActiveX partir du
menu Complments. La premire fentre qui safche est un cran dintroduction que
vous avez le choix de cacher lors dexcutions ultrieures en cochant la case en bas de la
fentre. Aprs avoir lu le contenu de cette fentre, cliquez sur Suivant pour afcher la
fentre Slection des membres dinterface, illustre la Figure 17.6.

Figure 17.6
Vous pouvez
slectionner
les lments du
contrle parent
que vous voulez
inclure dans
le nouveau contrle
ActiveX.

>
:

548

Prog VB6 FM3A Page 549 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Lassistant afche deux listes dinformations. Celle de gauche contient tout ou partie
des proprits, vnements et mthodes que vous pouvez inclure dans le nouveau
contrle ActiveX. Lassistant gnre la liste en analysant le contrle en cours ; ici, le
contrle TextBox plac dans la zone ddition.
La liste de droite contient plusieurs proprits, mthodes et vnements slectionns par
lassistant dans la liste complte de gauche. Vous pouvez slectionner des lments
supplmentaires en cliquant sur un lment de la fentre de gauche, puis sur le bouton >
pour lenvoyer dans la liste de droite des lments slectionns. Vous pouvez aussi
slectionner des lments dans la liste de droite et cliquer sur < pour les supprimer.
ce
Astu

Le bouton >> envoie tous les lments de la liste de gauche dans la liste de
droite. Le bouton << efface tous les lments slectionns pour vous
permettre de repartir de zro.

Dune manire surprenante, lassistant nenvoie pas plusieurs proprits ncessaires aux
botes de texte sous-classes dans la liste de droite ; vous devez donc slectionner et faire
passer droite les lments suivants :

Alignment

Change

FontBold

FontItalic

FontName

FontSize

FontStrikethru

FontUnderline

MultiLine

PasswordChar

ScrollBars

Text

ToolTipText

Vous devez pouvoir appliquer toutes ces proprits votre nouveau contrle ActiveX de
zone de texte, avec les nouvelles proprits dnir. Une fois les lments ajouts,
cliquez sur Suivant pour afcher la fentre Cration des membres dinterface personnaliss, illustre la Figure 17.7.

549

<
:

Prog VB6 FM3A Page 550 Lundi, 6. aot 2001 3:45 15

Partie III

Figure 17.7
Vous pouvez
maintenant ajouter
vos proprits,
mthodes et
vnements propres.

La liste au centre de la fentre est vierge, car il vous reste ajouter vos propres lments
la conguration du contrle. Vous ne pouvez pas taper directement llment, vous
devez cliquer sur le bouton Nouveau pour dcrire la nouvelle proprit (ou mthode ou
vnement) que vous souhaitez ajouter.
En cliquant sur Nouveau, vous afchez la bote de dialogue illustre la Figure 17.8.
Vous devez saisir le nom et le type (proprit, mthode ou vnement) du nouvel
lment en cliquant sur lune des options prsentes. Puis cliquez sur OK pour lajouter
la liste de lassistant.
Figure 17.8
Description des nom
et type du nouvel
lment.

>
:

550

Prog VB6 FM3A Page 551 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Pour le contrle ActiveX que vous tes en train de crer, entrez les deux lments
suivants :

AutoTSize (proprit)

ULText (proprit)

Cliquez sur Suivant pour passer la fentre suivante, Dnition de lassociation. Cest
l que vous associez, ou connectez, les proprits, vnements et mthodes aux quivalents de la zone de texte. En dautres termes, la liste afche dans la fentre Noms
publics est celle qui est gnre partir des lments slectionns prcdemment et des
nouveaux que vous avez ajouts dans la fentre prcdente.
Vous devez indiquer lassistant comment vous voulez que chaque proprit, mthode
et vnement se comporte. Dans le cas de la nouvelle zone de texte que vous crez, vous
voulez que tous fonctionnent comme ils le font normalement pour une zone de texte.
(Vous pourriez cependant modier les associations : par exemple, un vnement
MouseDown pourrait tre associ un vnement MouseClick, gnr la place de
lvnement MouseDown normal qui se produit quand lutilisateur clique sur le contrle.)
Les deux seules proprits que vous ne voulez pas associer au comportement normal
dune zone de texte sont les deux que vous avez ajoutes : AutoTSize et ULText. Slectionnez donc tous les lments de la liste hormis ces deux-l.
ce
Astu

La liste supportant les slections multiples, une manire rapide de tout


slectionner sauf vos deux proprits consiste cliquer sur le premier
lment de la liste, puis appuyer sur les touches Maj+Fin pour mettre tout
en surbrillance. En maintenant la touche Ctrl enfonce, cliquez enn sur les
proprits ULText et AutoTSize pour les dslectionner.

Slectionnez llment auquel vous voulez associer tous ces lments. Ouvrez la liste
droulante Correspond Contrle et slectionnez txtParent. Tous ces lments publics,
lexception des deux qui ne sont pas slectionns, sont appliqus au contrle TextBox
incorpor que vous avez plac sur la feuille. Vous voulez que la zone de texte interne se
comporte normalement pour que le contrle ActiveX puisse y accder normalement.
Les deux nouvelles proprits ne sappliqueront absolument pas la zone de texte
interne cest pourquoi elles ny sont pas associes.
Cliquez sur Suivant pour afcher la fentre Dnition des attributs illustre la
Figure 17.9. Cest ici que vous faites correspondre les nouvelles proprits au nouveau
contrle.

551

<
:

Prog VB6 FM3A Page 552 Lundi, 6. aot 2001 3:45 15

Partie III

Figure 17.9
Vous pouvez
maintenant faire
correspondre les
nouvelles proprits
votre contrle.

Si vous avez ajout des mthodes et des vnements au nouveau contrle, ils apparatront galement dans la fentre Dnition des attributs. Vous avez dj fait correspondre les proprits, mthodes et vnements connus au contrle interne, vous devez
maintenant vous occuper des nouveaux. Suivez ces tapes pour prparer les nouvelles
proprits :
1. Pour la proprit AutoTSize slectionne, changez la valeur par dfaut de 0 1 (les
autres champs sont dj corrects). Si vous vous en souvenez, la proprit AutoTSize
devra prendre une valeur parmi quatre numres, qui vont de 1 4. La valeur 1 sera
la valeur par dfaut (cest--dire la valeur prise lorsquon place pour la premire
fois le contrle ActiveX dans une feuille). Il faut donc remplacer le 0 par 1.
2. Tapez la description suivante pour la proprit AutoTSize :
Dtermine le pourcentage (25%, 50% ou 75%) de la taille de police du
texte en fonction de la hauteur.

3. Slectionnez la proprit ULText. Tous les champs sont corrects, mais il faut ajouter
cette description :
Met le texte en majuscules, minuscules ou ne le change pas.

4. Cliquez sur Suivant pour achever la tche de lassistant. Il peut dsormais construire
toutes les informations ncessaires la gnration du contrle. Vous pouvez cliquer
sur Terminer pour le gnrer. Si vous laissez coche loption Afcher le
rcapitulatif, lassistant afche un rsum de ce qui reste faire.

>
:

552

Prog VB6 FM3A Page 553 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

A lvidence, le contrle ActiveX est incomplet. Vous navez pas dni le comportement des proprits AutoTSize et ULText. Lassistant congure les paramtres du
contrle, mais vous devez toujours ajouter du code et complter manuellement le
contrle ActiveX pour le rendre entirement fonctionnel.

Complter le corps du contrle ActiveX


Lassistant ne peut pas ajouter le code qui active les proprits AutoTSize et ULText, car il
na aucun moyen de savoir ce que vous voulez en faire. Il a cependant pu associer les
proprits, mthodes et vnements existants au contrle parent, car ces lments sont dj
dnis.
Pour achever le contrle ActiveX, vous devez faire un peu de programmation, ce qui,
naturellement, se fait dans la fentre Code. Slectionnez Afchage, Code pour voir le
contenu de la fentre. En parcourant le code, vous remarquerez que la majeure partie est
ddie lassociation des proprits, mthodes et vnements, ceux de la zone de texte
txtParent sous-jacente. En dautres termes, quand un programmeur utilisant ce nouveau
contrle congure, en excution de conception (cest--dire que le code sexcute lors de
la conception dune autre application), la proprit BackColor, le code congure en fait la
proprit BackColor de la zone de texte sous-jacente. Ce code est parfois complexe,
attendez-vous donc ne pas tout en comprendre.

Info

ntion
Atte

Observez, dans le code, toutes les procdures vnementielles Let et Get.


Comme vous devez vous en souvenir, ces deux qualiants particuliers de
fonctions sont utiliss pour congurer et renvoyer des valeurs pour les
proprits que vous crez. Lassistant a en effet cr des proprits pour le
contrle TextBox parent lorsque vous les avez associes au nouveau
contrle.
Ne faites jamais de modications dans les parties du code prfaces par la
remarque suivante :
ATTENTION! NE SUPPRIMEZ PAS OU NE MODIFIEZ PAS LES LIGNES
COMMENTEES SUIVANTES!

Info

Compltez toutes les parties qui contiennent des commentaires commenant


par les mots : A COMPLETER. Vous verrez de telles parties si vous crez de
nouveaux contrles ActiveX bass sur un des contrles de liste. Lassistant
ne peut pas grer les proprits des listes, vous devez donc ajouter le code
ncessaire au traitement des listes si vous utilisez un jour un contrle de
liste comme parent.

553

<
:

Prog VB6 FM3A Page 554 Lundi, 6. aot 2001 3:45 15

Partie III

Les instructions qui suivent ces commentaires sont cruciales pour le fonctionnement du
nouveau contrle et doivent tres laisses telles quelles.
Le Listing 17.2 montre les premires lignes du code. Elles sont ddies aux nouvelles
proprits que vous avez ajoutes au projet.
Listing 17.2 : Lassistant a initialis les valeurs par dfaut des nouvelles proprits

1:
2:
3:
4:
5:
6:

Valeurs de proprits par dfaut:


Const m_def_AutoTSize = 1
Const m_def_ULText = 0
Variables de proprits:
Dim m_AutoTSize As Variant
Dim m_ULText As Variant

Le mot cl Const dclare des constantes nommes. Donc, la ligne 2, m_def_AutoTSize


nest pas une variable, mais une constante nomme. Visual Basic comporte plusieurs
constantes nommes telles que vbWhite et vbInformation ; vous pouvez aussi dclarer les
vtres, qui peuvent tre locales ou globales. (Les constantes nommes sont souvent globales, car, de par leur nature mme, elles ne risquent pas dtre modies par inadvertance
par une procdure qui ne devrait pas y avoir accs.)
Les lignes 2 et 3 dclarent des constantes nommes pour les valeurs par dfaut des deux
nouvelles proprits. Elles sont congures dans la fentre Dnir les attributs de lassistant. Elles apparatront dans la fentre Proprits correspondant aux deux proprits
quand un programmeur placera le contrle ActiveX dans une feuille. Chaque fois que le
reste du code fait rfrence une de ces constantes nommes, elle est remplace par sa
valeur cre aux lignes 2 et 3 du Listing 17.2.
Les lignes 5 et 6 dclarent des variables Variant qui reprsentent la valeur en cours des
proprits, dnie quand un programmeur congure une de ces valeurs en excution de
conception (ou quand lapplication nale paramtre par programme ces valeurs).
Vous devez dnir les valeurs numres des deux proprits qui safcheront dans la
fentre Proprits. Une liste numre se dcrit dans un pav de code dnumration qui
commence par linstruction Enum. Juste aprs la partie gnrale de la fentre de code,
tapez le code du Listing 17.3.
Listing 17.3 : Vous devez dnir les valeurs numres qui safcheront
dans la fentre Proprits

>
:

1:
2:
3:
4:
5:
6:

554

Public Enum AutoTSizeEnum


NA = 1
Small = 2
Medium = 3
Large = 4
End Enum

Prog VB6 FM3A Page 555 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

7: Public Enum ULTextEnum


8:
AsIs = 0
9:
Uppercase = 1
10:
Lowercase = 2
11: End Enum

Dclarez toutes les valeurs numres publiques pour quelles soient toujours accessibles. Linstruction Enum dbute une dnition de valeurs numres. Ce sont des valeurs
qui safcheront dans une liste droulante de la fentre Proprits pour les deux proprits. Les valeurs AutoTSize se prsenteront sous la forme courante suivante :

1
2
3
4

NA
Small
Medium
Large

Pour paramtrer une valeur initiale, le programmeur peut slectionner une de ces valeurs
dans la fentre Proprits lorsquil travaille avec le contrle ActiveX. En outre, le code
inclus dans lapplication qui utilise ce contrle ActiveX peut assigner 1, 2, 3 ou 4 la
proprit pour paramtrer le contrle. Linstruction dassignation peut galement assigner les valeurs numres, comme on le fait ci-dessous :
NewControl.AutoTSize = Medium

Assigne 3

De la mme manire, le type numr ULTextEnum dnit les valeurs numres de la


proprit ULText.
Le code de dimensionnement du nouveau contrle est trs simple, car il doit prendre la
taille de sa zone de texte parente. Souvent, un nouveau contrle ActiveX doit prendre
une taille diffrente du ou des contrles quil sous-classe, en particulier avec les
contrles ActiveX sous-classs agrgs. Cependant, lorsquil y a correspondance
univoque entre la taille du parent et celle du nouveau contrle, vous pouvez ajouter une
procdure vnementielle UserControl_Resize() en saisissant dans la fentre de code la
procdure illustre dans le Listing 17.4.
Listing 17.4 : Le nouveau contrle ActiveX sera la mme place et
de la mme taille que le contrle TextBox interne

1:
2:
3:
4:
5:
6:
7:
8:

Private Sub UserControl_Resize()


Dfinit la hauteur et lchelle celle du contrle sous-jacent
Etend le contrle aux bonnes largeur et hauteur
If UserControl.Height <> txtParent.Height Then
txtParent.Height = UserControl.Height
End If
txtParent.Move 0, 0, UserControl.ScaleWidth
End Sub

555

<
:

Prog VB6 FM3A Page 556 Lundi, 6. aot 2001 3:45 15

Partie III

La ligne 4 permet de sassurer que, lorsque le programmeur qui utilise le nouveau


contrle modie sa taille, le contrle TextBox incorpor est galement redimensionn,
car il fonctionne comme un rceptacle du nouveau contrle. La ligne 7 utilise la
mthode Move pour dplacer la zone de texte parente vers le coin suprieur gauche du
nouveau contrle (0, 0), puis paramtre la mme chelle pour les deux proprits. Cela
garantit que la zone de texte interne se dplace chaque fois que le programmeur dplace
le nouveau contrle. La mthode Move gre la fois le dplacement et le dimensionnement et permet de conserver les deux contrles lidentique. La zone de texte agit
donc comme un calque sur le contrle ActiveX et reste toujours exactement au-dessus
pour recevoir et afcher le texte.
Maintenant que vous tes dbarrasss du problme de la taille, votre tche principale
consiste congurer lafchage des valeurs numres, crire le code qui gre la
slection de la proprit AutoTSize et la conversion du contrle ActiveX en minuscules
ou majuscules, qui dpend de la proprit ULText. Lassistant a cr un rceptacle pour
ces proprits, mais vous devez complter les dtails.
Vous tes maintenant prt congurer les procdures Let et Get pour les nouvelles valeurs
de proprits. Lorsque lutilisateur (cest--dire le programmeur qui utilise ce contrle
ActiveX dans une application) paramtre une valeur de proprit, la procdure Let
sexcute. Lorsque lutilisateur accde une valeur de proprit, la procdure Get
sexcute.
La mthode la plus simple des deux est Get. Lassistant a cr des procdures chantillons de la fonction Get pour les deux proprits, mais vous devrez les modier. Au
lieu de renvoyer un type de donnes Variant, il faudra utiliser le type numr, comme le
montre le Listing 17.5.
Listing 17.5 : Les procdures Get des nouvelles proprits doivent renvoyer les
valeurs numres correspondantes

1:
2:
3:
4:
5:
6:
7:

Public Property Get AutoTSize() As AutoTSizeEnum


AutoTSize = m_AutoTSize
End Property
Public Property Get ULText() As ULTextEnum
ULText = m_ULText
End Property

Ce listing ne fait quassigner la valeur en cours du membre la proprit dtat. La


conversion de Variant en numration pour la valeur de retour est la seule modication
ncessaire.

>
:

556

Prog VB6 FM3A Page 557 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Vous devez aussi modier les deux types de donnes des procdures Let. Elles demandent du code supplmentaire. Lorsquune valeur est assigne une des deux nouvelles
proprits, plusieurs choses doivent se passer, par exemple le dimensionnement du texte
ou la conversion en majuscules ou en minuscules.
Il vous faut donc complter les deux procdures Let des proprits correspondantes, car
lassistant na cr quun noyau de code. Le code rsultant est montr dans le
Listing 17.6.
Listing 17.6 : Vous devez complter les procdures Let des deux proprits

1: Public Property Let AutoTSize(ByVal New_AutoTSize As AutoTSizeEnum)


2:
m_AutoTSize = New_AutoTSize
3:
Tester ltat de la proprit et en modifier la taille
4:
en fonction de sa valeur
5:

6:
Select Case New_AutoTSize
7:
Case 1: Pas de modification ncessaire
8:
Case 2: Font.Size = 72 * 0.25 * (Height / 1440)
9:
Case 3: Font.Size = 72 * 0.5 * (Height / 1440)
10:
Case 4: Font.Size = 72 * 0.75 * (Height / 1440)
11:
End Select
12:
PropertyChanged "AutoTSize"
13: End Property
14:
15: Public Property Let ULText(ByVal New_ULText As ULTextEnum)
16:
m_ULText = New_ULText
17:
Tester ltat du contrle
18:
et modifier en fonction la zone de texte
19:
(ignorer ULText 0 qui signifie tel quel)
20:
If New_ULText = 1 Then
21:
Text = UCase(txtParent.Text)
22:
ElseIf New_ULText = 2 Then
23:
Text = LCase(txtParent.Text)
24:
End If
25:
PropertyChanged "ULText"
26: End Property

Info

Assurez-vous que vous avez bien modi les types de donnes transmis
des procdures Get AutoTSize() et Get ULText() pour quelles reoivent des
donnes numres au lieu des types de donnes Variant quelles reoivent par dfaut.

557

<
:

Prog VB6 FM3A Page 558 Lundi, 6. aot 2001 3:45 15

Partie III

Les lignes 8, 9 et 10 ajustent la taille de police du contrle TextBox interne un facteur


de sa proprit Height. Le programmeur travaille directement sur le nouveau contrle
ActiveX, mais ce dernier nest en fait quun intermdiaire vers la zone de texte interne
qui safche dans la feuille. Les fonctions internes UCase() et LCase() des lignes 21 et
23 convertissent le texte en majuscules ou minuscules, suivant la valeur donne la
proprit. Si le programmeur qui utilise le contrle ActiveX assigne la proprit ULText
la conception ou lexcution, cette procdure sexcute.
La conception et la cration du contrle ActiveX est acheve. Vous devez maintenant le
prparer tre insr dans une autre application et le tester pour vous assurer quil fonctionne comme vous le voulez.

Implmenter le contrle ActiveX


Le nouveau contrle ActiveX peut tre insr dans une application et plac sur la feuille,
et il reoit galement tous les avantages des contrles intrinsques. Sa fentre Proprits
fonctionnera comme pour les autres contrles. De mme, quand un programmeur qui
utilise le contrle ActiveX dans une fentre de code tape une instruction dassignation
dune valeur de proprit, mme la fentre Info Express safche pour permettre de la
slectionner. La bote outils qui contient le contrle ActiveX afche aussi automatiquement une info-bulle qui le dcrit. Vous serez ers de votre contrle ActiveX lorsque
que vous lutiliserez, car il se comportera comme sil avait t fourni avec Visual Basic
par Microsoft !
Quand vous compilez le contrle ActiveX, Visual Basic le transforme en un chier
ActiveX que vous pouvez insrer dans un projet comme nimporte quel contrle ActiveX.
Si vous ne crez pas le chier OCX, vous ne pourrez pas utiliser le contrle dans une
application.
Le contrle doit tre enregistr avant compilation. Choisissez Fichier, Enregistrer le
projet pour enregistrer la fois le contrle et le projet. Un contrle ActiveX ne peut
pas tre excut en utilisant la touche F5, car il doit tre compil avant de pouvoir
sexcuter. Le terme excuter signie en fait ici fonctionner comme les autres quand un
programmeur utilise le contrle dans une application.
Pour compiler le contrle ActiveX, slectionnez Fichier, Crer. Visual Basic afche la
bote de dialogue Crer le projet illustre la Figure 17.10. Vous pouvez slectionner
lemplacement du contrle ActiveX compil. Vous pouvez le placer dans votre dossier
\Windows\System ou dans un dossier de travail Visual Basic que vous avez cr. (Cest le
dossier dans lequel vous recherchez quand vous voulez charger le contrle Visual Basic
dans la bote outils dune autre application Visual Basic partir de la bote de dialogue
Proprits.) Si le compilateur signale des erreurs, Visual Basic ne crera pas le contrle
et mettra en surbrillance les lignes de code en erreur. Ds que les bogues sont limins,
le compilateur vous renvoie dans lenvironnement de dveloppement.

>
:

558

Prog VB6 FM3A Page 559 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Figure 17.10
Entrez le nom de
chier du contrle
ActiveX ; Visual Basic
enregistre le contrle
avec une extension
.OCX.

Visual Basic supporte deux mthodes de test du contrle :

Ouvrir un nouveau projet et y tester le contrle. Lenvironnement de dveloppement


nest disponible que pour le test des contrles ActiveX.

Ouvrir un nouveau projet EXE Standard et y dposer le contrle.

Pour tester le nouveau contrle, il faut lutiliser en situation. Slectionnez Fichier,


Nouveau Projet et crez un nouveau chier EXE Standard. Appuyez sur Ctrl-T pour
ouvrir la bote de dialogue Composants. Comme le montre la Figure 17.11, le contrle
TextSizeUL apparat en haut de la bote de dialogue. La description que vous avez utilise
pour le contrle safche pour faciliter la slection.
Slectionnez le contrle ActiveX et fermez la bote de dialogue. Limage bitmap que
vous avez slectionne la cration du contrle safche dans la bote outils. Pour
utiliser le programme dans une application, suivez ces tapes :
1. Changez le nom de feuille en frmActiveX et son titre en Test du contrle ActiveX.
Etendez les proprits Width et Height 7575 et 5775, respectivement.
2. Pointez le contrle TextSizeUL et lisez linfo-bulle cre par lassistant de contrle
ActiveX. NewControl nest pas trs parlant, mais cest le nom sous lequel vous avez
enregistr le projet. Dans cette session, nous nous intressons plus au fonctionnement quau nom du contrle.
3. Double-cliquez sur le nouveau contrle pour lajouter la feuille. (Vous pouvez aussi
dessiner la taille du contrle la souris.) Le contrle ressemble une zone de texte
tout ce quil y a de plus normal mis part ses deux proprits supplmentaires.
Dimensionnez le contrle TextSizeUL environ 4 815 twips (proprit Width) par
1 215 twips (proprit Height). Mettez la proprit Font.Size 18 et Font.Bold
True.

559

<
:

Prog VB6 FM3A Page 560 Lundi, 6. aot 2001 3:45 15

Partie III

Figure 17.11
Le texte de
description
du nouveau contrle
ActiveX safche dans
la bote de dialogue
Composants.

4. Cliquez sur le bouton de la proprit ULText pour ouvrir la liste droulante. Vous
verrez trois valeurs numres, AsIs, Uppercase et Lowercase, telles quelles ont t
programmes. Pour linstant, laissez la valeur par dfaut.
5. Cliquez sur la proprit AutoTSize pour voir ses valeurs numres. Laissez encore
la valeur par dfaut.
6. Changez la proprit Name en MyFirstCtl et effacez la proprit Text.
7. Ajoutez cinq boutons de commande la feuille en utilisant les valeurs de proprits
du Tableau 17.1.
Tableau 17.1 : Dnissez ces contrles et ces proprits pour les boutons
de commande de la feuille

>
:

Contrle

Proprit

Command1 Name

cmdSmall

Command1 Caption

Texte &Small

Command1 Left

1320

Command1 Top

2640

Command2 Name

cmdMedium

560

Prog VB6 FM3A Page 561 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Tableau 17.1 : Dnissez ces contrles et ces proprits pour les boutons
de commande de la feuille (suite)
Contrle

Proprit

Command2 Caption

Texte &Medium

Command2 Left

3120

Command2 Top

2640

Command3 Name

cmdLarge

Command3 Caption

Texte &Large

Command3 Left

4920

Command3 Top

2640

Command4 Name

cmdUpper

Command4 Caption

Maj&uscules

Command4 Left

2160

Command4 Top

3600

Command5 Name

cmdLower

Command5 Caption

Minuscu&les

Command5 Left

3960

Command5 Top

3600

8. Ajoutez les procdures vnementielles du Listing 17.7


Listing 17.7 : Ces procdures vnementielles permettront de tester le nouveau
contrle ActiveX
1: Private Sub cmdSmall_Click()
2:
Test de la conversion Small
3:
MyFirstCtl.AutoTSize = Small
4: End Sub
5:
6: Private Sub cmdMedium_Click()
7:
Test de la conversion Medium
8:
MyFirstCtl.AutoTSize = Medium
9: End Sub
10:
11: Private Sub cmdLarge_Click()

561

<
:

Prog VB6 FM3A Page 562 Lundi, 6. aot 2001 3:45 15

Partie III

Listing 17.7 : Ces procdures vnementielles permettront de tester le nouveau


contrle ActiveX (suite)

12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:

Test de la conversion Large


MyFirstCtl.AutoTSize = Large
End Sub
Private Sub cmdUpper_Click()
Test de la conversion en majuscules
MyFirstCtl.ULText = Uppercase
End Sub
Private Sub cmdLower_Click()
Test de la conversion en minuscules
MyFirstCtl.ULText = Lowercase
End Sub

En tapant ces lignes, remarquez que Visual Basic vous aide localiser les valeurs de
proprits du nouveau contrle ActiveX lorsque vous tapez le signe gale, laide dune
liste droulante doptions ((voir Figure 17.12). Les choix proposs sont les seules options
acceptables par Visual Basic. Cette liste de slection a donc quelque chose dincroyable,
tant donn que vous navez absolument rien fait pour gnrer cette fonction.
Figure 17.12
Votre contrle
ActiveX supporte
la liste droulante
daide Info
Express.

Seules les valeurs numres s'affichent

>
:

562

Prog VB6 FM3A Page 563 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Compilez et excutez lapplication. Tapez une valeur dans la zone de texte du contrle
ActiveX, en combinant majuscules et minuscules. Cliquez sur les trois boutons de
dimensionnement pour voir la taille du texte se modier. Ces boutons ne sont pas associs la proprit Font.Size, mais la nouvelle proprit cre pour le contrle.
Cliquez aussi sur les boutons de commande de conversion de la casse pour voir les
modications.
Info

Une fois que vous avez converti le texte du contrle ActiveX en majuscules
ou en minuscules, la casse dorigine est perdue.

Figure 17.13
Les proprits
du contrle ActiveX
effectuent dsormais
les conversions.

La Figure 17.13 montre lapplication en excution. Ces conversions ne demandaient pas


la cration dun contrle ; cependant, le nouveau contrle supporte des proprits intgres qui peuvent tre congures tout moment pour commander la taille du texte en
fonction de la proprit Height, et galement la casse du texte.

563

<
:

Prog VB6 FM3A Page 564 Lundi, 6. aot 2001 3:45 15

Partie III

En rsum
La leon daujourdhui vous a expliqu comment travailler sur les objets particuliers que
sont les contrles ActiveX. Non seulement ils ajoutent des nouveaux contrles votre fentre Bote outils, mais ils peuvent tre utiliss dans dautres types dapplications Windows
comme Visual C++ et les navigateurs Internet. Cest pourquoi les contrles ActiveX sont
disponibles partir de nombreuses sources diffrentes. Une fois que vous avez appris
utiliser un contrle ActiveX, vous pouvez le rutiliser dans dautres applications.
Vous pouvez crer vos propres contrles ActiveX en tirant avantage de lassistant Interface de contrles ActiveX. Vous pouvez sous-classer un contrle ActiveX partir dun
contrle existant (mme si cest un autre contrle ActiveX crit par quelquun dautre).
Finalement, vous pourrez crer une bibliothque de contrles qui vous aideront dans la
cration de nouveaux contrles et applications.

Questions-rponses
Q Pourquoi crer de nouveaux onglets de groupe dans la fentre Bote outils ?
R Les onglets ne sont l que pour organiser les contrles. En les regroupant, vous
retrouverez plus facilement le contrle dont vous avez besoin pour un but particulier.
Par exemple, si vous crez une application Visual Basic qui se rapporte aux bases de
donnes, vous pouvez regrouper lensemble des contrles qui ont trait ce sujet
dans leur propre onglet pour y accder plus simplement. Vous navez plus chercher
dans tous les contrles de longlet Gnral pour retrouver celui dont vous avez
besoin. Mme sils sont groups dans les onglets, tous les contrles de la fentre
Bote outils sont toujours disponibles.
Q Puis-je me dbarrasser des onglets de groupes que je cre ?
Oui. Il suft de cliquer du bouton droit sur le nom de groupe pour afcher un menu
contextuel contenant loption Supprimer un onglet. Vous pouvez aussi renommer les
onglets partir de ce menu.

Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension
des lments traits et des exercices qui vous permettent de mettre en pratique ce que
vous avez appris. Essayez de comprendre les questions et les exercices avant de passer
la leon suivante. Les rponses se trouvent lAnnexe A.

>
:

564

Prog VB6 FM3A Page 565 Lundi, 6. aot 2001 3:45 15

Chapitre 17 : Contrles ActiveX

Quiz
1. Que signie automatisation ?
2. Que se passe-t-il si votre application utilise CreateObject() pour un document Word,
alors que Word est dj en excution ?
3. Pourquoi ne peut-on pas assigner directement des applications des variables
objets ?
4. Quel est le but de lobjet systme Err.Number ?
5. Quelles sont les trois manires de crer des contrles ActiveX ?
6. Quelle est la mthode de cration des contrles ActiveX la plus simple utiliser ?
7. Vrai ou Faux. Quand vous sous-classez un contrle, le nouveau contrle ActiveX
emprunte les proprits, les mthodes et les vnements du parent.
8. A quoi servent les blocs dnumrations ?
9. Quelle extension utilise Visual Basic pour les contrles ActiveX compils ?
10. Quelles sont les deux procdures obligatoires dans les proprits des contrles
ActiveX ?

Exercices
1. Utilisez la bote de dialogue Composants pour rechercher des contrles ActiveX sur
votre disque. Vous en trouverez certainement quelques-uns en dehors du dossier Visual
Basic. Par exemple, si vous tes membres du service en ligne Microsoft Network, vous
trouverez plusieurs contrles ActiveX dans le dossier Microsoft Network.
2. Modiez le contrle ActiveX et lapplication crs la n de cette leon. Modiez la
valeur numre AsIs en AsEntered. Modiez le contrle ActiveX pour que, quand
un programme change le texte de AsEntered en Uppercase ou LowerCase, le contrle
mmorise le texte tel quil se prsentait avant conversion. Rcrivez lapplication nale
de cette leon et ajoutez un sixime bouton de commande qui indique Comme saisi.
Lorsque lutilisateur clique dessus, le texte doit revenir sa forme initiale.

565

<
:

Prog VB6 FM3A Page 566 Lundi, 6. aot 2001 3:45 15

Prog VB6 FM3A Page 567 Lundi, 6. aot 2001 3:45 15

PB8
Ces lments
qui enjolivent
les applications
Ce projet dcrit comment crer une application qui comporte les lments suivants :

une bote A propos de afche par loption de menu Aide, A propos de ;

un chier son jou automatiquement lorsque la bote A propos de safche ;

une zone dimage anime illustrant une animation simple ;

un timer qui contrle lanimation ;

un groupe de contrles images.

Ce projet ne comporte aucune fantaisie. Malgr la zone dimage anime, vous verrez
que lanimation est assez triste. Cela ne pose cependant pas de problme, car le but est
de vous faire comprendre les principes du dplacement des objets dans les zones
dimages et vous aurez une exprience pratique de lutilisation des botes A propos de et
de lajout dun chier Wav vos applications.

567

Prog VB6 FM3A Page 568 Lundi, 6. aot 2001 3:45 15

Partie III

But de lapplication
La Figure PB8.1 montre la feuille telle quelle se prsentera durant lanimation. (A la
premire excution de lapplication, lenveloppe est close et la lettre ne safche pas). La
feuille est simple et assez grande pour permettre la lettre de schapper de lenveloppe
ouverte quand lutilisateur clique sur le bouton Animer.
Figure PB8.1
Lapplication montre
simplement une lettre
qui schappe
de lenveloppe.

Info

Une fois lanimation dmarre, la lettre continue sortir de lenveloppe, et


le titre du bouton devient Stop.

La Figure PB8.2 montre la bote A propos de qui safchera quand lutilisateur


slectionne Aide, A propos de.

Cration de la feuille principale


Le Tableau PB8.1 contient les contrles et proprits dont vous avez besoin pour crer la
feuille principale qui safche lorsque lutilisateur dmarre lapplication. Vous devez avoir
install le dossier Graphics avec Visual Basic ; dans le cas contraire, vous devrez insrer le
CD-ROM Visual Basic et pointer sur le dossier ou rinstaller Visual Basic avec les graphiques. De plus, vous devez appuyer sur Ctrl-T pour ajouter le contrle multimdia la
bote outils avant de pouvoir linsrer dans la feuille.

>
:

568

Prog VB6 FM3A Page 569 Lundi, 6. aot 2001 3:45 15

Projet bonus 8 : Ces lments qui enjolivent les applications

Figure PB8.2
Un chier Wav
est jou quand
lutilisateur afche
cette bote
A propos de.

Info

ce
Astu

De nombreux contrles de ce projet, tel le contrle Timer et les zones


dimages, placs lors de la conception, se positionnent sur les bords extrieurs de la feuille, pour quils ne gnent pas lajout des autres contrles. Le
contrle Timer tant invisible lutilisateur, il peut tre plac nimporte o.
Les zones dimages se dplaant dans lanimation, leur position initiale
importe peu.
Ce projet contient trois contrles de zones dimages qui font partie dun
unique groupe de contrles. Vous pourriez crer trois contrles PictureBox
spars, mais les mettre en groupe est un bon exercice pour les projets qui
demandent de nombreux contrles identiques en apparence et dans leur but.
Pour crer le groupe, crez le premier contrle, picAni2 (le contrle
picAni1 est un contrle indpendant). Une fois picAni2 plac et ses
proprits assignes, copiez-le dans le Presse-papiers par la commande
Edition, Copier. Slectionnez Edition, Coller et rpondez Oui quand la bote
de dialogue vous demande pour crer un groupe de contrles. Visual Basic
transforme le contrle dorigine picAni2 en picAni2(0), premier lment
du groupe. Copiez une nouvelle fois pour avoir un troisime lment dans le
groupe picAni2.

Pour vous donner une meilleure ide de lapparence de la feuille, la Figure PB8.3
montre quoi elle devrait ressembler aprs le placement des contrles du Tableau
PB8.1. A lexcution, certains contrles seront invisibles et donneront lillusion dune
lettre qui jaillit de lenveloppe.
Info

Le son, Chimes.wav, qui est jou lorsque lutilisateur slectionne Aide, A


propos de, est un chier de son standard fourni avec Windows.

569

<
:

Prog VB6 FM3A Page 570 Lundi, 6. aot 2001 3:45 15

Partie III

Figure PB8.3
Votre feuille aura
cette apparence
une fois les contrles
placs.

Tableau PB8.1 : Congurez ces contrles et ces proprits dans la feuille

>
:

Nom de proprit du contrle

Valeur de proprit

Feuille : Name

frmEnvelope

Feuille : Caption

Envoyer une lettre

Feuille : Height

5790

Feuille : Width

7845

Option de menu #1 : Name

mnuHelp

Option de menu #1 : Caption

&Aide

Option de menu #2 : Name

mnuHelpAbout

Option de menu #2 : Caption

A &propos de

Bouton de commande : Name

cmdAni

Bouton de commande : Caption

&Animate

Bouton de commande : Left

2940

Bouton de commande : Top

2880

Timer : Name

tmrAni

570

Prog VB6 FM3A Page 571 Lundi, 6. aot 2001 3:45 15

Projet bonus 8 : Ces lments qui enjolivent les applications

Tableau PB8.1 : Congurez ces contrles et ces proprits dans la feuille (suite)
Nom de proprit du contrle

Valeur de proprit

Timer : Enabled

False

Timer : Interval

300

Timer : Left

1410

Timer : Top

3405

PictureBox #1 : Name

picAni1

PictureBox #1 : Height

495

PictureBox #1 : Left

3330

PictureBox #1 : Picture

Common\Graphics\Icons\Mail\Mail01a

PictureBox #1 : Top

1485

PictureBox #1 : Width

1215

PictureBox #2 : Name

picAni2(0)

PictureBox #2 : Height

495

PictureBox #2 : Left

5895

PictureBox #2 : Picture

Common\Graphics\Icons\Mail\Mail01a

PictureBox #2 : Top

2520

PictureBox #2 : Width

1215

PictureBox #3 : Name

picAni2(1)

PictureBox #3 : Height

495

PictureBox #3 : Left

5520

PictureBox #3 : Picture

Common\Graphics\Icons\Mail\Mail0lb

PictureBox #3 : Top

3240

PictureBox #3 : Visible

False

PictureBox #3 : Width

1215

571

<
:

Prog VB6 FM3A Page 572 Lundi, 6. aot 2001 3:45 15

Partie III

Tableau PB8.1 : Congurez ces contrles et ces proprits dans la feuille (suite)
Nom de proprit du contrle

Valeur de proprit

PictureBox #4 : Name

picAni2(2)

PictureBox #4 : Height

495

PictureBox #4 : Left

3960

PictureBox #4 : Picture

Common\Graphics\Icons\Mail\Mail03

PictureBox #4 : Top

1080

PictureBox #4 : Visible

False

PictureBox #4 : Width

1215

Contrle multimdia : Name

mmcEnv

Contrle multimdia : DeviceType

WaveAudio

Contrle multimdia : PlayEnabled

True

Contrle multimdia : Filename

\Windows\Media\Chimes.wav

Contrle multimdia : Left

2520

Contrle multimdia : Top

4080

Contrle multimdia : Visible

False

Contrle multimdia : Width

3540

Ajouter le code de la feuille principale


Le Listing PB8.1 contient le code que vous devez ajouter la feuille principale. Il active
la feuille et commande lanimation, qui est simple. Elle rsulte du dplacement dun
contrle PictureBox sur trois endroits de la feuille.
Listing PB8.1 : Le code de lanimation peut tre simple

>
:

1:
2:
3:
4:
5:

572

Private Sub cmdAni_Click()


Utilise le bouton pour commander lanimation
If cmdAni.Caption = &Animer Then
cmdAni.Caption = &Stop
tmrAni.Enabled = True

Prog VB6 FM3A Page 573 Lundi, 6. aot 2001 3:45 15

Projet bonus 8 : Ces lments qui enjolivent les applications

6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:

Else
cmdAni.Caption = &Animer
tmrAni.Enabled = False
End If
End Sub
Private Sub mnuHelpAbout_Click()
mmcEnv.Command = Open
mmcEnv.Command = Play
frmAbout.Show
End Sub
Private Sub tmrAni_Timer()
Determine le bon emplacement
dimage afficher

La variable suivante part de zro


et conserve sa valeur chaque excution
de la procdure.
Static intCounter As Integer
Select Case intCounter
Case 0:
picAni1.Picture = picAni2(1).Picture
picAni2(2).Visible = True
picAni2(2).Left = 3840
picAni2(2).Top = 1220
intCounter = 1
Case 1:
picAni1.Picture = picAni2(1).Picture
picAni2(2).Visible = True
picAni2(2).Left = 4040
picAni2(2).Top = 1120
intCounter = 2
Case 2:
picAni1.Picture = picAni2(1).Picture
picAni2(2).Visible = True
picAni2(2).Left = 4240
picAni2(2).Top = 1220
intCounter = 3
Case 3:
picAni1.Picture = picAni2(0).Picture
picAni2(2).Left = 4440
picAni2(2).Top = 1320
intCounter = 4
Case 4:
Arrter lanimation
picAni1.Visible = True
intCounter = 0
picAni2(2).Visible = False
End Select
End Sub

573

<
:

Prog VB6 FM3A Page 574 Lundi, 6. aot 2001 3:45 15

Partie III

Analyse
La procdure vnementielle cmdAni_Click() bascule le titre du bouton de commande
dAnimer Stop. Si le titre est Animer, la ligne 4 le modie en Stop et le contrle Timer
est activ la ligne 5. Lvnement Click du bouton de commande dclenche alors
lvnement tmrAni_Timer() de la ligne 18. La proprit Interval 300 signie que la
procdure tmrAni_Timer() sexcutera toutes les 300 millisecondes pour crer lanimation. Elle continue tant que lutilisateur ne clique pas sur le bouton Stop. La ligne 7
change alors nouveau le titre en Animer et la ligne 8 dsactive le Timer.
La procdure vnementielle tmrAni_Timer(), qui commence la ligne 18, est donc
excute par lvnement Timer toutes les 300 millisecondes. Elle effectue une des cinq
actions contrles par linstruction Select Case de la ligne 27. La variable de contrle
est une variable statique, dclare la ligne 25, qui part dune valeur de 0 (comme toute
variable statique). Une fois une valeur assigne, elle sera prserve lors des excutions
ultrieures de tmrAni_Timer(). Elle peut prendre les valeurs de 0 4, modies chaque
excution.
Chacun des trois premiers cas effectue les actions suivantes :

Assigne lenveloppe ferme licne de lenveloppe ouverte (voyez les lignes 29 et


35).

Rend licne de lettre visible (voyez les lignes 30 et 36).

"Dplace" licne de lettre en modiant ses proprits Left et Top (voyez les
lignes 31 et 32).

Incrmente la variable statique intCounter pour qu lexcution suivante, un autre


groupe dinstructions Case sexcute.

Ce processus se poursuit jusqu ce que la valeur de Case soit de 4. A ce moment, la


ligne 53, la procdure montre nouveau lenveloppe ferme et masque licne de lettre
(ligne 55). Sauf si lutilisateur clique ce moment sur le bouton Stop, la lettre se remettra
voler hors de lenveloppe au bout de 300 millisecondes, car la ligne 54 assigne 0 la
variable statique pour obliger lexcution du premier Case.
La procdure vnementielle restante, mnuHelpAbout_Click(), commande lafchage de
la bote A propos de la ligne 15, aprs que les lignes 13 et 14 ont ouvert et fait jouer le
chier Wav. Les proprits de la feuille A propos de sont dcrites la section suivante.
Info

>
:

574

Si la bote A propos de contient du code, ce dernier provient du modle de


feuille utilis pour la bote A propos de. Vous navez rien ajouter ou modier. Il garantit que la routine Infos systme commence lorsque lutilisateur
clique sur le bouton de commande correspondant.

Prog VB6 FM3A Page 575 Lundi, 6. aot 2001 3:45 15

Projet bonus 8 : Ces lments qui enjolivent les applications

Cration de la bote A propos de


Utilisez le modle de feuille A propos de pour la bote A propos de. Une fois la premire
feuille cre, cliquez du bouton droit dans la fentre Projet et slectionnez Ajouter,
Feuille. Slectionnez A propos de, ce qui ajoute la feuille et le code correspondant au
projet.
Le Tableau PB8.2 contient les valeurs de contrles utiliser. Le Tableau PB8.2 ne
contient que les proprits modier.
Tableau PB8.2 : Congurez ces contrles et ces proprits dans la feuille
A propos de
Nom de proprit du contrle

Valeur de proprit

lblDescription Caption

Voir une animation simple et entendre un son

lblDescription FontSize

14

lblDescription FontStyle

Gras

lblDisclaimer Caption

Attention : programmeur bord !

Info

Le code qui accompagne la bote A propos de ajoute le titre et le numro de


version partir des objets systme App.Title, App.Major, App.Minor et
App.Revision. Ces trois derniers se combinant pour donner le numro de
version 1.0.0.

575

<
:

Prog VB6 FM3A Page 576 Lundi, 6. aot 2001 3:45 15

Prog VB6 FM3A Page 577 Lundi, 6. aot 2001 3:45 15

Chapitre

18

Interactions avec
les donnes
Ce chapitre vous montre comment accder aux bases de donnes partir de vos applications Visual Basic. Une base de donnes est un regroupement de chiers qui offre un
systme de gestion de donnes complet. Un tel systme, tel Microsoft Access, cre la
base de donnes laquelle votre application Visual Basic peut avoir besoin de se
connecter. En utilisant des contrles et des mthodes spciques, vos applications
peuvent communiquer avec la base de donnes.
Vous apprendrez aujourdhui :

les bases de donnes avec lesquelles interagir ;

la terminologie des bases de donne ;

limportance des champs dindex ;

les capacits du Gestionnaire des donnes analyser les structures de donnes ;

le contrle Data ;

la comparaison entre les contrles ADO et le contrle Data ;

comment lassistant Cration dapplications de Visual Basic peut analyser les tables
et gnrer des feuilles.

577

Prog VB6 FM3A Page 578 Lundi, 6. aot 2001 3:45 15

Partie III

Donnes de base de donnes et Visual Basic


En offrant la possibilit dinteragir avec les bases de donnes, Visual Basic vous permet
daccder et de manipuler des ressources de donnes importantes partir dun
programme Visual Basic. Les bases de donnes auxquelles il peut accder ont des formes
et des formats nombreux. Visual Basic supporte les formats de base de donnes courants
suivants :

Microsoft Access ;

DBase ;

FoxPro ;

bases de donnes des feuilles de calculs Lotus ;

bases de donnes compatibles ODBC ;

Paradox ;

chiers texte avec des donnes spares par des virgules.

ition
Dfin

Info

Une base de donnes est un regroupement organis de donnes, qui ne sont


gnralement pas bases sur du texte, comme cest le cas des donnes de
traitement de texte. Ce sont plutt des groupes dlments quil faut suivre,
que ce soient des personnes, des clients, des fournisseurs, des inventaires,
des livres ou des logiciels (en dautres termes, tout type de donnes dont
vous devez garder la trace, faire des comptes rendus et modier). Souvent,
vous utilisez un systme de base de donnes, tel que Microsoft Access, pour
crer et grer la structure de la base de donnes. Visual Basic permet
daccder la base partir du systme de base de donnes.
Visual Basic peut accder aux donnes de nombreuses versions de ces
systmes de base de donnes et les grer. Tant que vous utilisez une version
qui existe depuis lapparition de Windows 95, vous pouvez tre sr que
Visual Basic reconnat son format (mais il supporte aussi certaines versions
antrieures Windows 95).

Pour comprendre comment Visual Basic supporte lutilisation des bases de donnes,
vous devez comprendre les termes apparents leur technologie. La leon
daujourdhui ne propose quun vernis ! Vous lisez ce livre pour apprendre Visual Basic
et pas les bases de donnes. Pour une approche plus approfondie du sujet, il existe de
nombreux ouvrages traitant des bases de donnes et des accs avancs de Visual Basic.

>
:

578

Prog VB6 FM3A Page 579 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

Il nest cependant pas utile dtre un expert en bases de donnes pour connatre les
techniques daccs de Visual Basic. Ce dernier comporte de nombreux contrles qui
grent laccs aux bases de donnes dans un environnement structur. Le reste du chapitre
vous prsente ces outils et le traitement des bases de donnes en gnral.

Apprentissage des termes


On commence gnralement par apprendre les bases de donnes en partant des chiers
de donnes en gnral. Vous avez dj un avantage, car vous avez dj entendu parler
des enregistrements et des champs au Chapitre 12. La Figure 18.1 illustre un scnario
classique qui montre clairement le concept des enregistrements et des champs. Un enregistrement peut tre considr comme une ligne dinformations dans un chier de
donnes, mme si un enregistrement logique peut stendre sur deux ou trois lignes
physiques du chier. Chaque enregistrement est dcompos en champs ou colonnes, qui
aident distinguer les lments de donnes de lenregistrement.
Figure 18.1
Un chier de texte
classique se dcompose
en enregistrements
et champs.

Enregistrements

Fichier d'inventaire

Code
pice

Description

Quantit

Prix de
gros

Prix de
dtail

XG12

Gadget

47

0,52

01,35

C1-98

Embases n 4

16,73

26,99

W2A

Sac de joints

9,38

14,95

KL7

Boulon n 4

62

0,12

00,67

AT8E

Boulons n 5

38

0,08

00,21

MVP9

Joint large

7,88

15,00

MVP8

Joint troit

4,88

10,00

Champs

Info

Le chier de donnes de la Figure 18.1 prsente sept enregistrements et cinq


champs. Si dautres lments sont ajouts linventaire, le nombre denregistrement augmentera, mais le nombre de champs restera le mme. Les
chiers de donnes ne sont cependant pas gs, car vous pouvez augmenter

579

<
:

Prog VB6 FM3A Page 580 Lundi, 6. aot 2001 3:45 15

Partie III

le nombre de champs. Mais vous devez pour cela changer la structure du


chier ; lajout de champs ne constitue habituellement pas le mme traitement que lajout ou la suppression denregistrements. La plupart du temps,
vous ajoutez ou retirez des lments dinventaire, ce qui revient ajouter ou
supprimer des enregistrements la base de donnes.
ntion
Atte

Les noms de champs ne font jamais partie des donnes. Ils ne servent qu
tiqueter les champs, comme les noms de variables tiquettent le contenu
des variables.

Le chier de la Figure 18.1 est dit chier squentiel, car il est autonome. Un programme
peut accder simplement aux informations en squence ou alatoirement. Les enregistrements nont pas dordre particulier, mais le concepteur de la base peut par exemple
les classer par numro de pice, car ce type de chier est plus simple utiliser si on
emploie des donnes tries. Les systmes de base de donnes daujourdhui vont bien
plus loin que le concept de chier squentiel unique illustr par cette gure.
Dans la terminologie de base de donnes actuelle, une table est un chier de donnes, et
la base de donnes est le rassemblement de ces tables. Donc, votre base de donnes peut
se composer dune table des clients, dune table des fournisseurs, dune table des
employs et dune table dinventaire. Lorsque vous les mettez dans une base de donnes
unique, un programme qui a accs la base a accs lensemble des tables en mme
temps. Il peut donc dterminer quel fournisseur vous a vendu une pice en gros ou quel
employ a vendu un produit particulier. En dautres termes, un systme de base de
donnes peut prendre ces tables diffrentes et fournir partir de l des informations
consolides.
On utilise une interrogation pour rechercher des informations dans une base de donnes.
Cest--dire quun programme interroge la base de donnes pour rechercher un enregistrement ou un groupe denregistrements. Une table de base de donnes dispose gnralement
dau moins un index. Un index est un champ de cl avec des valeurs uniques pour chaque
enregistrement. Lindex fonctionne comme un index de livre : quand vous avez besoin
daccder un enregistrement particulier de la table, vous pouvez spcier la valeur dindex
et la base saute directement la ligne correspondante sans rechercher dans toute la table
(comme on le ferait avec des routines classiques daccs un chier squentiel). Dans la
Figure 18.1, le meilleur champ pour lindex serait le champ Code pice, car chaque pice a
un numro unique.
Info

>
:

580

Avez-vous dj eu limpression de ntre quun numro ? Vous tes-vous


senti fatigu de tous ces numros prsents dans votre vie (compte chques,
compte dpargne, emprunts, plaques minralogiques, permis de conduire,
numro de scurit sociale, etc.) ? Maintenant, vous comprenez mieux
limportance de ces numros : ils permettent lordinateur de vous identier

Prog VB6 FM3A Page 581 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

plus rapidement. Des informations enregistres par noms seraient plus


difciles retrouver. Par exemple, plusieurs personnes dans un chier national
de cartes de crdit auront probablement le mme nom que vous. Si vous vous
appelez Delabrosse et que vous demandez votre solde actuel, le
rceptionniste pourrait chercher De La Brosse, ou Labrosse ou DELABROSSE, et lordinateur ne pas retrouver le nom. Les machines sont tellement bornes ! Lidentiant numrique unique utilis pour les champs
dindex signie que moins derreurs se produiront. Les entreprises peuvent
galement automatiser pour gagner du temps, ce qui se ressent nalement
dans de meilleurs prix et taux dintrts.
Lorsquils travaillent sur des bases de donnes, les programmeurs prfrent le terme
table celui de chier. Cependant, ils utilisent galement colonnes et lignes pour
dsigner les champs et les enregistrements. Cest judicieux, car les chiers, ou tables,
sont en thorie rectangulaires (mais pas en ralit, car ils sont enregistrs physiquement dune manire diffrente) et se composent de colonnes et de lignes (voir
Figure 18.1). Parler de plusieurs chiers dans un seul chier de base de donnes peut
galement prter confusion, de l le terme table pour une occurrence dun ensemble
de donnes (un chier de donnes) dans la base de donnes. En outre, la plupart des
systmes de base de donnes actuels sont relationnels, ce qui signie quil ny a pas
deux tables contenant exactement les mmes donnes pour viter autant que possible la
redondance des chiers. Microsoft Access est de ce type. Les chiers de base de
donnes non relationnels, comme les chiers dBase davant la version 4.0, demandent
lajout de code Visual Basic assez complexe pour que le chier imite les accs relationnels avant de pouvoir effectuer des Entres/Sorties avec les outils de base de donnes
de Visual Basic.
La plupart des bases de donnes supportent galement linterface utilisateur. Par exemple, les chiers de base de donnes peuvent contenir des tats qui gnrent des sorties en
fonction des donnes, des formulaires crans pour afcher et recevoir les nouvelles
donnes des utilisateurs, des interrogations enregistres pour viter lutilisateur de
crer une nouvelle requte chaque fois quil a besoin dinformations, et des dnitions
de bases de donnes pour que les programmes puissent analyser la base de donnes et
lire le format laide de procdures standards. Ces procdures permettent aux programmeurs de savoir combien de tables existent et quoi elles ressemblent.

581

<
:

Prog VB6 FM3A Page 582 Lundi, 6. aot 2001 3:45 15

Partie III

Obtention dun chantillon de donnes


Visual Basic est fourni avec les deux bases de donnes exemples, toutes deux au format
Microsoft Access :

BIBLIO.MDB, qui contient une base de donnes de vendeurs et de titres de livres


informatiques.

NWIND.MDB, qui contient le systme de base de donnes complet dune entreprise


imaginaire, comprenant linventaire, les clients, les fournisseurs, les employs, les
statistiques des ventes, etc. Le nom de lentreprise est Northwind Traders.

Tous les noms de chiers des bases de donnes Access se terminent par .MDB (pour
Microsoft Database). Un chier de base de donnes Access peut tre volumineux, car il
contient lensemble des tables, tats, formulaires, crans et requtes enregistrs dans la
base de donnes. Lavantage du chier unique est une simplication de la sauvegarde de
la base complte (il nest pas utile de garder la trace de plusieurs chiers lorsquon
effectue la sauvegarde).
Pour que cette prsentation des bases de donnes reste simple, la prsente leon utilise la
base de donnes NWIND.MDB pour illustrer lutilisation de certains contrles et commandes lis aux bases de donnes. Cependant, tous les programmeurs Visual Basic nont pas
accs un systme de base de donnes externe. Heureusement, Visual Basic comporte un
outil complmentaire spcial nomm le Gestionnaire de donnes qui vous permet de crer
et de modier des chiers de base de donnes.
ition
Dfin

ntion
Atte

Le Gestionnaire de donnes est un programme de complment, disponible


partir de lenvironnement Visual Basic, que vous pouvez utiliser pour crer
des bases de donnes, entrer modier des donnes, et modier et rendre
compte de leur structure. Les chiers crs et analyss dans le Gestionnaire
de donnes vous aident crire et tester des programmes Visual Basic qui
doivent travailler sur des donnes identiques.
Si vous utilisez la version standard de Visual Basic, vous ne trouverez pas le
Gestionnaire des donnes, mais la base de donnes NWIND.MDB est
toujours l, ce qui vous permet de travailler sur certains des exemples qui
suivent.

Le Gestionnaire de donnes est le seul outil par dfaut du menu Complments. Slectionnez Complments, Gestionnaire de donnes pour que Visual Basic dmarre le
programme (voir Figure 18.2).

>
:

582

Prog VB6 FM3A Page 583 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

Figure 18.2
Le Gestionnaire
de donnes vous aide
crer et analyser
des chiers de base de
donnes.

Le Gestionnaire de donnes vous permet deffectuer les tches suivantes :

crer de nouvelles bases de donnes ;

entrer de nouvelles donnes dans les chiers de donnes ;

modier les structures des chiers de base de donnes existants ;

modier les donnes des chiers de base de donnes existants ;

rechercher des champs, des requtes et des jeux denregistrements.


ition
Dfin

Un jeu denregistrements (recordset) est simplement un regroupement


denregistrements. Il en existe plusieurs types. Le type par dfaut est celui
constitu par lensemble des enregistrements (lignes) dune table. Vous
pouvez crer un nouveau jeu denregistrements en ne recherchant que les
enregistrements qui rpondent un critre particulier (par exemple, "Tous
les enregistrements dont le champ Solde est suprieur 3 000 F"). Un
dynaset est un jeu denregistrements qui se modie, mais en continuant
rpondre un certain critre lorsque vous linterrogez. Un snapshot est un
jeu denregistrements pris un instant prcis, par exemple tous les enregistrements qui rpondent un critre particulier le dernier jour du mois.

En dautres termes, le Gestionnaire de donnes se comporte comme un systme de


donnes, pas trs diffrent de Microsoft Access. Mais noubliez cependant pas quil est
trs limit et que cest plus un outil dadministration pour lanalyse de chiers de base
de donnes quun vritable systme de base de donnes. Vous ne pouvez par exemple
pas crer dtats ni de formulaires.

583

<
:

Prog VB6 FM3A Page 584 Lundi, 6. aot 2001 3:45 15

Partie III

ntion
Atte

Rappelons que cette leon ne prsente quun survol rapide de la technique


et de la terminologie des bases de donnes. La matrise dun systme de
base de donnes complet tel que Microsoft Access prend autant de temps
sinon plus que celle du systme de dveloppement Visual Basic.

Voici les tapes gnrales pour crer une nouvelle base de donnes avec le Gestionnaire de
donnes de Visual Basic :
1. Crez le chier de base de donnes en slectionnant Fichier, Nouvelle base de donnes,
puis en choisissant le type de base que vous voulez crer en choisissant dans la liste. Le
Gestionnaire de donnes peut crer et modier tous les formats de base de donnes
lists au dbut de cette leon.
2. Crez chaque table de la base en cliquant du bouton droit sur la fentre Base de
donnes et en slectionnant Nouvelle table dans le menu contextuel. Le Gestionnaire
de donnes afche la feuille Modier la structure, illustr la Figure 18.3, dans lequel
vous pouvez entrer le nom de la table, chacun des champs, leur type (chaque champ de
base de donnes supporte un type de donnes unique, comme les variables dans Visual
Basic), les exigences de scurit et de validation (par exemple les champs protgs par
mots de passe), et les champs indexs (une table peut avoir plusieurs index suivant la
manire dont lapplication accde aux donnes).

Figure 18.3
Vous pouvez
concevoir chaque
table et la structure
de ses champs
partir du formulaire
Modier la structure.

>
:

584

Prog VB6 FM3A Page 585 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

3. Cliquez sur le bouton Crer la table pour crer la structure de la table et pour ajouter
des tables supplmentaires.
4. Cliquez sur le bouton de la barre doutils dont linfo-bulle annonce "Utiliser le
contrle Data sur la feuille" pour que le Gestionnaire de donnes de Visual Basic ait un
outil (le contrle Data) utiliser lors de la saisie des donnes de table de la base de
donnes.
5. Double-cliquez sur un des noms de table de la fentre de base de donnes et entrez
chaque enregistrement en utilisant le formulaire de saisie illustr la Figure 18.4.
Figure 18.4
Entrez les donnes
de chaque table pour
avoir une base de
donnes sur laquelle
travailler.

Info

Si vous avez dabord cliqu sur le bouton de la barre doutils de jeu denregistrements de type dynaset, les donnes que vous allez saisir prendront la
forme dun de ces types avancs de jeux denregistrements.

6. Slectionnez Fichier, Fermer pour fermer et enregistrer la nouvelle base de donnes.


Bien que la cration dune base de donnes exige bien plus de dtails que ce quil en est
dit ici, vous avez dsormais une ide gnrale des tapes ncessaires sa cration en
nutilisant que les outils fournis par Visual Basic.
ce
Astu

Si votre programmation en arrive exiger un travail important sur les bases


de donnes, il vaut mieux ne pas vous er au Gestionnaire de donnes de
Visual Basic pour gnrer et modier vos chiers de base de donnes. Sil
est utile pour dcrypter les formats de base de donnes et pour crer des
bases simples de test et de dbogage, ses fonctionnalits sont trs loin de
celles de Microsoft Access, FoxPro, ou dautres systmes du march. Par
exemple, nutilisez pas le Gestionnaire de donnes pour concevoir et crer
la base de donnes complte dune entreprise. Il nest pas assez souple ni
simple pour travailler rgulirement la gestion dune base de donnes.

585

<
:

Prog VB6 FM3A Page 586 Lundi, 6. aot 2001 3:45 15

Partie III

Pour une programmation srieuse de base de donnes, il est prfrable


dajouter un systme de gestion de base de donnes votre collection
dapplications.
Mme si le Gestionnaire de donnes de Visual Basic offre quelques outils dinterrogation permettant de rechercher des donnes et crer des requtes complexes pour
trouver des enregistrements, il reste limit ladministration de la base de donnes.
Visual Basic attend patiemment de vous permettre de crer une application complte
pour rellement travailler sur une base de donnes. Maintenant que vous avez eu une
prsentation du Gestionnaire de donnes, vous tes prt voir comment Visual Basic
peut accder aux chiers de la base de donnes que vous avez crs, avec le Gestionnaire de donnes, ou avec un systme autonome de gestion de base de donnes tel
que dBase. Comme Visual Basic est fourni avec le chier de base de donnes
NWIND.MDB, il est inutile de crer une base pour suivre la leon daujourdhui.

Le contrle Data
Le contrle Data, ou contrle de donnes, dernier contrle intrinsque de la fentre
Bote outils quil reste tudier, est souvent considr comme un outil lent et encombrant de gestion des donnes. Mais, pour sa dfense, il est toujours utile pour les raisons
suivantes :

Cest un contrle simple, qui rend plus ais lapprentissage de la manire dont
Visual Basic interagit avec les chiers de base de donnes.

Le contrle Data est toujours prsent dans la fentre Bote outils. Il nest donc pas
ncessaire de chercher et dajouter un contrle ActiveX pour lutiliser.

Ldition Standard de Visual Basic ne contient pas tous les outils avancs de base de
donnes inclus dans les ditions Professionnelle et Entreprise. Dans la partie nale
de la leon daujourdhui, vous apprendrez comment ces outils et techniques
avancs peuvent aider le programmeur accder aux bases de donnes de manire
plus varie que ne le permet le contrle Data. Mais tout le monde ne possdant pas
ces versions, ces outils plus avancs ne sont pas disponibles pour tous, alors que le
contrle Data lest.

Les sections qui suivent dcrivent comment utiliser le contrle Data pour accder la
base de donnes NWIND.MDB. Une fois celui-ci matris, les contrles de donnes
plus avancs ne vous paratront plus si impressionnants.

>
:

586

Prog VB6 FM3A Page 587 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

Configurer le contrle Data


La mthode la plus simple pour accder une base de donnes est dutiliser le contrle
Data. Quand vous le placez sur une feuille, il ressemble un peu au contrle multimdia
tudi au jour 14. Si vous llargissez quelque peu, vous constaterez quil ressemble
celui que montre la Figure 18.5.
Figure 18.5
Le contrle Data
contient des boutons
qui vous aident
parcourir une base
de donnes.

Afficher une valeur de champ ici

Premier
enregistrement

Dernier
enregistrement

Enregistrement
prcdent

Enregistrement
suivant

Un contrle Data se compose de :

Deux ches intrieures qui permettent davancer et de reculer dun enregistrement


la fois dans une table de base de donnes.

Des ches extrieures qui vous conduisent au premier ou au dernier enregistrement


de la table de base de donnes.

Une zone centrale qui afche linformation que vous voulez de la base de donnes.

Le contrle Data est un contrle li. Vous pouvez lier de nombreux contrles Visual
Basic, tels que le contrle TextBox, une base de donnes. Quand un utilisateur parcourt
la base, le champ de texte afche le champ congur. Lorsque vous liez un contrle une
base de donnes, vous navez plus vous proccuper de lafchage des donnes du
champ ; cest Visual Basic qui soccupe de tout.
ition
Dfin

Un contrle li est un contrle li aux donnes de votre base de donnes de


manire ce quil en rende le parcours simple pour un programme Visual
Basic.

587

<
:

Prog VB6 FM3A Page 588 Lundi, 6. aot 2001 3:45 15

Partie III

Pour afcher un enregistrement la fois partir dun jeu denregistrements que vous
avez dni dans la base de donnes, utilisez un contrle li. Il permet de nafcher en
gnral que lenregistrement en cours ou un de ses champs. Lorsque lutilisateur
navigue dans la base en cliquant sur les boutons du contrle Data, lenregistrement en
cours change et rete la position de lutilisateur dans la table de la base de donnes.

Utiliser le contrle Data


Pour voir fonctionner le contrle Data, prenez le temps de crer une application qui afche des enregistrements dune table de la base NWIND.MDB. Les tapes suivantes en
dcrivent le processus :
1. Crez une nouvelle application et ajoutez le contrle Data la feuille. Modiez la
valeur de proprit Width 4620 pour laisser de la place au texte afcher dans la partie
centrale du contrle. Mettez le contrle en bas de la fentre en donnant la proprit
Top la valeur 3240.
2. Nommez le contrle dtaBooks.
3. Utilisez la proprit DatabaseName pour connecter le contrle la base de donnes.
Double-cliquez sur la proprit pour slectionner le chier NWIND.MBD dans le
dossier Visual Basic. Le contrle Data est un contrle intelligent qui sait distinguer les
diffrentes tables dune base de donnes. Il permet de naccder qu une table la fois
(ou plus prcisment un jeu denregistrements la fois) et, une fois la proprit DatabaseName congure, le contrle est capable de dchiffrer les tables de la base.
4. Double-cliquez sur la proprit RecordSource et slectionnez la table Customers
dans la liste. La proprit RecordSource spcie le jeu denregistrements gr par le
contrle Data lorsque lapplication accde la base.
5. Modiez la proprit Caption du contrle Data en Cliquez pour changer de client.
Le texte safche dans la zone centrale du contrle.
6. Ajoutez la feuille un contrle tiquette avec les proprits suivantes :

Name: lblCust
Alignment: 2-Center
Font.Size: 18
Height: 915
Left: 1680
Top: 1440
Width: 4320

7. Ouvrez la proprit DataSource de ltiquette. Cest une proprit que vous navez
encore jamais eu congurer. Vous allez lier ltiquette au contrle Data. (Une
tiquette est un des contrles qui peuvent tre lis). La proprit DataSource vous

>
:

588

Prog VB6 FM3A Page 589 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

permet de choisir la valeur de dtaBooks, car cest la table de la base de donnes


laquelle le contrle Data est rattach. Sil y a plusieurs contrles Data sur la feuille
et quils sont dj attachs des bases de donnes, la proprit DataSource les listerait tous, pour vous permettre de slectionner la source de cette tiquette de donnes.
8. Ltiquette tant lie la bonne table, il reste la lier la bonne colonne (champ).
Ouvrez la proprit DataField et slectionnez ContactName comme colonne de la
table afcher.
9. Vous tes prt excuter lapplication. Appuyez sur F5 pour cela : le nom du
premier client safchera automatiquement dans ltiquette. Noubliez pas quelle
est lie au contrle Data, lui-mme li la base de donnes. Quand vous cliquez sur
les boutons du contrle Data, le contenu du champ change et rete le client en
cours (voir Figure 18.6)
10. Cliquez sur le bouton de fermeture de la fentre de lapplication pour terminer le
programme et enregistrer votre projet..
Figure 18.6
Vous pouvez
maintenant parcourir
la base de donnes,
enregistrement par
enregistrement, en
avant ou en arrire.

Vous ntes absolument pas limit une colonne de la table. Vous pouvez ajouter autant
dtiquettes que vous le voulez pour afcher plusieurs colonnes. La Figure 18.7 montre
lafchage dun enregistrement client complet. Les tiquettes supplmentaires ont
simplement leur valeur DataField lie des colonnes particulires de la table. En outre,
des tiquettes supplmentaires aident la description des donnes afches. (Vous
pourrez modier le programme de base de donnes en ajoutant ces colonnes
supplmentaires dans le premier exercice la n du chapitre).

589

<
:

Prog VB6 FM3A Page 590 Lundi, 6. aot 2001 3:45 15

Partie III

ce
Astu

Pour afcher les colonnes de plusieurs tables, vous devez crer un jeu
denregistrements, tel quun dynaset, dans le systme de base de donnes
pour extraire les colonnes des tables correctes. Des commandes et des
contrles Visual Basic plus avancs vous permettent deffectuer des slections complexes dans les bases de donnes, comme vous le verrez dans les
dernires parties de la leon daujourdhui.

Figure 18.7
Afcher plusieurs
colonnes de tables
ne demande que
des tiquettes
supplmentaires.

ce
Astu

Pour afcher les donnes de type boolen, utilisez une case cocher ou un
bouton doption pour indiquer les conditions True ou False du champ.
Loption peut indiquer les valeurs de donnes Oui/Non ou Vrai/Faux qui
apparaissent dans les tables des bases de donnes.

Utilisation avance du contrle Data


Les applications de base de donnes ne doivent pas obligatoirement se cantonner la
lecture. Vous pouvez souhaiter laisser lutilisateur modier les donnes. Il existe
plusieurs manires de le faire. Lapproche la plus simple consiste afcher les donnes
dans des zones de texte au lieu dtiquettes. Les utilisateurs verront les informations exactement comme avec les tiquettes, mais ils pourront aussi modier les informations
dans la zone de texte pour mettre jour la base.
ntion
Atte

>
:

590

Soyez toujours vigilant sur la scurit. Vous pouvez avoir besoin dafcher
une bote de dialogue de saisie de mot de passe pour limiter la mise jour
certaines personnes. De plus, la base elle-mme peut limiter les types de
modications autorises. La proprit Exclusive du contrle Data

Prog VB6 FM3A Page 591 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

dtermine si un utilisateur peut avoir des droits exclusifs sur une base de
donnes, et tre le seul utilisateur autoris y accder (dans les systmes en
rseau) ; sinon, le contrle Data noffre que peu en matire de scurit. Vous
devrez matriser des commandes et des contrles plus avancs (dont
certains sont tudis plus loin) pour incorporer une vritable scurit dans
vos applications.
Lorsque votre savoir-faire en programmation samliorera, vous apprendrez des mthodes dutilisation du contrle Data permettant un accs plus avanc aux bases de
donnes. Il dispose par exemple de plusieurs mthodes Move qui permettent de dplacer
le pointeur denregistrement comme le font les boutons du contrle Data.
Les mthodes suivantes dplacent le pointeur au premier ou au dernier enregistrement, au
prcdent ou au suivant, dans la base de donnes pointe par la proprit DataSource du
contrle Data :

dtaCust.Recordset.MoveFirst
dtaCust.Recordset.MoveLast
dtaCust.Recordset.MoveNext
dtaCust.Recordset.MovePrevious

ition
Dfin

Va au premier enregistrement
Va au dernier enregistrement
Enregistrement suivant
Enregistrement prcdent

Le pointeur denregistrement garde la trace de lenregistrement en cours


dans la table de la base de donnes ouverte. Lorsque vous ouvrez une base,
le pointeur indique le premier enregistrement. Lorsque vous lisez en
squence la table, le pointeur denregistrement avance. Les mthodes de type
Move manipulent le pointeur et permettent daccder diffrents enregistrements de la table.

Le jeu denregistrements par dfaut du contrle Data est dni par les valeurs de
proprits que vous congurez. Par exemple, si vous ajoutez un bouton de commande
qui comporte une procdure vnementielle Click qui contient son tour une de ces
mthodes, ltiquette afche lenregistrement slectionn par la mthode chaque fois
que lutilisateur clique sur le bouton de commande. Outre les contrles de dplacement
dans les enregistrements, il existe des mthodes qui ajoutent ou suppriment des enregistrements de la base de donnes.
ce
Astu

Utilisez les proprits boolennes BOF et EOF pour voir si le pointeur denregistrement se trouve au dbut ou la n dune table. Les programmeurs
Visual Basic utilisent souvent une boucle DoWhile pour parcourir tous les
enregistrements de la table. La boucle se termine quand datCust.Recordset.EOF est gale True.

591

<
:

Prog VB6 FM3A Page 592 Lundi, 6. aot 2001 3:45 15

Partie III

Contrles avancs de base de donnes


Les ditions Professionnelle, Entreprise et Visual Studio de Visual Basic disposent dun
ensemble avanc de contrles, proprits, mthodes et vnements pour crire des applications importantes daccs aux bases de donnes. Si ce cours en 21 jours ne peut pas explorer
tous les concepts avancs des bases de donnes, cette leon en offre une prsentation. Si
vous devez ajouter vos applications une meilleure gestion de base de donnes, vous devez
au moins savoir de quoi est capable Visual Basic et mieux comprendre une part de la terminologie.
Depuis sa version 6, Visual Basic supporte une grande diversit dobjets ADO (ADO
signie ActiveX Data Objects, ou Objets de donnes ActiveX). Etants bass sur ActiveX,
ces objets fonctionnent sur diffrentes plates-formes et avec diffrents langages de
programmation (contrairement au contrle Data qui est strictement limit lenvironnement Visual Basic). Les objets ADO supportent laccs aux bases de donnes pour un
objet de donnes local ou distant (RDO remote data object). Les donnes distantes
peuvent provenir dun rseau ou dune ligne de communication.
La matrise des contrles ADO est importante, car ils offrent plusieurs avantages par
rapport au contrle Data. Malgr la formation quils demandent (il reste beaucoup
apprendre pour pouvoir les utiliser pleinement), ils sont le choix habituel chez les
programmeurs Visual Basic de bases de donnes, du fait de leur puissance et de leur
souplesse.
La technologie ADO supporte des accs aux bases de donnes plus rapides quavec le
contrle Data. Les ordinateurs actuels sont rapides, mais vous observerez une dgradation
quand vous utilisez le contrle Data avec de grosses bases de donnes, en particulier sous
OBDC.
En utilisant ADO, vous aurez sans doute crire plus de code quavec le contrle
Data. Mme si vous pouvez crire du code daccs aux diverses mthodes du contrle Data,
laccs direct la base de donnes est moins compliqu. ADO permet de contrler
laccs aux donnes dune manire bien plus stricte que le contrle Data, dont la
simplicit rete le manque de exibilit. La surcharge cause par le contrle Data ne
grve pas les programmes utilisant ADO.
Lavantage principal dADO est sans doute sa capacit accder de nombreux types de
donnes. Ne se limitant pas aux seules informations des bases de donnes, relationnelles ou
pas, les contrles ADO peuvent accder, par une programmation pointue, aux navigateurs
Internet, au courrier lectronique, et mme des graphiques.
ntion
Atte

>
:

592

Plusieurs contrles ADO placs sur une mme feuille peuvent dgrader les
performances dune application, car chacun fonctionne indpendamment
des autres et consomme son propre ensemble de ressources.

Prog VB6 FM3A Page 593 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

La technologie ADO supporte (dans toutes les ditions dans une certaine mesure, mais
compltement dans les ditions Professionnelle, Entreprise et Visual Studio) les contrles
de donnes suivants :

Contrle Data ADO. Il fonctionne comme un contrle Data en se connectant une


base de donnes et en permettant lutilisateur de parcourir les enregistrements.

Contrle DataCombo ADO. Il ressemble une zone de liste droulante standard,


mais donne lutilisateur laccs plusieurs enregistrements de cette colonne.

Contrle DataList ADO. Il ressemble une zone de liste standard, mais donne
lutilisateur laccs plusieurs enregistrements de cette colonne.
Info

Des versions non ADO des ces contrles sont disponibles.

Lassistant Cration dapplications


Visual Basic peut effectuer une bonne partie du travail si vous utilisez lassistant Visual Basic
Cration dapplications pour gnrer une application contenant un accs la base de
donnes. Bien que lassistant fournisse un accs plus limit que celui que permet la
programmation ADO, vous pouvez crer lapplication initiale, puis la modier pour
gnrer une application plus complte.
Le code rsultant de la gnration de lapplication par lassistant est assez complet et il
forme la base dune vritable application de base de donnes. La Figure 18.8 montre la
premire fentre de lassistant consacre laccs la base de donnes.
Figure 18.8
Lassistant Cration
dapplication vous
permet de crer
des programmes de
base de donnes.

593

<
:

Prog VB6 FM3A Page 594 Lundi, 6. aot 2001 3:45 15

Partie III

Supposons que vous vouliez une application qui propose un accs en consultation et en
modication au chier de base de donnes BIBLIO.MDB. Aprs avoir lanc lassistant
Cration dapplication et pass plusieurs fentres, vous verrez la fentre de la
Figure 18.8. Vous y demandez lassistant de gnrer les feuilles daccs la base de
donnes. Vous pourriez les crer par vous-mme, mais vous pouvez aussi laisser faire
lassistant, puis personnaliser ensuite les feuilles.
Une fois que vous cliquez sur le bouton Crer une nouvelle feuille, lassistant
commence par vous demander un prol. Dans cet exemple, cliquez sur Suivant pour
slectionner un type de base de donnes pour lapplication. La base BIBLIO .MDB
fournie avec Visual Basic tant une base Microsoft Access, slectionnez Access, puis
cliquez sur Suivant.
Lassistant demande ensuite le nom de la base de donnes dans la fentre illustre la
Figure 18.9. Spciez le chemin daccs et le nom de la base. (Vous pouvez cliquer sur
le bouton Parcourir pour chercher le chier.)
Figure 18.9
Lassistant demande
la base de donnes
utiliser.

Une fois la base spcie, cliquez sur Suivant ; lassistant demande le nom du formulaire principal (entrez frmADO dans cet exemple) et la prsentation que vous voulez.
Vous avez les cinq choix de prsentation suivants :

>
:

Enregistrement unique. Lutilisateur ne peut quaccder un enregistrement la


fois, en consultation ou modication.

594

Prog VB6 FM3A Page 595 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

Grille (feuille de donnes). Lutilisateur peut accder plusieurs enregistrements la


fois dans un afchage de type table, en consultation ou modication.

Principale/secondaire. Lutilisateur peut accder, en consultation ou modication,


des enregistrements secondaires apparents un enregistrement principal unique ;
par exemple, tous les produits (les enregistrements secondaires) quun fournisseur
(lenregistrement principal) a achet dans le pass, au travers dune relation un-plusieurs.

MS HFlexGrid. Lutilisateur peut accder plusieurs enregistrements dans un


format de table, en consultation ou modication.

MS Chart. Lutilisateur peut accder plusieurs enregistrements dans un format de


diagramme, en consultation ou modication.
ition
Dfin

Une relation un--plusieurs existe entre des enregistrements de plusieurs


tables dans la plupart des bases de donnes. Un enregistrement peut contenir une valeur de colonne qui se retrouve sur plusieurs enregistrements dun
autre chier. Par exemple, une base de donnes dauteurs contiendra une
table des auteurs. Une table des ouvrages peut exister avec plusieurs titres
crits par le mme auteur. Ce dernier apparat comme lenregistrement principal, tandis que les livres sont les enregistrements secondaires de cette relation auteur livre, de un plusieurs.

Vous pouvez aussi spcier les liens (la manire dont Visual Basic lie les informations
de la base de donnes aux contrles). Lassistant propose ces trois liens de donnes :

Contrle de donnes ADO. Utilise le contrle de donnes ADO pour lier les
contrles aux donnes.

Code ADO. Utilise du code ADO pour lier les contrles aux donnes.

Classe. Cre une classe de donnes particulire pour la base de donnes et lie les
donnes aux contrles au travers de cette classe.

Pour cet exemple, slectionnez Contrle de donnes ADO et cliquez sur Suivant. Dans
la fentre suivante, lassistant doit connatre la table, ou le jeu denregistrements, auquel
accder dans la base. Ouvrez la liste droulante Source denregistrements pour
slectionner la table Publishers. Comme le montre la Figure 18.10, la liste des champs
disponibles est mise immdiatement jour ; elle afche tous les champs, ou colonnes,
de la table.
Les champs que vous slectionnez dterminent ceux que lassistant place sur la feuille
ADO quil gnre. Vous pouvez slectionner un champ de la liste de gauche et cliquer sur
le bouton > pour lenvoyer dans la liste de droite, qui sert gnrer les champs de la
feuille nale. Dans cet exemple, envoyez-y tous les champs.

595

<
:

Prog VB6 FM3A Page 596 Lundi, 6. aot 2001 3:45 15

Partie III

Figure 18.10
Visual Basic analyse
la table et afche
les champs que vous
pouvez slectionner.

Rorganisez lordre des champs pour que Company Name apparaisse en premier. Pour
cela, cliquez sur ce champ, puis cliquez sur la che vers le haut trois fois pour dplacer
le champ en tte de liste. Pour que la feuille afche les enregistrements par ordre alphabtique dentreprise, slectionnez Company Name dans la liste des colonnes trier.
Cliquez sur le bouton Suivant pour afcher la fentre de slection des contrles illustre
la Figure 18.11. Cette fentre vous permet de spcier les boutons qui safcheront
dans la feuille daccs aux donnes. Ils retent les capacits que vos accordez lutilisateur. Pour lempcher de supprimer des enregistrements, dcochez le bouton doption
Supprimer. Dans lexemple, gardez tous les boutons cochs.
Lorsque vous cliquez sur le bouton Terminer, Visual Basic gnre lapplication.
ntion
Atte

Le bouton Terminer nachve pas lassistant, mais uniquement la partie


cration de feuille. Vous devez achever lassistant normalement. Dans cet
exemple, en revenant de la gnration de feuille, vous pouvez cliquer sur le
bouton Terminer.

Lorsque vous excutez lapplication, la feuille Publishers safche (voir Figure 18.12.)
Lassistant y a plac tous les boutons et zones de texte ncessaires pour que les champs
de donnes puissent tre accessibles correctement. Vous pourrez ajouter des lments
la feuille, peut-tre la personnaliser pour la rendre plus attrayante, une fois que vous
avez vri que lapplication gnre fonctionne correctement.

>
:

596

Prog VB6 FM3A Page 597 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

Figure 18.11
Vous pouvez
contrler la capacit
de lutilisateur
ajouter, modier
et supprimer
des enregistrements
de la table de
base de donnes.

Figure 18.12
Lassistant a gnr
la feuille avec tous les
champs et les boutons
de base de donnes
ncessaires.

En rsum
La leon daujourdhui a trait de laccs aux bases de donnes laide de Visual Basic.
La manire la plus simple daccder une base de donnes (en considrant que vous
nutilisez pas lassistant Cration dapplications) est dajouter le contrle Data votre
feuille. Il soccupe de mettre jour la base de donnes sous-jacente et de modier les
contrles lis lorsque vous vous dplacez dans les enregistrements. Des mthodes
peuvent tre utilises pour tendre les fonctionnalits du contrle Data.

597

<
:

Prog VB6 FM3A Page 598 Lundi, 6. aot 2001 3:45 15

Partie III

Linterface ADO peut exiger une programmation complexe, mais vous aurez beaucoup
plus de contrle et de souplesse dans laccs la base de donnes. Mme si votre application doit soccuper de mettre jour les contrles et le dplacement entre les enregistrements lorsque les vnements sont dclenchs, lapplication est globalement plus rapide.
La leon de demain explore des manires dintgrer lInternet Visual Basic. Le monde
informatique est en train de devenir rapidement un monde connect et vos applications
ont souvent besoin de proposer des fonctionnalits Internet.

Questions-rponses
Q Les relations un--plusieurs existent-elles toujours dans les tables de bases de
donnes ?
R Il existe plusieurs types de relations entre les donnes, qui peuvent se retrouver
toutes ou en partie dans une base de donnes, en fonction de sa structure. Rappelons
que le but du chapitre nest pas dapprofondir la thorie des bases de donnes.
Cependant, les relations un--plusieurs tant ncessaires dans de nombreuses applications Visual Basic, une meilleure comprhension de ce sujet nest pas un mal.
Vous aurez souvent afcher tous les enregistrements en rapport une valeur de cl
donne, cest ce quoffre cette relation.
Lafchage Principal/Secondaire de lassistant est une excellente manire de crer
des applications qui offrent cette relation entre les donnes. Il faut au moins un
champ en correspondance entre les deux tables pour que la relation soit possible.
Une relation un--un se prsente parfois, lorsquune colonne dune table est apparente une autre colonne dans une autre table. Ce peut tre le cas par exemple
dune mme pice propose par deux fournisseurs. Des relations plusieurs-plusieurs existent galement. Toutes ces relations sont dnies lors de la conception
et elles sont la base de la comprhension du fonctionnement des bases de donnes
relationnelles. Le principal dans ces relations est la manire dont on y accde. Votre
tche de programmeur Visual Basic consiste accder ces relations, mais vous
naurez pas les reconstruire, sauf si vous tre le concepteur et le crateur de la base
de donnes.

>
:

598

Prog VB6 FM3A Page 599 Lundi, 6. aot 2001 3:45 15

Chapitre 18 : Interactions avec les donnes

Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension
des lments traits et des exercices qui vous permettent de mettre en pratique ce que vous
avez appris. Essayez de comprendre les questions et les exercices avant de passer la
leon suivante. Les rponses se trouvent lAnnexe A

Quiz
1. Quel est loutil fourni avec Visual Basic permettant la modication et la consultation
des chiers de base de donnes ?
2. Quelle est la diffrence entre un chier et une table ?
3. Vrai ou faux. Lorsque vous ajoutez des enregistrements une table, le nombre de
ses colonnes augmente galement.
4. Vrai ou faux. Une table est un sous-ensemble dun jeu denregistrements.
5. Quest-ce quun contrle li ?
6. Quelles sont les diffrences entre jeux denregistrements recordset, dynaset et
snapshot ?
7. Donnez deux avantages dADO sur le contrle Data ?
8. Que dnissent les valeurs EOF et BOF ?
9. Quelle est la diffrence entre un afchage Principal et un afchage Secondaire ?
10. Quel est loutil fourni avec Visual Basic pour gnrer des feuilles directement
partir de la structure de la base de donnes ?

Exercices
1. Modiez lapplication daccs la base de donnes que vous avez cre (illustre la
Figure 18.6), pour quelle afche tous les champs de la table Customer. Votre feuille
doit imiter celle de la Figure 18.7. (Noubliez pas dajouter les tiquettes descriptives
pour que lutilisateur sache ce que contient chaque colonne.)
2. Utilisez lassistant Cration dapplication pour gnrer un afchage Principal/
Secondaire de la base de donnes BIBLIO.MDB qui prsente le nom de lauteur
en afchage principal et tous les codes ISBN de ses ouvrages dans lafchage
secondaire.

599

<
:

Prog VB6 FM3A Page 600 Lundi, 6. aot 2001 3:45 15

Prog VB6 FM3A Page 601 Lundi, 6. aot 2001 3:45 15

PB9
Contrles ADO
Ce projet dcrit comment crer une application de base de donnes sous ADO. Vous
utiliserez la base de donnes exemple BIBLIO.MDB fournie avec Visual Basic. Les
contrles ADO supportent des instructions de programmation supplmentaires (comme
vous le verrez dans ce projet), mais, tel quil est dcrit et utilis ici, il est simple
comprendre.

But de lapplication
La Figure PB9.1 montre la feuille que vous allez crer. Elle contient plusieurs lignes et
contrles ; sa cration peut demander un certain temps. Elle propose un systme de gestion
de base de donnes complet de BIBLIO.MDB. Ce projet ne peut pas dcrire toutes les
actions du contrle ADO, mais il dcrit comment commencer manipuler la base. Aprs
avoir suivi ce projet, vous comprendrez une partie de ce quimplique le travail avec les
applications ADO.
Info

Cette application imite quelque peu ce que peut produire lassistant Cration dapplications, mais dans ce projet, vous tudierez de lintrieur les
exigences des contrles ADO. Vous apprendrez comment incorporer des
instructions de programmation concernant les contrles ADO qui permettent daccder aux tables de base de donnes sans intervention de lutilisateur et de les modier.

601

Prog VB6 FM3A Page 602 Lundi, 6. aot 2001 3:45 15

Partie III

Figure PB9.1
Votre application
ADO permettra de
grer cette base
de donns des livres.

ntion
Atte

Ce projet ne vous donnera pas une matrise complte des contrles ADO
et du langage de programmation sous-jacent. Vous en tudierez cependant les
bases. Heureusement, de nombreux programmeurs Visual Basic nauront
jamais programmer un contrle ADO en utilisant en profondeur le
langage dont nous allons parler. Ce projet a pour seul objectif de vous
donner une introduction aux comptences ncessaires une utilisation
efcace du contrle ADO.

Cration de la feuille initiale


Pour dbuter, crez la feuille initiale en plaant les contrles et en paramtrant leurs
valeurs respectives comme il est dcrit dans le Tableau PB9.1. Appuyez sur les touches
Ctrl-T pour ouvrir la bote de dialogue Composants et slectionner Microsoft ADO Data
Control 6.0 an dajouter le contrle la Bote outils. Vous ajouterez dautres proprits
ces contrles avant davoir achev ce projet.
Tableau PB9.1 : Congurez ces contrles et proprits dans la feuille

>
:

Nom de proprit du contrle

Valeur de proprit

Feuille : Name

frmBookTitle

Feuille : Caption

Application ADO Titres des livres

Feuille : Height

4590

Feuille : Width

7740

602

Prog VB6 FM3A Page 603 Lundi, 6. aot 2001 3:45 15

Projet bonus 9 : Contrles ADO

Tableau PB9.1 : Congurez ces contrles et proprits dans la feuille (suite)


Nom de proprit du contrle

Valeur de proprit

ADO Name

adoBooks

ADO Height

735

ADO Left

5400

ADO Top

ADO Width

2055

Label #1 Name

lblApp

Label #1 Alignment

Center

Label #1 BorderStyle

Fixed Single

Label #1 Caption

Titre des livres

Label #1 FontStyle

Gras

Label #1 FontSize

18

Label #1 Left

2520

Label #1 Height

495

Label #1 Top

240

Label #1 Width

2650

Label #2 Name

lblTitle

Label #2 Alignment

Right Justify

Label #2 Caption

Titre:

Label #2 FontSize

10

Label #2 Left

720

Label #2 Height

255

Label #2 Top

840

Label #2 Width

510

Label #3 Name

lblYear

Label #3 Alignment

Right Justify

Label #3 Caption

Anne de publication :

603

<
:

Prog VB6 FM3A Page 604 Lundi, 6. aot 2001 3:45 15

Partie III

Tableau PB9.1 : Congurez ces contrles et proprits dans la feuille (suite)

>
:

Nom de proprit du contrle

Valeur de proprit

Label #3 FontSize

10

Label #3 Left

120

Label #3 Height

255

Label #3 Top

2400

Label #3 Width

1995

Label #4 Name

lblISBN

Label #4 Alignment

Right Justify

Label #4 Caption

ISBN :

Label #4 FontSize

10

Label #4 Left

3240

Label #4 Height

255

Label #4 Top

2400

Label #4 Width

615

Label #5 Name

lblPubID

Label #5 Alignment

Right Justify

Label #5 Caption

ID dditeur :

Label #5 FontSize

10

Label #5 Left

120

Label #5 Height

255

Label #5 Top

3000

Label #5 Width

1455

Label #6 Name

lblSubject

Label #6 Alignment

Right Justify

Label #6 Caption

Sujet :

Label #6 FontSize

10

Label #6 Left

3480

604

Prog VB6 FM3A Page 605 Lundi, 6. aot 2001 3:45 15

Projet bonus 9 : Contrles ADO

Tableau PB9.1 : Congurez ces contrles et proprits dans la feuille (suite)


Nom de proprit du contrle

Valeur de proprit

Label #6 Height

255

Label #6 Top

3000

Label #6 Width

855

TextBox #1 Name

txtTitle

TextBox #1 DataField

Title

TextBox #1 DataSource

adoBooks

TextBox #1 Height

1095

TextBox #1 Left

1320

TextBox #1 Top

840

TextBox #1 Width

5535

TextBox #2 Name

txtPub

TextBox #2 DataField

Year Published

TextBox #2 DataSource

adoBooks

TextBox #2 Height

345

TextBox #2 Left

2160

TextBox #2 Top

2400

TextBox #2 Width

975

TextBox #3 Name

txtISBN

TextBox #3 DataField

ISBN

TextBox #3 DataSource

adoBooks

TextBox #3 Height

345

TextBox #3 Left

3960

TextBox #3 Top

2400

TextBox #3 Width

3495

TextBox #4 Name

txtPubID

TextBox #4 DataField

PubID

605

<
:

Prog VB6 FM3A Page 606 Lundi, 6. aot 2001 3:45 15

Partie III

Tableau PB9.1 : Congurez ces contrles et proprits dans la feuille (suite)

>
:

Nom de proprit du contrle

Valeur de proprit

TextBox #4 DataSource

adoBooks

TextBox #4 Height

345

TextBox #4 Left

1680

TextBox #4 Top

3000

TextBox #4 Width

1575

TextBox #5 Name

txtSubject

TextBox #5 DataField

Subject

TextBox #5 DataSource

adoBooks

TextBox #5 Height

345

TextBox #5 Left

4440

TextBox #5 Top

3000

TextBox #5 Width

1575

Bouton de Commande #1 Name

cmdSave

Bouton de commande #1 Caption

&Enregistrer

Bouton de commande #1 Left

240

Bouton de commande #1 Top

3600

Bouton de commande #1 Width

875

Bouton de commande #2 Name

cmdAdd

Bouton de commande #2 Caption

&Ajouter

Bouton de commande #2 Left

1200

Bouton de commande #2 Top

3600

Bouton de commande #2 Width

875

Bouton de commande #3 Name

cmdNew

Bouton de commande #3 Caption

&Nouveau

Bouton de commande #3 Left

2160

Bouton de commande #3 Top

3600

606

Prog VB6 FM3A Page 607 Lundi, 6. aot 2001 3:45 15

Projet bonus 9 : Contrles ADO

Tableau PB9.1 : Congurez ces contrles et proprits dans la feuille (suite)


Nom de proprit du contrle

Valeur de proprit

Bouton de commande #3 Width

875

Bouton de commande #4 Name

cmdDelete

Bouton de commande #4 Caption

&Supprimer

Bouton de commande #4 Left

3120

Bouton de commande #4 Top

3600

Bouton de commande #4 Width

875

Bouton de commande #5 Name

cmdCancel

Bouton de commande #5 Caption

Ann&uler

Bouton de commande #5 Left

4080

Bouton de commande #5 Top

3600

Bouton de commande #5 Width

875

Bouton de commande #6 Name

cmdPrev

Bouton de commande #6 Caption

&<

Bouton de commande #6 Left

5160

Bouton de commande #6 Top

3600

Bouton de commande #6 Width

495

Bouton de commande #7 Name

cmdNext

Bouton de commande #7 Caption

&>

Bouton de commande #7 Left

5760

Bouton de commande #7 Top

3600

Bouton de commande #7 Width

495

Bouton de commande #8 Name

cmdExit

Bouton de commande #8 Caption

&Quitter

Bouton de commande #8 Left

6600

Bouton de commande #8 Top

3600

Bouton de commande #8 Width

855

607

<
:

Prog VB6 FM3A Page 608 Lundi, 6. aot 2001 3:45 15

Partie III

Tableau PB9.1 : Congurez ces contrles et proprits dans la feuille (suite)


Nom de proprit du contrle

Valeur de proprit

Ligne #1 Name

Line1

Ligne #1 X1

120

Ligne #1 X2

7440

Ligne #1 Y1

2160

Ligne #1 Y2

2160

Ligne #2 Name

Line2

Ligne #2 X1

Ligne #2 X2

7800

Ligne #2 Y1

3480

Ligne #2 Y2

3480

Ligne #3 Name

Line3

Ligne #3 X1

5040

Ligne #3 X2

5040

Ligne #3 Y1

3480

Ligne #3 Y2

4280

Ligne #4 Name

Line4

Ligne #4 X1

6480

Ligne #4 X2

6480

Ligne #4 Y1

3480

Ligne #4 Y2

4280

En plaant ces contrles, notez que les zones de texte sont lies leurs champs respectifs de la table BIBLIO.MDB, sur laquelle pointe le contrle ADO adoBooks. Vous avez
appris raliser le mme type de liens avec le contrle Data au Chapitre 18. Mais,
contrairement ce dernier, le contrle ADO a plus de possibilits, comme vous le verrez
au cours de ce projet.

>
:

608

Prog VB6 FM3A Page 609 Lundi, 6. aot 2001 3:45 15

Projet bonus 9 : Contrles ADO

Connexion du contrle ADO aux donnes


Lorsque vous utilisez un contrle ADO, vous devez le connecter aux donnes auxquelles il doit accder, comme pour le contrle Data ; le contrle ADO peut cependant se
connecter des donnes qui ne sont pas ncessairement dans une table de base de
donnes. Il permet aussi daccder du courrier lectronique, des graphiques et pratiquement toute source de donnes externe lapplication.
La plupart du temps, un programmeur se connectera des bases de donnes, quelles
soient locales ou en rseau. Votre premire tape pour que le contrle ADO fonctionne
consiste donc le connecter sa source de donnes. Dans ce projet, cette source est la
base de donnes Access 97 BIBLIO.MBD fournie avec Visual Basic.
ntion
Atte

Le contrle ADO est bien plus difcile connecter une base de donnes
que ne lest le contrle Data. Mais les avantages compensent largement
cette complication due une meilleure efcacit et la possibilit de se
connecter quasi nimporte quel type de donnes.

Vous avez deux manires de vous connecter au contrle ADO :

congurer la proprit ConnectionString,

utiliser du code pour connecter le contrle aux donnes.

Si vous utilisez la fentre Proprits pour vous connecter aux donnes, vous passez par
des botes de dialogue qui simplient le paramtrage de la connexion. Lautre mthode
demande dcrire du code assez abscons (cette section illustrera les deux manires).
La connexion par la fentre Proprits nest pas aussi simple que pour le contrle Data.
Lorsque vous cliquez sur la proprit ConnectionString, la bote de dialogue illustre
la Figure PB9.2 safche. Vous devez dterminer les options qui correspondent votre
type de sources de donnes.
Dans cet exemple, comme pour la plupart des applications utilisant le contrle ADO,
vous crerez une simple chane de connexion qui pointe sur un chier de base de
donnes. Les deux premires options, Utiliser un chier OLE DB (utilis pour transmettre des donnes entre deux emplacements) et Utiliser un nom de source de donnes
ODBC (utilis avec les bases de donnes compatibles ODBC), ne sont pas ncessaires
pour laccs simple utilis dans ce projet. Cliquez sur la troisime option pour spcier
une chane de connexion.

609

<
:

Prog VB6 FM3A Page 610 Lundi, 6. aot 2001 3:45 15

Partie III

Figure PB9.2
La bote de dialogue
Pages de proprits
du contrle ADO vous
aide spcier une
chane de connexion.

Les chanes de connexion peuvent tre assez longues, mais Visual Basic vous assiste
dans leur cration. Suivez ces tapes :
1. Cliquez sur le bouton Crer pour afcher la bote de dialogue Proprits des liaisons
de donnes.
2. Double-cliquez sur la premire option, Microsoft Jet 3.51 OLE DB Provider. (Les
bases de donnes Access ont pour systme sous-jacent la technologie Jet utilise par
Microsoft pour un accs rapide aux bases de donnes). Longlet suivant, Connexion,
safche.
3. Cliquez sur les points de suspension la droite de la premire zone de texte et
cherchez la base de donnes BIBLIO.MDB sur votre disque.
4. Cliquez sur le bouton Ouvrir pour lier la base de donnes au contrle ADO.
ce
Astu

Pour vous assurer que vous tes correctement connect la base de donnes,
cliquez sur le bouton Tester la connexion. Si les proprits de la chane de
connexion sont correctes, Visual Basic afche une bote de message qui vous
signale un test russi. Dans le cas contraire, vous pouvez corriger le problme.

5. Pour une vrication, cliquez sur longlet Tous pour voir la page rsumant la chane
de connexion, illustre la Figure PB9.3. Les autres lments lists peuvent tre
modis si vous le souhaitez (vous pouvez par exemple paramtrer la scurit
daccs).
6. Cliquez sur le bouton OK pour revenir la bote de dialogue Pages de proprits,
puis cliquez sur OK pour la fermer et revenir la feuille.

>
:

610

Prog VB6 FM3A Page 611 Lundi, 6. aot 2001 3:45 15

Projet bonus 9 : Contrles ADO

Figure PB9.3
Visual Basic
rcapitule
les paramtres
de votre chane de
connexion.

Au lieu de slectionner laide de la bote de dialogue, vous pouvez utiliser, nimporte


o dans lapplication, du code pour crer une chane de connexion. Par exemple, vous
pouvez la crer au chargement de la feuille ou uniquement lorsque lutilisateur a besoin
daccder la base. Plus vous attendez pour connecter les donnes, moins vous avez de
risques quune coupure de courant ou un blocage de la machine affectent vos donnes ;
lapplication dmarrera aussi plus rapidement.
ntion
Atte

Mme pour utiliser du code pour accder aux donnes, vous devez placer le
contrle ADO sur la feuille. Congurez sa proprit Visible False si
vous ne voulez pas que lutilisateur y accde autrement que par votre code.
Vous ne pouvez pas utiliser la fois le code et la fentre Proprits pour
congurer la chane de connexion, vriez donc que la proprit ConnectionString est bien vierge si vous utilisez du code dans votre programme
pour congurer laccs.

Pour paramtrer le contrle ADO par programme, vous devez placer linstruction
suivante dans la procdure vnementielle Form_Load() :
adoBooks.ConnectionString = Provider=Microsoft.Jet.OLEDB.3.51;
& Persist Security Info=False; & Data Source=C:\Program
Files\Microsoft Visual & Studio\VB98\Biblio.mdb

611

<
:

Prog VB6 FM3A Page 612 Lundi, 6. aot 2001 3:45 15

Partie III

Linstruction assigne exactement la mme chane de connexion que celle cre au dbut
de cette section laide de la bote de dialogue. Comme vous pouvez le voir, le format
peut tre assez pineux, mais la proprit ConnectionString comporte lensemble des
informations de la bote de dialogue.
Le contrle nest cependant pas encore tout fait prt afcher les donnes de la base.
Vous devez spcier exactement quelles lignes de quelles tables sont la disposition
du reste de lapplication. Vous devez utiliser SQL (un langage de programmation de
base de donnes support par Visual Basic comme une proprit RecordSource) pour
indiquer Visual Basic daccder tous les enregistrements (ce quindique le caractre
gnrique *) de la table Titles de la base de donnes BIBLIO.MDB. Linstruction est la
suivante :
adoBooks.RecordSource = Select * From Titles

ition
Dfin

SQL (Structured Query Language) signie langage dinterrogation


structur. Il dnit un langage de programmation universel (en thorie)
pour laccs aux bases de donnes. Vous pouvez mettre des commandes
SQL partir des applications Visual Basic.

Vous pouvez congurer la feuille laide dun contrle ADO invisible pour accder aux
donnes en congurant la proprit Visible du contrle ADO False, effaant toute
valeur dans la proprit ConnectionString de la fentre Proprits et assignant les
proprits DataSource et DataField de chaque contrle de zone de texte telles quelles
sont dcrites dans le Tableau PB9.1. Dans ce cas, le code du programme doit permettre
de parcourir les donnes selon les besoins. Dans cet exemple, les boutons de commande
en bas de la feuille exigent du code pour permettre de parcourir les donnes. Cest
lobjet de la section suivante.
Info

>
:

612

Lorsque vous excutez lapplication avec les proprits ConnectionString


et RecordSource congures par programme, tout en laissant les autres
champs tels que vous les avez entrs partir du Tableau PB9.1, aucune
donne de la base ne sy afchera. Mme si les champs de texte pointent tous
sur le contrle ADO, ce dernier nest connect la base quau moment o il
se charge et, cet instant, les contrles de texte ont chou trouver des
donnes, car leur proprit DataSource (le contrle ADO), nest pas
connecte une base de donnes. Mais lorsque vous reliez le premier
contrle de texte la source de donnes nouvellement connecte (comme le
dcrit la section suivante), tous les champs lis au contrle ADO afcheront
les donnes.

Prog VB6 FM3A Page 613 Lundi, 6. aot 2001 3:45 15

Projet bonus 9 : Contrles ADO

Info

Code ou contrle ?
Devez-vous laisser les utilisateurs commander le contrle ADO laide de
ses boutons ou devez-vous le masquer et utiliser du code pour parcourir la
table connecte ? Dans ce projet, vous tudiez les deux mthodes. Pour voir
les donnes lies, un utilisateur peut cliquer sur les boutons du contrle
ADO ou sur les boutons en bas de la feuille.
Le choix de la mthode dpend de lapplication, qui sert souvent mettre
jour ou afcher un enregistrement unique qui rpond certains critres.
Elle doit alors pouvoir rechercher un enregistrement particulier ou parcourir lensemble des enregistrements pour calculer des totaux et des moyennes. Ces types de traitements sur une table exigent lcriture de code, qui
permet de parcourir les donnes en arrire-plan.

Recherche des donnes


Pour que le champ Title afche les titres des livres, vous devez connecter sa proprit
DataSource au contrle ADO et sa proprit DataField au champ Title de la table. Pour
raliser cela partir du code, vous pouvez utiliser les deux instructions suivantes :
Set txtTitle.DataSource = adoBooks
txtTitle.DataField = Title

Vous ne pouvez pas assigner ce champ dans la fentre Proprits si vous connectez
lexcution le contrle ADO la base par programme, comme lexplique la section
prcdente.
Une fois quune zone de texte est lie au contrle ADO, vous pouvez rpter la mme
opration pour les autres ou utiliser les proprits DataSource et DataField de la fentre
Proprits dcrites au Tableau PB9.1, car elles fonctionneront une fois quun contrle de
la feuille est reli la base de donnes nouvellement connecte.

Parcours des donnes


Lorsque vous excutez lapplication aprs avoir assign la premire zone de texte au
contrle ADO, les champs correspondants du premier enregistrement safchent comme
lillustre la Figure PB9.4
ntion
Atte

Les champs de la table ne contiennent pas tous des donnes prcises et compltes. Par exemple, dans le premier enregistrement de la base de donnes
BIBLIO.MDB, le champ Sujet est vide. Certains champs contiennent des
valeurs tranges tel que 2nd qui est sans doute ldition, mais pas le sujet
du livre..

613

<
:

Prog VB6 FM3A Page 614 Lundi, 6. aot 2001 3:45 15

Partie III

Figure PB9.4
Le premier
enregistrement peut
maintenant safcher.

Seul le premier enregistrement safchera, car lutilisateur na pas accs au contrle


ADO invisible et les boutons de commande ne sont pas encore connects au code. Vous
pouvez double-cliquer sur le bouton Suivant (le bouton dont le titre est >) pour ajouter
son code dactivation. Le code qui suit dplace le pointeur sur lenregistrement suivant
de la table pour que le contrle li puisse accder aux donnes :

1:
2:
3:
4:
5:
6:
7:
8:
9:

Private Sub cmdNext_Click()


Avance dun enregistrement dans les donnes
If Not adoBooks.Recordset.EOF Then
adoBooks.Recordset.MoveNext
If adoBooks.Recordset.EOF Then
adoBooks.Recordset.MovePrevious
End If
End If
End Sub

Le jeu denregistrements utilis dans les lignes 3 6 est la liste des enregistrements avec
lesquels vous travaillez. Vous avez spci le jeu denregistrements prcdemment par
linstruction SQL qui limitait les enregistrements la table Titles. La mthode MoveNext
du jeu denregistrement fait avancer le pointeur dun enregistrement la ligne 4. Tous
les autres contrles lis la table avancent galement.
Un problme peut se produire dans les situations suivantes, quil faut grer :

Sil ny a aucun enregistrement dans la table de la base de donnes, une erreur se


produira si vous tentez davancer.

Si lenregistrement en cours est le dernier de la table, une erreur se produira quand


vous tenterez davancer.

Linstruction de la ligne 3 garantit quon na pas atteint la n de la table en vriant la


proprit EOF du jeu denregistrements, avec un oprateur Not. La ligne 3 signie en

>
:

614

Prog VB6 FM3A Page 615 Lundi, 6. aot 2001 3:45 15

Projet bonus 9 : Contrles ADO

fait "si lon nest pas la n du jeu denregistrements, alors continuer". La ligne 5
garantit que, si la mthode MoveNext amne la n du chier, la mthode MovePrevious fait alors reculer le pointeur pour lempcher de dpasser la n de la table.
MovePrevious est la mthode de jeu denregistrement qui permet de reculer dans la
table dun enregistrement.
Vous pouvez utiliser la mthode MovePrevious pour ajouter une procdure vnementielle au bouton Prcdent (dont le titre est <) :

1:
2:
3:
4:
5:
6:
7:
8:
9:

Private Sub cmdPrev_Click()


Recule dun enregistrement dans les donnes
If Not adoBooks.Recordset.BOF Then
adoBooks.Recordset.MovePrevious
If adoBooks.Recordset.BOF Then
adoBooks.Recordset.MoveNext
End If
End If
End Sub

La proprit BOF du jeu denregistrements vrie le dbut du chier, pour garantir quon
interdit lutilisateur de reculer lorsque le pointeur se trouve dj au dbut.
Info

Vous pouvez placer une instruction End dans la procdure vnementielle


Click du bouton de commande Quitter pour permettre lutilisateur de
quitter le programme.

Mise jour des tables


Le contrle ADO met automatiquement jour lenregistrement de la table sous-jacente
si lutilisateur effectue une modication dans une zone de texte lie. Si vous excutez
lapplication ultrieurement, les donnes modies safchent.
Cependant, vous pouvez galement enregistrer des donnes dans la base de donnes en
utilisant du code. Lcriture de ce type de code est longue et lourde et va bien au-del de
la porte de ce projet. Vous pouvez par exemple vouloir quun certain champ ne
contienne que des valeurs uniques et mettre un message derreur si lutilisateur entre
une valeur incorrecte. Vous pouvez aussi rcuprer des donnes provenant dune autre
source et les assigner dans la base de donnes.
Pour vous donner une ide de ce quimplique une mise jour dune base de donnes
laide dun contrle ADO, la procdure denregistrement du Listing PB9.1 crit les
donnes des zones de texte dans la base de donnes. (Naturellement, cest redondant
dans le cadre de cette application, car les zones de texte sont dj lies la table).

615

<
:

Prog VB6 FM3A Page 616 Lundi, 6. aot 2001 3:45 15

Partie III

Listing PB9.1 : Vous pouvez utiliser des mthodes dcriture des donnes
dans la table par programmation

1: Private Sub cmdSave_Click()


2:
Assigne toutes les TextBox aux champs.
3:
Nassigne que les donnes non nulles
4:
(les lignes longues sont dcoupes)
5:
adoBooks.Recordset!Title = _
6:
IIf(txtTitle = , N/A, txtTitle)
7:
adoBooks.Recordset![Year Published] = _
8:
IIf(txtPub = , N/A, txtPub)
9:
adoBooks.Recordset!ISBN = _
10:
IIf(txtISBN = , N/A, txtISBN)
11:
adoBooks.Recordset!PubID = _
12:
IIf(txtPubID = , N/A, txtPubID)
13:
adoBooks.Recordset!Subject = _
14:
IIf(txtSubject = , N/A, txtSubject)
15:
16:
Effectue la mise jour relle du recordset
17:
adoBooks.Recordset.Update
18:
19: End Sub

La fonction IIf() est utilise tout au long du listing pour que la valeur N/A (non
applicable) soit crite quand un champ enregistr ne contient pas de donnes. IIf()
garantit quaucune valeur crite nest nulle. Le nom de champ entre crochets de la
ligne 7 est obligatoire, car il contient un espace. Visual Basic traite [Year Published]
comme un nom de champ unique ; sans les crochets, il ne serait pas capable de reconnatre lespace incorpor.
Le Listing PB9.1 najoute que les donnes qui ont t modies dans la feuille du
projet, mais vous pouvez facilement adapter le code pour rechercher dans une autre
source les donnes enregistrer dans la table. A la ligne 14, vous pourriez chercher des
donnes externes, par exemple une saisie dans une zone de texte, au lieu daller dans la
zone de texte de la feuille. La ligne 17 est ncessaire, car elle effectue la mise jour
effective dans la table, laide de la mthode Update.
Le code du Listing PB9.1 crit donc dans la table les modications effectues par
lutilisateur dans les donnes de la feuille (ces valeurs seront de toutes faons crites,
car les zones de texte sont lies la base dans notre exemple). Pour ajouter de
nouvelles donnes la n de la table, vous devez dabord effacer les champs de la
feuille pour permettre lutilisateur de saisir les donnes. (Vous pourriez connecter
ce code au bouton de commande Nouveau, ce que cette application ne prend pas le
temps de faire).

>
:

616

Prog VB6 FM3A Page 617 Lundi, 6. aot 2001 3:45 15

Projet bonus 9 : Contrles ADO

Avant de pouvoir crire le nouvel enregistrement, il faut dplacer le pointeur de table


la n du chier pour quil accepte de nouvelles donnes (et non pas remplacer les
donnes sur lesquelles il pointe) par ce code :
adoBooks.Recordset.AddNew

Prparer un nouvel enregistrement

Les donnes qui sont enregistres ensuite apparatront comme un nouvel enregistrement
dans la table.

Conclusion sur le contrle ADO


Comme vous avez pu le constater, la programmation du contrle ADO nest pas aussi
simple que le contrle Data, mais sa puissance et sa rapidit sont son avantage. Vous
avez dj pass pas mal de temps sur ce projet, et pourtant ses fonctionnalits bien
que proche dune nalisation sont encore incompltes. Considrez les points suivants
ncessaires lachvement de la tche :

Lors de lcriture du code des boutons de commande Ajouter ou Nouveau, vous


devez effacer les champs de la feuille et mettre le curseur dans le premier champ
pour que lutilisateur puisse enregistrer lenregistrement en cours ou en ajouter un
nouveau.

Les mthodes AddNew et Update mettent toujours la table jour avec des donnes
nouvelles ou modies de champs lis.

Utilisez la mthode MoveLast pour dplacer le pointeur la n de la table avant


dajouter un nouvel enregistrement.

Programmez le bouton Annuler pour ne pas enregistrer les enregistrements


nouveaux ou modis. La procdure vnementielle du bouton de commande Annuler
doit appeler une nouvelle fois la procdure dafchage de la feuille pour remettre le
code dans sa conguration antrieure.

617

<
:

Prog VB6 FM3A Page 618 Lundi, 6. aot 2001 3:45 15

Prog VB6 FM3B Page 619 Lundi, 6. aot 2001 3:54 15

Chapitre

19

Ajout dun accs


Internet
La leon daujourdhui montre comment accder lInternet partir des applications
Visual Basic. Aucun didacticiel Visual Basic qui se respecte ne serait complet sil ne
mentionnait pas ses liens avec lInternet, car cest lun des outils de programmation les
plus simples actuellement disponibles. Gardez cependant lesprit le fait que mme
avec Visual Basic, la programmation des accs Internet reste une gageure. La leon
daujourdhui nen prsente quun survol rapide.
Vous y tudierez :

la connexion Internet de Visual Basic ;

comment ajouter un navigateur Web une application ;

les contrles Internet de Visual Basic, ;

comment travailler avec lencapsulation ;

les documents ActiveX ;

comment transformer pratiquement toute application Visual Basic en une application


Internet.

619

Prog VB6 FM3B Page 620 Lundi, 6. aot 2001 3:54 15

Partie III

Lassistant Internet
Lassistant Cration dapplications effectue une partie du travail si vous souhaitez que
votre application accde lInternet. Slectionnez les choix adapts et lassistant ajoute
laccs lInternet votre application, en lui donnant des capacits de communications
plantaires.
Note

ition
Dfin

ition
Dfin

Les outils Internet dcrits dans cette leon fonctionnent aussi bien sur
lInternet que sur un intranet. Les technologies Internet et intranet supportent un protocole commun, elles peuvent donc fonctionner avec le mme type
dapplications.
Un intranet est un systme de rseau local (par exemple, un rseau dans un
seul immeuble ou mme une petite zone sur un seul tage) qui offre les mmes
fonctions que lInternet.
Un protocole permet deux ordinateurs de communiquer. Les connexions
Internet et intranet utilisent un protocole commun : TCP/IP (Transfer
Control Protocol/Internet Protocol). Il est utilis pour les connexions Internet
universelles.

Cette section explique le fonctionnement de lassistant Cration dapplications lorsquil


est utilis pour ajouter un accs lInternet une application. Si lassistant supporte
laccs, il donne plus particulirement votre application la capacit de parcourir les
pages du World Wide Web.
Note

ition
Dfin

Les utilisateurs de votre application doivent dj avoir un fournisseur de


services Internet pour pouvoir accder au Web laide de votre programme.
Vous devez galement disposer dInternet Explorer 4 ou dune version
postrieure sur votre systme de dveloppement pour pouvoir travailler sur
le support complet dInternet de Visual Basic. Lors de son installation, ce
dernier propose en option dinstaller Internet Explorer 4.
Un fournisseur de services Internet est une entreprise qui propose des comptes
de connexion lInternet. Les socits qui disposent dune connexion directe
lInternet nont pas besoin de fournisseur de services.

Lorsque vous crez le noyau dune application avec lassistant Cration dapplications,
la sixime bote de dialogue (voir Figure 19.1) est la fentre Connexion Internet, qui
congure laccs au Web de lapplication que vous crez.

>
:

620

Prog VB6 FM3B Page 621 Lundi, 6. aot 2001 3:54 15

Chapitre 19 : Ajout dun accs Internet

Figure 19.1
Vous pouvez
slectionner laccs
lInternet dans
la bote de dialogue
Connexion Internet
de lassistant.

Lassistant propose un URL par dfaut : la page daccueil de Microsoft. Vous devez
modier cet URL pour prsenter autre chose aux utilisateurs. Lorsque le navigateur est
dclench dans lapplication, il se connecte (en utilisant le fournisseur de services Internet
existant) lURL spci dans lassistant. Vous pouvez, par exemple, inclure lURL de la
page daccueil de votre entreprise dans la zone de texte. Lorsque vous slectionnez loption
Oui, lassistant insre en fait un moteur de navigateur Web dans lapplication gnre.
ition
Dfin

Un URL (Uniform Ressource Locator ou Localisateur uniforme de ressource)


est une adresse de site Web. Chaque site dispose dune adresse URL unique.

Faites toujours commencer un URL par http://. (http signie Hypertext Transfer
Protocol, et dsigne la procdure de communication standard utilise pour laccs aux
pages Web). La majorit des navigateurs modernes se passent du prxe http://, mais
lassistant lexige.
Vous pouvez rapidement crer une application de test pour accder lInternet. Suivez
ces tapes pour ajouter une fonction de navigation Internet dans lapplication cre par
lassistant :
1. Crez un nouveau projet et lancez lassistant Cration dapplications.
2. Cliquez sur Suivant pour sauter la premire bote de dialogue.
3. Slectionnez Interface monodocument (SDI) pour simplier lapplication gnre.
4. Cliquez sur Suivant dans les quatre botes de dialogue suivantes pour accepter les
options de menu par dfaut.

621

<
:

Prog VB6 FM3B Page 622 Lundi, 6. aot 2001 3:54 15

Partie III

5. Dans la bote de dialogue Connexion Internet, cliquez sur Oui. Laissez, dans cet
exemple, ladresse URL du site Web de Microsoft.
6. Cliquez sur Terminer pour gnrer lapplication.
Info

Si cest la premire fois que vous utilisez les contrles Internet depuis
linstallation de lenvironnement Visual Basic, vous verrez la bote de dialogue de la Figure 19.2. Cliquez sur OK pour prparer ces contrles et les
charger dans lenvironnement Visual Basic.

Figure 19.2
Visual Basic doit
prparer les contrles
Internet pour leur
premire utilisation.

Lorsque vous revenez dans lenvironnement Visual Basic, observez la fentre Bote
outils. La Figure 19.3 montre les outils ajouts par lassistant la collection des contrles internes. Vous en avez dj utilis certains au cours de ce didacticiel : la bote de
dialogue standard, la barre doutils, la liste de dessins et le curseur.
Figure 19.3
Lassistant a ajout
de nouveaux outils
la bote outils.

Barre
d'onglets
Affichage
des dossiers

Bote de
dialogue
commune
Navigateur
Web

Barre
Curseur
Barre de
Affichage
d'outils
progression
de listes
Barre
Affichage de
Liste de ImageCombo
d'tat
l'arborescence dessins

Les outils supplmentaires donnent aux parties de navigation Web de lapplication les
contrles dont elles ont besoin. A lvidence, le contrle Navigateur Web est loutil
principal concern par cette leon.
Appuyez sur F5 pour excuter ce noyau dapplication. Lcran que vous voyez nest pas
diffrent des autres crans dapplications gnres par des assistants que vous avez dj
pu rencontrer. Le menu et la barre doutils par dfaut safchent dans la feuille. La fonc-

>
:

622

Prog VB6 FM3B Page 623 Lundi, 6. aot 2001 3:54 15

Chapitre 19 : Ajout dun accs Internet

tion Internet apparat cependant lorsque vous choisissez Navigateur Web dans le menu
Afchage. Une bote de dialogue de navigation Web safche et lance la connexion
laide de la fentre classique de connexion votre fournisseur Internet ( moins que
vous ne soyez dj connect ou que vous ne disposiez dune capacit de connexion
automatique). Aprs avoir saisi le nom dutilisateur et le mot de passe, une fentre de
type Internet Explorer safche au centre de la feuille de lapplication et prsente le site
Web de Microsoft (voir Figure 19.4).
Figure 19.4
Lapplication gnre
par lassistant est
connecte au site Web
de Microsoft.

ce
Astu

La feuille de votre application

Le navigateur Web

La fentre Internet Explorer que vous voyez est en fait une petite application
qui enrobe un norme contrle ActiveX. Le navigateur Web insr par
lassistant de Visual Basic est un exemple de contrle ActiveX. Sil est plus
simple que la version complte dInternet Explorer (il y a moins de boutons
de barre doutils et pas de menu), il fournit toutes les fonctions de navigation ncessaires : les boutons Prcdent et Suivant, Origine, etc. Si vous
cliquez sur Rechercher, Internet Explorer utilise le site de recherche de
Microsoft pour lancer la requte.

Pour vous dconnecter de lInternet, vous devez fermer le navigateur Web, doublecliquer sur licne de connexion de votre fournisseur Internet dans la Barre des tches,
et slectionner loption Dconnecter. Le navigateur ne dispose pas de fonction de
dconnexion, mais vous pouvez lajouter par programmation.

623

<
:

Prog VB6 FM3B Page 624 Lundi, 6. aot 2001 3:54 15

Partie III

Etude de quelques contrles Internet


Si vous utilisez Visual Basic dans ses ditions Professionnelle ou Entreprise, vous
pouvez utiliser plusieurs contrles ActiveX Internet avancs pour ajouter et commander
laccs lInternet lintrieur de votre application. Lexemple de la section prcdente
a montr la puissance dun seul contrle : le navigateur Web.
Plusieurs contrles Internet safchent lorsque vous choisissez Composants dans le
menu Projet. Cette section les tudie et explique quand et comment les utiliser dans des
projets qui accdent lInternet.
Info

Laccs Internet peut avoir plusieurs signications dans le monde actuel


par exemple, il peut faire rfrence une application complte laquelle
lutilisateur accde et quil excute sur le Web. LInternet offre de nos jours
bien dautres services que lafchage des pages Web et le tlchargement de
chiers, en particulier avec tous les nouveaux contrles ActiveX disponibles,
qui fonctionnent au travers de lInternet aussi aisment quils le font dans
les applications situes sur un ordinateur unique. Lorsque vous activez des
pages Web avec des programmes, Visual Basic peut tre leur moteur.

Les contrles dencapsulation


Le terme encapsulation fait rfrence diffrentes choses, suivant que vous encapsulez
des donnes, du code ou les deux. Mais, au sens large, il signie toujours empaquetage.
Visual Basic comprend certains contrles Internet qui encapsulent, ou empaquettent, les
applications existantes pour quelles fonctionnent avec la technologie Internet.
ition
Dfin

Lencapsulation se rapporte lempaquetage des composants, tel quil se


produit avec les objets Visual Basic qui supportent des proprits, des
mthodes et des vnements.

Voici une liste des contrles dencapsulation :

>
:

Contrle de transfert Internet. Il encapsule les trois protocoles Internet les plus
courants : HTTP, FTP (File Transfer Protocol) et Gopher (un protocole de recherche
permettant de trouver des informations sur lInternet). Vous pouvez tlcharger des
chiers depuis vos applications Visual Basic en utilisant FTP.

Contrle navigateur Web. Il encapsule un navigateur Web dans votre application.

Contrle Winsock. Cest un contrle Windows commun de connexion et dchange


de donnes qui propose deux protocoles : UDP (User Datagram Protocol) et TCP
(Transmission Control Protocol).

624

Prog VB6 FM3B Page 625 Lundi, 6. aot 2001 3:54 15

Chapitre 19 : Ajout dun accs Internet

Vous avez dj vu lun de ces contrles le navigateur Web la section prcdente.


Lassistant Cration dapplications lutilise pour insrer un navigateur dans lapplication
gnre. Comme vous avez pu le constater, il nest pas aussi complet quInternet Explorer, mais il fournit simplement un accs direct lInternet tout utilisateur qui est inscrit
un service Internet.

Contrle Internet Explorer


Visual Basic est livr avec plusieurs contrles que vous pouvez ajouter vos projets pour
quils interagissent avec le Web laide de la technologie dInternet Explorer. Ils
commencent tous par les lettres IE dans la bote de dialogue Composants.
Le Tableau 19.1 vous aide localiser les contrles dcrits dans cette section, car leur nom
nest souvent pas sufsant pour dcrire leurs caractristiques. (Pour accder la bote de
dialogue Composants, slectionnez Composants dans le menu Projet.)
Tableau 19.1 : Plusieurs composants comprennent des caractristiques
apparentes Internet Explorer, comme dautres contrles Internet
Nom de composant

Description

IE Animated button

Afchage anim montrant la connexion dInternet Explorer

IE Popup Menu

Contrle de menu contextuel sur la page Web

IE Preloader

Prcharge une page dun site avant que laccs visible lInternet
commence

IE Super Label

Etiquette de page Web

IE Timer

Propose des oprations de timing pour les services Internet

Microsoft Internet
Controls

Contrle de navigateur Web

Microsoft Internet
Transfer Control 6.0

Contrle TCP

Microsoft Winsock
Control 6.0

Connexion Windows des protocoles Internet courants

625

<
:

Prog VB6 FM3B Page 626 Lundi, 6. aot 2001 3:54 15

Partie III

Info

Si vous utilisez le service en ligne Microsoft Network, un ensemble de


contrles est livr avec Visual Basic permettant aux applications que vous
crivez de bncier de services lis Microsoft Network, comme le
contrle de courrier lectronique MSN. Ces contrles commencent par les
lettres MSN dans la bote de dialogue Composants.

Prsentation rapide de points avancs


Vous avez dj eu un aperu de ce qui est disponible an dutiliser Visual Basic pour
interagir avec lInternet. La mthode la plus simple pour ajouter des caractristiques
Internet vos applications est dutiliser lassistant Cration dapplications, comme vous
lavez dj fait dans cette leon. Pour aller plus loin, vous avez devant vous un chemin
dapprentissage assez escarp.
Cette section tudie quelques termes et concepts auxquels vous aurez faire face lorsque
vous commencerez creuser les relations de Visual Basic lInternet. En apprenant ce
qui est disponible actuellement, vous aurez quelques bases le jour o vous apprendrez
les dtails ncessaires pour fournir une interaction complte lInternet depuis vos
applications.

Documents ActiveX
An de dvelopper une application Visual Basic exclusivement Internet, vous pouvez utiliser
les documents ActiveX pour commencer. Un document ActiveX ressemble et fonctionne
comme une application Visual Basic dans une fentre feuille, mais il envoie vers lordinateur
de lutilisateur nal tous les contrles ActiveX utiliss, sils y sont absents. Le document se
prsente lutilisateur comme une page Web HTML classique. Le document ActiveX peut,
par exemple, contenir des liens hypertexte (des contrles ActiveX qui sont tlchargs ou
utiliss, suivant le contenu de la machine de lutilisateur). Les menus des documents ActiveX peuvent aussi tre fusionns automatiquement avec lapplication parente (comme les
serveurs OLE).
ition
Dfin

>
:

626

HTML (Hypertext Markup Language) est le principal langage de mise en


pages du Web. Un navigateur Web peut dchiffrer tous les codes HTML,
formater et afcher la page Web et lapplication dcrites par le code HTML.
La section nale de la leon daujourdhui montre un exemple de code
HTML. Un chier HTML est un chier texte pur qui contient des codes
HTML. Si vous pouvez crer un chier HTML en utilisant un simple diteur
de texte, il existe de nombreux outils visuels permettant de concevoir et de
crer des pages Web sans avoir taper le moindre code HTML. Mme

Prog VB6 FM3B Page 627 Lundi, 6. aot 2001 3:54 15

Chapitre 19 : Ajout dun accs Internet

Visual Basic peut vous aider dans la conception de pages Web si vous slectionnez lassistant DHTML. Les chiers HTML ont lextension .HTM extension de chier.
Les ditions Professionnelle et Entreprise de Visual Basic 6 supportent DHTML (Dynamic Hypertext Markup Language) qui ragit des actions sur la page Web. Le document
ActiveX est li une page HTML que vous crez ou utilisez. Quand lutilisateur clique
sur le lien vers votre document ActiveX, ce dernier sactive, le contrle arrive sur lordinateur de lutilisateur, puis le code du document ActiveX de la page Web sexcute quand
la page safche. Le contenu est dynamique, ce qui signie que des paramtres tels que la
couleur et le style du texte peuvent diffrer dune machine lautre en fonction des congurations.
Info

Un document ActiveX nest pas statique. Cest en fait une vritable application qui sexcute. Lutilisation dun concept de document aide les programmeurs voir comment les pages Web utilisent le document ActiveX
incorpor.

La raison principale pour crer des documents ActiveX est sans doute quInternet
Explorer peut les excuter comme sil tait un programme de contrle ou un lanceur de
programme du systme dexploitation. Les menus du document ActiveX fusionnent
avec les menus dInternet Explorer (et en remplacent les fonctionnalits si ncessaire),
et vous navez pas apprendre un nouveau langage, tel que Java, pour activer les pages
Web.
ition
Dfin

Info

Java est un langage de programmation de lInternet, fond sur C++, utilis


pour activer les pages Web et interagir avec les utilisateurs en transmettant
de petits programmes Java, nomms applets, avec la page Web. Les applets
sexcutent sur la machine de lutilisateur lorsquil consulte une page Web
qui les contient.
La bote de dialogue Nouveau projet contient deux icnes Exe Document
ActiveX et Dll Document ActiveX qui crent des noyaux de documents
ActiveX. La Figure 19.5 montre ces icnes. Vous pouvez, partir de l, ajouter toutes les caractristiques voulues la feuille, comme vous le faites avec
les applications classiques.

627

<
:

Prog VB6 FM3B Page 628 Lundi, 6. aot 2001 3:54 15

Partie III

Figure 19.5
Dmarrez lassistant
Nouveau projet pour
voir les assistants
Documents ActiveX.

Assistant DLL
Document ActiveX

Assistant Exe
Document ActiveX

Lassistant Migration de document ActiveX


Le plus simple pour porter vos applications vers lInternet est de laisser Visual Basic le
faire votre place. Lorsque vous ajoutez lassistant Migration de document ActiveX en
choix du menu Complments, vous ajoutez un outil puissant qui peut transformer
presque toute application Visual Basic en une application Internet. Vous pouvez placer
vos applications, converties en documents ActiveX, sur un serveur Web ; les utilisateurs
pourront alors interagir avec elles au travers dun navigateur Web, comme avec les
pages Web qui contiennent du code HTML, VBScript et Java.
Pour voir la simplicit de la conversion dune application en application compatible
Internet, suivez ces tapes pour utiliser lassistant Migration de documents ActiveX :
1. Slectionnez Complments, Gestionnaire de complments et double-cliquez sur
lentre Assistant Migration de document ActiveX VB6 pour ajouter lassistant la
liste.
2. Cliquez sur OK pour fermer la bote de dialogue Gestionnaire de complments.
3. Ouvrez lapplication exemple Calc.Vbp, fournie avec Visual Basic. Cherchez dans
le dossier Samples du CD-ROM ou sur le disque dur si vous avez install les exemples
lors de linstallation de Visual Basic.
4. Appuyez sur F5 pour excuter lapplication. Comme le montre la Figure 19.6, elle
simule une calculette de poche.
5. Arrtez lexcution de lapplication.
6. Slectionnez Complments, Assistant Migration de document ActiveX.

>
:

628

Prog VB6 FM3B Page 629 Lundi, 6. aot 2001 3:54 15

Chapitre 19 : Ajout dun accs Internet

Figure 19.6
Lapplication Calc
imite les fonctions
dune calculette de
poche.

7. Cliquez sur Suivant pour sauter la fentre dintroduction.


8. La seconde fentre safche (voir Figure 19.7) ; elle liste toutes les feuilles du projet
en cours. Le projet Calc.vbp ne contient quune feuille, cliquez sur lentre Calculator pour la slectionner.
Info

Si votre projet comprend plusieurs feuilles, vous pouvez choisir de nen


transmettre que quelques-unes dans des documents ActiveX compatibles
Web. Chaque feuille devient un document ActiveX indpendant.

Figure 19.7
Slectionnez la feuille
de lapplication
qui apparatra sur
la page Web comme
un document ActiveX.

9. La fentre Options (voir la Figure 19.8) dtermine comment lassistant doit grer les
lments quil ne peut pas convertir. Certains types dinstructions de communication
avances ne peuvent pas fonctionner dans un document ActiveX, mme si la majeure

629

<
:

Prog VB6 FM3B Page 630 Lundi, 6. aot 2001 3:54 15

Partie III

partie du code Visual Basic fonctionnera en douceur. Si vous cochez la premire


option, Visual Basic placera des commentaires devant toutes les instructions que
lassistant ne peut pas convertir. Lapplication rsultante sera incomplte, mais vous
pourrez rechercher les commentaires et supprimer le code ou le corriger sil est vital
de convertir lapplication. Il ny a pas de code incorrect dans lapplication Calc.vbp.
En outre, vous pouvez choisir de supprimer du projet les feuilles converties, car elles
se retrouveront dans un document ActiveX une fois lassistant achev. Laissez
coche loption Convertir en EXE ActiveX pour que lassistant cre un excutable,
et pas une DLL.
ition
Dfin

Une DLL (Dynamic Link Library), ou bibliothque de liens dynamiques est


une routine compile qui peut tre partage par une ou plusieurs applications compiles.

Figure 19.8
Congurez les options
du document ActiveX
afcher.

Dans le cadre de cet exemple, laissez les paramtres par dfaut de la bote de dialogue Options et cliquez sur Suivant pour continuer.
10. Laissez les options telles quelles et cliquez sur Terminer dans la fentre Termin! pour
dmarrer la migration de lapplication Calc.vbp vers un document ActiveX. Une fois
quelle sachve, une bote de dialogue de n safche.
11. Cliquez sur OK pour fermer la bote de dialogue de n.

>
:

630

Prog VB6 FM3B Page 631 Lundi, 6. aot 2001 3:54 15

Chapitre 19 : Ajout dun accs Internet

ce
Astu

Aprs chaque Migration, une fentre de rcapitulatif safche(voir


Figure 19.9). La fentre Rcapitulatif est importante, car les instructions
quelle prsente vous permettent de savoir ce quil reste faire pour tester la
migration. Aprs avoir lu le rapport, vous pouvez cliquer sur le bouton
Enregistrer pour enregistrer le texte et fermer la fentre. Dans cet exemple,
vous pouvez fermer la fentre sans lenregistrer.

Figure 19.9
La fentre
Rcapitulatif
dcrit les actions
accomplir pour
achever la migration.

La migration tant acheve, vous devez excuter encore une fois lapplication dans lenvironnement Visual Basic pour prparer un objet document ActiveX excutable. Dune
certaine manire, Visual Basic compile votre application, mais contrairement une compilation classique, lexcution de lapplication convertie cre un document ActiveX avec une
extension .VBD (Visual Basic Document). Vous devrez encore compiler le document
ActiveX dans un format EXE pour lutiliser hors de lenvironnement Visual Basic.
Ds que vous dmarrez lapplication, Visual Basic afche la bote de dialogue Proprits du projet (voir Figure 19.10). Elle dtermine le comportement du document lorsque
vous excuterez le programme. Si vous observez la fentre Projet, vous constaterez
quelle comprend deux composants : la feuille Calc habituelle et un second objet,
docCalculator. Ce dernier est le composant document ActiveX cr quand vous avez
appuy sur F5 pour excuter lapplication.
Lorsque vous cliquez sur OK, Visual Basic lance le document ActiveX dans le navigateur
Internet. La Figure 19.11 montre le rsultat. Remarquez ce qui sest produit :

Le navigateur Internet excute en fait votre application Visual Basic.

Vous navez pas crit une ligne dinstructions HTML pour gnrer la page Web.

631

<
:

Prog VB6 FM3B Page 632 Lundi, 6. aot 2001 3:54 15

Partie III

Figure 19.10
Spciez
les proprits du
projet de document
ActiveX.

Lapplication Calculette est transforme avec succs en une application Web.

Si vous fermez le projet, vous pouvez tout moment redmarrer le navigateur Internet,
slectionner Fichier, Ouvrir, rechercher le chier docCalculator.vbd et excuter
lapplication compile sous forme de document ActiveX, sans dmarrer Visual Basic.

Si vous placez lapplication sur votre serveur Web (en considrant que vous avez
accs un serveur Web o vous pouvez proposer des pages Web sur lInternet), tout
utilisateur dInternet dans le monde entier qui utilise un navigateur compatible
ActiveX sera capable dexcuter cette application. (Cela simule en fait laction
dune applet Java).

Une fois le navigateur Internet ferm, vous pouvez slectionner Excution, Fin pour
arrter lexcution de Visual Basic.
ce
Astu

>
:

632

Tout conteneur de contrle ActiveX peut contenir un document ActiveX. Il


est important de le comprendre, car cela montre luniversalit des documents
ActiveX. En dautres termes, si vous utilisez une application, par exemple,
une application de dessin ou un autre langage de programmation, qui
accepte lincorporation de contrles ActiveX, vous pourrez ajouter vos
documents ActiveX cette application. Document ActiveX nest quune
manire savante de dsigner un contrle ActiveX migr depuis une application Visual Basic. Le second exercice montre comment utiliser cette
fonction si Microsoft Ofce est install sur votre machine.

Prog VB6 FM3B Page 633 Lundi, 6. aot 2001 3:54 15

Chapitre 19 : Ajout dun accs Internet

Figure 19.11
Internet Explorer est
la plate-forme sur
laquelle lapplication
Calculette sexcute
dsormais.

HTML et VBScript
Sil suft de connatre le langage de programmation Visual Basic pour accder aux
fonctions de connexion Internet de Visual Basic 6, vous devez matriser deux autres
langages pour bien lier le tout. HTML est le langage de mise en forme des pages Web ;
il est conu pour atteindre les objectifs suivants :

formater les pages Web en colonnes, avec des graphiques et des titres adapts ;

permettre lintgration de programmes de service supplmentaires de lInternet,


comme les documents ActiveX et Java (un petit langage de programmation pour
rendre actives les pages Web).

HTML est dsign comme un langage de script. Il ne se compile pas pour donner un
excutable comme le font les programmes Visual Basic. HTML formate les pages Web,
spcie o mettre les graphiques et les cadres de sparation, et permet dactiver des
applications incorpores comme les documents ActiveX et les programmes Java.
VBScript, comme son nom lindique, est un autre langage de script, conu par Microsoft partir du langage de programmation Visual Basic. Il est utile lorsque vous voulez
ajouter des caractristiques cls de Visual Basic une page Web, comme un message
surgissant, une bote de saisie, un calcul en boucle, etc. VBScript, malgr ses bases
Visual Basic, ne remplace pas les documents ActiveX, mais il permet de les charger
dans une page HTML pour quils sexcutent. Cest donc le support permettant aux
documents HTML de trouver et dexcuter des documents ActiveX Visual Basic.

633

<
:

Prog VB6 FM3B Page 634 Lundi, 6. aot 2001 3:54 15

Partie III

Info

VBScript na pas t conu lorigine pour tre exclusivement un lanceur


de documents ActiveX en fait, VBScript existait avant ActiveX. Le chargement des documents ActiveX dans les pages HTML nest quune des
nombreuses tches dont est capable VBScript, mais sans doute la plus
importante pour un programmeur VB6.

Le Listing 19.1 montre un exemple des premires lignes du code HTML du site Web
Microsoft.
Listing 19.1 : Quelques lignes de code HTML peuvent rvler comment fonctionne
le code de formatage des pages Web

<HTML>
<HEAD>
<TITLE>MSN.COM</TITLE>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<META http-equiv="PICS-Label" content=
(PICS-1.0 "http://www.rsac.org/ratingsv01.html"
l comment "RSACi North America Server" by
"Microsoft Network">
</HEAD>
<FRAMESET rows="20,*" frameborder="0"
framespacing="0" border="0">
<FRAME src="/pilot.htm" name="pilot"
NORESIZE scrolling="no" marginwidth="0"
marginheight="0" frameborder="0" framespacing="0">
</FRAMESET>
</html>

Connectez-vous lInternet et allez avec votre navigateur Web sur la page daccueil de
Microsoft http://www.microsoft.com/. Mme si la page peut diffrer de celle dcrite
dans le Listing 19.1, ce nest pas ce texte que vous verrez. HTML est un langage de
description de mise en forme de page. Les commandes du Listing 19.1 indiquent votre
navigateur Web comment afcher le texte et les graphiques qui sont transmis vers
votre machine lorsque votre navigateur pointe la page.
Le Listing 19.2 montre un extrait dun exemple VBScript. Vous pouvez en comprendre
une bonne partie grce votre connaissance du langage Visual Basic.
Listing 19.2 : Un exemple de VBScript qui montre les ressemblances
avec Visual Basic
<SCRIPT Language="VBScript">

Call PrintWelcome

Call ModMessage

>
:

634

Prog VB6 FM3B Page 635 Lundi, 6. aot 2001 3:54 15

Chapitre 19 : Ajout dun accs Internet

Sub PrintWelcome
If Date() = "2/2/98" Then
document.write ". . . .Anniversaire de Cathy !"
End If
If Date() = "2/5/98" Then
document.write ". . . .Anniversaire dEric !"
End If
If Date() = "5/17/98" Then
document.write ". . . .Anniversaire de Michael !"
End If
If Date() = "7/25/98" Then
document.write ". . . .Mon Anniversaire !"
End If
End Sub
Sub ModMessage
Document.Write "<BR>Dernire modification de cette page :
"+Document.lastModified +"</FONT><BR>"
End Sub
</SCRIPT>

De VB Java ?
Une technique que vous pouvez vite tudier est la conversion de Visual Basic vers Java.
Certains fournisseurs vendent dj de tels outils et dautres ont annonc leur intention
de le faire. Le gros avantage de ce type doutil est que vous navez pas trop vous
proccuper des contrles Internet. Si vous pouvez crire une application qui utilise des
contrles Visual Basic, le programme de conversion traduit le projet Visual Basic en
projet Java. Dans Java, vous pouvez incorporer lapplication dans vos pages Web intranet ou Internet, et lapplication aboutit sur lcran de lutilisateur ds quil afche la
page Web.
Ces outils de conversion Java ne remplacent pas ncessairement lassistant Migration de
document ActiveX dont nous avons dj parl. Cependant, sur certains systmes autres
que Windows supportant Java, mais pas ActiveX, les applications Java peuvent tre plus
universellement acceptes que les applications bases sur ActiveX.
Info

Si Java est une nouveaut pour vous, disons quil fournit un vritable contenu
actif aux pages Web depuis bien avant lapparition des contrles ActiveX. Java
fonctionne au travers des pages Web et il sexcute sur la machine de lutilisateur nal, mme si cette machine et le systme dexploitation ne sont pas les
mmes que ceux du dveloppeur. Pour des informations supplmentaires sur
Java, reportez-vous labondante littrature existant sur le sujet.

635

<
:

Prog VB6 FM3B Page 636 Lundi, 6. aot 2001 3:54 15

Partie III

ce
Astu

Visual J++ est limplmentation Microsoft de type Java. Visual J++


comprend une interface programmatique qui ressemble linterface de
Visual Basic et fonctionne de manire trs proche. Les deux environnements
supportent le style Visual Studio. Vous serez donc dj familiaris avec
lenvironnement de programmation si vous utilisez Visual J++ comme
gnrateur de langage Java.

Types dapplications Internet Visual Basic


Visual Basic peut crer les deux types dapplication Internet suivantes :

Application IIS. La manire la plus simple dincorporer Internet des applications


Visual Basic est de le faire sous la forme dapplications IIS (Internet Information
Server). Le navigateur Web incorpor lapplication cre plus tt avec lassistant
Cration dapplication est une application IIS. Le serveur gre tout le traitement des
commandes Visual Basic.

Applications DHTML. Permet dcrire du code qui ragit des vnements sur
une page Web HTML. Le navigateur de lutilisateur nal interprte et excute ces
commandes, et le serveur distant na pas grand-chose dautre faire que de rpondre
aux requtes particulires quand elles se produisent, comme, par exemple, rcuprer
des pages Web supplmentaires.
Info

ition
Dfin

Noubliez pas que la leon daujourdhui ne propose quun survol de la


cration dapplications Visual Basic. Ne vous attendez pas matriser des
concepts Internet avancs en un jour. Peu importe votre niveau en programmation, entrer dans le monde dun programmeur Internet, un peu comme
pour un programmeur de base de donnes, exige une formation sur la
gestion des protocoles de connexion, les langages de script, les contrles
ActiveX traitant de la communication, et la programmation client/serveur.
Dans la terminologie en ligne, le client est lapplication qui accde
lInternet, et le serveur est lordinateur qui dtient les pages Web que lutilisateur nal (le client) afche et sur lesquelles il interagit. Le monde en ligne
est bas sur les transactions ; cest--dire que lutilisateur met une requte,
par exemple, dans le navigateur Web et le serveur traite cette requte, puis
envoie une transaction rsultante lutilisateur sous la forme dune page
Web ou dune applet ActiveX.

Visual Basic supporte ces deux types de dveloppement dapplications Internet ; vous
pouvez donc les dvelopper dans Visual Basic, et les tester avec les outils de dbogage
que vous apprendrez dans le Chapitre 21.

>
:

636

Prog VB6 FM3B Page 637 Lundi, 6. aot 2001 3:54 15

Chapitre 19 : Ajout dun accs Internet

En rsum
Ce chapitre a donn une brve prsentation du rle de Visual Basic en tant quacteur
Internet. A lvidence, cette leon ne peut couvrir quune trs faible partie des dtails
ncessaires pour vraiment transformer Visual Basic en un outil de programmation Internet. Des bases solides sont ncessaires, ne serait ce que dans la technologie Internet,
avant de sattaquer linterface de Visual Basic. Il existe quantit de bons livres et de
rfrences en ligne, mais la meilleure chose est dj dtudier le matriel qui accompagne
Visual Basic 6. Vous y trouverez des descriptions qui dtaillent votre rle en tant que
programmeur Internet.
Ne soyez pas effrays par lide dcrire des applications qui interagissent avec lInternet. Rendez-vous compte que lobjectif annonc de faire tenir chaque leon sur la dure
dune journe raisonnable naurait pas pu tre atteint si la leon daujourdhui stait
aventure vous apprendre les nombreuses particularits ncessaires lcriture des
programmes Internet. En tout cas, les programmeurs Internet sont bien rcompenss
pour leurs comptences rsultant des tudes approfondies exiges et du rythme quils
doivent suivre pour rester jour dans la technologie.
La leon de demain dcrit comment crer des pages daide pour les applications Visual
Basic. Vous verrez de plus prs comment fonctionne HTML en crant un systme daide
HTML et en utilisant des pages de type HTML.

Questions-rponses
Q Mon application comprend trois feuilles. Lassistant Migration de document
ActiveX compile-t-il ces trois feuilles en un document ActiveX unique ?
R Lassistant Migration de document ActiveX convertit les feuilles, non les applications
entires, en documents ActiveX. En dautres termes, si votre application contient
quatre feuilles, chacune gnrera un document ActiveX diffrent (si on considre
quelles ne contiennent pas de code qui viole les exigences des documents ActiveX).
Vous pourrez lier les documents avec des liens hypertexte en utilisant des instructions
HTML, mais chaque feuille deviendra un document ActiveX indpendant. Lassistant
de migration ne convertit pas vraiment la totalit de lapplication en un document
ActiveX unique si lapplication contient plusieurs feuilles.

637

<
:

Prog VB6 FM3B Page 638 Lundi, 6. aot 2001 3:54 15

Partie III

Q Quels types dapplications ne sont pas convertis par lassistant Migration de


document ActiveX ?
R Lassistant Migration de document ActiveX convertit la plupart des applications Visual
Basic, lexception de celles qui contiennent des objets OLE incorpors, car OLE est
une technologie ancienne non supporte par les navigateurs Web. En outre, certains
contrles et certaines commandes de communications avancs peuvent ne pas fonctionner comme attendu aprs migration. Mais la plupart des applications Visual Basic
seront converties sans problmes.
La limitation dun document ActiveX par feuille, dcrite la question prcdente,
ne pose un problme que si une feuille de lapplication utilise les mthodes Hide,
Show, Load ou Unload pour masquer ou afcher une autre feuille. Lassistant met ces
mthodes en commentaires, comme la commande End, car une application document ActiveX ne se termine pas comme une application habituelle, elle reste en fait
active jusqu ce que lutilisateur change de page ou ferme le navigateur Internet.

Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension
des lments traits, ainsi que des exercices qui vous permettent de mettre en pratique ce
que vous avez appris. Essayez de comprendre les questions et les exercices avant de passer
la leon suivante. Les rponses se trouvent lAnnexe A.

Quiz
1. Que fait de lURL que vous fournissez lapplication de navigation Web que vous
gnrez dans lassistant Cration dapplication ?
2. Les utilisateurs de votre application doivent utiliser Internet Explorer comme navigateur Web pour que le contrle de navigation Web Visual Basic fonctionne. Vrai ou
faux ?
3. Vous devez utiliser Internet Explorer comme navigateur Web pour que le contrle de
navigation Web Visual Basic fonctionne. Vrai ou faux ?
4. Quest-ce que lencapsulation ?
5. Quel service en ligne est support par certains contrles Visual Basic ?
6. Quelle est la diffrence entre un intranet et lInternet ?

>
:

638

Prog VB6 FM3B Page 639 Lundi, 6. aot 2001 3:54 15

Chapitre 19 : Ajout dun accs Internet

7. Quelle est la diffrence entre un document ActiveX et une application Visual Basic
classique ?
8. A quoi sert Java ?
9. Quel langage de script fonctionne avec HTML pour charger et excuter des documents
ActiveX ?
10. Comment pouvez-vous convertir des applications existantes en documents
ActiveX ?

Exercices
1. Si vous disposez de Microsoft Ofce Professionnel, vous pouvez utiliser le Classeur
Ofce pour contenir des documents ActiveX ! Essayez en utilisant le document
ActiveX calculette que vous avez cr dans la leon daujourdhui.
2. Slectionnez une application qui contient plusieurs feuilles, comme le projet exemple
Controls. Convertissez cette application en un document ActiveX.

639

<
:

Prog VB6 FM3B Page 640 Lundi, 6. aot 2001 3:54 15

Prog VB6 FM3B Page 641 Lundi, 6. aot 2001 3:54 15

Chapitre

20

Fournir de laide
Ce chapitre explique comment aider les utilisateurs. Lorsque vous en aurez termin, vous
saurez ajouter un systme daide une application an que lutilisateur puisse en lire la
documentation en ligne. Le systme daide est dit en ligne non pas parce que vous
envoyez lutilisateur sur lInternet, mais parce que les informations sont immdiatement
disponibles ; il na pas se reporter un manuel imprim. Le systme daide imite le
systme daide de presque toutes les applications Windows. Lutilisateur na pas faire
defforts particuliers dapprentissage pour savoir comment utiliser laide en ligne de vos
applications.
Cette leon commence par vous apprendre comment ajouter des info-bulles aux contrles.
Laide "Quest-ce que cest ?" peut galement tre ajoute une fois que vous matrisez la
cration des chiers daide.
Vous apprendrez dans ce chapite :

les info-bulles et laide "Quest-ce que cest ?" ;

la prparation des chiers daide HTML, ;

comment choisir entre laide HTML et laide Windows classique ;

comment crer et formater le texte des chiers daide, ;

les exigences du format RTF ;

comment lier les messages daide aux contrles, ;

comment utiliser le contrle Bote de dialogue commune pour commander les


crans daide ;

comment les ID de contexte de laide pointent des sujets particuliers.

641

Prog VB6 FM3B Page 642 Lundi, 6. aot 2001 3:54 15

Partie III

ntion
Atte

Il existe plusieurs mthodes pour ajouter de laide en ligne aux applications


Visual Basic. La leon daujourdhui vous en enseigne deux principales.
Tout dabord, laide en ligne que vous trouvez encore dans la plupart des
applications Windows, nomme WinHelp. Depuis Visual Basic 6, vous
pouvez galement ajouter de laide HTML vos applications. Une partie de
la leon lexplique. Tous les utilisateurs ne disposant pas de navigateurs
Web capables dafcher laide HTML, vous ne pourrez garantir la compatibilit de vos applications avec leurs systmes quen ajoutant laide en
ligne standard.

Info-bulles et aide "Quest-ce que cest ?"


Les info-bulles sont faciles ajouter divers objets, et laide particulire "Quest-ce que
cest ?" repose fortement sur le chier daide. Vous pouvez ajouter des info-bulles un
contrle quand vous insrez ce dernier dans une feuille, en renseignant la proprit
ToolTipText. Quand lutilisateur positionne ensuite le pointeur de la souris sur le
contrle, linfo-bulle safche au bout dun bref dlai. Et, ds que vous disposez dun
chier daide dtaill, lajout de laide "Quest-ce que cest ?" est simple.
ition
Dfin

ition
Dfin

ce
Astu

Les info-bulles sont les descriptions daide qui safchent quand vous laissez
le pointeur de la souris sur un contrle.
Laide "Quest-ce que cest ?" est une aide contextuelle (signiant quelle
dpend de lendroit do lutilisateur la demande) qui dcrit le contrle.
Lutilisateur clique sur le point dinterrogation "Quest-ce que cest ?" dans
le coin suprieur droit de la fentre ou slectionne le menu Aide, Quest-ce
que cest ? ; le curseur se transforme en un point dinterrogation. Tout
contrle sur lequel lutilisateur clique alors gnre une aide.
Proposez une aide "Quest-ce que cest ?" lorsque lcran de votre application contient de nombreux lments qui peuvent troubler les nouveaux
utilisateurs. Ils peuvent cliquer sur "Quest-ce que cest ?" dans la barre
doutil ou slectionner loption de menu correspondante, puis cliquer sur
lobjet de lcran pour lequel ils veulent en savoir plus.

Outre les info-bulles, vous pouvez proposer une aide "Quest-ce que cest ?" pour
donner aux utilisateurs des informations supplmentaires sur vos applications. La
Figure 20.1 montre la fentre daide "Quest-ce que cest ?" qui safche aprs que
lutilisateur a choisi Aide, Quest-ce que cest ? et quil a cliqu sur Parcourir. Le

>
:

642

Prog VB6 FM3B Page 643 Lundi, 6. aot 2001 3:54 15

Chapitre 20 : Fournir de laide

pointeur en point dinterrogation reprend une forme normale ds que la bote daide
safche.
Figure 20.1
Lutilisateur peut
demander "Quest-ce
que cest ?"

Info

Faites correspondre laide "Quest-ce que cest ?" aux objets. La


Figure 20.1 utilise la page daide la plus proche disponible pour le bouton
Parcourir dans la conguration des pages daide. Le processus est dcrit
dans la suite de cette leon.

Cette tude simultane des info-bulles et de laide "Quest-ce que cest ?" sexplique par
leur ressemblance dun point de vue utilisateur. Ce dernier doit laisser le curseur sur un
contrle pour lire linfo-bulle, ou cliquer sur le dclencheur "Quest-ce que cest ?" pour
obtenir de laide sur ce contrle.
Malgr ces ressemblances, vous pourrez tre surpris de la complexit inhrente lajout
de laide "Quest-ce que cest ?" par rapport aux info-bulles (qui sont trs simples). Le
reste de cette section dcrit comment ajouter des info-bulles et la partie nale dcrit
comment ajouter laide contextuelle (une fois que vous aurez appris comment crer des
chiers daide intgrer dans laide en ligne).
La simplicit de lajout des info-bulles tout contrle plac sur la feuille peut vous
surprendre. Il suft pour cela de saisir le texte dans la proprit ToolTipText de lobjet.
Visual Basic soccupe de tout le reste. Cherchez, dans les exemples, lapplication de

643

<
:

Prog VB6 FM3B Page 644 Lundi, 6. aot 2001 3:54 15

Partie III

bloc-notes MDI nomme Mdinote. Lorsque les programmeurs de Microsoft ont cr


cette application, ils ont ajout des info-bulles presque tous les contrles de chaque
feuille. Vous pouvez slectionner un contrle au hasard et lire la proprit ToolTipText
correspondante qui safche quand le pointeur de la souris reste dessus.
Info

Faire
Prenez lhabitude de renseigner le texte de linfo-bulle chaque fois que vous
ajoutez un contrle dans une feuille dune application, vu la simplicit de la
manipulation. Il y a moins de chances que vous ajoutiez les info-bulles plus
tard, ajoutez-les donc immdiatement, quand le but de votre contrle est
encore frais dans votre esprit.

Adaptation de laide une application


Lcriture dun systme daide en ligne peut tre une tche dcourageante, mais vous
pouvez emprunter celui de Windows dans vos applications. Tout ce que vous devez faire
est dcrire le texte de laide, puis dutiliser le systme daide de Windows pour afcher
ce texte au bon moment et au bon endroit dans lapplication. Lutilisateur na pas
dapprentissage faire, car il sait dj comment utiliser le systme daide de Windows.
ce
Astu

Nattendez pas davoir termin votre application pour lancer la conception


du systme daide en ligne. Le meilleur moment pour rdiger le texte daide
est le moment o vous concevez et crez lapplication. Cest l que vous avez
la meilleure connaissance du fonctionnement de lapplication et que vous
tes le mieux arm pour crire le type daide dont lutilisateur a besoin.

Systmes daide HTML


Si vous utilisez le systme daide de Visual Basic, vous verrez lAide base sur les
chiers daide HTML. En dautres termes, laide safche dans un format proche des
navigateurs Web, avec des liens hypertexte. Vous pouvez cliquer sur Prcdent pour afcher
les crans daides que vous avez dj lus. Le panneau de gauche contient les thmes du
sommaire et lorsque vous double-cliquez sur une entre, le panneau de droite afche le
contenu de la rubrique.
ition
Dfin

>
:

644

HTML signie Hypertext Markup Language. Cest le langage de mise en


forme des pages Web.

Prog VB6 FM3B Page 645 Lundi, 6. aot 2001 3:54 15

Chapitre 20 : Fournir de laide

Vous pouvez ajouter ce type daide HTML vos applications Visual Basic. Cest un
nouveau type daide ; en effet, avant lapparition des navigateurs Web, toutes les applications Windows utilisaient le mme moteur, WinHelp. Ce dernier permet lafchage de
laide en ligne et utilise les liens hypertexte, mais dans un format diffrent des navigateurs Web (voir Figure 20.2). La version WinHelp du systme daide des applications
Windows est le mme depuis plusieurs annes. Les programmeurs prdisent que laide
HTML sera le systme standard de laide en ligne des applications Windows dans
quelques annes, mais WinHelp garde toujours une bonne avance.
ition
Dfin

WinHelp est le systme daide en ligne utilis dans la plupart des applications Windows, et qui sera peut-tre remplac un jour par le systme daide
HTML.

Figure 20.2
Laide HTML utilise
une fentre deux
volets ressemblant
lExplorateur.

ntion
Atte

Malgr lapparence moderne de laide fonde sur HTML, les utilisateurs de


vos applications ne pourront pas obtenir daide en ligne sils ne disposent
pas dun navigateur Web install sur leur systme ou si leur navigateur est
antrieur Internet Explorer 4.0. Vous limiterez donc de faon considrable
votre audience si vous exigez que tous les utilisateurs de vos applications
utilisent Internet Explorer 4. Tant que la prsence dun navigateur Web nest
pas garantie sur la machine de lutilisateur, il est prfrable de sen tenir au
systme daide WinHelp classique dcrit dans la section suivante. En attendant, cette section explique quel sera votre futur si le monde informatique
continue dvoluer vers une interface base sur les navigateurs.

645

<
:

Prog VB6 FM3B Page 646 Lundi, 6. aot 2001 3:54 15

Partie III

La manire de connecter un chier daide HTML une application Visual Basic est la
mme que pour un chier WinHelp : spciez le chier daide HTML dans la proprit
HelpFile. Vous pouvez en outre paramtrer la proprit HelpContextID pour tous les
objets de la feuille pour quun sujet particulier daide contextuelle safche sil est
slectionn lcran quand lutilisateur appelle laide.
La principale difcult ne rside pas dans la connexion du chier daide votre application et ses objets, mais dans la cration de ce chier. A partir de la section suivante,
vous suivrez un exemple assez ennuyeux qui cre un chier daide WinHelp qui, malgr
sa longueur, est encore assez incomplet. Les crans daide, mme pour les applications
simples, peuvent tre nombreux et, plus vous offrez de liens hypertexte complets, plus
votre travail de concepteur de chiers daide devient pesant.
Info

ce
Astu

Les chiers daide HTML ont une extension .CHM et les chiers WinHelp,
une extension .HLP.
La cration dun chier daide, quil soit HTML ou WinHelp, ncessite
souvent beaucoup plus defforts quil nen mrite. Cependant, lexprience
que vous allez commencer acqurir partir de la section suivante est une
bonne chose, car vous comprendrez mieux comment le texte dun chier
daide interagit avec une application. Faites-vous plaisir ds que vous en
aurez termin avec cette leon : courez chez votre marchand de logiciels et
cherchez un outil de cration daide plus automatis. De nombreux logiciels
utilitaires rendent la cration beaucoup plus simple. De plus, les nouveaux
outils de cration daide gnrent laide HTML et WinHelp partir des
mmes instructions.

Il existe dautres outils outre les outils de cration daide disponibles actuellement
avec lesquels il est possible de crer des pages HTML utilisables comme chiers daide.
De nombreux traitements de texte actuels, comme Microsoft Word 97, ouvrent et enregistrent les chiers au format HTML. Vous pouvez aussi, si vous navez pas accs un
programme de cration daide au format HTML, utiliser un outil de conception de pages
Web pour crer les chiers HTML. Microsoft fournit une version de son programme de
conception de pages Web, FrontPage Express, avec Internet Explorer. FrontPage
Express peut aussi tre tlcharg partir du site Web de Microsoft.
Il existe des ouvrages complets qui expliquent comment crer des pages HTML, notamment les lments de pages Web et daide, tels que les liens hypertexte et les graphiques
incorpors.

>
:

646

Prog VB6 FM3B Page 647 Lundi, 6. aot 2001 3:54 15

Chapitre 20 : Fournir de laide

Laide RTF
Les sections suivantes expliquent comment crer et lier le chier des sujets daide
votre application en utilisant la mthode traditionnelle WinHelp. Vous devez non seulement
rdiger le chier des sujets daide, mais aussi crer un projet daide que vous compilez
ensuite pour donner un systme daide li votre application. Le texte insrer dans
le chier des sujets daide doit tre au format RTF (Rich Text Format), que lapplication peut utiliser pour incorporer des sauts hypertexte de sujet en sujet lorsque cest
ncessaire.
ce
Astu

Info

Un saut hypertexte est un lien vers un autre sujet dans le systme daide.
Vous devez avoir accs un traitement de texte capable de crer des chiers
RTF et qui supporte les notes de bas de page. Microsoft Word est certainement loutil le plus rpandu pour la cration de chiers daide.

Souvenez-vous quune bonne raison pour crer des chiers daide WinHelp est quils
seront accessibles par tous les utilisateurs de votre application. Tous les exemplaires de
Windows sont fournis avec un systme daide qui sappelle la visionneuse de chier
daide (Windows Help Viewer), et qui est capable de grer les chiers source RTF
WinHelp compils comme cest dcrit ici. Cette visionneuse est, par contre, incapable
de lire les chiers daide HTML ; il faut pour cela un navigateur Web.
ition
Dfin

La visionneuse de chier daide est un outil qui fait partie intgrante de


Windows et permet dafcher les chiers WinHelp.

La compilation effectue sur les chiers daide na pas de rapport avec la compilation de
lapplication. Dans la leon de demain, vous apprendrez comment compiler vos applications an de les distribuer. Pour que votre application, compile ou pas, accde un
chier daide, il faut que ce dernier soit compil en un chier avec lextension standard
.HLP.

Prparer le fichier des sujets


Si vous utilisez Word pour crer le chier daide, vous devez afcher les codes de
formatage masqus. La plupart des gens prfrent rdiger les documents sans afcher
les codes, mais les sauts hypertexte exigent du texte masqu, que vous devez voir, mme
sil est cach aux utilisateurs. Cliquez sur Afcher/Masquer (le symbole de paragraphe)
sur la barre doutils pour afcher les codes masqus.

647

<
:

Prog VB6 FM3B Page 648 Lundi, 6. aot 2001 3:54 15

Partie III

Crer les sauts hypertexte


La majeure partie du chier daide sera constitue de texte normal dcrivant les sujets
daide. Le texte daide nimpose pas de contraintes de formatage ; vous pouvez modier
la taille et le style des caractres comme vous le voulez. Cependant, les sauts hypertexte
exigent un formatage spcique pour permettre au systme daide de reconnatre leurs
mots cls et de savoir o se situe le sujet li.
Plus vous ajoutez de rfrences croises entre les sujets daide laide de sauts hypertexte, plus votre systme daide sera utile lutilisateur. Quand vous ajoutez un saut
hypertexte, les utilisateurs nont pas utiliser un menu pour slectionner les sujets qui
peuvent les intresser. Ils peuvent juste "sauter" directement au sujet quils veulent lire.
Les exigences pour crer des sauts hypertextes sont les suivantes :

Ajouter un soulignement double toutes les phrases de saut hypertexte. Elles safcheront en vert dans la fentre daide de lutilisateur. Avec Word, il faut slectionner
le mot ou la phrase, slectionner Police dans le menu Format, puis choisir Double
dans la liste droulante Soulignement. Vous pouvez aussi utiliser la combinaison de
touches Ctrl-Alt-U, ou personnaliser la barre doutils et ajouter licne de double
soulignement.

Faire suivre le texte du saut hypertexte dune balise nomme chane de contexte, qui
contient le sujet de destination du saut et qui est formate en texte masqu. Ninsrez
aucun espace entre le saut hypertexte et la chane de contexte. Assurez-vous que
vous ne formatez que la chane de contexte en texte masqu (attention aux espaces,
aux ponctuations ou aux marques de paragraphes). Pour masquer le texte, slectionnez Format, Police, et cliquez sur la case Masqu. Vous pouvez aussi utiliser la
combinaison de touches Ctrl-Maj-U ou personnaliser la barre doutils.
ition
Dfin

>
:

Une chane de contexte est une chane de caractres qui suit un saut
hypertexte afch dans le texte quand lutilisateur demande une aide
contextuelle.

Sparer la page du sujet qui contient le saut hypertexte de la page de destination par un
saut de page. Vous pouvez ajouter un saut de page dans le menu Insertion, en
slectionnant Saut, puis Saut de page (ou appuyer sur Ctrl-Entre).

Connecter le texte du saut hypertexte la page de destination par au moins un des


trois symboles personnaliss de note de bas de page :

Afcher des descriptions et des dnitions daide surgissantes par un soulignement


simple des sujets dnir. Vous pouvez souligner le texte dans le menu format, en
slectionnant Police, puis Simple dans la liste droulante Soulignement. Vous

648

Prog VB6 FM3B Page 649 Lundi, 6. aot 2001 3:54 15

Chapitre 20 : Fournir de laide

pouvez aussi appuyer sur Ctrl-U ou ajouter une icne en personnalisant la barre
doutils.
Symbole

Description

Utilis pour se connecter la page de destination par la chane de contexte.

Utilis pour placer le titre de la page de destination dans la zone de texte


Rechercher du systme daide et pour connecter le saut hypertexte au titre de
la page de destination.

Utilis pour se connecter un sujet lors dune recherche par mots cls.
De nombreux sujets daide sont lis leurs pages de destination par les trois
symboles de bas de page. En dautres termes, lutilisateur peut sauter de sujet
en sujet, les titres des sujets apparaissent dans la zone de texte Rechercher du
systme daide ; il peut aussi rechercher les sujets laide de mots cls.

Il est beaucoup plus simple de montrer un exemple que de dcrire un chier daide.
La section suivante illustre donc les diffrentes manires de congurer les sauts hypertexte et les destinations.
ce
Astu

Si vous utilisez le symbole de note de bas de page K pour dsigner un sujet


de recherche, ajoutez autant de sujets que vous le pouvez. Comme vous le
verrez dans lexemple, les notes de bas de page K contiennent souvent
plusieurs entres spares par des points virgules. La note de bas de page
suivante indique au systme daide que le sujet doit apparatre dans quatre
rubriques de lindex de laide :
KModifier les options ; Commandes du menu ; Modifications ;
Modifier le texte

Crer un fichier daide


Vous avez, un peu plus tt dans cette leon, charg le projet exemple de bloc-notes MDI
(MdiNote.Vbp) pour voir comment fonctionnait laide par info-bulles. Vous allez crer
un systme daide auxiliaire pour cet exemple de programme MDI. Lapplication utilise
les feuilles MDI pour grer un petit diteur de texte multifentres. Si lapplication est
relativement bien nie et va au-del des capacits du Bloc-notes de Windows (car elle
supporte plusieurs fentres, ce que ne fait pas le Bloc-notes de Windows), elle ne
possde pas dautre aide en ligne que les info-bulles.

649

<
:

Prog VB6 FM3B Page 650 Lundi, 6. aot 2001 3:54 15

Partie III

Info

Cet exemple utilise Microsoft Word pour la cration des chiers daide. Vous
pourrez avoir utiliser un autre traitement de texte, suivant le contenu de
votre machine.

La Figure 20.3 montre un exemple dcran douverture de laide du Bloc-notes MDI


dans Word. Les phrases en soulignement double sont les sauts hypertexte qui safcheront en vert dans la fentre daide de lutilisateur. Le texte masqu tant afch, il est
soulign en pointill.
Figure 20.3
Lcran douverture
de laide du Blocnotes MDI contient
des sauts hypertexte.

Texte
soulign

Texte
masqu

Texte double
soulign

Saut de
page

La Figure 20.3 montre six chanes de contexte de phrases de saut : MDI_DEF,


CREATE_FILES, EDIT_TEXT, SEARCH_TEXT, CHANGE_OPTIONS, et MANAGE_WINDOWS. Il devra
donc y avoir au moins six autres pages aprs lcran douverture de laide. Ces pages
sont connectes leurs liens de saut hypertexte dorigine par un ou plusieurs des
symboles de note de bas de page. Le premier saut, MDI_DEF sera une dnition surgissante du terme MDI.
Le chier daide doit avoir une valeur dID de contexte pour que lapplication sousjacente puisse faire rfrence lcran douverture de laide si ncessaire. La
Figure 20.4 montre deux notes de bas de page cres pour le texte daccueil de laide.
Pour ajouter une note de bas de page, vous devez dplacer le curseur devant le premier
caractre du titre et, dans le menu Insertion, choisir Notes, Insrer notes de bas de page,

>
:

650

Prog VB6 FM3B Page 651 Lundi, 6. aot 2001 3:54 15

Chapitre 20 : Fournir de laide

puis taper # comme symbole personnalis pour indiquer lemplacement de la page du


saut hypertexte. Rptez ces tapes pour entrer la note $ pour le titre du lien au saut
hypertexte. Les deux symboles des notes de bas de page safchent gauche du texte et
dans la fentre infrieure de note de bas de page. Lapplication peut utiliser lID de
contexte daide pour rfrencer cet cran daide, et les outils de recherche du systme
daide afcheront le titre qui apparat gauche du symbole $.
Figure 20.4
La fentre daide
complte safche
dsormais lorsque
lID de contexte ou
le titre sont appels.

Titre du
sujet

ntion
Atte

ID de contexte
d'aide

Nutilisez pas le symbole de note de bas de page K dans la fentre douverture de laide.

Les paragraphes suivants vous montreront que le document RTF contient un type dID
de contexte diffrent de celui quattend Visual Basic. Vous devrez par consquent faire
correspondre les valeurs textuelles dID de contexte des valeurs numriques pour
quune application puisse utiliser laide contextuelle.

651

<
:

Prog VB6 FM3B Page 652 Lundi, 6. aot 2001 3:54 15

Partie III

Les sauts hypertexte daide restants doivent maintenant avoir des pages daides correspondantes, avec leurs notes de bas de page pour pouvoir tre connectes lcran
douverture. Le premier sujet daide crer est la dnition surgissante du terme MDI.
La page qui suit lcran douverture doit contenir les informations suivantes :

le titre MDI sur la premire ligne ;

une ligne de sparation ;

la dnition de MDI.

La note de bas de page de la Figure 20.5 complte la connexion entre cette page et le
lien correspondant de la page douverture en ajoutant un ID de contexte la
dnition.
Figure 20.5
La dnition surgira
grce lappel par
soulignement simple.

Titre de la
dfinition

Info

ID de contexte
d'aide

Le chier daide de la leon daujourdhui utilise, en gnral, le mme ID de


contexte daide (en majuscules) que le titre du sujet auquel il est li, mais ce
nest pas une obligation.

La Figure 20.6, enn, montre la premire partie des sujets des sauts hypertexte restants
de laide. La note de bas de page # connecte les sujets de saut hypertexte de la page
douverture aux pages suivantes.

>
:

652

Prog VB6 FM3B Page 653 Lundi, 6. aot 2001 3:54 15

Chapitre 20 : Fournir de laide

Figure 20.6
Les pages suivantes
sont maintenant lies
la page douverture
de laide.

ce
Astu

Toutes ces pages de sujets peuvent contenir des liens vers des pages supplmentaires (et entre elles) et aussi des dnitions surgissantes.

Ds que vous avez achev le chier daide RTF, enregistrez-le. Slectionnez bien le
format Texte mis en forme (RTF) lors de lenregistrement. Vous devez maintenant crer
le chier de projet daide en utilisant encore un autre type de chier Texte ASCII.
Word peut enregistrer dans ce format ; vous pouvez mme utiliser le Bloc-notes MDI
pour crer ce chier. Le chier de projet suivant a t utilis pour le chier daide
dcrit :

[OPTIONS]
contents=HID_CONTENTS
title=Aide du bloc-notes MDI
[FILES]
MDINote.rtf

La section [OPTIONS] dcrit lID de contexte de la page douverture de laide et le texte


de la barre de titre. La section [FILES] dsigne le chier daide compiler (vous devrez
indiquer un chemin si le chier se situe dans un rpertoire particulier). Entrez le nom du
chier daide RTF que vous venez de crer et denregistrer. Vous pouvez paramtrer
dautres options du projet daide partir du compilateur daide.
Enregistrez le chier de projet sous un nom de chier quelconque (le nom du chier de
lapplication est sans doute le meilleur choix). Utilisez lextension .HPJ.

653

<
:

Prog VB6 FM3B Page 654 Lundi, 6. aot 2001 3:54 15

Partie III

Vous devez excuter le compilateur daide partir du CD-ROM dinstallation de Visual


Basic, car il nest pas install avec Visual Basic. Pour excuter le systme daide, vous
devez effectuer les oprations suivantes :
1. Insrez le CD-ROM dinstallation de Visual Basic dans le lecteur.
2. Slectionnez loption Excuter du menu Dmarrage.
3. Excutez le programme HCW.EXE situ dans le dossier \Common\Tools. La
Figure 20.7 montre la fentre qui safche, avec une astuce utile.
Figure 20.7
La fentre
du compilateur daide
propose une astuce
pour dmarrer.

Aprs avoir lanc le programme Microsoft Help Workshop, chargez le chier de


projet daide compiler. Cliquez sur Compile dans la barre doutils et acceptez toutes
les valeurs par dfaut, pour dmarrer la compilation. Lisez les avertissements ou les
erreurs qui peuvent tre afchs la n de la compilation. Des avertissements qui
nont pas dincidence sur le fonctionnement du systme daide se produisent souvent,
mais il faut tenter de les liminer compltement pour abiliser votre chier daide
dans toutes les situations. Si des erreurs sont prsentes, le compilateur ne pourra pas
compiler le chier.
Une fois le systme daide compil, vous pouvez lexcuter pour tester les entres daide.
Vous apprendrez comment le connecter lapplication dans la section suivante, mais
vous pouvez dj suivre ces tapes pour tester le chier daide :
1. Dmarrez lexplorateur Windows.

>
:

654

Prog VB6 FM3B Page 655 Lundi, 6. aot 2001 3:54 15

Chapitre 20 : Fournir de laide

2. Recherchez le dossier contenant le chier daide.


3. Cliquez du bouton droit sur le chier daide et slectionnez Ouvrir. Le systme daide
en ligne de Windows dmarre et vous pouvez vrier votre chier.
La premire fentre ( laquelle vous pourrez revenir tout moment en cliquant sur
Sommaire) afche la page douverture de laide. La page Index prsente une liste
complte de toutes les notes de bas de page K qui rfrencent les sujets daide.

Afficher le fichier daide


Une fois le chier daide gnr, vous devez y connecter lapplication. Les ID de
contexte daide associent les divers sujets aux contrles et aux parties de lapplication.
Noubliez pas non plus dajouter une option de menu Aide an que lutilisateur puisse
appeler laide tout moment.
Le nombre de connexions daide varie beaucoup dune application lautre. Vous
pouvez utiliser la profondeur du chier daide et la complexit de lapplication pour
prvoir la quantit daide ncessaire aux utilisateurs. Le reste de cette section explique
quelques mthodes de connexion du chier daide aux applications. Visual Basic
supporte de nombreuses connexions aux chiers daide, mais cette section en dcrit les
plus courantes.

Bote de dialogue Proprits du projet


La bote de dialogue Proprits du projet, (voir la Figure 20.8) est le lien principal entre
votre projet et le chier daide. Elle garantit que le chier daide est connect lorsque
lutilisateur appuie sur la touche F1.
Info

Vous navez pas vous proccuper de modier la zone de texte ID de


contexte daide au projet. Un ID de contexte daide saisi ici dtermine la
page daide qui safche quand vous cliquez sur Aide dans la barre doutils
de cette application partir de lexplorateur dobjets.

Contrle Botes de dialogue communes


Vous avez pris soin de la partie la plus simple de la connexion au systme daide en
connectant la touche F1 la fentre douverture de laide. La fentre daide contiendra
votre chier daide, car les proprits de votre projet pointent sur ce chier. Pour ajouter
une aide contextuelle pour que, lorsque lutilisateur appuie sur F1, il obtienne de laide sur
le contrle ou la slection de loption de menu activ, vous devez effectuer quelques
tapes de plus.

655

<
:

Prog VB6 FM3B Page 656 Lundi, 6. aot 2001 3:54 15

Partie III

Figure 20.8
Connectez le chier
daide votre projet.

Slectionnez un nom de fichier

Vous avez dj vu, au Chapitre 9, comment utiliser le contrle Botes de dialogue


communes pour afcher diffrentes botes de dialogues comme Fichier Ouvrir ou
Imprimer. Maintenant que vous avez cr un chier daide, vous pouvez aussi utiliser ce
contrle pour afcher les crans daide interactifs.
Lorsque vous placez le contrle Botes de dialogue communes sur une feuille, paramtrez la proprit HelpFile, puis la mthode ShowHelp. Visual Basic lance le moteur
daide de Windows qui interprte le chier et propose les pages habituelles Sommaire,
Index et Rechercher.
ce
Astu

Vous pouvez limiter la capacit du moteur daide ne montrer que longlet


Sommaire, Index ou Rechercher en modiant la proprit HelpContext
(voyez laide en ligne pour en connatre les valeurs). Mais lusage veut
quon propose, en gnral, les trois.

Si vous proposez une aide contextuelle, vous devez indiquer au moteur daide quelle
page doit safcher quand lutilisateur slectionne laide. Vous devez, pour cela, modier le chier de projet de laide et faire correspondre aux ID de contexte textuels des ID
de contexte numriques.
Info

>
:

656

Si lutilisateur slectionne laide contextuelle sur un contrle o elle nest


pas correctement paramtre, Visual Basic afche la page Sommaire du
chier daide (la page douverture).

Prog VB6 FM3B Page 657 Lundi, 6. aot 2001 3:54 15

Chapitre 20 : Fournir de laide

Vous devez modier nouveau le chier de projet et faire correspondre des nombres
aux ID de contexte textuels. Pour cela, ajoutez une section [MAP] au chier de projet. Si
on considre le chier daide MDINote.rtf et le chier de projet associ dcrit plus tt,
voici une modication possible :

[OPTIONS]
contents=HID_CONTENTS
title=Aide du bloc-notes MDI
[FILES]
MDINote.rtf
[MAP]
HID_CONTENTS 1
MDI_DEF 2
CREATE_FILES 3
EDIT_TEXT 4
SEARCH_TEXT 5
CHANGE_OPTIONS 6
MANAGE_WINDOWS 7

Assurez-vous quil ny a pas deux numros dID de contexte identiques. La correspondance peut partir de 1, mais de nombreux programmeurs Visual Basic rservent des
sries de nombres pour reprsenter diffrents types de sujets daide. Par exemple, tous les
boutons de commande pourront avoir des numros compris entre 1 000 et 1 050. Les
numros nont pas tre en squence. Recompilez le projet pour incorporer la nouvelle
carte des informations dans le chier daide.
ce
Astu

Si vous manipulez Help Workshop, et que vous lisiez les crans daide pour
vous familiariser avec son fonctionnement, vous apprendrez comment la
fonction Map rend la mise en correspondance des ID de contexte uniques
plus rapide que leur modication par un diteur de texte.

Vous devez localiser tous les contrles et les feuilles auxquels vous voulez ajouter une
aide contextuelle. Par exemple, dans le Bloc-notes MDI, vous pouvez afcher la feuille
frmFind (qui supporte les options de recherche) et modier la proprit HelpContextID
du bouton de commande Find 5. Si vous vous limitez cette manipulation, les utilisateurs verront lcran douverture de laide quand ils appuieront sur F1 dans lapplication,
mais si le bouton Find est activ, ils verront alors la page Rechercher. Bien sr, vous
devrez ajouter des afchages daide contextuelle tous les autres contrles et mme
certaines feuilles, au bnce de lutilisateur.

657

<
:

Prog VB6 FM3B Page 658 Lundi, 6. aot 2001 3:54 15

Partie III

Info

ce
Astu

En ajoutant laide contextuelle aux contrles, vous risquez de trouver


dautres zones de lapplication qui demandent une aide. Vous aurez donc
faire plusieurs fois des ajouts au chier RTF avant quil ne fournisse un
support sufsant lapplication.
Lorsque vous ajoutez des pages daide, faites de votre mieux pour reprer
tous les endroits de votre application o lutilisateur risque den avoir
besoin. Une aide contextuelle, chaque fois quelle est propose, pargne
lutilisateur une recherche dans lindex ou le sommaire.

Le Listing 20.1 montre le code dafchage du sujet daide fourni par un ID de contexte
particulier. Vous pouvez incorporer ce type de code dans un bouton de commande ou
une option de menu pour proposer des sujets daide particuliers de votre chier daide.
Listing 20.1 : Vous pouvez afcher une aide contextuelle

cdbHelp.HelpFile = "MDINote.hlp" Pointe sur le fichier daide

Vous pouvez proposer une aide spcifique sur un sujet


particulier en pointant sur le numro de la section
[MAP] du fichier .HPJ (vos ID de contexte textuelles)
cdbHelp.HelpContext = 3 Pointe sur la section
cdbHelp.HelpCommand = cdlHelpContext Demande contextuelle
cdbHelp.ShowHelp
Affiche laide contextuelle

Ajout daide "Quest-ce que cest ?"


Maintenant que vous comprenez mieux comment crer un chier daide, vous pouvez
crer une aide "Quest-ce que cest ?". Vous devez ajouter une page daide pour chaque
fonction "Quest-ce que cest ?" que vous voulez supporter. Une fois les pages ajoutes
et connectes aux autres pages daide du systme laide des notes de bas de page
personnalises dcrites plus avant dans cette leon, vous devez faire correspondre des
ID de contexte numriques aux pages. Le moteur de laide "Quest-ce que cest ?"
utilise les numros dID de contexte pour dterminer la bonne fentre daide afcher.
Le secret de laide "Quest-ce que cest ?" tient en deux parties :

>
:

Vrier que la feuille supporte laide "Quest-ce que cest ?" en paramtrant les
proprits WhatsThisButton et WhatsThisHelp True.

Entrer lID de contexte de la page daide dans la proprit WhatsThisHelpID de


lobjet.

658

Prog VB6 FM3B Page 659 Lundi, 6. aot 2001 3:54 15

Chapitre 20 : Fournir de laide

Laide "Quest-ce que cest ?" de lapplication Bloc-notes MDI (si vous avez suivi les
sections prcdentes et cr un chier daide avec des pages utilisables) ne demande
que lexcution de ces tapes :
1. Ouvrez la fentre de projet et double-cliquez sur la feuille frmFind pour afcher la
bote de dialogue Find.
2. Assignez la valeur True aux proprits WhatsThisButton et WhatsThisHelp. Si vous
afchez ensuite cette feuille en excutant lapplication, vous verrez le bouton
"Quest-ce que cest ?"en forme de point dinterrogation sur la feuille.
3. Rptez cette assignation pour les deux autres feuilles de lapplication.
4. Recherchez dans la section [MAP] du chier de projet daide les numros dID de
contexte et assignez-les aux diverses options du menu (utilisez le Crateur de menus)
et aux objets feuilles qui peuvent ncessiter une description. Mme si le chier daide
est loin dtre achev, plusieurs des pages daide fonctionnent bien avec les objets, en
particulier les lments de la barre de menus.

En rsum
Ce chapitre vous a expliqu comment incorporer laide vos applications. Plusieurs
formes daides sont disponibles sous Visual Basic. En utilisant laide HTML ou le
moteur daide WinHelp de Windows, vous pouvez crer un systme complet de sauts
hypertexte avec des pages interconnectes et des dnitions surgissantes. Les utilisateurs peuvent obtenir des pages daide contextuelles particulires en appuyant sur F1.
Le contrle Botes de dialogues communes vous assiste dans la fourniture de laide, et
permet aux utilisateurs de recevoir de laide en appuyant sur un bouton.
Lajout daide contextuelle permet aux utilisateurs de trouver laide dont ils ont besoin.
Vous pouvez assigner une aide contextuelle diffrents objets pour quun texte particulier safche quand lobjet est slectionn et que lutilisateur appuie sur la touche F1.
La caractristique daide contextuelle vite aux utilisateurs davoir rechercher dans
lindex chaque fois quils ont besoin daide.
Deux fonctions daide simples qui peuvent tre ajoutes rapidement sont les info-bulles
et laide "Quest-ce que cest ?". Les info-bulles sont trs simples et ne demandent que
lajout du texte afcher dans la fentre Proprits. Avant de pouvoir assigner une aide
"Quest-ce que cest ?", vous devez crer un chier daide complet et assigner les divers
ID de contexte numriques aux objets.
Le chapitre suivant conclut votre formation de 21 jours en vous montrant comment tester,
dboguer et distribuer votre application.

659

<
:

Prog VB6 FM3B Page 660 Lundi, 6. aot 2001 3:54 15

Partie III

Questions-rponses
Q Pourquoi ne puis-je pas crer les chiers daide une fois que mon application
est acheve ?
R Vous devez pouvoir le faire. Cest ce que vous avez fait aujourdhui avec lapplication Bloc-notes MDI. Cependant, vous saisissez mieux les tenants et les aboutissants
de votre application au moment o vous la crez. Vous proposerez donc une
meilleure aide si vous crez les info-bulles, les aides "Quest-ce que cest ?" et les
chiers daide pendant la ralisation de votre projet. Vous pouvez laisser le traitement
de texte ouvert dans une seconde fentre et y basculer (en utilisant la combinaison de
touches Alt-Tab) lorsque vous voulez ajouter des lments.
Q Pourquoi lajout daide dans les chiers est-il si lourd ?
R La lourdeur vient du fait que vous devez garantir la connexion de tous les liens
hypertexte au bon sujet, que tous les sujets qui doivent tre traits le sont bien, et que
vous utilisez un format correct dans le chier daide RTF. Bien sr, le compilateur
daide reprera les chiers daide mal formats, et vous pourrez les dboguer. En
fait, au cours de llaboration et du test de lapplication, vous pouvez compiler aussi
le chier daide pour quil reste en phase. La cration incrmentielle dun chier
daide rend le processus gnral un peu moins lourd.
Il existe de nombreux outils de cration daide, et vous pouvez les utiliser pour
ajouter de laide aux programmes Visual Basic en vitant la lourdeur de la cration
des chiers RTF ou HTML. Nutilisez laide HTML que si vous tes certain que vos
utilisateurs disposent dun navigateur Internet compatible pour lafcher.
Lutilisation de ces programmes visuels de conception daide rendra beaucoup plus
souple la cration de vos chiers daide. En outre, vous viterez nombre des erreurs
de saisie commises naturellement avec lapproche RTF. Ces programmes vous
permettent aussi de crer des diagrammes daide qui montrent comment se connectent les sauts hypertexte et rduisent donc la quantit de programmation RTF que
vous devez effectuer pour crer le chier daide.
Q Pourquoi ne pas utiliser ces outils et sauter ce chapitre ?
R Visual Basic supporte laide en ligne dcrite dans cette leon, mais aussi beaucoup
dautres comme laide HTML. Vous pouvez utiliser des outils dautres fournisseurs
pour faciliter la cration de laide et, si vous dveloppez de nombreuses applications,
vous les tudierez srement de plus prs. Cependant, vous avez commenc avec
Visual Basic et il contient tous les outils ncessaires, part lditeur RTF, pour crer
le support daide dcrit aujourdhui. De plus, tous les utilisateurs ne disposent pas
de navigateur Web pour afcher laide HTML ; elle nest donc pas destine aux

>
:

660

Prog VB6 FM3B Page 661 Lundi, 6. aot 2001 3:54 15

Chapitre 20 : Fournir de laide

applications universelles, sauf exiger linstallation du navigateur pour que votre application fonctionne. En crant des chiers daide par la mthode " lancienne"
tudie aujourdhui, vous en avez appris beaucoup sur le mode de fonctionnement
du systme daide et vous pouvez apprcier la complexit dun systme hypertexte.
Une bonne partie de la lourdeur ne vient cependant pas de cette approche par chier
RTF, mais de la conception mme du systme daide. Plus il sera complet et
complexe, mieux les utilisateurs apprcieront votre application. Mais des systmes
daide aussi complexes ne sont pas vidents crer, cest pourquoi il est utile de
crer laide en mme temps que lapplication pour vous assurer que vous lui donnez
laide quelle mrite.

Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension des lments traits, ainsi que des exercices qui vous permettent de mettre en
pratique ce que vous avez appris. Essayez de comprendre les questions et les exercices
avant de passer la leon suivante. Les rponses se situent lAnnexe A.

Quiz
1. Quel format de chier devez-vous utiliser pour crer le chier daide en ligne ?
2. Comment les sauts hypertexte peuvent-ils amliorer un systme daide ?
3. Quel est le symbole personnalis de note de bas de page utilis pour crer des dnitions surgissantes lies au texte soulign de la page daide ?
4. Citez quelques caractristiques du chier de projet daide.
5. Une fois un chier daide compil, comment pouvez-vous lattacher une application pour quil safche quand lutilisateur appuie sur F1 ?
6. Comment connectez-vous laide contextuelle aux sujets du chier daide ?
7. Laide contextuelle utilise les ID de contexte textuelles du chier daide. Vrai ou
faux ?

661

<
:

Prog VB6 FM3B Page 662 Lundi, 6. aot 2001 3:54 15

Partie III

8. Quelle est la diffrence entre laide "Quest-ce que cest ?" et les info-bulles ?
9. Comment ajouter le bouton "Quest-ce que cest ?" aux feuilles ?
10. Vous pouvez proposer laide "Quest-ce que cest ?" sur les feuilles comme sur les
objets de feuilles (indice : vriez les proprits de la feuille). Vrai ou faux ?

Exercice
Ajoutez une aide "Quest-ce que cest ?" tous les objets du Bloc-notes MDI. Cette
tche peut sembler lourde (elle lest un peu), mais vous arriverez vite matriser le
travail sur les aides "Quest-ce que cest ?", les ID de contexte et les pages daide.

>
:

662

Prog VB6 FM3B Page 663 Lundi, 6. aot 2001 3:54 15

Chapitre

21

Distribution
de vos applications
La leon daujourdhui montre comment tester, dboguer et distribuer vos applications
Visual Basic. Une application nest jamais acheve ; vous pouvez toujours y ajouter
dautres caractristiques et, trs souvent, des erreurs apparaissent bien aprs que vous
pensez les avoir toutes extirpes. La maintenance sur le long terme fait donc partie intgrante du processus de programmation. Tout au long des leons prcdentes, ce didacticiel a propos des astuces pour vous aider mieux documenter votre code et rduire
les problmes de maintenance.
Une des meilleures manires de le faire est de dboguer et de tester minutieusement vos
applications avant de les distribuer. Cette leon dcrit quelques outils de dbogage fournis par Visual Basic, comme des procdures de test quil peut tre utile de faire subir
vos applications avant de les distribuer.
Nous voici la n de ce cycle de 21 jours. Une fois cette leon termine, considrezvous comme laurat de lUniversit Visual Basic 6 avec un diplme en Techniques de
programmation et, plus important, prenez rang comme conseiller Visual Basic. Vous
devrez alors pratiquer le dveloppement autant que vous le pouvez pour affter les
comptences acquises au cours de ces leons.

663

Prog VB6 FM3B Page 664 Lundi, 6. aot 2001 3:54 15

Partie III

Vous apprendrez aujourdhui :

les types de bogues quun programme peut gnrer ;

comment localiser les bogues en rdigeant le code, ;

les nombreuses fentres de dbogage, ;

comment utiliser le mode pas pas du dbogueur pour localiser des parties spciques du programme durant lexcution ;

les divers points darrt ;

comment crer une routine dinstallation de votre application ;

comment utiliser lassistant Empaquetage et dploiement, ;

limportance de linstallation de lapplication.

Dbogage et tests
Toutes les applications ont besoin dtre testes. Trop de bogues peuvent sintroduire
durant les tapes de programmation. Lorsque vous testez une application, vous lui faites
passer une batterie de cas. Pendant les tests, entrez des valeurs extrmes et alatoires
dans tous les contrles de saisie utilisateur pour vous assurer que lapplication peut
grer des valeurs en dehors de la plage classique. Vous trouverez presque toujours des
bogues durant la phase de test.
Le dbogage se droule en trois tapes :
1. Dterminer les bogues problmes et leur emplacement.
2. Corriger les bogues.
3. Tester nouveau lapplication pour sassurer que les bogues sont limines.
Les bogues vont du lger, comme une erreur dorthographe ou dalignement de texte, au
grave, par exemple, une application qui termine la session Windows et cause une perte
des donnes. Pour lutilisateur, une bogue est tout ce qui ne correspond pas aux rsultats
attendus ou qui empche lapplication de sexcuter.
Les programmeurs ont faire face de nombreux problmes dans leur recherche des
bogues. Il vous appartient de dcider du moment o vous pensez avoir trouv toutes les
bogues quil vous tait possible de dtecter. Vous devez tester et tester encore pour
garantir que les bogues ont t limines et ne se produisent plus. Une planication
attentive avant, pendant et aprs le processus de codage aide rduire le temps pass
dboguer les applications.

>
:

664

Prog VB6 FM3B Page 665 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

ce
Astu

Il est prfrable de dvelopper et de tester vos applications dans lenvironnement de dveloppement de Visual Basic, qui contient des outils de dbogage
aidant pister et reprer les erreurs. Ce nest quune fois satisfait du
rsultat des tests que vous pouvez compiler et distribuer vos applications aux
utilisateurs.

Windows et le puissant environnement de dveloppement de Visual Basic vous aident


localiser les erreurs. Quand vous excutez une application, Visual Basic peut trouver
une erreur durant la compilation ou la prparation lexcution dun programme
(comme un mot mal orthographi) et afcher un message derreur, comme celui que
montre la Figure 21.1.
Figure 21.1
Visual Basic aide
reprer les bogues.

Cette instruction est incorrecte

Si, lors de lexcution dune application, vous voyez un message de ce type avant que la
premire feuille safche lcran, vous avez peut-tre fait une erreur de syntaxe dans
votre code. Le message derreur indique rarement Erreur de syntaxe, mais si elle sest
produite la suite dune erreur dorthographe ou de grammaire, cest bien le cas.
ition
Dfin

Une erreur de syntaxe est une erreur dorthographe ou de grammaire dans


un langage de programmation.

665

<
:

Prog VB6 FM3B Page 666 Lundi, 6. aot 2001 3:54 15

Partie III

Remarquez que Visual Basic ne sest pas content, la Figure 21.1, de signaler lerreur,
mais quil en a aussi indiqu lemplacement dans la fentre de code. Mme si cette
dernire est ferme lors de lexcution du programme, Visual Basic met lerreur en
surbrillance. Le problme ici est une instruction End incorrecte. Aprs avoir corrig
lerreur de syntaxe, vous pouvez cliquer sur Excuter dans la barre doutils pour reprendre
lexcution partir de lerreur corrige.
Si la case Vrication automatique de la syntaxe est coche dans longlet Editeur de la
bote de dialogue Options (slectionne par Outils, Options), Visual Basic vrie les
erreurs de syntaxe pendant que vous saisissez les instructions dans la fentre de code.
Certains programmeurs prfrent cependant avoir plus de libert au moment de la
conception pour pouvoir parpiller ici et l des instructions partielles quils compltent
plus tard. Mais ce code incomplet peut conduire des erreurs si vous ntes pas attentif :
vous pouvez oublier de corriger une instruction. Il y a pourtant des moments o il est
souhaitable de complter plus tard les trous, par exemple sil faut dabord vrier avec
lutilisateur une rponse une question de conception.
Si vous dsactivez la vrication automatique de la syntaxe, Visual Basic ne vrie plus
les erreurs de programmation, telle quune parenthse manquante, tant que vous
nexcutez pas le programme. De toutes faons, Visual Basic localise ce type derreur
par un message (voir Figure 21.1), mais loption Vrication automatique de la syntaxe
vous laisse le choix du moment o vous voulez tre prvenu.
Des erreurs plus complexes apparaissent lors de lexcution de lapplication. Une erreur
de syntaxe est facile dtecter, Visual Basic le faisant pour vous. Une erreur dexcution est plus difcile reprer et corriger. Voyez lerreur de la Figure 21.2, qui met en
cause la logique du programme. Il ny a pas de message derreur, mais dans le champ o
le nom doit safcher, on trouve une adresse. A lvidence, un champ dadresse a t
charg la place dun champ nom. Visual Basic ne sait pas que cest anormal, car il
se contente de suivre les ordres du programmeur, mme sil en rsulte des erreurs de
logique.
Une erreur de logique repre demande larrt du programme. Visual Basic ne sait pas
la reconnatre et interrompre lexcution comme il le fait avec les erreurs de syntaxe)
Vous devez ensuite localiser le problme.
Pour cela, vous devez rechercher dans le code de votre programme lendroit o cette
erreur de logique peut se situer, puis la corriger. Si le problme concerne lapparence
dune feuille ou dun contrle lcran, vous devez rechercher toutes les rfrences
cet objet. LExplorateur dobjets peut souvent vous aider trouver le code particulier
attach un objet.

>
:

666

Prog VB6 FM3B Page 667 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

Figure 21.2
Visual Basic ne peut
pas reprer des
erreurs de logique.

C'est une
erreur de
logique

Visual Basic peut dtecter certaines erreurs de logique si elles rsultent dune impossibilit. Par exemple, la Figure 21.3 montre ce qui se passe si un programme demande
Visual Basic de diviser un nombre par zro. Cette opration ntant pas mathmatiquement nie, Visual Basic est incapable de faire ce calcul, mme sil ny a pas derreur de
syntaxe. Il interrompt alors lexcution et afche une description de lerreur dans une
bote de message.
Figure 21.3
Certaines erreurs
de logique demandent
Visual Basic
deffectuer quelque
chose dimpossible.

Ds que Visual Basic ralise que le programme demande une tche impossible, il afche
la fentre de code et signale lendroit approximatif o la division par zro sest produite.
Vous pouvez cliquer sur Aide dans la bote de dialogue pour avoir une aide supplmentaire concernant le message. Cliquez sur Fin pour terminer lexcution ou sur Dbogage
pour entrer dans le mode dbogage de Visual Basic.

667

<
:

Prog VB6 FM3B Page 668 Lundi, 6. aot 2001 3:54 15

Partie III

ce
Astu

Remarquez que la division par zro gnre le code derreur 11 (voyez le


message derreur de la Figure 21.3). Vous pouvez tester les erreurs dans
lobjet systme Err.Number. Si vous souponnez quun calcul peut entraner
une division par zro, du fait dune donne manquante, vous pouvez
drouter cette erreur par une instruction On Error Goto. Si Err.Number est
11, vous pouvez informer lutilisateur quil manque une donne dans la
feuille au lieu de le laisser dubitatif devant un message derreur.

Le dbogueur
Lenvironnement de dveloppement de Visual Basic comprend un outil de dbogage qui
permet deffectuer les tches suivantes.

Analyser le contenu des variables lors de lexcution.

Interrompre le programme sur nimporte quelle instruction et repartir quand vous


tes prt.

Positionner des points darrts dans le code pour interrompre automatiquement


lexcution du programme.

Modier le contenu des variables en cours dexcution pour tester lapplication.

Ajouter une variable espion qui interrompt lexcution du programme quand elle
reoit une valeur ou une plage de valeurs particulire.

Sauter des instructions que vous ne voulez pas excuter durant un test.

Utiliser la fentre des sorties de lobjet Debug pour imprimer des valeurs durant
lexcution dun programme. La fentre de dbogage permet de capturer des sorties,
comme des valeurs de variables, sans dranger la fentre feuille normale.
Vous pouvez entrer dans le mode dbogage et avoir accs toutes les fonctions du
dbogueur (situes surtout dans le menu Dbogage) quand vous :
appuyez sur Ctrl-Break pour interrompre lexcution du programme ;
recevez une bote de message derreur lexcution ;
atteignez lexcution un point darrt positionn ;
cliquez sur une instruction du programme, puis partir du menu Dbogage, choisissez Excuter jusquau curseur pour excuter normalement le programme.
Visual Basic linterrompt et entre en mode dbogage ds que lexcution atteint le
curseur.

>
:

668

Prog VB6 FM3B Page 669 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

Positionner des points darrt


Un des points darrt les plus simples est lexcution jusquau curseur. Pour le tester,
chargez lapplication Controls situe dans le dossier des exemples. La feuille de test des
boutons, frmButton, modie un feu tricolore quand lutilisateur clique sur le bouton de
commande. Si vous suspectez le code de ne pas changer correctement le signal, vous
pouvez cliquer sur la premire instruction excutable de la fonction ChangeSignal() dans le
module standard et slectionner Excuter jusquau curseur dans le menu Dbogage. (Ne
slectionnez pas un commentaire, car on ne peut pas y positionner de point darrt.) Le
programme dmarre normalement, il sarrte au point darrt et met la ligne en surbrillance.
Ce nest pas une interruption dnitive. Jusqu ce point, toutes les variables du
programme ont t initialises, le code sest excut et les rsultats sont disponibles. Si
une sortie se produit avant que la position du curseur soit atteinte (ce qui est le cas ici
avec lafchage de la feuille), vous en voyez normalement le rsultat. Le programme,
comme lindique la barre de titre de Visual Basic, est en tat darrt. La ligne surligne
en jaune est la ligne o se situait le curseur quand vous avez choisi Excuter jusquau
curseur dans le menu Dbogage.
Le Listing 21.1 montre la procdure o cet exemple particulier sest arrt.
Listing 21.1 : Vous pouvez analyser les procdures individuelles un point darrt

1: Private Sub ChangeSignal()


2:
Check to see what color the light is, and then change
3:
it to the next color. The order is green, yellow,
4:
and then red.
5:
If imgGreen.Visible = True Then
6:
imgGreen.Visible = False
7:
imgYellow.Visible = True
8:
ElseIf imgYellow.Visible = True Then
9:
imgYellow.Visible = False
10:
imgRed.Visible = True
11:
Else
12:
imgRed.Visible = False
13:
imgGreen.Visible = True
14:
End If
15: End Sub

Le feu ne fonctionne peut-tre pas, car plus dune couleur est afche en mme temps.
Vous pouvez consulter les valeurs en cours des proprits Visible des trois signaux
possibles (imgGreen, imgYellow et imgRed) pour vous assurer quun seul est True lorsque
la procdure dmarre.

669

<
:

Prog VB6 FM3B Page 670 Lundi, 6. aot 2001 3:54 15

Partie III

Voir le contenu dun contrle (ou mme dune variable) na jamais t aussi simple.
Comme le montre la Figure 21.4, tout ce que vous avez faire est de positionner le
pointeur de la souris dessus.
Figure 21.4
Visual Basic afche
toutes les valeurs
de contrles et de
variables quand le
programme sarrte
avec le dbogueur.

imgYellow.Visible est Faux

En vriant les trois valeurs et ne trouvant quune seule True, vous dterminez que le
problme ne rside pas dans la procdure ChangeSignal(). Vous devrez rechercher plus
avant dans le code pour voir o les signaux ont t mlangs (cest une supposition pour
notre exemple). En arrtant lexcution diffrents endroits et en analysant les variables
et les contrles, vous pouvez dterminer si les valeurs sont ce quelles devraient tre.

Retracer vos pas


Avant daller plus loin, afchez la barre doutils Dbogage : dans le menu Afchage,
choisissez Barres doutils, puis Dbogage. (Vous pouvez la laisser otter ou la placer
dans la bande des barres doutils.) Lorsque vous avez besoin de savoir comment le
programme est parvenu au point darrt, vous pouvez utiliser une des fonctions de
dbogage les plus utiles : la Pile des appels. Cliquez sur le bouton correspondant de la
barre doutils. La bote de dialogue Pile des appels safche et montre le cheminement
de votre programme, procdure par procdure, jusqu sa position actuelle (voir
Figure 21.5).

>
:

670

Prog VB6 FM3B Page 671 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

Figure 21.5
Utilisez la bote
de dialogue Pile
des appels pour suivre
les procdures
du programme qui
sont excutes.

Barre d'outils Dbogage

Info

ition
Dfin

Si vous voyez une entre de pile libelle [<Code Non-Basic>], lexcution


sest produite partir dune autre source, comme cela se passe quand le
code fait des appels lAPI Windows.
LAPI Windows (Application Programming Interface) est un ensemble de
procdures internes Windows que vous pouvez appeler depuis des langages comme Visual Basic ou Visual C++ quand vous avez besoin demprunter
une routine ou de dclencher une fonction partir de Windows. Le
dbogueur de Visual Basic na pas la capacit ni lautorisation (de par les
protections systme de Windows) de suivre la trace des procdures du
systme dexploitation.

Pour afcher une des procdures de la bote de dialogue Pile des appels, double-cliquez
sur lentre correspondante. Vous ne voyez pas alors uniquement des instructions, mais
aussi des valeurs actives, car lapplication est toujours en tat darrt. Vous pouvez donc
lire les valeurs de tous les contrles, les variables, et les constantes nommes dans les
diverses procdures.

671

<
:

Prog VB6 FM3B Page 672 Lundi, 6. aot 2001 3:54 15

Partie III

Avancer pas pas dans le code


A tout point darrt, vous pouvez cliquer sur Pas pas dtaill pour excuter linstruction
suivante du programme (mme si cest un appel une autre procdure).
La barre doutils Dbogage contient trois boutons de pas pas. Le Tableau 21.1 dcrit
comment les utiliser. Vous pouvez ne pas souhaiter avancer pas pas sur toutes les
instructions dune application : ces trois boutons vous donnent une certaine libert pour
dnir comment vous voulez que votre programme continue.
Tableau 21.1 : Les modes pas pas dterminent comment votre application
doit continuer
Mode pas pas

Description

Pas pas dtaill

Excute linstruction suivante. Mme si elle se situe dans une autre


procdure (ou quelle renvoie vers une procdure prcdente), elle est
excute et le curseur sy place. Vous pouvez donc parcourir toute
lapplication instruction par instruction en appuyant continuellement sur
F8.

Pas pas principal

Excute linstruction suivante moins que ce ne soit un appel une autre


procdure. Dans ce cas, la nouvelle procdure sexcute entirement, et
lexcution sarrte linstruction qui suit lappel de procdure.

Pas pas sortant

Termine lexcution de la procdure en cours, puis lexcution sarrte


la premire instruction en dehors de la procdure.

Info

ce
Astu

Vous pouvez naturellement, tout point darrt, cliquer sur Continuer pour
que lexcution se poursuive de manire normale. Si des points darrts sont
positionns plus loin, lexcution sy arrte. Sinon, le programme se
comporte normalement, comme sil navait jamais t interrompu.
Vous pouvez arrter le mode Dbogage tout moment en cliquant sur Fin
dans la barre doutils de Visual Basic ou en slectionnant Fin dans le menu
Excution.

Points darrt multiples


Lors de lexcution de votre application, vous pouvez souhaiter positionner en chemin
des points darrt pour vous permettre dtudier les variables et les contrles en cours
dexcution. Par exemple, si vous observez des problmes que vous voulez pouvoir

>
:

672

Prog VB6 FM3B Page 673 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

analyser la prochaine excution, vous pouvez ajouter un point darrt en cliquant sur
Basculer le point darrt dans la barre doutils Dbogage sur linstruction surligne.
Vous pouvez positionner plusieurs points darrt sur dautres lignes partout dans le code
en cliquant sur ce bouton. Quand vous atteignez un point darrt (signal par un
surlignement rouge) positionn dans une session prcdente, mais dont vous navez plus
besoin, cliquez nouveau sur Basculer le point darrt sur cette ligne pour le supprimer.
Vous pouvez aussi cliquer sur la gauche dune instruction pour ajouter ou supprimer un
point darrt.
ntion
Atte

Vous ne pouvez positionner les points darrts que sur les lignes excutables.
Il est impossible de positionner des points darrts sur les instructions de
dclaration de types de variables utilisateur ou de commentaires.

Fentre de dbogage
A tout point darrt, vous pouvez afcher la fentre de dbogage pour travailler en
dehors de lenvironnement du programme. La fentre de dbogage est souvent nomme
fentre Excution. Quand vous cliquez sur le bouton correspondant dans la barre
doutils Dbogage, elle souvre en bas de votre fentre de code (dans sa position
range), ou elle peut otter sur lcran.
ition
Dfin

La fentre Excution (nom de la fentre de dbogage) est une fentre de


lenvironnement Visual Basic dans laquelle vous pouvez afcher des valeurs
du programme et des messages durant lexcution du programme. En
envoyant des messages la fentre Excution, vous pouvez lire des messages
davancement de lexcution de lapplication en utilisant la mthode
Debug.Print. Ces messages ninterfreront pas avec les sorties normales du
programme.

Vous pouvez taper toute instruction Visual Basic dans la fentre Excution et voir le
rsultat immdiatement. Une des mthodes de dbogage les plus courantes est Print,
qui imprime les valeurs des variables et les proprits de contrles. Print envoie les
sorties vers diffrents objets (pas uniquement vers une imprimante ou une feuille), dont
la fentre Excution. La Figure 21.6 montre la valeur dun objet et illustre le fait que les
valeurs avec lesquelles vous travaillez sont des valeurs actives, congures par la partie
de lapplication excute jusquau point darrt. Vous pouvez aussi imprimer le rsultat
dune expression ou mme modier la valeur dune variable en cours dexcution. Dans ce
cas, le reste du programme utilise cette nouvelle valeur la place de la valeur assigne
lorigine par le code. Vous pouvez ainsi observer chaud le rsultat.

673

<
:

Prog VB6 FM3B Page 674 Lundi, 6. aot 2001 3:54 15

Partie III

Figure 21.6
Utilisation de la fentre Excution pour
imprimer des valeurs
et modier les rsultats.

Valeur de
contrle

ce
Astu

Modification de la
valeur du contrle

Fentre Excution

Si la nature interactive de lenvironnement de dveloppement de Visual


Basic rend ce type de sortie moins importante quelle ne ltait dans les
environnements en mode caractres, vos programmes peuvent crire directement dans la fentre Excution en utilisant la mthode Print de lobjet
Debug. Si votre programme comprend une instruction comme Debug.Print
cmdN6xt.Caption, la sortie est afche dans la fentre Excution, o vous
pouvez la lire sans avoir interfrer avec les sorties normales de lapplication
dans la fentre feuille.

Fentre Variables locales


Si vous cliquez sur Fentre Variables locales dans la barre doutils Dbogage, Visual Basic
lafche (voir Figure 21.7). Elle montre les valeurs en cours de toutes les variables locales
de la procdure en excution (celle o se situe le point darrt actif), les variables et les
constantes globales. Laspect le plus utile de cette fentre est sans doute son afchage de
toutes les valeurs des contrles de feuille. Vous pouvez agrandir ou rtrcir lafchage pour
voir tous les dtails qui vous intressent.

>
:

674

Prog VB6 FM3B Page 675 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

Figure 21.7
La fentre Variables
locales montre toutes
les variables, locales
et globales, de la
procdure en cours.

Info

Si vous modiez une variable locale dans la fentre Excution, la valeur


change aussi dans la fentre Variables locales.

Outre le nom et la valeur, la fentre Variables locales afche le type de donnes de la


variable ou du contrle. Cliquez sur les points de suspension droite du nom de la procdure en cours dans la fentre Variables locales pour afcher la fentre Pile des appels.
Si vous cliquez sur une des procdures de la liste, la fentre afche alors les variables
locales de cette procdure.

Fentre Espions
Au cours du processus de dbogage, vous pouvez constater quune bogue ne se produit
que si une variable a une certaine valeur. Le problme peut parfois ne pas pouvoir tre
pist jusqu une instruction unique, vous devrez donc espionner une variable ou une
expression sur toute la procdure. Cest la raison dtre de la fentre Espions, dans
laquelle vous pouvez entrer des valeurs de variables ou dexpressions. Vous pouvez
congurer dans la fentre des valeurs espionner au moment de la conception ou de

675

<
:

Prog VB6 FM3B Page 676 Lundi, 6. aot 2001 3:54 15

Partie III

lexcution en cliquant sur Fentre Espions dans la barre doutils Dbogage. Utilisez
lune de ces deux mthodes pour ajouter des valeurs la fentre Espions :

A partir du menu Dbogage, choisissez Ajouter un espion pour afcher la bote de


dialogue correspondante (voir la Figure 21.8).

Cliquez avec le bouton droit sur la fentre Espions (qui doit tre afche en cliquant
sur son bouton dans la barre doutils Dbogage), puis choisissez Ajouter un espion
pour afcher la bote de dialogue.

Figure 21.8
Ajouter des valeurs
espionner dans
la fentre Ajouter
un espion.

Quand vous ajoutez une expression espionner, le contexte indique Visual Basic la
porte de lespion (o il doit le surveiller). Visual Basic peut espionner une procdure,
une feuille, un module ou tout le projet.
La zone Type despion vous permet de prciser la manire dont vous voulez que Visual
Basic ragisse la valeur espionne. Il peut afcher les donnes de lexpression et
arrter lexcution si une valeur est atteinte ou chaque changement. Lors dexcutions
ultrieures, Visual Basic actualise la fentre Espions en fonction des valeurs espionnes.
ce
Astu

Visual Basic comprend une fentre Espion express, qui permet dajouter des
valeurs espionner la vole sur un point darrt. Slectionnez la variable,
lexpression ou la proprit de contrle, puis cliquez sur Espion express dans
la barre doutils Dbogage. Vous pouvez aussi ajouter lexpression la fentre
Espion classique en cliquant sur Ajouter.
De nombreux programmeurs trouvent plus facile dutiliser lEspion express
sur un point darrt que de tenter de collecter toutes les valeurs espionner
au moment de la conception avec la bote de dialogue Ajouter un espion.

>
:

676

Prog VB6 FM3B Page 677 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

Distribution de votre application


Votre application est cre, teste et dbogue ; reste lempaqueter pour la distribuer.
Si elle est destine un usage personnel, vous naurez sans doute qu la compiler, puis
en copier les chiers dans le dossier o lexploiter. Vous pouvez utiliser la personnalisation du menu Dmarrage dans les Proprits de la Barre des tches de Windows
pour connecter lapplication dans votre structure de menu Dmarrage.
Pour que votre application soit utilise par dautres, vous devez automatiser linstallation an que tous les chiers du projet se situent la bonne place et que le programme
soit install dans le menu Dmarrage. Cette section explique comment distribuer une
application en utilisant lune des applications exemple fournies avec Visual Basic
comme guide.

Compiler une application


Visual Basic simplie la compilation de votre application. Le chier compil est un
excutable avec une extension .EXE. Tous les modules et feuilles apparents sont groups
pour former le chier excutable. Mme si des chiers auxiliaires peuvent toujours tre
ncessaires par exemple, un chier de base de donnes Microsoft Access utilis pour
les donnes initiales la plupart des chiers de votre projet se combinent dans lexcutable
pour que la distribution en soit plus simple.
Info

La distribution dune application compile est bien plus sre que celle des
sources. Si vous distribuez le code source (le projet et les chiers apparents), toute personne disposant de Visual Basic peut modier votre travail.
De plus, la plupart des utilisateurs ne pourront mme pas lutiliser, car ils
ne disposeront pas de Visual Basic pour charger et excuter le programme.
Un chier compil est donc ncessaire pour permettre tous dutiliser
lapplication.

Une application compile sexcute beaucoup plus vite que dans lenvironnement de
dveloppement de Visual Basic. Vous voulez que votre application sexcute avec
rapidit et souplesse sans que lutilisateur ait faire plus que le ncessaire ; le chier
compil simplie lexcution de lapplication.
Avant de compiler lapplication, assurez-vous de lavoir dbogue autant quil est possible. Vous ne pouvez pas dboguer une application compile avec le dbogueur de Visual
Basic, car elle sexcute hors de lenvironnement de dveloppement.
Une fois que vous pensez que votre programme sexcute aussi bien que possible, choisissez Fichier, Crer. Visual Basic afche la bote de dialogue Crer le projet (voir

677

<
:

Prog VB6 FM3B Page 678 Lundi, 6. aot 2001 3:54 15

Partie III

Figure 21.9). Slectionnez le dossier de destination de lapplication compile. Visual


Basic utilise par dfaut le nom du projet comme nom dexcutable.
Figure 21.9
Compilation
de lapplication
partir de la bote
de dialogue Crer
le projet.

Avant de cliquer sur OK pour lancer la compilation, cliquez sur Options pour afcher la
bote de dialogue Proprits du projet (voir Figure 21.10). Vous pouvez aussi y accder en
choisissant Proprits dans le menu Projet. Elle vous permet de spcier des informations
de version dans lapplication compile, toujours utiles, surtout si vous prvoyez de diffuser
plusieurs versions de votre application. Les numros de versions et les informations de
descriptions restent enregistrs dans le code source du projet, ce qui vous permet de grer
les diffrentes volutions.
Figure 21.10
Conguration
des options du projet
compil dans la bote
de dialogue
Proprits du projet.

>
:

678

Prog VB6 FM3B Page 679 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

La rubrique Icne dsigne licne de lapplication qui safche dans le menu


Dmarrage de Windows et dans le bouton de la Barre des tches. En gnral, vous laisserez le nom de la feuille principale dans ce champ, car la fentre Proprits de la feuille
contient une rubrique Icon dans laquelle vous pouvez choisir une icne pour la feuille et
donc, pour lapplication compile.
Cliquez sur longlet Compilation pour afcher la page des options de compilation (voir
Figure 21.11). Pour optimiser le projet compil et quil sexcute le plus vite possible,
slectionnez loption Compiler en code natif. (La compilation en P-Code ou pseudocode exige que lutilisateur dispose dune DLL Runtime Visual Basic un chier
dans le dossier Systme.) Le code natif est bien plus rapide et demande moins de
chiers, mme sil demande toujours la prsence dun chier DLL.
Figure 21.11
La page Compilation
contient les options de
compilation du projet.

Info

Si vous slectionnez des options dans la fentre qui safche quand vous
cliquez sur Optimisations avances, vous perdrez lavantage de certains
contrles lexcution, mais vous gagnerez en rapidit.

Quand vous cliquez sur OK, Visual Basic ferme la fentre des proprits et compile le
programme. Si aucune erreur de compilation ne se produit, Visual Basic cre le chier
.EXE (vous verrez ltat de la compilation dans le coin suprieur droit). Vous pouvez
quitter Visual Basic et excuter lapplication en slectionnant loption Excuter du menu
Dmarrage et en localisant le chier .EXE. Licne de feuille que vous avez slectionne
safche dans la Barre des tches quand vous excutez le programme.

679

<
:

Prog VB6 FM3B Page 680 Lundi, 6. aot 2001 3:54 15

Partie III

Lassistant Empaquetage et dploiement


Lassistant Empaquetage et dploiement excute de nombreuses tches votre place, dont :

La compilation de lapplication et la compression du chier.

La cration dun programme dinstallation pour installer lapplication.

La dtermination de la meilleure organisation des disquettes dinstallation, la cration des divers disques dinstallation et le dcoupage des chiers importants sur
plusieurs disquettes. Lassistant indique lavance le nombre de disquettes
ncessaires linstallation.

La copie de lapplication compile sur un disque dur pour que vous puissiez linstaller
sur un rseau ou sur un graveur de CD-ROM.

La conguration de lapplication pour sa distribution sur lInternet vers les utilisateurs dInternet Explorer.

Lassistant gnre une liste des diffrents chiers ncessaires linstallation. Un chier
Setup.exe unique nest pas la seule chose fournir dans la routine dinstallation. Une
application Visual Basic exige souvent des chiers DLL et OCX, qui doivent rsider sur
le support dinstallation (disquette ou disque) choisi avec le chier de lapplication
compile et le programme Setup.exe.
Avant de pouvoir excuter lassistant Empaquetage et dploiement, vous devez charger
votre projet, dbogu et compil. Lassistant le compilera une dernire fois au cas o
vous auriez fait des modications de dernire minute depuis la dernire compilation.
Lassistant ne fait pas partie de lenvironnement de dveloppement Visual Basic. Vous
devez le slectionner dans le menu Complments, Gestionnaire de complments. Une
fois charg, vous pouvez le lancer. La Figure 21.12 montre la fentre douverture.
La premire option de lassistant (certainement celle que vous choisirez la plupart du
temps) cre une routine Setup.exe standard que lutilisateur peut installer. Lassistant
peut prparer linstallation sur un disque dur, des disquettes, un graveur de CD-ROM ou
dans des chiers CAB spciaux que vous pouvez transmettre sur lInternet pour une
distribution en ligne. La seconde option envoie la routine dinstallation vers un serveur
Internet pour une installation distance de lapplication. Lassistant cre un chier
script qui dcrit la routine dinstallation. Lors de sessions ultrieures, vous pouvez
modier un script dj cr ou le recrer partir du projet dorigine. La troisime option
vous permet de grer les scripts dinstallation.
La premire option gnre la forme la plus courante de routine dinstallation, valable
pour la plupart des applications. Aprs avoir cliqu sur le bouton, vous verrez la fentre de la Figure 21.13. A moins que votre application nexige des chiers de contrles

>
:

680

Prog VB6 FM3B Page 681 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

ActiveX externes ou de bases de donnes, vous pouvez laisser la premire option


slectionne.
Figure 21.12
Lassistant
Empaquetage et
dploiement prpare
votre application
la distribution.

Figure 21.13
Dtermination du type
de produit crer.

ce
Astu

Pour installer un contrle ActiveX, slectionnez loption Fichier de dpendances an que lassistant puisse collecter les bons chiers dans lordre o
lapplication en a besoin.

681

<
:

Prog VB6 FM3B Page 682 Lundi, 6. aot 2001 3:54 15

Partie III

Cliquez sur Suivant pour afcher la bote de dialogue Dossier dempaquetage, qui
demande des informations de distribution. Lassistant doit savoir o assembler les
chiers dinstallation. Choisissez un rpertoire vide. Ainsi, vous saurez, quand lassistant
en a ni, que tous les chiers de ce dossier sont ceux quil a gnrs.
Lorsque vous cliquez sur Suivant, lassistant scrute votre projet pour dterminer les
chiers de programmes ncessaires votre application. Si votre application contient
des contrles de donnes, il ne peut pas savoir quels pilotes de base de donnes sont
requis. Vous verrez dans ce cas la bote de dialogue de la Figure 21.14. Copiez le
pilote requis dans la fentre de gauche.
Figure 21.14
Vous pourrez avoir
slectionner
les chiers daccs
aux donnes
manuellement
si votre application
lexige.

ntion
Atte

La bote de dialogue peut diffrer selon le type daccs aux donnes (ADO,
DAO, etc.) utilis par votre application.

Aprs que vous avez cliqu sur Suivant, lassistant collecte tous les chiers de lapplication spcis et afche la bote de dialogue illustre la Figure 21.15. Vriez que tous
les chiers ncessaires votre application y sont lists. Vous aurez ventuellement
ajouter (en cliquant sur Ajouter) dautres chiers, par exemple des chiers LisezMoi.txt
ou un chier de base de donnes, pour que la routine dinstallation les enregistre avec
lapplication dans le produit dinstallation.

>
:

682

Prog VB6 FM3B Page 683 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

Figure 21.15
Parcourez les chiers
pour vous assurer
que lassistant a bien
rassembl tous les
chiers ncessaires
au projet.

ntion
Atte

Soyez certains davoir les bons droits daccs tout contrle ActiveX que
vous distribuez avec votre application. Il se peut quune licence ne vous
autorise pas distribuer les contrles ActiveX que vous navez pas crs.
Consultez votre fournisseur de contrles ActiveX pour connatre les rgles
de distribution.

La bote de dialogue suivante demande des informations de distribution. Vous pouvez


crer un chier de distribution unique ou demander que la routine dinstallation soit
place sur plusieurs disquettes ou dautres types de support. Aprs avoir choisi le mode
de dcoupage des chiers dinstallation, cliquez sur Suivant pour afcher le titre de
lcran dinstallation. Saisissez le titre de votre projet, puis cliquez sur Suivant pour
afcher la bote de dialogue des icnes.
Dans cette bote de dialogue, vous crez le sous-menu qui safchera dans le menu
Dmarrage de votre PC. En cliquant sur Nouvel lment, vous afchez la bote de dialogue de la Figure 21.16, qui permet dajouter des lments lentre du menu
Dmarrage de cette application. Vous pouvez y ajouter un chier LisezMoi ou un
programme annexe (par exemple, un utilitaire systme).
Lcran suivant dtermine les chemins de destination de chacun des chiers installs. Si
la majorit des chiers seront copis dans le dossier slectionn par lutilisateur dans la
procdure dinstallation, ce que prcise la variable systme AppPath, vous pouvez slectionner des chiers particuliers dans la liste et les envoyer dans dautres dossiers, par
exemple le dossier Program Files (indiqu par la variable systme ProgramFiles).

683

<
:

Prog VB6 FM3B Page 684 Lundi, 6. aot 2001 3:54 15

Partie III

Figure 21.16
Vous pouvez
dterminer la manire
dont lapplication
se prsentera dans
le menu Dmarrage
de lutilisateur.

Info

Comme vous pouvez le voir, lassistant Empaquetage et dploiement


demande de prendre de nombreuses dcisions. Elles permettent cependant
davoir un contrle complet de lendroit et de la manire dont lapplication
arrive sur la machine de lutilisateur.

Cliquez sur Suivant pour slectionner tous les chiers que vous voulez dsigner comme
partags. Un chier peut tre partag non seulement par les utilisateurs (comme un
chier de base de donnes auquel lapplication a accs), mais aussi par dautres
programmes de lordinateur, comme ce peut tre le cas de contrles ActiveX contenus
dans votre projet. Dsignez les chiers partags en cochant la case correspondante.
Aprs avoir cliqu sur Suivant, vous verrez lcran de n de lassistant qui vous
demande le nom donner au script dinstallation. Crer un chier script vous vitera
davoir rpondre la longue liste des demandes de lassistant subie jusquici la
prochaine fois que vous crerez la routine dinstallation. De plus, vous pouvez modier
ce script sans avoir repasser par tous les crans dinstallation si quelque chose change
dans le processus dinstallation, par exemple la suppression dun chier partag.
Une fois que vous cliquez sur Terminer, lassistant cre le script dinstallation, la routine
dinstallation, puis la place dans un ou plusieurs chiers, suivant les options choisies.
Quand tout est termin, les chiers dinstallation sont sur votre machine, prts tre
distribus.

>
:

684

Prog VB6 FM3B Page 685 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

Aprs la gnration de linstallation


Une fois que lassistant a gnr la routine dinstallation, vous devez la tester, en excutant le programme gnr pour vous assurer quil ny a pas de bogues et que lapplication nale sexcute sans problmes.
ce
Astu

Pour tester srieusement la routine dinstallation, excutez le programme


dinstallation sur une machine qui na jamais contenu votre application.
Mieux, assurez-vous quil ny a pas mme une copie de Visual Basic installe. Tester votre application sur ce type de machine nettoye vous aide
garantir quelle sinstallera correctement sur dautres.

Lassistant Empaquetage et dploiement cre les chiers dinstallation lendroit spci lors du traitement. Vous y trouverez le chier Setup.exe, le chier Setup.lst (qui
contient la liste de tous les chiers lis linstallation) et, ventuellement, dautres
chiers dont lextension se termine par le caractre soulign (_). Ces chiers sont
compresss ; la routine dinstallation les dcompresse sur la machine de destination.
La mthode la plus simple pour tester la routine dinstallation gnre consiste choisir
Excuter partir du menu Dmarrage et de trouver le chier du programme Setup.exe.
Cliquez sur OK pour lancer linstallation. Une installation classique sexcutera.
Le programme analyse la machine de destination pour sassurer quil ny a pas de
programme en excution qui peut entrer en conit avec un chier installer. La
Figure 21.17 montre le dialogue davertissement afch si lutilisateur excute le
programme dinstallation pendant que dautres programmes utilisent certains des
chiers partags de la routine.

Figure 21.17
Lancement
du processus
dinstallation.

685

<
:

Prog VB6 FM3B Page 686 Lundi, 6. aot 2001 3:54 15

Partie III

Info

Si vous annulez le programme dinstallation avant la n de lexcution, il


supprime tous les chiers copis jusque-l, effaant donc toute trace de
linstallation de lapplication.

Dsinstaller lapplication
Lassistant Empaquetage et dploiement ne se contente pas de crer la routine dinstallation, il gnre aussi une routine de dsinstallation, connecte licne Ajout/Suppression de programmes du Panneau de conguration, qui permet lutilisateur de
dsinstaller lapplication tout moment. Pour supprimer lapplication du systme, il
suft de suivre ces tapes :
1. A partir du menu Dmarrage, slectionnez Paramtres, puis Panneau de conguration.
2. Double-cliquez sur licne Ajout/Suppression de programmes.
3. Slectionnez lapplication dans la liste des applications installes. Aprs avoir vri que lutilisateur souhaite supprimer lapplication, la routine prend la main et
supprime le programme et tous les chiers qui lui sont lis.
Les informations de dsinstallation sont enregistres dans le mme rpertoire que
lapplication. Le chier des instructions de suppression se nomme ST6UNST.LOG et il
contient tous les dtails ncessaires pour que lutilitaire systme Ajout/Suppression de
programmes puisse faire son ofce. Tous les chiers ne seront pas supprims, en particulier les chiers partags par dautres programmes. Avant de supprimer ces chiers
potentiellement ncessaires (comme les contrles ActiveX), lutilitaire de suppression
afche une bote de dialogue davertissement qui laisse lutilisateur le soin de dcider
sil faut ou non les supprimer.

En rsum
La leon daujourdhui a expliqu comment utiliser les puissants outils de dbogage de
Visual Basic. Apprendre comment dboguer une application devient rentable quand
vous avez pister des bogues. Si les outils de dbogage de Visual Basic ne peuvent pas
dtecter les erreurs de logique, le dbogueur simplie leur recherche. Vous pouvez
suivre la trace lexcution dun programme, positionner des points darrt et retrouver
le droulement de lexcution dun programme depuis le dbut.
Un des aspects les plus puissants du dbogueur est son interaction avec le programme
durant une session de points darrts. Quand votre programme atteint un point darrt,
toutes les valeurs initialises et calcules jusqu cet instant sont toujours actives. Vous
pouvez donc consulter les variables pour voir si leurs valeurs intermdiaires sont celles

>
:

686

Prog VB6 FM3B Page 687 Lundi, 6. aot 2001 3:54 15

Chapitre 21 : Distribution de vos applications

que vous attendez. Vous pouvez aussi changer la valeur dune variable ou dun contrle
au milieu de lexcution du programme et en voir les consquences sur la suite.
Une fois votre application dbogue, vous tes prt la distribuer. La distribution des
applications met en uvre plus quune simple compilation. Vous devez prendre en
compte la routine dinstallation et vous assurer que les utilisateurs auront tous les
chiers lis lapplication.

Questions-rponses
Q Puis-je dtecter toutes les erreurs de mon application lors de la rdaction du
code si je coche la case Vrication automatique de la syntaxe ?
R Lorsque vous tapez votre programme, cette option coche permettra certainement de
dtecter de nombreuses erreurs. Mais elle ne repre que les erreurs de syntaxe. Vous
pouvez encore faire des erreurs dexcution, comme des divisions par zro. La fentre de code ne peut pas dtecter ces erreurs.
Q Quelles sont les erreurs les plus simples dtecter ?
R Les erreurs de syntaxe sont les plus faciles reprer. Non seulement elles sont faciles
reprer, mais en plus Visual Basic le fait votre place. Si vous avez activ loption
Vrication automatique de la syntaxe, Visual Basic dtectera toutes les erreurs la
rdaction ou, dans le cas contraire, la premire excution. Les erreurs de logique sont
les plus difciles reprer, car Visual Basic na aucune ide dune anomalie. Vousmme ne ralisez pas toujours quil y a un problme au premier abord. Par exemple, si
un total de balance gnrale se trompe dun franc ou deux chaque jour, lutilisateur peut
ne pas remarquer lerreur pendant un certain temps, ce qui risque entre-temps daffecter
dautres donnes. Cest pourquoi il faut tester compltement son application.
Q Comment puis-je tester mon application avant de la distribuer ?
R La rponse dpend de la complexit de lapplication. Si elle gnre des dtails
cruciaux utiliss dans une prise de dcision, comme un compte-rendu de paye ou de
comptabilit, une des meilleures manires de la tester consiste effectuer un test en
parallle. Cest--dire, excuter votre application en parallle au systme actuel, que
ce soit un systme manuel ou une application informatique ancienne que vous remplacez. Comparez vos rsultats au systme en cours et faites faire la mme chose vos
utilisateurs. Ce nest quaprs avoir excut plusieurs cycles du systme en parallle
(ce qui peut prendre un mois ou deux dans le cas dune comptabilit), que vous aurez
la conance ncessaire pour remplacer le systme en cours par votre application.

687

<
:

Prog VB6 FM3B Page 688 Lundi, 6. aot 2001 3:54 15

Partie III

Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension des lments traits, ainsi que des exercices qui vous permettent de mettre en
pratique ce que vous avez appris. Essayez de comprendre les questions et les exercices
avant de passer la leon suivante. Les rponses se situent lAnnexe A.

Quiz
1. Quest-ce quune erreur de syntaxe ?
2. Quelle est la diffrence entre une erreur de syntaxe et une erreur de logique ?
3. Vrai ou faux. Certaines erreurs lexcution peuvent entraner larrt de lexcution
du programme.
4. Vrai ou faux. Certaines erreurs de syntaxe peuvent entraner larrt de lexcution
du programme.
5. Comment pouvez-vous analyser les variables pendant lexcution dun programme ?
6. Comment le mode pas pas peut-il vous aider dboguer un programme ?
7. Vrai ou faux. Vous pouvez changer les valeurs des variables et des contrles pendant
lexcution de lapplication.
8. Quel est le plus rapide : un programme compil ou un programme excut dans
lenvironnement Visual Basic ?
9. Quels sont les outils fournis par Visual Basic permettant de crer une routine
dinstallation de votre application ?
10. Que se passe-t-il si votre routine dinstallation est plus volumineuse que le contenu
dune disquette, mais que vous devez la proposer sur ce support ?

Exercices
1. Quel type derreur contient linstruction suivante ?
If (a < b) Therefore

lblTitle.Caption = "Trop petit"


End If

2. Vrai ou faux. La phrase suivante contient deux types derreurs (cette question
demande un peu de rexion) :
Cette phrase a deux erreurs.

>
:

688

Prog VB6 FM3B Page 689 Lundi, 6. aot 2001 3:54 15

Rsum de la Partie III

Flicitations, vous avez termin votre formation de programmeur Visual Basic ! Vous
comprenez dsormais pratiquement tous les domaines du systme Visual Basic. Vous avez
les moyens de produire presque nimporte quel type dapplication.
Tout ce dont vous avez maintenant besoin est dacqurir de lexprience.
Avec ce didacticiel et les Projets bonus, vous avez appris quoi ressemblent les journes
dun programmeur Visual Basic. La programmation Visual Basic est trs gratiante. Naturellement, les emplois de programmeurs sont nombreux pourvoir dans ce monde de
haute technologie, mais la satisfaction tire de la programmation ne saurait se limiter
une simple amlioration des revenus. En programmant avec Visual Basic, vous avez non
seulement le pouvoir de crer tout type dapplications Windows dont vous pourriez avoir
besoin, mais en outre, cela vous amusera. Et, plus important, Visual Basic noublie jamais
ses racines ; il sera l pour vous aider dboguer, ajouter du style aux programmes que
vous crivez et crer des excutables compils que vous pouvez distribuer pour permettre
dautres de bncier du travail que vous avez effectu.
Dans cette partie, vous avez appris matriser les points suivants :

Les modles de feuilles. Pourquoi rinventer la roue ? Utilisez les modles de


feuilles pour simplier lajout de feuilles standard vos applications (Chapitre 15).

Crer vos propres modles de feuilles. Si Visual Basic fournit plusieurs modles
de feuilles, vous pouvez aussi crer les vtres et les ajouter la collection propose
(Chapitre 15).

Modles de feuilles de lassistant Cration dapplications. Lassistant Cration


dapplications peut ajouter des modles de feuilles vos projets, mais vous devez
toujours en modier le code et les personnaliser pour quils se conforment aux
exigences de vos applications (Chapitre 15).

689

Prog VB6 FM3B Page 690 Lundi, 6. aot 2001 3:54 15

Partie III

>
:

Contrles OLE. LOLE (incorporation et liaisons dobjets) est un concept qui date
presque des origines de Windows. Dautres outils, tels ActiveX, sont actuellement sous
les feux de la rampe, mais de nombreux programmeurs travaillent encore avec des
contrles OLE pour incorporer des objets leurs applications (Chapitre 16).

Objets. Si certains puristes de la programmation sursautent en entendant dire que


Visual Basic est un langage orient objet, il supporte quand mme de nombreuses
constructions qui y sont apparentes (Chapitre 16).

Objets prdnis. Visual Basic dnit de nombreux objets, tels que Screen, Printer et App. Lors de lexcution de votre application, vous pouvez utiliser ces objets
prdnis pour en apprendre plus sur lenvironnement de lapplication
(Chapitre 16).

Objets externes. Vous avez un aperu des exigences pour accder aux objets qui
sont en dehors de lenvironnement Visual Basic, comme les valeurs dune feuille de
calcul Excel, partir de votre application Visual Basic.

Collections dobjets. Les collections dobjets vous permettent de travailler avec


plusieurs lments objets pris comme un groupe unique (Chapitre 16).

Contrles ActiveX. Un contrle ActiveX peut fonctionner de nombreux niveaux,


dun contrle de la fentre Bote outils de Visual Basic un programme dune
page Web (Chapitre 17).

Crer vos propres contrles ActiveX. Vous ntes pas oblig de vous limiter aux
contrles ActiveX fournis avec Visual Basic ou crs par dautres. Vous pouvez
crire les vtres et les utiliser dans vos projets (Chapitre 17).

Contrle Data. En ajoutant le contrle Data votre application, vous garantissez


vos utilisateurs non seulement laccs une base de donnes, mais aussi la possibilit de naviguer dans le chier et dy effectuer des modications (Chapitre 18).

Programmer des jeux de donnes. Aprs avoir appris quelques concepts simples,
vous comprenez ce qui est ncessaire pour grer une application de base de donnes
complte sous une interface Visual Basic (Chapitre 18).

Accs Internet. Ajoutez un navigateur Web dans vos applications (Chapitre 19).

Programmation Internet. Contrlez les traitements Internet dans votre application


Visual Basic (Chapitre 19).

Ajouter de laide. Donnez vos utilisateurs les accs laide dont ils ont besoin en
installant une base de donnes daide complte dans votre application (Chapitre 20).

Options daide. Visual Basic propose plusieurs moyens dajouter de laide vos
applications (Chapitre 20).

690

Prog VB6 FM3B Page 691 Lundi, 6. aot 2001 3:54 15

Rsum de la Partie III

Aide par info-bulles. A une petite chelle, les info-bulles peuvent tre utiles pour
lutilisateur qui utilise les barres doutils et les contrles de votre application
(Chapitre 20).

Dboguer le code. Le dbogueur interactif de Visual Basic simplie la recherche et


llimination des bogues du programme (Chapitre 21).

Compilation de lapplication. Avant de distribuer vos applications, il est prfrable


de compiler le code pour empcher sa consultation ou sa modication, et pour
permettre une excution plus rapide de lapplication (Chapitre 21).

Distribution du code. Vous pouvez simplier ou compliquer la vie de vos utilisateurs. Utilisez les outils de Visual Basic pour lempaquetage de vos applications en
une application distribuable, installable et blinde (Chapitre 21).

691

<
:

Prog VB6 FM3B Page 692 Lundi, 6. aot 2001 3:54 15

Prog VB6 FM3B Page 693 Lundi, 6. aot 2001 3:54 15

Chapitre

22

Tableaux
multidimensionnels
Au Chapitre 10, nous avons dj expliqu comment dclarer et utiliser les tableaux, qui
contiennent des listes de valeurs. Si vous devez garder la trace de plusieurs lments, vous
pouvez les mettre dans des variables diffrentes ou les enregistrer dans un tableau sous un
nom unique. Lavantage du tableau est de permettre de parcourir les variables laide
dune instruction de boucle, telle que For.
Visual Basic supporte plusieurs types de tableaux. Vous pouvez dclarer un tableau de
nimporte quel type de donnes pour contenir une liste de variables. Vous pouvez aussi
dclarer un groupe de contrles qui fonctionne comme un tableau de variables, et offre
lavantage de disposer de plusieurs objets de feuille sous le mme nom et avec un ensemble de proprits identiques. Chaque contrle du groupe na cependant pas obligatoirement les mmes valeurs de proprits. Vous pouvez parcourir un groupe de contrles
aussi simplement quun tableau de variables lorsque vous voulez travailler sur les contrles.
Cette leon supplmentaire fait avancer dun cran le concept de variables. Les tableaux
tudis jusquici taient des tableaux une dimension, nayant quun indice. Dans cette
leon, vous allez apprendre comment tendre ce concept la gnration de tableaux,
dits tableaux multidimensionnels. Ils sont souvent appels tables, et permettent denregistrer les valeurs sous forme de lignes et de colonnes. Le nombre de dimensions peut
dpasser deux pour crer des zones de stockage de donnes utiles.

693

Prog VB6 FM3B Page 694 Lundi, 6. aot 2001 3:54 15

Partie III

Une fois que vous aurez appris les tableaux plusieurs dimensions, vous tudierez le
contrle grille. Il contient des fonctionnalits permettant de prsenter efcacement les
donnes en deux dimensions ; le tableau deux dimensions tant le plus souvent utilis, le
contrle grille est alors pratique.
Vous apprendrez aujourdhui :

ce que sont les tableaux multidimensionnels ;

comment dclarer les tableaux multidimensionnels ;

les diffrentes manires dinitialiser les tableaux multidimensionnels ;

comment les boucles aident au traitement des tableaux multidimensionnels ;

les limites que pose Visual Basic sur les tableaux multidimensionnels ;

le contrle grille ;

comment les proprits du contrle grille dterminent le nombre de lignes et de


colonnes de la grille nale ;

les mthodes utilises pour assigner les donnes aux grilles ;

la proprit FormString ;

comment afcher des images dans les cellules de grille.

Introduction aux tableaux


multidimensionnels
Certaines donnes sadaptent un tableau une dimension (que vous avez tudi
jusquici), dautres un format de table. Les tableaux une dimension nont quun
indice. Ils reprsentent une liste de valeurs. La Figure 22.1 montre quun tableau une
dimension a une notion de longueur et de direction, exactement comme une ligne.
Info

>
:

694

Noubliez pas que les tableaux sont stocks dans la mmoire de votre
ordinateur sans aucune notion de la direction, illustre la Figure 22.1.
Lide de direction unique fonctionne cependant bien pour dmontrer la
nature linaire dun groupe dlments de tableaux. Si vous ajoutez une
dimension, vous ajoutez aussi une ide de direction supplmentaire, comme
vous le verrez dans un moment lorsque nous parlerons des tableaux deux
dimensions.

Prog VB6 FM3B Page 695 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Figure 22.1
Un tableau
une dimension a
une longueur
et une direction.

intArray

(0)

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

15

25

35

45

55

65

75

85

95

peut apparatre horizontalement


intArray
5
15
25
35
ou

45

peut
apparatre
verticalement

55
65
75
85
95

Le reste de cette leon explique comment utiliser les tableaux plus dune dimension,
dits tableaux multidimensionnels. Ils sont aussi nomms tables ou matrices et se composent
de lignes et de colonnes.
ition
Dfin

Un tableau multidimensionnel a plus dun indice et, par l mme, plus dune
dimension. Le nombre de dimensions dpend du nombre de directions. Un
tableau une dimension a une direction, un tableau trois dimensions a
trois directions, comme un objet dans lespace a une largeur, une longueur
et une hauteur.

Supposons quune quipe de handball souhaite suivre les buts marqus par ses joueurs.
Lquipe a jou huit matches, et il y a dix joueurs dans lquipe. Le Tableau 22.1 montre
lenregistrement des buts de lquipe.
Remarquez-vous que ce tableau a deux dimensions ? Il a des lignes (premire dimension)
et des colonnes (deuxime dimension). On parle donc dune table deux dimensions de
dix lignes et huit colonnes. (On dsigne, en gnral, les lignes en premier.) Une table
deux dimensions a donc deux directions horizontale et verticale. Comme les tableaux
une dimension, lenregistrement en mmoire des tableaux deux dimensions nest pas
littralement organis de cette manire, mais le langage Visual Basic permet de manipuler les donnes comme si elles taient enregistres en lignes et en colonnes.

695

<
:

Prog VB6 FM3B Page 696 Lundi, 6. aot 2001 3:54 15

Partie III

Tableau 22.1 : Le tableau des buts dune quipe de handball fonctionne bien
sous forme de table
Joueur

Partie 1 Partie 2 Partie 3 Partie 4 Partie 5 Partie 6 Partie 7 Partie 8

Adams

Berryhill

Edwards

Grady

Howard

Powers

Smith

Townsend

Ulmer

Williams

Info

ition
Dfin

Une matrice, comme un tableau une dimension, na quun nom. De plus,


une matrice ne peut contenir quun seul type de donnes le type de sa
dclaration. Si vous dclarez un type Variant pour la matrice, les cellules
peuvent contenir tous les types de donnes qui peuvent tre reprsentes par
le type Variant.
Une cellule est un lment dun tableau plusieurs dimensions. Dans un
tableau une dimension, une cellule est un lment de la liste, mais dans un
tableau deux dimensions (comme la liste des buts de lquipe de handball
du Tableau 22.1), une cellule se compose de lintersection dune ligne et
dune colonne.

Dans le Tableau 22.1, chaque ligne correspond au nom du joueur et chaque colonne
est associe une partie, mais ces en-ttes ne font pas partie du tableau. Les donnes ne
comprennent que quatre-vingts valeurs (dix lignes par huit colonnes). Dans ce cas, ce
sont des entiers. Si le tableau se compose de noms, cest un tableau de chanes de
caractres, etc.

>
:

696

Prog VB6 FM3B Page 697 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Le nombre de dimensions ici, deux correspond aux dimensions du monde


physique. La premire reprsente une ligne : un tableau une dimension reprsente une
ligne, ou une liste, de valeurs. Deux dimensions reprsentent la longueur et la largeur.
Vous crivez sur une feuille de papier en deux dimensions cest la reprsentation
dune surface plane. Trois dimensions reprsentent la largeur, la longueur et la hauteur.
Vous pouvez avoir vu des lms en 3D : les images ont non seulement une largeur et une
hauteur, mais elles donnent limpression davoir aussi une profondeur (impression qui
prend corps lorsquon regarde tout simplement autour de soi).
ce
Astu

La raison dune telle insistance sur la manire dont les gens voient les dimensions est que votre travail de programmeur est simpli si vous visualisez
mentalement les donnes multidimensionnelles dans lespace avec leurs lignes
et leurs colonnes (et ventuellement plus).

Bien que Visual Basic vous permette de travailler jusqu soixante dimensions, il est
difcile den visualiser plus de trois. Vous pouvez cependant penser chaque dimension
qui suit la troisime comme une nouvelle occurrence. En dautres termes, vous pouvez
enregistrer une liste des buts dun joueur sur la saison dans un tableau. Les scores de
lquipe (voir Tableau 22.1) sont en deux dimensions. La ligue, compose des enregistrements de plusieurs quipes, reprsente un tableau trois dimensions. Chaque quipe
(la profondeur du tableau) a des lignes et des colonnes de donnes sur les buts. Sil y a
plus dune ligne, elles peuvent reprsenter une autre dimension.
Info

Malgr la capacit gnreuse de soixante dimensions propose par Visual


Basic, vous crirez rarement des programmes qui demandent plus de trois ou
peut-tre quatre dimensions. La plupart du temps, vous travaillerez sur des
tableaux une ou deux dimensions.

Dclarer les tableaux multidimensionnels


Comme pour les tableaux une dimension, vous utiliserez les instructions Dim ou
Public pour rserver la place des tableaux multidimensionnels. Au lieu de mettre une
valeur entre parenthses, vous en mettrez une par dimension. Les formats de base pour
la rservation des tableaux multidimensionnels sont les suivants :
Public taName(intSub) [As dataType][, taName(intSub) [As dataType]]...
Dim taName (intSub) [As dataType][, taName (intSub) [As dataType]]...

Les valeurs intSub du tableau peuvent prendre ce format gnral :


[intLow To] intHighRow[, [intLow To] intHighColumn][, [intLow To]
intHighDepth][,...]

697

<
:

Prog VB6 FM3B Page 698 Lundi, 6. aot 2001 3:54 15

Partie III

Comme cest le cas des tableaux une dimension, la rservation effective est plus
simple que ce quen laisse penser le format. Pour dclarer les donnes de lquipe du
Tableau 22.1, par exemple, vous pouvez utiliser linstruction Dim suivante :
Dim intTeams(1 To 10, 1 To 8) As Integer

Cette instruction rserve en mmoire un tableau deux dimensions de quatre-vingts


lments. Les indices des lments sont illustrs la Figure 22.2.
Figure 22.2
Le tableau
de lquipe de
handball demande
deux ensembles
dindices.

intTeams(1, 1)

intTeams(1, 2)

intTeams(1, 3)

intTeams(1, 7)

intTeams(1, 8)

intTeams(2, 1)

intTeams(2, 2)

intTeams(2, 3)

intTeams(2, 7)

intTeams(2, 8)

intTeams(3, 1)

intTeams(3, 2)

intTeams(3, 3)

intTeams(3, 7)

intTeams(3, 8)

intTeams(9, 1)

intTeams(9, 2)

intTeams(9, 3)

intTeams(9, 7)

intTeams(9, 8)

intTeams(10, 1)

intTeams(10, 2)

intTeams(10, 3)

intTeams(10, 7)

intTeams(10, 8)

Si vous avez suivre une ligue de quinze quipes, vous ajouterez un autre indice :
Dim intTeams(1 To 15, 1 To 10, 1 To 8) As Integer

Le premier indice indique chaque quipe, le second, le nombre de joueurs de chaque


quipe, et le dernier le nombre de parties.
ce
Astu

Pensez un tableau trois dimensions comme un chiquier trois dimensions, avec des chiquiers empils les uns sur les autres. Une reprsentation
quatre dimensions serait plusieurs ensembles dchiquiers. La quatrime
dimension serait le numro correspondant chaque ensemble 3D dchiquiers.

Comment connatre lordre des indices, et savoir si lindice de droite reprsente des
colonnes ? Vous ne pouvez pas le savoir, car les indices peuvent reprsenter ce que vous
voulez. Cependant, la norme pour un tableau deux dimensions est de considrer
lindice de gauche comme la ligne et lindice de droite comme la colonne. En passant de
deux dimensions trois, lindice ajout est presque toujours le premier pour garantir
que les deux derniers reprsentent les lignes et les colonnes dune table. En gardant les
indices prsentant la table comme les deux derniers, vous aidez leur cohrence.
Linstruction suivante rserve assez de mmoire pour les programmes dune chane de
tlvision sur une semaine :
Dim strShows(1 To 7, 1 To 48) As String

>
:

698

Prog VB6 FM3B Page 699 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Cette instruction rserve sept jours (les lignes) de programmes de trente minutes (les
jours faisant vingt-quatre heures, la table contient quarante-huit colonnes).
Comme vous le savez, tous les lments dune table doivent avoir le mme type de
donnes. Ici, cest une variable String.
Vous pouvez initialiser certains lments avec les instructions suivantes :
strShows(3, 12) = "Quand lhpital tourne"
strShows(1, 5) = "Le jeu des devinettes"
strShows(7, 20) = "Publireportage sur le Th glac aux framboises"

La rservation de lespace de plusieurs tableaux multidimensionnels consomme vite de la


mmoire. Les instructions suivantes rservent une grande quantit de mmoire :
Public ara1(10, 20) As Single
Dim ara2(4, 5, 5) As Double
Public ara3(6, 10, 20, 30) As Integer

ara1 occupe deux cents emplacements mmoire de variables simple prcision, ara2
occupe cent emplacements double prcision, et ara3 occupe trente-six mille emplacements mmoire. Comme vous pouvez le voir, le nombre dlments augmente vite.
Soyez attentif ne pas rserver trop demplacements de tableaux pour ne pas puiser la
quantit de mmoire disponible.
En lisant des donnes tabulaires dans des tableaux multidimensionnels et en travaillant
sur les donnes dun tableau la place des tables de bases de donnes, vous pouvez
acclrer les temps dexcution du programme. Tout ce qui se passe en mmoire est plus
rapide que la lecture et lcriture disque chaque accs aux valeurs. Cependant,
lespace mmoire est plus rduit que lespace disque. Si vous travaillez sur des chiers
importants, vous devez renoncer lefcacit de la mmoire pour la capacit du disque.

Les tableaux et les boucles For


Comme vous le verrez dans certains des exemples de programmes suivants, les boucles
For imbriques sont de bonnes candidates pour le parcours de tous les lments dun
tableau multidimensionnel. Par exemple, le Listing 22.1 imprime les six valeurs dindices possibles dun tableau multidimensionnel dans des botes de message successives.
Listing 22.1 : Les boucles imbriques permettent de parcourir rapidement les tables

1:
2:
3:
4:
5:

For intRow = 1 To 2
For intCol = 1 To 3
MsgBox("Ligne : " & intRow & ", Colonne : " & intCol)
Next intCol
Next intRow

699

<
:

Prog VB6 FM3B Page 700 Lundi, 6. aot 2001 3:54 15

Partie III

Si vous excutez le code du Listing 22.1, vous verrez les sorties suivantes dans les
botes de message :

Ligne
Ligne
Ligne
Ligne
Ligne
Ligne

:
:
:
:
:
:

1,
1,
1,
2,
2,
2,

Colonne
Colonne
Colonne
Colonne
Colonne
Colonne

:
:
:
:
:
:

1
2
3
1
2
3

Vous pouvez modier le code et utiliser des mthodes Print pour imprimer directement
sur la feuille la place de botes de message. Print est sans nul doute une bonne
mthode utiliser pour pratiquer la manipulation des indices de tableaux multidimensionnels, car elle permet de placer simplement de grandes quantits de sorties sur une
feuille. Par exemple, le Listing 22.2 utilise la mthode Print pour imprimer directement
sur une feuille. La Figure 22.3 montre ce quoi pourrait ressembler la feuille.
Listing 22.2 : Les boucles imbriques fournissent des indices pour parcourir
tout le tableau

1:
2:
3:
4:
5:
6:

For intRow = 1 To 2
For intCol = 1 To 3
Form1.Print "Row: " & intRow & ", Col: " & intCol
Next intCol
Form1.Print
Next intRow

Figure 22.3
Vous pouvez exprimenter
limpression des valeurs
de tableaux avec Print
pour consulter toutes
les sorties sur une mme
feuille.

ntion
Atte

>
:

700

Attention aux rsultats de la Figure 22.3. Noubliez pas que lobjectif du


Listing est de vous montrer comment des boucles For imbriques permettent
de parcourir une table par lignes et par colonnes. Les valeurs imprimes de
la Figure 22.3 ne sont pas des valeurs de tableau, mais les indices dun
tableau dclar de deux lignes et de trois colonnes.

Prog VB6 FM3B Page 701 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Si vous avez imprimer les indices, par ordre de ligne, dun tableau de deux lignes et
trois colonnes dimensionn par linstruction Dim suivante, vous verriez les numros
dindices illustrs par les boucles imbriques du Listing 22.2.
Dim intTable(1 To 2, 1 To 3)

Remarquez quil y a autant dinstructions ForNext que dindices dans linstruction Dim
(deux !). La boucle extrieure reprsente le premier indice (lignes) et la boucle intrieure, le second (colonnes). Les boucles imbriques sont sans nul doute la manire la
plus courante de parcourir les lments dun tableau ; leur matrise est donc cruciale
pour programmer efcacement avec des tableaux multidimensionnels.

Initialiser les tableaux


Vous pouvez initialiser les lments dun tableau multidimensionnel de plusieurs
faons, dont :

assigner des valeurs aux lments de la table ;

utiliser InputBox pour remplir les lments, un par un, partir dune bote de
message ;

lire les valeurs, une par une, partir dun disque ou dun chier de base de donnes ;

calculer les valeurs partir dautres valeurs.

En rchissant cette liste, vous constaterez quon initialise les tables et tous les
tableaux multidimensionnels comme on le fait avec toute autre variable. Cette mthode,
cependant, vous permet de penser aux donnes sous une forme tabulaire, ce qui aide
acclrer la programmation et la maintenance.
La plupart des donnes de tableaux multidimensionnels proviennent de donnes de
feuilles ou plus souvent de chiers disques. Quelle quen soit la provenance, les
boucles For imbriques sont dexcellentes instructions de commande du parcours des
indices. Lexemple suivant illustre un peu mieux comment elles peuvent fonctionner
avec des tableaux multidimensionnels.
Supposons quune entreprise informatique vende deux tailles de disquettes : 3 1/2 et
5 1/4 pouces. Chaque disquette existe en quatre capacits : simple face, basse densit ;
double face, basse densit ; simple face, haute densit ; double face, haute densit. Cet
inventaire des disquettes se prte bien un tableau deux dimensions. Les prix de dtail
des disquettes sont les suivants :

701

<
:

Prog VB6 FM3B Page 702 Lundi, 6. aot 2001 3:54 15

Partie III

Simple face
Basse densit

Double face
Basse densit

Simple face
Haute densit

Double face
Haute densit

3 1/2

2,30

2,75

3,20

3,50

5 1/4

1,75

2,10

2,60

2,95

La procdure du Listing 22.3 enregistre le prix de chaque disque dans une table et
imprime les valeurs sur la feuille en utilisant des boucles For imbriques. Vous pouvez
insrer cette procdure dans un module standard ou une procdure vnementielle pour
en dclencher lexcution.
Listing 22.3 : Les lments dinventaire apparaissent souvent dans une table

>
:

1: Private Sub disks ()


2: Assigne et imprime les prix des disquettes
3:
Dim curDisks(1 To 2, 1 To 4) As Currency
4:
Dim intRow As Integer, intCol As Integer
5:
Assigne le prix de chaque lment
6:
curDisks(1, 1) = 2.30
Ligne 1, colonne 1
7:
curDisks(1, 2) = 2.75
Ligne 1, colonne 2
8:
curDisks(1, 3) = 3.20
Ligne 1, colonne 3
9:
curDisks(1, 4) = 3.50
Ligne 1, colonne 4
10:
curDisks(2, 1) = 1.75
Ligne 2, colonne 1
11:
curDisks(2, 2) = 2.10
Ligne 2, colonne 2
12:
curDisks(2, 3) = 2.60
Ligne 2, colonne 3
13:
curDisks(2, 4) = 2.95
Ligne 2, colonne 4
14:
Imprime les prix sous forme de table
15:
Form1.Print
16:
Form1.Print Tab(12); "Simple face,
Double face,
";
17:
Form1.Print "Simple face,
Double face"
18:
Form1.Print Tab(12); "faible densit
faible densit
";
19:
Form1.Print "haute densit
haute densit"
20:
For intRow = 1 To 2
21:
If (intRow = 1) Then
22:
Form1.Print "3 pouces 1/2 "; Tab(15);
23:
Else
24:
Form1.Print "5 pouces 1/4"; Tab(15);
25:
End If
26:
For intCol = 1 To 4
27:
Form1.Print curDisks(intRow, intCol); Spc(8);
28:
29:
Next intCol
30:
Form1.Print
Dplace le curseur la ligne suivante
31:
Next intRow
32: End Sub

702

Prog VB6 FM3B Page 703 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Cette procdure gnre la sortie illustre la Figure 22.4, une fois la fentre redimensionne pour afcher toute la table. Bien que rduit, le tableau multidimensionnel de 2
par 4 montre comment vos donnes peuvent parfois bien sadapter un enregistrement
en tableau. Le code de lexemple peut paratre assez long pour une table qui ne
comprend que huit valeurs. Noubliez cependant pas que vous ninitialisez que rarement
les tableaux comme le font les lignes 6 13. Pour ce petit exemple, et comme introduction aux tableaux, les assignations sont peut-tre la meilleure manire de commencer.
Figure 22.4
Le prix des disquettes
safche sous forme
tabulaire.

ntion
Atte

Dans le Chapitre 10, vous avez tudi la fonction Array(), qui assigne un
ensemble de valeurs tout un tableau en une seule instruction. Nutilisez
pas la fonction Array() dans les tableaux multidimensionnels, car elle ne
fonctionne quavec les tableaux une dimension.

Le contrle grille
Le tableau deux dimensions le plus courant, la table, se prsente au mieux sous forme de
lignes et de colonnes. Le contrle grille propose une manire pratique dafcher les tables.
Les utilisateurs peuvent naviguer dans les valeurs en utilisant des barres de dlement, qui
sont automatiquement afches si le contrle nest pas aussi grand que la table.

Prparer le contrle grille


Le contrle grille ne fait pas partie de la bote outils standard. Il faut suivre ces tapes
pour lajouter :
1. Appuyez sur Ctrl-T pour ouvrir la bote de dialogues Composants.
2. Slectionnez Microsoft FlexGrid Control 6.0.
3. Cliquez sur OK. Le contrle MSFlexGrid (dsign habituellement comme le
contrle grille) safche dans la fentre Bote outils (voir Figure 22.5).

703

<
:

Prog VB6 FM3B Page 704 Lundi, 6. aot 2001 3:54 15

Partie III

Figure 22.5
Le contrle grille permet
dafcher des donnes
tabulaires.

Contrle grille

Info

Visual Basic comprend plusieurs types de contrles grille. Vous les


dcouvrirez en balayant la liste de la bote de dialogue Composants. Certains
sont des contrles lis qui, comme vous lavez appris au dix-huitime chapitre,
sont lis aux bases de donnes pour que lutilisateur puisse consulter les
donnes sous-jacentes, afches dans la table. Le contrle de grille li ne
permet que la lecture des donnes dune base. Selon la version (Entreprise,
Professionnelle ou Standard), vous trouverez un ensemble diffrent de grilles
lorsque vous afcherez la liste des Composants.

Comprendre comment fonctionne le contrle grille


Quand vous placez le contrle grille sur une feuille, vous devez le redimensionner avant
quil ne prenne une apparence tabulaire. Lorsque vous en augmentez la taille, il ne ressemble pas trop une table (voir Figure 22.6). Le problme est que le nombre de lignes et de
colonnes par dfaut est de deux. Lorsque vous ajouterez des lignes et des colonnes, le
contrle grille ressemblera plus une table de ce nom.
Une des premires tches effectuer aprs avoir ajout le contrle grille est daugmenter le nombre de lignes et de colonnes jusqu ce que la grille en contienne un nombre
raisonnable. Il nest pas obligatoire dafcher lintgralit des lignes et des colonnes du
tableau multidimensionnel, car des barres de dlement permettront lutilisateur de
naviguer dans les donnes.

>
:

704

Prog VB6 FM3B Page 705 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Figure 22.6
Le contrle grille
ne ressemble tout
dabord pas vraiment
une table lorsque
vous le placez
sur une feuille.

Info

ition
Dfin

Le contrle grille supporte des lignes et des colonnes xes (voir


Figure 22.7). Vous pouvez commander leur nombre. Si vous augmentez le
nombre de lignes ou de colonnes xes, la zone grise augmente dautant.
Lignes et colonnes xes indiquent les lignes et les colonnes dun contrle
grille qui ne dlent pas lorsque lutilisateur clique sur les barres de
dlement. Elles permettent dindiquer des labels dcrivant les donnes de la
grille, un peu comme les numros et les noms de colonnes et de lignes pour
une cellule de feuille de calcul.

Les lignes et les colonnes xes sont souvent dsignes comme les en-ttes de lignes et
de colonnes.

Figure 22.7
Les lignes et
les colonnes xes
offrent une place
pour les labels.

Colonne
fixe

Cellules

Ligne
fixe

Six lignes

Sept colonnes

705

<
:

Prog VB6 FM3B Page 706 Lundi, 6. aot 2001 3:54 15

Partie III

Une fois le contrle de grille de donnes rempli, les utilisateurs peuvent faire dler les
donnes et slectionner une ou plusieurs cellules de la grille. Par programmation, vous
pouvez mettre jour ou copier les valeurs des cellules slectionnes depuis ou vers
dautres cellules, variables ou contrles.
Info

Le contrle grille contient toutes sortes dinformations : texte, nombres ou


mme images.

Le Tableau 22.2 contient plusieurs proprits uniques ou importantes du contrle grille.


Il ne dcrit pas les proprits dj connues, telles que Height ou Width, ni dautres plus
obscures. En les tudiant, vous en apprendrez beaucoup sur la manire dutiliser ce
contrle. Nombre dentre elles se rapportent la slection des cellules dans les donnes
tabulaires de la grille.
Tableau 22.2 : Le contrle grille supporte plusieurs proprits importantes
lors de la conception

>
:

Proprit

Description

AllowBigSelection

Permet lutilisateur de slectionner une ligne ou une colonne entire


par un simple clic de souris. Positionne True, cette proprit lui
permet aussi de cliquer dans len-tte pour slectionner la totalit de la
ligne ou de la colonne.

AllowUserResizing

Dtermine la libert donne lutilisateur de redimensionner la largeur et


la hauteur des colonnes et des lignes. Si cette proprit est paramtre
flexResizeNone, lutilisateur ne peut pas faire de modications. Si elle est
flexResizeColumns, il peut changer la largeur des colonnes. Si elle est
flexResizeRows, il peut changer la hauteur de ligne. Si elle est paramtre
flexResizeBoth, il peut changer la largeur et la hauteur. Selon les
donnes, lutilisateur peut avoir besoin de redimensionner les lignes et les
colonnes pour pouvoir les lire dans le contrle.

Cols

Dnit le nombre de colonnes du contrle grille.

(Personnalis)

Ouvre la bote de dialogue Pages de proprits du contrle grille (voir


Figure 22.8). Elle permet de paramtrer facilement plusieurs proprits.

FillStyle

Spcie le format dune cellule ou dun ensemble de cellules. Si elle est


congure flexFillSingle, la cellule en cours est formate. Si elle
est flexFillRepeat, toutes les cellules slectionnes seront formates.

FixedCols

Indique le nombre de colonnes xes (qui ne dlent pas) utilises pour


les en-ttes.

706

Prog VB6 FM3B Page 707 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Tableau 22.2 : Le contrle grille supporte plusieurs proprits importantes


lors de la conception (suite)
Proprit

Description

FixedRows

Indique le nombre de lignes xes (qui ne dlent pas) utilises pour les
en-ttes.

FocusRect

Dtermine comment safche la slection par lutilisateur de la cellule


courante. Si cette proprit est paramtre flexFocusNone, la cellule
active na pas de surbrillance particulire. Si elle a la valeur
flexFocusLight, un contour lger entoure la cellule slectionne. Si
elle est flexFocusHeavy, la cellule en cours est afche en
surbrillance bleue.

Info

Si vous paramtrez la proprit FocusRect flexFocusHeavy, la cellule


ne se dtachera pas dans un groupe de cellules slectionnes.

FormatString

Contient une chane de caractres qui dtermine la manire dont une


cellule ou un groupe de cellules doivent tre formates. Voyez la section
sur la proprit FormatString, plus loin dans ce chapitre.

GridLines

Prcise comment doivent se prsenter les lignes non xes de la grille. Si


cette proprit est paramtre flexGridNone, il ny a pas de sparation
des cellules. Si elle est flexGridFlat, des lignes grises sparent les
cellules les unes des autres. Si elle est paramtre
flexGridInset, des lignes sombres sparent les cellules.
flexGridRaised montre les cellules souleves dans un effet 3D.

GridLinesFixed

Prcise lapparence des lignes xes de la grille. Si cette proprit est


paramtre flexGridNone, il ny a pas de sparation des cellules.
Si elle est flexGridFlat, des lignes grises sparent les cellules les
unes des autres. Si elle est paramtre flexGridInset, des lignes
sombres sparent les cellules. flexGridRaised montre les cellules
souleves dans un effet 3D.

HighLight

Dtermine comment safchent les cellules slectionnes. Si cette


proprit est paramtre flexHighlightNever, la slection des cellules
napparat jamais lcran. Si elle est flexHighlightAlways, les
cellules slectionnes apparaissent en surbrillance (larrire-plan est
assombri). Si elle est paramtre flexHighlightWithFocus, les cellules
slectionnes napparaissent que lorsque le contrle est actif.

RowHeightMin

Spcie le nombre de twips minimal dune ligne, interdisant


lutilisateur de la rduire plus.

707

<
:

Prog VB6 FM3B Page 708 Lundi, 6. aot 2001 3:54 15

Partie III

Tableau 22.2 : Le contrle grille supporte plusieurs proprits importantes


lors de la conception (suite)
Proprit

Description

Rows

Spcie le nombre de lignes qui safcheront dans le contrle grille.

SelectionMode

Dtermine comment se produit la slection des cellules. Si cette


proprit est paramtre flexSelectionFree, lutilisateur peut
slectionner nimporte quel ensemble rectangulaire de cellules. Si elle
est flexSelectionByRow, les cellules sont slectionnes par lignes
entires. Si elle est paramtre flexSelectionByColumn, la slection
des cellules se fait par colonnes entires.

WordWrap

Dnit si le contenu des cellules peut sadapter la modication de la


largeur ou de la hauteur par lutilisateur.

Figure 22.8
La bote de dialogue
Pages de proprits
permet de paramtrer
facilement les
proprits courantes
du contrle grille.

Le contrle grille a la particularit de comprendre plusieurs proprits dexcution qui


doivent obligatoirement tre paramtres pour quil puisse fonctionner. Le Tableau 22.3
contient de nombreuses proprits dexcution, dont certaines doivent tre paramtres
dans votre programme.
Info

>
:

708

Certaines proprits de formatage, comme ColAlignment, sont l pour vous


permettre de contrler le format lexcution. Pour formater une cellule
lors de la conception, utilisez la proprit FormatString du Tableau 22.3.

Prog VB6 FM3B Page 709 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Tableau 22.3 : Votre code Visual Basic doit paramtrer plusieurs proprits
lexcution
Proprit

Description

CellAlignment

Dnit lalignement des valeurs lintrieur des cellules. Si cette proprit


est paramtre flexAlignmentTop (0), le contenu des cellules est align
sur le coin suprieur gauche. Si elle est flexAlignCenter (1), le contenu
des cellules est align gauche et centr la verticale. Les autres valeurs de
constantes nommes qui alignent le contenu des cellules
de diffrentes manires sont : flexAlignLeftBottom (2),
flexAlignCenterTop (3), flexAlignCenterCenter (4),
flexAlignCenterBottom (5), flexAlignRightTop (6),
flexAlignRightCenter (7), flexAlignRightBottom (8), et
flexAlignGeneral (9) est le comportement par dfaut avec des chanes
alignes gauche et des nombres aligns droite.

Col

Paramtre le numro de colonne de la cellule dont vous voulez changer la


valeur. Une cellule est repre en partant de lintersection de ligne et de
colonne 0,0 dans le coin suprieur gauche. La valeur donne la proprit
Text du contrle de grille va dans la cellule dnie par la valeur de Col.

ColAlignment

Dtermine lalignement des valeurs dans une colonne particulire en utilisant


les mmes constantes nommes que pour CellAlignment.

ColWidth

Dtermine la largeur en twips dune colonne.

Row

Congure le numro de ligne de la cellule dont vous voulez changer la


valeur. Une cellule est repre en partant de lintersection de ligne et de
colonne 0,0 dans le coin suprieur gauche. La valeur donne la proprit
Text du contrle de grille va dans la cellule dnie par la valeur de Row.

SelEndCol

Spcie le numro de la dernire colonne de droite dune slection.

SelEndRow

Spcie le numro de la ligne la plus basse de la slection.

SelStartCol

Spcie le numro de la colonne la plus gauche de la slection.

Text

Spcie le contenu de la cellule donne. Vous pouvez assigner la cellule en


cours (slectionne par lintersection des proprits Row et Col) une nouvelle
valeur en lattribuant la proprit Text.

Info

De nombreuses autres proprits de conception et dexcution existent, mais


les Tableaux 22.2 et 22.3 listent les plus importantes pour un utilisateur qui
dcouvre le contrle grille.

709

<
:

Prog VB6 FM3B Page 710 Lundi, 6. aot 2001 3:54 15

Partie III

Le contenu des cellules est paramtr ou lu par la proprit Text, mais cela ne veut pas
dire que les donnes doivent tre des chanes de caractres. Vous pouvez assigner des
valeurs numriques la proprit Text ; Visual Basic les convertira en chanes avant de
faire lassignation. De mme, vous pouvez assigner une cellule une variable numrique.
Visual Basic convertira le texte dans la cellule en nombre avant de faire lassignation. Si
la valeur ne peut pas tre convertie en nombre par Visual Basic, une erreur se produira.

Utiliser le contrle grille dans une application


Une des meilleures manires de comprendre le contrle grille consiste crer une application qui lutilise. Les quelques sections suivantes crent une application incluant des
tableaux multidimensionnels et un contrle grille. Lapplication utilise ce dernier pour
grer des cellules slectionnes an que vous voyiez comment travailler sur une plage de
cellules.

Configurer le projet
La Figure 22.9 montre lcran correspondant lapplication que vous allez crer. Le
contrle grille afche les commissions sur les ventes pour des produits et des personnels de
vente particuliers. Le nom des vendeurs safche en en-tte de colonne et les noms de
produits sur la gauche de la grille..

Figure 22.9
Le contrle grille
permet une gestion
facile des commissions
de vente.

>
:

710

Prog VB6 FM3B Page 711 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Toutes les donnes sont stockes dans un tableau deux dimensions et transfres dans le
contrle grille. Cette application ne charge pas le tableau initial partir du disque et ne
lenregistre pas la sortie. Lorigine des valeurs du tableau est une srie dinstructions
dassignations. Dans une vritable application, vous chargerez et enregistrerez le tableau
sur disque, probablement dans une base de donnes. Si cette application comprenait toutes
les entres/sorties disque, le projet serait trop tendu pour se concentrer efcacement sur
les tables et le contrle grille
Les points suivants mettent en vidence lutilit de cette application :

Les barres de dlement peuvent tre utilises pour augmenter ou diminuer les revenus
des ventes de tout vendeur sur nimporte quel produit.

Le montant daugmentation ou de diminution peut tre modi par les barres de


dlement, ce qui change dynamiquement le titre des boutons.

La cellule en cours est la seule qui change quand lutilisateur augmente ou diminue
le pourcentage de commission, moins quil ait slectionn une plage de cellules,
auquel cas le pourcentage sera modi sur toute la plage.

La plupart des valeurs par dfaut des proprits du contrle grille fonctionneront
dans ce projet. Comme dhabitude, Microsoft a choisi les valeurs de proprits les
plus courantes comme valeurs par dfaut. Vous aurez paramtrer des valeurs de
proprits lexcution (comme le dcrit la section prcdente), mais la conception, il sufra de modier le nom, le nombre de colonnes et de ranges du contrle.

Le nombre de vendeurs ou de produits suivis peut tre aisment tendu en changeant


le nombre de lignes et de colonnes de la table et du contrle. Il nest pas besoin de
modier lafchage, du fait des capacits de dlement du contrle grille.

Une fois que vous aurez cr et excut cette application, vous aurez une meilleure notion
de lutilisation du contrle grille. Vous pourrez aussi voir comment adapter cet exemple
simpli une utilisation dans dautres applications.
Crez un nouveau projet et ajoutez les contrles et les valeurs de proprits lists au
Tableau 22.4.
Info

Pensez ajouter le contrle grille la bote outils avant de commencer


travailler sur la feuille. Ajoutez le contrle Microsoft FlexGrid Control 6.0,
comme cela a t expliqu auparavant.

Une fois ces contrles placs et leurs valeurs paramtres, vous tes prt saisir le code.
Noubliez pas que les donnes dorigine rsideront dans un tableau dont le nombre de
lignes et de colonnes correspond, par choix de conception, celui du contrle grille.
Vous savez donc dj, au vu du Tableau 22.4 que la table qui alimentera le contrle
grille aura huit colonnes et vingt lignes.

711

<
:

Prog VB6 FM3B Page 712 Lundi, 6. aot 2001 3:54 15

Partie III

Tableau 22.4 : Placez ces contrles et ces valeurs de proprits pour crer
la feuille de commissions de vente

>
:

Proprit

Valeur

Feuille : Name

frmSales

Feuille : Caption

Utilisation des tableaux et du contrle


grille

Feuille : Height

7920

Feuille : Width

9180

Label #1 Name

lblSales

Label #1 Alignment

Center

Label #1 Caption

Diagramme de contrle des commissions de


vente

Label #1 FontSize

18

Label #1 FontStyle

Gras

Label #1 Height

495

Label #1 Left

1200

Label #1 Top

1200

Label #1 Width

6015

Label #2 Name

lblInMin

Label #2 Alignment

Center

Label #2 Caption

1 %

Label #2 FontSize

Label #2 Height

255

Label #2 Left

960

Label #2 Top

5640

Label #2 Width

375

Label #3 Name

lblInMax

Label #3 Alignment

Center

Label #3 Caption

15 %

712

Prog VB6 FM3B Page 713 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Tableau 22.4 : Placez ces contrles et ces valeurs de proprits pour crer
la feuille de commissions de vente (suite)
Proprit

Valeur

Label #3 FontSize

Label #3 Height

255

Label #3 Left

2880

Label #3 Top

5640

Label #3 Width

375

Label #4 Name

lblDeMin

Label #4 Alignment

Center

Label #4 Caption

1 %

Label #4 FontSize

Label #4 Height

255

Label #4 Left

5160

Label #4 Top

5640

Label #4 Width

375

Label #5 Name

lblDeMax

Label #5 Alignment

Center

Label #5 Caption

15 %

Label #5 FontSize

Label #5 Height

255

Label #5 Left

7080

Label #5 Top

5640

Label #5 Width

375

Contrle grille : Name

grdSales

Contrle grille : Cols

Contrle grille : FocusRect

flexFocusNone

Contrle grille : Height

3015

713

<
:

Prog VB6 FM3B Page 714 Lundi, 6. aot 2001 3:54 15

Partie III

Tableau 22.4 : Placez ces contrles et ces valeurs de proprits pour crer
la feuille de commissions de vente (suite)

>
:

Proprit

Valeur

Contrle grille : Left

1320

Contrle grille : Rows

20

Contrle grille : Top

1800

Contrle grille : Width

5895

Barre de dlement horizontale #1 Name

hscIncrease

Barre de dlement horizontale #1 Left

1080

Barre de dlement horizontale #1 Max

15

Barre de dlement horizontale #1 Min

Barre de dlement horizontale #1 Top

5280

Barre de dlement horizontale #1 Width

2055

Barre de dlement horizontale #2 Name

hscDecrease

Barre de dlement horizontale #2 Left

5280

Barre de dlement horizontale #2 Max

15

Barre de dlement horizontale #2 Min

Barre de dlement horizontale #2 Top

5280

Barre de dlement horizontale #2 Width

2055

Bouton de commande #1 Name

cmdIncrease

Bouton de commande #1 Caption

&Augmenter de 15 %

Bouton de commande #1 Height

495

Bouton de commande #1 Left

1320

Bouton de commande #1 Top

6000

Bouton de commande #1 Width

1575

Bouton de commande #2 Name

cmdDecrease

Bouton de commande #2 Caption

&Diminuer de 15 %

Bouton de commande #2 Height

495

714

Prog VB6 FM3B Page 715 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Tableau 22.4 : Placez ces contrles et ces valeurs de proprits pour crer
la feuille de commissions de vente (suite)
Proprit

Valeur

Bouton de commande #2 Left

5520

Bouton de commande #2 Top

6000

Bouton de commande #2 Width

1575

Bouton de commande #3 Name

cmdExit

Bouton de commande #3 Caption

&Quitter

Bouton de commande #3 Height

495

Bouton de commande #3 Left

3720

Bouton de commande #3 Top

6720

Bouton de commande #3 Width

1215

Comprendre le code
Le Listing 22.4 contient le code dinitialisation des valeurs gnrales du programme.
Cest une procdure de commande qui, au chargement de la feuille, excute, par des
instructions Call, dautres sous-routines. La majeure partie du code soccupe de
linitialisation des en-ttes de la grille avec les noms des vendeurs en colonne et les
produits en lignes.
ce
Astu

ition
Dfin

Le Listing 22.4 montre un bel exemple de programmation structure. Si vous


avez plus tard des modications apporter au programme, vous naurez pas
patauger dans plusieurs pages de code dune procdure. Les procdures
appeles ont au contraire chacune un objet. Vous pouvez modier plus facilement les actions dune procdure sans interfrer avec du code sans
rapport.
La programmation structure est une pratique qui consiste placer le code
correspondant un objectif prcis dans une sous-routine, puis appeler ce
code partir dune procdure de commande.

715

<
:

Prog VB6 FM3B Page 716 Lundi, 6. aot 2001 3:54 15

Partie III

Listing 22.4 : La procdure Form_Load() initialise plusieurs valeurs laide


de sous-routines
1: Private Sub Form_Load()
2: Dfinit la justification des cellules de la grille
3: et assigne les titres des cellules la ligne fixe et
4: les en-ttes de colonnes. Initialise en outre la table
5: des valeurs et lenvoie au contrle grille.
6:
7: Call InitScrolls
Initialise les barres de dfilement
8: Call CenterCells
Centre les cellules
9: Call SizeCells
Spcifie la largeur des cellules
10: Call Titles
Place les titres de colonne et de ligne
11: Call FillCells
Remplit les cellules
12: End Sub

Vous pouvez dterminer dun coup dil ce que fait Form_Load() en regardant les routines appeles aux lignes 7 11. Si le code appel ne se trouvait pas dans des procdures
spares, mais incorpores dans Form_Load(), il serait beaucoup plus difcile de retrouver plus tard le code que vous voulez modier.
Le Listing 22.5 contient le code des trois premires procdures appeles : InitScroll(),
CenterCells() et SizeCells(). Comme toutes les sous-routines gnrales, ces procdures
doivent apparatre avant Form_Load(), pour quelles rsident dans le module (Gnral)
de la fentre de code.
Listing 22.5 : Les trois premires procdures appeles par Form_Load()
sont utilises pour congurer la grille

>
:

1: Private Sub InitScrolls()


2:
Configure les deux barres de dfilement
3:
leur valeur maximale. Mme si ces valeurs sont
4:
configures dans la fentre Proprits, cette proc5:
dure permet de modifier plus facilement les valeurs
6:
maximales des barres de dfilement sil en est besoin.
7:

8:
hscIncrease.Value = 15
9:
hscDecrease.Value = 15
10: End Sub
11:
12: Private Sub CenterCells()
13:
Configure la justification des cellules
14:
en alignement centr. Assurez-vous de centrer
15:
les en-ttes de ligne et de colonne.
16:

17:
Dim Column As Integer
18:

716

Prog VB6 FM3B Page 717 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

19:
Commence par centrer les cellules den-ttes
20:
For Column = 0 To 7
21:
grdSales.Col = Column
configure la colonne courante
22:
Centre les cellules fixes de cette colonne
23:
grdSales.ColAlignment(Column) = flexAlignCenterCenter
24:
Next Column
25: End Sub
26:
27: Private Sub SizeCells()
28:
Specifie la largeur de chaque cellule
29:
Dim Column As Integer
30:
For Column = 0 To 7
31:
grdSales.ColWidth(Column) = 1100 En twips
32:
Next Column
33: End Sub

La procdure InitScrolls() nest pas vraiment ncessaire, car vous avez congur les
positions maximales dans la fentre Proprits lorsque vous avez plac les barres de
dlement dans la feuille. Cependant, comme cette application change la valeur maximale des barres de dlement la demande de lutilisateur, vous pouvez facilement en
restaurer les valeurs initiales partir du code sans avoir rechercher chaque fois la
proprit Max.
La procdure CenterCells() centre toutes les valeurs des cellules de la grille. La proprit
ColAlignment exige un numro de colonne centrer en indice, fourni en ligne 23. Enn, la
procdure SizeCells() la ligne 27 congure toutes les largeurs de colonnes 1 100 twips
en parcourant la grille et en appliquant la proprit ColWidth chaque colonne (ligne 31).
Le Listing 22.6 montre lennuyeux code dinitialisation de la grille. En fait, la majeure
partie initialise les titres de la grille, puis remplit une table de valeurs avant de les copier
dans la grille. Le tableau deux dimensions est une zone de stockage intermdiaire qui
nest pas vraiment utile dans cette application particulire. Cependant, en tudiant le
code, vous pourrez voir quel point il est ais dafcher les informations dun tableau
multidimensionnel avec un contrle grille.

Listing 22.6 : Vous devez initialiser les en-ttes de la grille et les cellules
de donnes
1: Private Sub Titles()
2: Remplissage des titres de colonnes
3: Habituellement, ces donnes proviennent dune table de base de donnes
4: grdSales.Row = 0 Tous les noms des vendeurs sont la ligne 0
5: grdSales.Col = 1
6: grdSales.Text = "Smith"
7: grdSales.Col = 2
8: grdSales.Text = "Johnson"

717

<
:

Prog VB6 FM3B Page 718 Lundi, 6. aot 2001 3:54 15

Partie III

Listing 22.6 : Vous devez initialiser les en-ttes de la grille et les cellules
de donnes (suite)

>
:

9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:

718

grdSales.Col = 3
grdSales.Text = "Lake"
grdSales.Col = 4
grdSales.Text = "West"
grdSales.Col = 5
grdSales.Text = "Gates"
grdSales.Col = 6
grdSales.Text = "Kirk"
grdSales.Col = 7
grdSales.Text = "Taylor"
Maintenant, remplir les produits
grdSales.Col = 0 Tous les noms de produits sont la colonne 0
grdSales.Row = 1
grdSales.Text = "Gadget #1"
grdSales.Row = 2
grdSales.Text = "Gadget #2"
grdSales.Row = 3
grdSales.Text = "Tube long"
grdSales.Row = 4
grdSales.Text = "Tube court"
grdSales.Row = 5
grdSales.Text = "Rgle mtallique"
grdSales.Row = 5
grdSales.Text = "Rgle en bois"
grdSales.Row = 6
grdSales.Text = "Rgle en plastique"
grdSales.Row = 7
grdSales.Text = "Rgle en caoutchouc"
grdSales.Row = 8
grdSales.Text = "Panier"
grdSales.Row = 9
grdSales.Text = "Boulon 3C"
grdSales.Row = 10
grdSales.Text = "Boulon 5A"
grdSales.Row = 11
grdSales.Text = "Ecrou 3C"
grdSales.Row = 12
grdSales.Text = "Ecrou 5A"
grdSales.Row = 13
grdSales.Text = "Clou #12"
grdSales.Row = 14
grdSales.Text = "Clou #15"
grdSales.Row = 15
grdSales.Text = "Clou #16"
grdSales.Row = 16
grdSales.Text = "illet #4"
grdSales.Row = 17
grdSales.Text = "illet #6"

Prog VB6 FM3B Page 719 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

57:
grdSales.Row = 18
58:
grdSales.Text = "illet #8"
59:
grdSales.Row = 19
60:
grdSales.Text = "Joint"
61: End Sub
62:
63: Private Sub FillCells()
64:
Remplit les 160 cellules avec des valeurs
65:
calcules partir des valeurs de ligne et de colonne
66:
Mme si ces donnes nont aucun sens, elles permettent
67:
dinsrer rapidement des donnes dans le tableau et la grille.
68:

69:
Ces donnes proviennent normalement dune base de donnes.
70:

71:
Dclarer un tableau de 20 lignes et 7 colonnes qui
72:
correspond la grille sur la feuille. Les indices
73:
sont en base zro, car la grille les utilise aussi.
74:
Dim curData(19, 7) As Currency
75:
Dim Row As Integer
76:
Dim Column As Integer
77:

78:
Remplir la table de donnes
79:
For Row = 1 To 19
80:
For Column = 1 To 7
81:
curData(Row, Column) = ((Row + Column) / Row)
82:
Next Column
83:
Next Row
84:
Copier le contenu de la table dans la grille
85:
For Row = 1 To 19
86:
For Column = 1 To 7
87:
grdSales.Row = Row
88:
grdSales.Col = Column
89:
grdSales.Text = Format(curData(Row, Column), "###.00")
90:
Next Column
91:
Next Row
92: End Sub

La longue liste dassignations des lignes 4 60 ne sert qu placer les noms des vendeurs
et des produits dans les en-ttes de colonnes et de lignes de la grille. Lorsque vous
travaillez sur une grille, il ny a pas grand-chose dautre faire pour linitialisation des
en-ttes. Ces informations proviennent souvent dune base de donnes et vous chargerez
alors les en-ttes partir dune table de la base. Dans le cas de cette application simple,
les assignations sont ncessaires.
Les lignes 79 83 remplissent la table, dont le nombre de lignes et de colonnes correspond celui de la grille. Les donnes sont en fait un calcul ralis partir des numros
de lignes et de colonnes, qui ne sert qu placer des valeurs diffrentes dans les lments
du tableau. Ce dernier agit comme une zone de stockage temporaire pour les valeurs de
la grille et nest pas indispensable cette application. Il permet cependant dtudier

719

<
:

Prog VB6 FM3B Page 720 Lundi, 6. aot 2001 3:54 15

Partie III

linitialisation dun tableau partir de boucles imbriques. Comme des sections


prcdentes de cette leon lont expliqu, les boucles imbriques fonctionnent bien pour
parcourir les tableaux multidimensionnels. Bien sr, tant donn quune grille fonctionne
pratiquement comme une table, les lignes 85 91 utilisent des boucles imbriques pour
copier les donnes dans le contrle grille.
Info

Remarquez que la ligne 89 utilise la fonction interne Format() pour formater


les donnes an quelles safchent dans la grille en francs et en centimes. Vous
apprendrez un peu plus loin comment utiliser la proprit de grille FormatString() pour congurer le format des cellules.

Le reste du code soccupe de contrler les ractions de lapplication aux clics de lutilisateur sur les boutons de commande et les barres de dlement qui apparaissent sous la
grille. Ils contrlent les diverses augmentations et diminutions du prix des commissions.
Par exemple, si la commission dun produit dun vendeur particulier doit crotre ou
dcrotre, lutilisateur peut slectionner cette cellule et cliquer sur la barre de dlement
pour ne modier que celle-ci. De plus, les boutons de commande Augmenter de 15 % et
Diminuer de 15 % permettent de mettre en place une modication xe de 15 % de la
commission slectionne. Le Listing 22.7 montre le code qui permet ces modications.
Listing 22.7 : Les commissions sont affectes en fonction du contrle choisi
par lutilisateur

>
:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

720

Private Sub hscDecrease_Change()


Modifie le titre du bouton de commande
cmdDecrease.Caption = "&Diminuer de " & Str(hscDecrease.Value) & " %"
End Sub
Private Sub hscIncrease_Change()
Modifie le titre du bouton de commande
cmdIncrease.Caption = "&Augmenter de " & Str(hscIncrease.Value) & " %"
End Sub
Private Sub cmdIncrease_Click()
Augmente les valeurs des cellules slectionnes
en augmentant le pourcentage de la barre de dfilement
Dim SelRows As Integer
Dim SelCols As Integer
Dim SelStartRow As Integer
Dim SelStartCol As Integer
Dim RowBeg As Integer
Dim ColBeg As Integer
If (grdSales.HighLight) Then Si slectionn...
Enregistrer les valeurs de cellules slectionnes
SelStartRow = grdSales.RowSel

Prog VB6 FM3B Page 721 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

24:
25:
26:
27:
28:
29:
30:
31:
32:
33:

SelStartCol = grdSales.ColSel
RowBeg = grdSales.Row
ColBeg = grdSales.Col
Parcourir toutes les cellules slectionnes
For SelRows = RowBeg To SelStartRow
For SelCols = ColBeg To SelStartCol
grdSales.Row = SelRows
grdSales.Col = SelCols
Augmenter la cellule du montant de la barre de dfilement
grdSales.Text = grdSales.Text + (hscIncrease.Value /
100 * grdSales.Text)
grdSales.Text = Format(grdSales.Text, "####.00")
Next SelCols
Next SelRows
Restaurer la slection en surbrillance
grdSales.Row = RowBeg
grdSales.Col = ColBeg
grdSales.RowSel = SelStartRow
grdSales.ColSel = SelStartCol
End If
End Sub

34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45: Private Sub cmdDecrease_Click()
46:
Diminue les valeurs des cellules slectionnes
47:
en diminuant le pourcentage de la barre de dfilement
48:
Dim SelRows As Integer
49:
Dim SelCols As Integer
50:
Dim SelStartRow As Integer
51:
Dim SelStartCol As Integer
52:
Dim RowBeg As Integer
53:
Dim ColBeg As Integer
54:
55:
If (grdSales.HighLight) Then Si slectionn...
56:
Enregistrer les valeurs de cellules slectionnes
57:
SelStartRow = grdSales.RowSel
58:
SelStartCol = grdSales.ColSel
59:
RowBeg = grdSales.Row
60:
ColBeg = grdSales.Col
61:
Parcourir toutes les cellules slectionnes
62:
For SelRows = RowBeg To SelStartRow
63:
For SelCols = ColBeg To SelStartCol
64:
grdSales.Row = SelRows
65:
grdSales.Col = SelCols
66:
Diminuer la cellule du montant de la barre de dfilement
67:
grdSales.Text = grdSales.Text - (hscDecrease.Value /
100 * grdSales.Text)
68:
grdSales.Text = Format(grdSales.Text, "####.00")
69:
Next SelCols
70:
Next SelRows
71:
Restaurer la slection en surbrillance
72:
grdSales.Row = RowBeg
73:
grdSales.Col = ColBeg

721

<
:

Prog VB6 FM3B Page 722 Lundi, 6. aot 2001 3:54 15

Partie III

Listing 22.7 : Les commissions sont affectes en fonction du contrle choisi


par lutilisateur (suite)

74:
grdSales.RowSel = SelStartRow
75:
grdSales.ColSel = SelStartCol
76:
End If
77: End Sub
78:
79: Private Sub cmdExit_Click()
80:
Terminer lapplication
81:
End
82: End Sub

Les fonctions hscDecrease_Change() et hscIncrease_Change() ne servent qu modier


la proprit Caption du bouton de commande correspondant quand lutilisateur clique
sur la barre de dlement. Les barres de dlement dterminent de quelle quantit le
bouton augmentera ou diminuera les valeurs.
Mme si le reste du code, partir de la ligne 11, est assez long, les deux procdures
importantes, cmdIncrease_Click() et cmdDecrease_Click(), font essentiellement la
mme chose, si ce nest que lune augmente la valeur des cellules slectionnes, tandis
que lautre la rduit.
Info

Si lutilisateur ne slectionne quune cellule avant de cliquer sur un bouton


de commande, seule cette cellule changera quand la procdure Click des
boutons de commande sexcutera.

Etant donnes les similitudes de ces deux grosses procdures, lanalyse se limitera
cmdIncrease_Click(). La ligne 21 sassure que lutilisateur a slectionn au moins une
cellule avant deffectuer laugmentation de la valeur des cellules. Dans le cas contraire,
rien ne se produit. Les lignes 23 26 enregistrent la zone rectangulaire de la slection.
Cette plage est dnie par le numro de ligne et de colonne de la cellule en cours (la
cellule en haut gauche de la slection), et du numro de ligne et de colonne de la n de
la slection.
Les lignes 28 et 29 utilisent une boucle For imbrique pour parcourir toutes les cellules
de la slection. Chaque cellule est augmente de la valeur de la barre de dlement, qui
dnit le pourcentage de modication des boutons de commande. Les lignes 38 41
restaurent la slection, car si vous changez les valeurs Row et Col de la grille, toute slection est efface ; les valeurs Row et Col dterminent la cellule active en remplaant la
zone slectionne. Les lignes 40 et 41 utilisent RowSel et ColSel pour remettre la slection
sa place dorigine.

>
:

722

Prog VB6 FM3B Page 723 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Excuter lapplication
Maintenant que vous avez cr lapplication et ajout le code, vous pouvez excuter le
programme. Au premier abord, le sens des barres de dlement peut ne pas vous apparatre, ni la manire dont elles sont lies aux boutons de commande mais, aprs avoir
effectu les tches suivantes, vous apprendrez vite le fonctionnement du programme :
1. Cliquez sur la barre de dlement de gauche pour en diminuer la position (dplacement gauche). Remarquez que la proprit Caption du bouton de commande situ
sous la barre change.
2. Cliquez sur une cellule pour la slectionner dans la grille.
3. Cliquez sur le bouton de commande de droite pour voir la valeur de cette cellule
diminuer de 15 %.
4. Slectionnez une plage de cellules (voir Figure 22.10)
5. Cliquez sur le bouton de commande de gauche pour modier les cellules slectionnes de la valeur afche sur le bouton de commande. La slection reste afche
pour le cas o vous voudriez continuer augmenter les commissions de la plage de
cellules.
6. Slectionnez une autre plage et diminuez-en les valeurs.
7. Cliquez sur Quitter pour terminer le programme..

Figure 22.10
Quel que soit
le nombre de cellules
slectionnes, vous
pouvez augmenter ou
diminuer les valeurs
de la slection
en cliquant sur
un bouton.

723

<
:

Prog VB6 FM3B Page 724 Lundi, 6. aot 2001 3:54 15

Partie III

La proprit FormatString
Au lieu dutiliser la fonction interne Format() pour formater les donnes lorsque vous
les placez sur une grille, vous pouvez paramtrer le format dune cellule ou dune plage
de manire que toutes les donnes places ultrieurement soient formates de manire
conforme. La proprit FormatString du contrle grille demande une donne chane
dnissant lapparence du contenu de la cellule. Si FormatString est assez obscure au
dbut, une fois matrise, elle permet de formater les donnes de grille plus vite.
Info

Vous pouvez entrer une valeur FormatString dans la bote de dialogue Pages
de proprits qui safche quand vous cliquez sur la proprit (Personnalis) du contrle grille. Cliquez sur longlet Style et entrez la valeur dans la
zone de texte Format. Vous pouvez aussi assigner la proprit FormatString
directement, comme le montre cette section.

Une des meilleures caractristiques de FormatString est quelle permet de paramtrer


les en-ttes de lignes et de colonnes, ce qui vite davoir assigner des valeurs comme
dans lapplication de la section prcdente.
Les rgles suivantes dterminent le contenu de la proprit FormatString :

Le symbole sparateur (|) spare les diffrents segments de FormatString.

Chaque segment dnit une colonne.

Le texte de chaque segment se comporte comme la valeur den-tte de la ligne 0.

Le texte de chaque segment dnit la largeur de cette colonne sur la grille.

Le caractre < justie gauche le texte du segment, ^ le centre, et > le cadre droite.

Le texte qui suit un point-virgule (;) dnit les en-ttes de colonne 0, afchs
gauche de la ligne.

Le texte de len-tte de ligne le plus long dtermine la largeur des titres de la colonne 0.

Le nombre de segments dtermine le nombre maximum de colonnes de la grille.

Si la proprit FormatString dnit les lignes et les colonnes, comme les en-ttes et leur
largeur, vous devez toujours dimensionner le contrle grille dans la fentre feuille pour
que lutilisateur voie toutes les lignes et les colonnes. FormatString ne peut en aucun
cas redimensionner la grille.
Lexemple suivant gnre la grille illustre la Figure 22.11 :
Dim strCol As String
Dim strRow As String
Dfinit les en-ttes de colonne de la grille

>
:

724

Prog VB6 FM3B Page 725 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Le symbole ^ entrane le centrage de tous les en-ttes


qui suivent. Le symbole de sparation dfinit chaque
colonne.
strCol = "^|Smith|Johnson|Lake|West|Gates|Kirk|Taylor"
Dfinit les en-ttes de ligne de la grille en crant une
chane. Le point-virgule indique VB de dfinir ces
valeurs en tant quen-ttes de ligne.
strRow = ";|Gadget #1|Gadget #2|Tube long|Tube court|"
strRow = strRow & "Rgle mtallique|Rgle en bois|Rgle en
plastique|"
strRow = strRow & "Rgle en caoutchouc|Panier|Boulon 3C|Boulon
5A|"
strRow = strRow & "Ecrou 3C|Ecrou 5A|Clou #12|Clou #15|"
strRow = strRow & "Clou #16|illet #4|illet #6|"
strRow = strRow & "illet #8|Joint"
Formate la grille en assignant les deux chanes
grdSales.FormatString = strCol & strRow

Figure 22.11
Utilisez la proprit
FormatString pour
formater les en-ttes
de ligne et de colonne.

La grille est identique celle qui a t cre dans lapplication prcdente, la diffrence que les largeurs des colonnes de la grille de la Figure 22.11 sont les largeurs de
leur en-tte respectif.
ce
Astu

permet lvidence dliminer de nombreuses lignes de code


lourd dans lapplication prcdente. Le Listing 22.6 contient de nombreuses
instructions dassignation des en-ttes de ligne et de colonne. La proprit
FormatString peut prendre en charge les en-ttes bien plus efcacement.
FormatString

725

<
:

Prog VB6 FM3B Page 726 Lundi, 6. aot 2001 3:54 15

Partie III

Enregistrer des images dans le contrle grille


Le contrle grille permet denregistrer des images bitmap et des icnes dans les
cellules en utilisant la proprit CellPicture. Pour placer une image dans une cellule
quelconque, suivez ces tapes :
1. Assignez les proprits Row et Col lindice de la cellule dans laquelle vous voulez
voir safcher limage.
2. Assignez les proprits ColWidth et RowHeight la largeur et la hauteur de limage
pour contrler la taille de limage.
3. Assignez limage la proprit CellPicture.
ntion
Atte

ce
Astu

Vous ne pouvez pas assigner une image lors de la conception.

Si vous placez dabord votre image dans un contrle image de la feuille en


paramtrant sa proprit Visible False, vous pouvez assigner le contrle
image la cellule au lieu davoir utiliser LoadPicture() en spciant le
nom de chier exact de limage placer dans la cellule. Le contrle image
permet de paramtrer plus facilement la largeur et la hauteur de la cellule
pour quelles correspondent limage.

Supposons que vous voulez placer une image dans la cellule en haut gauche du
contrle grille. Cette cellule ne contient, en gnral, pas de texte den-tte. Le code
suivant permet de le faire :

Rend la cellule en haut gauche courante


grdSales.Row = 0
grdSales.Col = 0
Paramtre la hauteur et la largeur de la cellule
pour quelle corresponde limage
grdSales.ColWidth(0) = Image1.Width
grdSales.RowHeight(0) = Image1.Height
Assigne limage la cellule
Set grdSales.CellPicture = Image1.Picture

Remarquez quil faut utiliser une instruction Set pour assigner limage la cellule.
Une instruction dassignation normale ne suft pas, car seul le chemin daccs
limage serait assign dans ce cas la cellule. La Figure 22.12 montre quoi cela peut
ressembler.

>
:

726

Prog VB6 FM3B Page 727 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Figure 22.12
Les images peuvent
enjoliver un contrle
grille.

L'image ajoute

En rsum
Cette leon supplmentaire vous a expliqu comment congurer des tableaux multidimensionnels pour vous permettre de grer plus facilement les donnes. Le tableau
multidimensionnel le plus courant, la table deux dimensions, apparat dans de
nombreux types de situations o vous devez suivre des lignes et des colonnes de
donnes, lorsque vous avez, par exemple, grer un systme dinventaire des prix.
Visual Basic permet de suivre jusqu soixante dimensions de donnes, mais vous aurez
rarement grer plus de trois ou quatre dimensions.
Une manire simple de reprsenter les donnes de tableaux est le contrle grille. Il en
existe plusieurs types que vous trouverez dans la bote de dialogue Composants qui safche quand vous slectionnez loption de menu Projet, Composant. Le contrle FlexGrid
en est un exemple des plus classiques. Cette leon vous a expliqu comment le congurer
et le grer.

727

<
:

Prog VB6 FM3B Page 728 Lundi, 6. aot 2001 3:54 15

Partie III

Questions-rponses
Q Comment puis-je savoir ce que reprsentent les indices quand je dclare un
tableau quatre ou cinq dimensions ?
R Chaque indice peut reprsenter ce que vous souhaitez lui faire reprsenter. Par exemple, dans un tableau deux dimensions, le premier indice na pas indiquer des
lignes, ni le second des colonnes ; vous pouvez aussi bien les inverser. Ce nest que
lapproche la plus courante de dire que lindice de droite reprsente les colonnes,
lindice sa gauche des lignes, et lindice leur gauche des couches de tables
(comme dans un cube). Mais il est conseill de suivre ce standard. Si une autre
personne doit un jour faire de la maintenance sur votre code, vous lui simpliez le
travail en suivant les conventions dutilisation des valeurs de tableaux.
Mme si les gens ne visualisent pas clairement plus de trois dimensions, un
quatrime indice peut permettre de garder une trace du nombre de tableaux trois
dimensions rservs par les trois indices de droite. Un cinquime indice pourrait
alors reprsenter le nombre de groupes de tableaux trois dimensions, etc. Si vous
augmentez le nombre de dimensions au-del de trois, votre programmation nen
devient pas pour autant beaucoup plus difcile, mais se reprsenter chaque indice
peut ltre.
Q Aurai-je souvent utiliser un tableau de plus de trois ou quatre dimensions ?
R Rarement et peut-tre mme jamais.
Q Si je nutilise probablement jamais des tableaux multidimensionnels de plus de
trois ou quatre dimensions, pourquoi les tudier ?
R En fait, quand vous comprendrez les tableaux plusieurs dimensions (et que vous
dcouvrirez que lajout dune nouvelle dimension, en termes de stockage machine, ne
fait que vous donner des occurrences supplmentaires du tableau que les dimensions
prcdentes dclarent), vous naurez pas ajout tant de complexit que cela. Le fait
que vous nutilisiez que peu des tableaux de plus de quatre dimensions ne signie
pas quil ne faut pas apprendre combien il est simple dajouter une dimension.
Cependant, noubliez pas que chaque dimension multiplie dautant la quantit de
mmoire que vous utilisez. Ne dclarez pas un tableau trop important sans prendre
en compte la mmoire disponible sur la machine de destination. Certaines applications
de modlisation scientique et mathmatique exigent plusieurs dimensions. Si vous
programmez dans des domaines techniques, vous risquez davoir utiliser cinq
dimensions, ce qui sera moins probable si vous ncrivez que des applications de
gestion.

>
:

728

Prog VB6 FM3B Page 729 Lundi, 6. aot 2001 3:54 15

Chapitre 22 : Tableaux multidimensionnels

Q Puis-je utiliser FormatString pour ajouter des donnes au contrle grille ?


R Non. FormatString ne sert qu ajouter des valeurs den-tte de ligne et de colonne
la grille. Vous devez assigner les valeurs de donnes qui safchent lintrieur de la
grille.

Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension des lments traits, ainsi que des exercices qui vous permettent de mettre en
pratique ce que vous avez appris. Essayez de comprendre les questions et les exercices
avant de passer la leon suivante. Les rponses se situent lAnnexe A.

Quiz
1. Vrai ou faux. Tous les lments dune ligne dun tableau multidimensionnel doivent
tre du mme type, mais les diffrentes lignes peuvent tre de type diffrent.
2. Etant donn la dclaration suivante dun tableau multidimensionnel, quel indice le
premier, le second ou le troisime spcie habituellement les lignes ?
Dim sngArray(8, 9, 10)

3. Etant donn le tableau dentiers suivant (nomm intAra), quelles valeurs reprsentent les lments suivants, en considrant quune instruction Option Base 1 est
prsente dans le programme ?
a. intAra(1, 1)
b. intAra(3, 2)
c. intAra(2, 3)

4
10
25
14

1
2
43
7

3
12
2
28

5
1
91
71

9
6
8
14

4. Vrai ou faux. Visual Basic supporte jusqu soixante dimensions.


5. Vrai ou faux. Vous pouvez utiliser la fonction Array() pour initialiser un tableau
multidimensionnel laide dune instruction.
6. Quel type de contrle est bien adapt lafchage de donnes de tables ?

729

<
:

Prog VB6 FM3B Page 730 Lundi, 6. aot 2001 3:54 15

Partie III

7. A quoi servent les lignes et les colonnes xes dun contrle grille ?
8. Comment pouvez-vous assigner les cellules dune table aux cellules dun contrle
grille ?
9. Vrai ou faux. Pour assigner une image une cellule, vous pouvez utiliser la proprit
CellPicture la conception, comme vous le faites pour dautres contrles.
10. Quest-ce qui est le plus efcace ? Utiliser FormatString ou des instructions dassignation pour congurer les en-ttes de la grille.

Exercices
1. Calculez le nombre dlments que rservent les instructions suivantes :
Option Base 1
Dim intAra(4, 7) As Integer

2. Si vous omettez linstruction Option Base dans le module de dclaration de la procdure, calculez le nombre dlments rservs par linstruction suivante :
Dim intAra(4, 7) As Integer

3. Modiez lapplication de grille des vendeurs de cette leon pour que les valeurs de
la grille soient rcrites dans la table avant que le programme se termine. Mme si on
ne fait rien de cette table, cet exercice est une bonne manire de montrer la relation
univoque entre la table et la grille. Il fournit aussi un endroit o vous pourriez crire
ces valeurs dans une base de donnes si vous aviez besoin de sauvegarder les modications de commissions faites par lutilisateur.

>
:

730

Prog VB6 FM3B Page 731 Lundi, 6. aot 2001 3:54 15

Chapitre

23

LAPI Windows
Cette leon supplmentaire dcrit comment accder aux routines internes de Windows.
Si Visual Basic est capable de faire peu prs tout ce que vous voulez, certaines applications exigent des caractristiques qui ne peuvent tre obtenues quau prix dune programmation lourde. Cependant, vous pouvez utiliser dans votre application Visual Basic des
routines dj disponibles ailleurs dans Windows comme celles que vous pouvez crire
en C ou C++ et enregistrer dans des DLL.
En exploitant ces routines de Windows, vous pouvez tendre la puissance de Visual
Basic et lui faire effectuer certaines fonctions que seul Windows a rellement autorit
excuter. Cette leon dcrit de nombreuses routines utiles et la manire dy accder. Si
votre application doit grer un curseur de Windows, par exemple, il existe dj des
routines internes pour cela ; il peut donc tre plus simple dy faire appel depuis votre
application Visual Basic.
Vous apprendrez aujourdhui :

ce quest lAPI Windows ;

pourquoi votre application peut avoir besoin de routines Windows absentes de


Visual Basic ;

les DLL (Dynamic Link Library) ;

comment connecter Visual Basic aux routines de lAPI Windows avec linstruction
Declare ;

731

Prog VB6 FM3B Page 732 Lundi, 6. aot 2001 3:54 15

Partie III

plusieurs nouvelles procdures utilisables avec les routines de lAPI Windows ;

comment viter les problmes en spciant des routines de lAPI ;

comment interprter et utiliser les nouveaux types darguments quexigent les routines de lAPI Windows ;

comment crer des fonctions dappel des routines API les plus courantes pour que
votre application Visual Basic y accde plus facilement.

LAPI Windows
LAPI Windows est un ensemble de routines la disposition du programmeur Visual
Basic. Dune certaine manire, ces routines de lAPI fonctionnent comme les fonctions
internes de Visual Basic. Quand vous avez besoin dutiliser le code dune routine de
lAPI, votre programme Visual Basic lappelle. Quand lAPI Windows se termine, le
contrle revient votre programme pour lui permettre de continuer.
Pratiquement, tout ce que vous pouvez faire dans Windows est ralisable dans un
programme Visual Basic en appelant la routine de lAPI Windows adapte. Vous pouvez
mme dclencher une rinitialisation de la machine.
ition
Dfin

LAPI Windows (Application Programming Interface, ou interface de


programmation dapplication, est un ensemble de routines de Windows que
vous pouvez appeler depuis Visual Basic.

Toutes les routines de lAPI Windows sont enregistres dans des chiers particuliers
nomms DLL. Plusieurs milliers de routines de lAPI sont disponibles. Elles se situent dans
des chiers enregistrs dans les dossiers Windows et Windows\System. Les chiers DLL
sont installs avec Windows ; vous avez donc automatiquement accs ces bibliothques.
ition
Dfin

Une DLL, (Dynamic Link Library), ou bibliothque de liens dynamiques, est


un ensemble de routines de lAPI disponibles aux applications crites en
Visual Basic ou en un autre langage qui supporte lutilisation des DLL.

La plupart des DLL ont une extension de nom de chier .DLL ou .EXE. Tout
programme que vous crivez a accs aux DLL de Windows. Elles faisaient dj partie
des versions antrieures de Windows (avant Windows 95), mais leur nom ne comportait
pas "32", ce qui signale quelles sont compatibles 32 bits. Les versions antrieures
Windows 95 taient compatibles 16 bits, ce qui signie que les donnes transitaient
dans le systme 16 bits (soit deux octets) la fois. La programmation sous un environnement 32 bits procure une souplesse, une vitesse et une efcacit suprieures.

>
:

732

Prog VB6 FM3B Page 733 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

Voici les trois DLL les plus courantes :

USER32.DLL. Elle contient des fonctions qui contrlent lenvironnement Windows et


linterface utilisateur, par exemple les curseurs, les menus et les fentres.

GDI32.DLL. Elle contient des fonctions qui contrlent les sorties lcran et sur
dautres priphriques.

KERNEL32.DLL. Elle contient des fonctions qui commandent linterface matriel


et logiciel interne de Windows. La plupart des routines de service de mmoire, de
chier et de rpertoire se situent dans KERNEL32.DLL.
ition
Dfin

ce
Astu

Kernel signie Noyau, et GDI (Graphics Device Interface), interface de


priphrique graphique.
Windows est un systme dexploitation en plusieurs couches, qui commence
avec celle que voit lutilisateur (linterface utilisateur graphique ou GUI), et
qui se termine avec la couche la plus proche du matriel, qui contrle le ux
des donnes entre les programmes et le matriel. Cette couche basse du
systme dexploitation est nomme le noyau (kernel). Do le nom
KERNEL32.DLL donn la bibliothque de liens dynamiques contenant les
routines du noyau.

Ces trois chiers contiennent la majorit des routines, ou fonctions, de lAPI que vous
pouvez appeler depuis vos applications Visual Basic. Si vous parcourez les dossiers
Windows et Windows\System, vous verrez dautres DLL, par exemple COMDLG.DLL,
MAPI32.DLL, NETAPI32.DLL et WINMM.DLL. Chaque fois que Microsoft ajoute
des fonctionnalits au systme dexploitation, de nouvelles DLL apparaissent.
Les DLL ne sont pas uniquement des parties de Windows. Lorsque vous ajoutez de
nouvelles applications au systme, elles fournissent souvent leurs propres DLL. Au fur
et mesure des installations, de nombreux chiers DLL apparaissent dans la machine.
ntion
Atte

Les DLL vous donnent un pouvoir sur votre systme bien plus important que
celui que propose normalement Visual Basic. Quand vous utilisez une
fonction de lAPI Windows, vous travaillez au cur du systme dexploitation. Comme toujours, un pouvoir entrane une responsabilit. Lenvironnement et le dbogueur Visual Basic reconnaissent les fonctions internes
normales de Visual Basic, mais les fonctions de lAPI sont bien au-del de
leur porte. Vous risquez donc un crash du systme et la perte de tout votre
travail, simplement en excutant une application Visual Basic qui spcie un
argument incorrect dans un appel de fonction de lAPI Windows.

733

<
:

Prog VB6 FM3B Page 734 Lundi, 6. aot 2001 3:54 15

Partie III

ce
Astu

Enregistrez souvent votre projet si vous faites des appels aux fonctions de
lAPI. Ainsi, si vous appelez par erreur une fonction de lAPI qui entrane
un crash du systme, vous ne perdrez pas tout ce que vous avez fait.

La Figure 23.1 montre comment une routine API apparat dans votre programme Visual
Basic. Les routines API proviennent du systme dexploitation et sont distinctes de
Visual Basic.
Figure 23.1
Les routines API
demeurent
dans le systme
dexploitation.

Votre application VB
Vos procdures Feuilles
Vos fonctions propres
Vos sous-routines propres

Visual
Basic
Fonctions
internes
de VB

Windows
Fonction API
Fonction API
Fonction API

Nature des DLL


Le terme lien dynamique a une signication particulire pour les programmeurs. Une
routine lie dynamiquement un programme, que ce soit une sous-routine ou une fonction, nest connecte au programme quaprs la compilation de ce dernier. La fonction
nest disponible quau moment de lexcution. Les fonctions que vous crivez dans la
fentre de code sont dites lies statiquement, ce qui signie quelles sont combines avec
le reste de votre code source lors de la compilation du programme. Les chiers DLL ne
se fusionnent pas vos programmes. Le programme y a accs lors de lexcution, mais
son chier EXE ne contient jamais physiquement les routines de DLL.
La diffrence est cruciale quand il sagit dutiliser des fonctions situes dans des bibliothques de liens dynamiques, car ni la bibliothque, ni les fonctions que votre application appelle ne sont considres comme faisant partie de votre programme. Les
fonctions API ne viennent jamais augmenter la taille du chier de votre application.
Lors de lexcution du programme, ces routines ne sont charges que le temps de leur
excution ; puis, si elles ne sont plus ncessaires, le systme dexploitation Windows

>
:

734

Prog VB6 FM3B Page 735 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

peut librer leurs ressources pour donner plus de mmoire et de temps processeur aux
nouvelles routines qui peuvent dmarrer.
Le grand avantage de ces liens dynamiques nest cependant pas une utilisation efcace
des ressources. Si Windows est modi, de nouvelles DLL remplacent les anciennes.
Vos applications sont donc mme de supporter les nouvelles caractristiques sans quil
soit besoin de recompiler chaque application qui utilise lAPI Windows. Par exemple, si
vous vous en souvenez, Windows 95 a modi la prsentation des fentres. Les icnes
dans le coin suprieur droit de la fentre sont diffrentes de ce quelles taient dans
Windows 3.11. Un programme Visual Basic qui appelle lAPI Windows pour afcher
une fentre fonctionne dans chaque environnement Windows. Sous Windows 3.11, il
afche les anciennes icnes et sous Windows 95, les nouvelles, alors que le programme
nest pas modi. Donc, dans la plupart des cas, un programme qui accde lAPI
Windows ne demande pas de modications lorsque vous changez de version
de Windows.
Info

ce
Astu

Windows nest pas compos dun seul gros programme. Cest en fait une
collection de nombreux programmes, dont certains rsident dans des chiers
DLL. Windows est sans nul doute le plus gros utilisateur des DLL.
Lutilisation des routines en DLL prsente lavantage de permettre
plusieurs programmes qui sexcutent sous Windows daccder aux mmes
routines des chiers DLL. De plus, tous les utilisateurs disposent des routines
de DLL standard : Windows tant ncessaire pour pouvoir excuter une
application Visual Basic, les DLL ncessaires seront donc disponibles.

Linstruction Declare
Lappel des routines de lAPI Windows ncessite une instruction spciale : Declare.
Les fonctions internes de Visual Basic nont pas besoin dinstruction Declare, car il sait
comment fonctionnent ses propres fonctions et il connat les arguments ncessaires
chacune. Mais, les routines API tant en dehors de la porte de Visual Basic, vous devez
utiliser Declare pour linformer sur la fonction de lAPI que vous appelez.
Linstruction Declare effectue les tches suivantes :

Spcie o se situe la fonction de lAPI.

Identie les arguments ncessaires la fonction de lAPI en nombre et type de


donnes.

Indique si la fonction de lAPI renvoie une valeur.

735

<
:

Prog VB6 FM3B Page 736 Lundi, 6. aot 2001 3:54 15

Partie III

Lemplacement de linstruction Declare a une incidence sur la manire dont votre application Visual Basic gre la fonction ; elle dtermine de quelles parties de lapplication
on peut appeler la fonction dcrite :

Si vous dclarez la routine de lAPI Windows dans le module de feuille, hors de sa


section de dclaration gnrale (par exemple, dans une procdure vnementielle),
seul le code du module peut appeler la routine API. Linstruction Declare doit
dsigner la routine comme prive laide du mot cl Private.

Si vous dclarez la routine de lAPI Windows dans la section de dclarations gnrales dun module ou dune feuille, elle sera la disposition de toute lapplication.
On dit quelle a une porte publique sur tous les modules de lapplication. Utilisez
le mot cl Public pour lindiquer.

Comme pour toute procdure, une routine de lAPI Windows peut tre une fonction ou
une sous-routine, selon quelle renvoie une valeur ou pas. Le format suivant dcrit la
version procdure de linstruction Declare :
Declare Sub procName Lib "libName" [Alias "alias"] [([[ByVal]
var1 [As dataType][,[ByVal] var2 [As dataType]] ... [,[ByVal]
varN [As dataType])]

Linstruction Declare indique Visual Basic le type de procdure de lAPI (sous-routine


ou fonction), le nom de la routine, le nom de chier de la bibliothque DLL dans laquelle
la routine est enregistre (par exemple, KERNEL32.DLL), les arguments et leurs types de
donnes. Si la routine est une fonction, Declare dcrit aussi le type de donnes renvoy.
Info

Comme pour la plupart des instructions, le format de Declare donne des


apprhensions, mais son utilisation relle est lgrement plus simple que
son format le laisse paratre. Cependant, vous devez toujours tre trs attentif pour faire correspondre tous les arguments et les valeurs requis ceux de
la routine API que vous appelez an quelle sexcute correctement.

Le format suivant dcrit la version fonction de linstruction Declare. Il ne diffre de la


forme sous-routine que par le mot cl Function et le type de donne renvoy la n de
linstruction :
Declare Function procName Lib "libName" [Alias "alias"]
[([[ByVal] var1 [As dataType][,[ByVal] var2 [As dataType]] ...
[,[ByVal] varN [As dataType])] As dataType

Voici quelques exemples qui illustrent linstruction Declare (vous trouverez ces instructions dans le module gnral Module1 du projet exemple CallDlls.VBP fourni avec
Visual Basic) :
Declare Function GetWindowsDirectory Lib "kernel32" Alias

>
:

736

Prog VB6 FM3B Page 737 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As


Long) As Long
Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As
SystemInfo)

Vous remarquerez que certaines dclarations de DLL sont assez longues. Les fonctions
internes demandent diffrents nombres darguments, cest aussi le cas des dclarations
et des appels de DLL.
ntion
Atte

Vous devez absolument respecter le nom exact de la routine de lAPI Windows,


avec les majuscules et les minuscules. Ces fonctions de lAPI sont en fait des
routines en langage C et Visual Basic doit utiliser une syntaxe reconnue par le
C pour que les fonctions oprent correctement. Si vous ne respectez pas la
casse des lettres ou si vous utilisez un format diffrent, lappel chouera.

Comprendre les types de donnes de lAPI


Une des raisons de la difcult des appels des routines API est que Windows utilise un
ensemble de types de donnes lgrement diffrent de Visual Basic. Si lAPI Windows
utilise les types de donnes Long et String, elle en utilise aussi dautres comme RECT et
MSG. Trouver le format exact peut parfois tre difcile.
Info

Vos arguments doivent non seulement correspondre la liste des arguments


ncessaires de lAPI en nombre et type de donnes, mais vous devez aussi
les transmettre de la bonne manire soit en valeur, soit par rfrence.
Utilisez le mot cl ByVal lorsque cest ncessaire, sinon ByRef est pris par
dfaut. Dans une mme routine API, certains arguments demandent des
mthodes diffrentes.

Le mot cl Alias est utilis dans une instruction Declare pour convertir certaines chanes comportant des caractres illgaux ou des noms de routines API non autoriss, en un
quivalent accept par Visual Basic, par exemple _lopen (nom dAPI correct, mais qui
est invalide en tant que nom de procdure Visual Basic).
Vous rencontrerez des types de donnes tranges que vous pouvez ne pas reconnatre.
Le Tableau 23.1 en dcrit certains et liste les donnes qui diffrent des types de Visual
Basic.
Le Tableau 23.1 ne contient que quelques types de donnes que vous trouverez dans les
instructions Declare de lAPI Windows. Etant donn ces routines API particulires et leurs
nombreux arguments, comment est-il possible de savoir laquelle utiliser ? La section
suivante vous explique comment utiliser un outil fourni avec Visual Basic pour grer les
routines API.

737

<
:

Prog VB6 FM3B Page 738 Lundi, 6. aot 2001 3:54 15

Partie III

Tableau 23.1 : Types de donnes particuliers utiliss par les routines API
Type de donnes

Description

ANY

Une routine de lAPI Windows qui accepte diffrents types de donnes


les indiquera par ANY. Tous les arguments de type ANY tant transmis
par rfrence, il ne faut pas utiliser le mot cl ByVal.

ATOM

Entier. Toujours transmis par valeur et dcrit dans une dclaration de


routine API sous la forme ByVal argument% ou ByVal argument As
Integer.

BOOL

Entier long. Toujours transmis par valeur et dcrit dans une dclaration de
routine API sous la forme ByVal argument% ou ByVal argument As
Long.

CHAR

Byte. Toujours transmis par valeur et dcrit dans une dclaration de


routine API sous la forme ByVal argument As Byte.

COLOREF

Entier long utilis pour spcier des valeurs de couleur. Tou7jours


transmis par valeur et dcrit dans une dclaration de routine API sous la
forme ByVal argument% ou ByVal argument As Long.

DWORD

Entier long. Toujours transmis par valeur et dcrit dans une dclaration de
routine API sous la forme ByVal argument% ou ByVal argument As Long.

NULL

Entier long utilis pour les valeurs non initialises. Dcrit dans une
dclaration de routine API sous la forme ByVal argument% ou ByVal
argument As Long.

LPSTR, LPCSTR

Correspond au type de donnes String. Dcrit dans une dclaration de


routine API sous la forme ByVal argument$ ou ByVal argument As
String.

STRUCTURE

Vous tomberez parfois sur dtranges types de donnes API comme


RECT, MSG et UDT. Ils dnissent des types de donnes complexes, les
structures, qui sont un regroupement de plusieurs autres types de
donnes. Chaque routine API qui utilise une structure demande une mise
en forme particulire et il faut tudier les arguments obligatoires de la
routine pour savoir comment la formater.

ntion
Atte

>
:

738

Si une routine API exige un type de donnes String, vous devez transmettre
une chane dnie de longueur xe avec beaucoup de bourrage. Par exemple, doublez la longueur de la chane la plus longue que vous vous attendez
voir renvoye par la routine API, puis dclarez un argument chane de
longueur xe avec autant despaces avant de le transmettre la routine API.
Ne vous souciez pas de la longueur de la chane si elle nest pas modie
par la routine API.

Prog VB6 FM3B Page 739 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

La Visionneuse dAPI
Windows contient des milliers de routines API qui peuvent tre appeles. Connatre leur
format, mme dun petit nombre, est difcile. Cest pourquoi Visual Basic contient un
outil particulier, la Visionneuse dAPI, qui peut tre utilis pour obtenir de laide sur le
format des routines API.
ition
Dfin

La Visionneuse dAPI afche les procdures de lAPI et les groupe par sujet
pour que vous puissiez trouver la routine dont vous avez besoin.

La Visionneuse dAPI permet de retrouver les routines et les arguments API, puis de copier
et coller ces informations dans la fentre de code. Suivant votre installation de Visual Basic,
la Visionneuse dAPI peut se lancer de deux manires.
ce
Astu

Le bouton Copier de la Visionneuse dAPI copie les informations de


dclaration slectionnes dans le Presse-papiers de Windows. De plus, si
vous cliquez sur loption Public ou Private avant de cliquer sur Copier, il
inclut le mot cl de qualication correspondant dans linstruction Declare,
ce qui vite une modication manuelle.

Dans certains cas, la Visionneuse dAPI est installe dans le menu Dmarrage. Pour le
vrier, slectionnez Dmarrage, Programmes, Microsoft Visual Basic 6.0, Outils
Microsoft Visual Studio 6.0, Visionneuse dAPI. Si elle ne sy trouve pas, vous pourrez
peut-tre la lancer partir de lenvironnement Visual Basic. Pour cela, slectionnez
Complments, Gestionnaire de complments pour afcher la bote de dialogue correspondante. Double-cliquez sur la rubrique Visionneuse dAPI, si elle existe, pour lajouter
votre menu Complments. Vous pouvez dmarrer le programme en slectionnant
Complments, Visionneuse dAPI.
La Figure 23.2 montre la fentre de la Visionneuse dAPI qui safche.
ntion
Atte

Il se peut que vous ne puissiez toujours pas dmarrer la Visionneuse dAPI.


Dans ce cas, elle nest peut-tre pas installe sur votre machine. Vous
devrez ouvrir le Panneau de conguration et slectionner licne Ajout/
Suppression de programmes. Slectionnez lentre Microsoft Visual Basic
et installez la Visionneuse dAPI partir de lentre Outils de la liste. Il
vous faudra le CD-ROM dinstallation de Visual Basic pour achever
linstallation.

Info

La Visionneuse dAPI extrait les informations sous-jacentes des chiers


texte Mapi32.txt et Win32api.txt qui sont installs avec lui.

739

<
:

Prog VB6 FM3B Page 740 Lundi, 6. aot 2001 3:54 15

Partie III

Figure 23.2
La Visionneuse dAPI
permet de dterminer
plus facilement
le format des routines
API.

Comme la plupart des routines API qui vous intressent sont situes dans le chier
Win32api.txt, slectionnez Fichier, Charger le chier texte et slectionnez ce chier.
La Visionneuse dAPI peut convertir le chier texte en une base de donnes Access (avec
lextension .MDB) si vous slectionnez loption de menu Convertir le texte en base de
donnes (voir Figure 23.3). Une fois la conversion faite, le chier pourra tre charg ultrieurement partir de loption de menu Fichier, Charger le chier base de donnes.
La liste droulante du haut est nomme Type dAPI. Si vous louvrez, vous y trouverez
ces trois valeurs :

Constantes. Liste toutes les constantes nommes reconnues par le chier API
Windows charg.

Dclarations. Liste toutes les dclarations qui apparaissent dans le chier API charg.

Types. Liste tous les types de donnes reconnus par le chier API charg.

La zone de liste Elments disponibles contient toutes les routines de lAPI Windows du
chier charg et les types de valeur. Par exemple, an de trouver linstruction Declare
ncessaire pour la routine API GetWindowsDirectory, suivez ces tapes :
1. Slectionnez Dclarations dans la zone de liste Type dAPI. Une quantit de candidats
safchent dans la liste Elments disponibles.

>
:

740

Prog VB6 FM3B Page 741 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

Figure 23.3
La Visionneuse dAPI
peut enregistrer
les informations
sous-jacentes dans
une base de donnes
pour un accs plus
rapide.

2. Vous pouvez trouver rapidement une dclaration particulire en en tapant les


premires lettres dans la zone de texte. Tapez getw, et tous les lments commenant
par ces lettres safchent.
3. Faites dler jusqu la rubrique GetWindowsDirectory.
4. Double-cliquez sur lentre pour afcher linstruction Declare correspondant cette
fonction (voir Figure 23.4).
Vous pouvez maintenant slectionner et copier linstruction Declare complte, puis la
coller dans votre code.

Appel dune routine API simple


Avant den apprendre plus sur lAPI Windows, vous pouvez souhaitez voir lune de ces
routines API en action. Une des procdures API les plus simples est la fonction MessageBeep. Elle ralise ces deux actions :

Si largument transmis la fonction est positif, un bip est mis sur la carte son du
PC.

Si largument transmis la fonction est ngatif, un bip est mis sur le haut-parleur du
PC.

741

<
:

Prog VB6 FM3B Page 742 Lundi, 6. aot 2001 3:54 15

Partie III

Figure 23.4
La Visionneuse dAPI
afche linstruction
Declare requise
par linstruction
slectionne.

L'instruction
Declare de
la fonction

Info

Vous pouvez bien sr utiliser plus simplement la commande Visual Basic


Beep pour dclencher un bip, mais la petite application que vous allez
crer offre une tude rapide du processus dappel des routines API. En fait,
de nombreuses fonctions et commandes de Visual Basic correspondent
exactement des appels API,et Microsoft appelle en interne la routine API
ncessaire quand vous utilisez une telle fonction ou commande.

Crez un projet qui contient un unique bouton de commande au centre de la feuille. Le


nom du bouton sera cdmBeep et son titre &Bip. Double-cliquez sur le bouton de
commande pour ouvrir une procdure vnementielle Click.
Lancez la Visionneuse dAPI, si elle ne lest pas dj. Chargez le chier win32api.txt (ou la
base de donnes si vous lavez convertie) et modiez le type dAPI pour afcher les dclarations. Dans la zone de texte, tapez message ; une liste de procdure API safchera, dont la
premire est MessageBeep. Modiez loption Public en Private, puis double-cliquez sur
cette entre pour afcher la dclaration de la procdure dans la zone de slection.
ntion
Atte

Vous devez modier le qualiant Public en Private, car la dclaration de la


fonction est locale au module feuille et nest pas enregistre dans une section
de dclarations gnrales.

Slectionnez toute la dclaration pour la coller dans votre fentre de code. Revenez dans
la fentre de code de lapplication Visual Basic. Insrez une ligne avant la procdure
vnementielle Click et collez la dclaration dans la section gnrale du module.
>
:

742

Prog VB6 FM3B Page 743 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

Ajoutez ensuite le code suivant dans la procdure vnementielle Click du bouton de


commande :
Dim Beeper As Variant
Beeper = MessageBeep(1)

Le Listing 23.1 montre la procdure complte.


Listing 23.1 : Vous pouvez utiliser lAPI Windows pour dclencher le haut-parleur

1: Private Declare Function MessageBeep Lib "user32" (ByVal wType


As Long) As Long
2:
3: Private Sub cmdBeep_Click()
4:
Dim Beeper As Variant
5:
Beeper = MessageBeep(1)
6: End Sub

Linstruction Declare indique exactement Visual Basic comment trouver la fonction


MessageBeep(). Dans le cas dune fonction interne de Visual Basic, telle que Abs(), il nest
pas ncessaire dutiliser une instruction Declare, car il sait comment la trouver.
La fonction MessageBeep(), quant elle, se trouve hors de lenvironnement de Visual
Basic. Linstruction Declare est donc utilise pour lui indiquer comment excuter cette
fonction et comment transmettre les valeurs. Elle signale en outre Visual Basic que la
fonction rside dans le chier USER32.DLL.
Vous remarquerez que MessageBeep() est une fonction et pas une sous-routine. Elle
renvoie donc une valeur, dont le type de donnes est Long. Votre application na cependant rien faire de cette valeur. La variable Variant Beeper se contente denregistrer la
valeur au retour de la fonction.
Quand vous excutez le programme, le bouton de commande safche au milieu de la
feuille. Si vous cliquez dessus, vous entendrez un bip provenant de votre carte son. Si
vous nentendez rien, vous pouvez modier largument en 1 pour que le son provienne
du haut-parleur interne du PC. Mme sans carte son ou si les haut-parleurs de la carte
sont teints, le haut-parleur interne sonnera toujours.
Info

Comme cest le cas pour Beep, de nombreuses instructions Visual Basic


dupliquent des routines API. Cest heureux, car cela vite davoir appeler toutes les routines API que vous devriez sinon appeler. Il existe en
outre plusieurs centaines de routines API de Windows dont vous naurez
jamais besoin, car elles neffectuent aucune tche utile un programme
dapplication.

743

<
:

Prog VB6 FM3B Page 744 Lundi, 6. aot 2001 3:54 15

Partie III

Appel dune API diffrente


Vous pouvez crer une autre application simple pour tester lappel dune routine de lAPI
Windows. Voyez le Listing 23.2 qui envoie dans une zone de texte le type de disque
dtect.
Listing 23.2 : Utilisation de lAPI Windows pour en savoir plus sur un disque dans
votre application

1:

Private Declare Function GetDriveType Lib "kernel32.dll"


Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

2:
3: Private Sub cmdDrive_Click()
4:
Dim lngDriveType As Long
5:
6:
Transmettre le nom du disque qui vous intresse
7:
la fonction GetDriveType()
8:
lngType = GetDriveType("c:\")
9:

10:
Utiliser la valeur renvoye pour dterminer
11:
le type de disque test
12:
Select Case lngType
13:
Case 2
14:
txtDrive.Text = "Disque amovible"
15:
Case 3
16:
txtDrive.Text = "Disque dur fixe"
17:
Case 4
18:
txtDrive.Text = "Disque distant (rseau)"
19:
Case Else
20:
txtDrive.Text = "Inconnu"
21:
End Select
22: End Sub

Pour saisir et tester le code du Listing 23.2, cherchez la dclaration GetDriveType()


dans la Visionneuse dAPI, changez loption Public en Private, puis copiez-la dans le
Presse-papiers. Compltez le reste du code pour quil corresponde au code du
Listing 23.2.
Ajoutez ensuite un bouton de commande nomm cmdDrive en bas de la feuille, puis
ajoutez un contrle TextBox, nomm txtDrive, en haut de la feuille. Vous pouvez ajuster la police et la taille de ces contrles votre got, mais ce nest pas crucial dans le
cadre de cet exemple. Modiez la ligne 8 pour indiquer une autre unit, par exemple une
disquette pour tester un autre type dunit. Excutez le programme pour voir safcher
la description du disque (voir Figure 23.5).

>
:

744

Prog VB6 FM3B Page 745 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

Figure 23.5
La routine API
a renvoy
des informations sur
votre unit de disque.

Trouver le dossier Windows


Parfois, lorsquils crivent des programmes qui accdent des chiers systme ou qui
enregistrent des chiers dans le rpertoire Windows, les programmeurs Visual Basic
utilisent les routines API pour localiser le dossier Windows (dans lequel il est install).
Vous pouvez aussi avoir localiser les dossiers System et Temp. Il existe des routines
API qui donnent ces informations. Vous pouvez, par exemple, enregistrer des chiers
temporaires de votre application dans le dossier Temp de lutilisateur. (Le terme dossier
est un synonyme de rpertoire).
ntion
Atte

Supprimez toujours les chiers que vous stockez dans le dossier Temp lors
de lexcution de votre application. De nombreux utilisateurs suppriment
rgulirement les chiers du dossier Temp vieux de plus dun jour ou deux
pour le nettoyer et faire de la place. Il nest pas souhaitable que votre application soit de celles qui enregistrent leurs chiers dans Temp sans les
supprimer, car ces utilisateurs risquent de ne pas apprcier vos programmes
longtemps. Quant ceux qui ne pensent pas nettoyer leur dossier Temp (la
grande majorit, dont beaucoup ignorent mme lexistence), ils ne sauront
mme pas que leur espace disque diminue chaque fois que votre application
se termine. Cest du gchis.

Les tapes suivantes dcrivent comment crer une petite application qui vous permet
dexprimenter la recherche dinformations sur le dossier de Windows :
1. Crez une nouvelle application.
2. Placez les contrles du Tableau 23.2 dans la feuille. La Figure 23.6 montre le rsultat
que vous obtiendrez.

745

<
:

Prog VB6 FM3B Page 746 Lundi, 6. aot 2001 3:54 15

Partie III

Figure 23.6
Cette feuille afchera
les informations
sur les dossiers de
Windows.

3. Double-cliquez sur la feuille pour crer la procdure vnementielle Form _Load().


Insrez quelques lignes vierges avant pour vous permettre dinclure les instructions
Declare qui renverront les trois rpertoires.
4. Dmarrer la Visionneuse dAPI si vous laviez ferme lors de la session prcdente.
Ouvrez le chier texte ou base de donnes Win32api.
5. Slectionnez les entres Declare dans la zone de liste.
6. Cherchez lentre de dclaration de GetWindowsDirectory() dans la liste et doublecliquez dessus pour afcher la dclaration correspondante.
7. Changez loption Public en Private, car la dclaration rsidera dans le module de
feuille, et pas dans un module de code gnral.
8. Copiez la fonction GetWindowsDirectory() dans la Visionneuse dAPI et collez-la
au dbut de la fentre de code.
9. Rptez les tapes 6 8 pour les dclarations des fonctions GetSystemDirectory()
et GetTempPath().
10. Entrez le reste du code ncessaire, dcrit dans le Listing 23.3.
11. Excutez lapplication pour voir le rsultat de la recherche dinformations sur les
rpertoires. La Figure 23.7 montre lafchage rsultant sur une machine.

>
:

746

Prog VB6 FM3B Page 747 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

Tableau 23.2 : Placez ces contrles dans la feuille de votre application


pour exprimenter la recherche des dossiers de Windows
Proprit de contrle

Valeur de proprit

Feuille : Name

frmFolder

Feuille : Caption

Infos sur les rpertoires

Feuille : Height

4500

Feuille : Width

5790

Label #1 Name

lblTitle

Label #1 Alignment

2-Center

Label #1 BorderStyle

1-Fixed Single

Label #1 Caption

Informations sur les rpertoires Windows

Label #1 FontSize

14

Label #1 FontStyle

Gras

Label #1 Height

855

Label #1 Left

1080

Label #1 Top

360

Label #1 Width

3375

Label #2 Name

lblWD

Label #2 Alignment

1-Right Justify

Label #2 Caption

Rpertoire Windows :

Label #2 Height

255

Label #2 Left

720

Label #2 Top

1680

Label #2 Width

1455

Label #3 Name

lblSD

Label #3 Alignment

1-Right Justify

Label #3 Caption

Rpertoire System :

Label #3 Height

255

Label #3 Left

720

Label #3 Top

2280

747

<
:

Prog VB6 FM3B Page 748 Lundi, 6. aot 2001 3:54 15

Partie III

Tableau 23.2 : Placez ces contrles dans la feuille de votre application


pour exprimenter la recherche des dossiers de Windows (suite)

>
:

Proprit de contrle

Valeur de proprit

Label #3 Width

1455

Label #4 Name

lblTD

Label #4 Alignment

1-Right Justify

Label #4 Caption

Rpertoire Temp :

Label #4 Height

255

Label #4 Left

720

Label #4 Top

2880

Label #4 Width

1455

Label #5 Name

lblWinD

Label #5 Alignment

0-Left Justify

Label #5 BorderStyle

1-Fixed Single

Label #5 Height

255

Label #5 Left

2400

Label #5 Top

1680

Label #5 Width

2295

Label #6 Name

lblWinS

Label #6 Alignment

0-Left Justify

Label #6 BorderStyle

1-Fixed Single

Label #6 Height

255

Label #6 Left

2400

Label #6 Top

2280

Label #6 Width

2295

Label #7 Name

lblWinT

Label #7 Alignment

0-Left Justify

Label #7 BorderStyle

1-Fixed Single

Label #7 Height

255

748

Prog VB6 FM3B Page 749 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

Tableau 23.2 : Placez ces contrles dans la feuille de votre application


pour exprimenter la recherche des dossiers de Windows (suite)
Proprit de contrle

Valeur de proprit

Label #7 Left

2400

Label #7 Top

2880

Label #7 Width

2295

Bouton de commande : Name

cmdExit

Bouton de commande : Caption

&Quitter

Bouton de commande : Left

2040

Bouton de commande : Top

3480

Bouton de commande : Width

1215

Figure 23.7
Les informations
sur les rpertoires
dpendent de
la conguration
de la machine de
lutilisateur.

Listing 23.3 : Les fonctions de lAPI qui recherchent les dossiers demandent un
peu plus de travail que les routines API dj vues

1: Private Declare Function GetWindowsDirectory Lib "kernel32" Alias


"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long)
As Long
2: Private Declare Function GetSystemDirectory Lib "kernel32" Alias
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long)
As Long
3: Private Declare Function GetTempPath Lib "kernel32" Alias
"GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer

749

<
:

Prog VB6 FM3B Page 750 Lundi, 6. aot 2001 3:54 15

Partie III

Listing 23.3 : Les fonctions de lAPI qui recherchent les dossiers demandent
un peu plus de travail que les routines API dj vues (suite)

4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:

As String) As Long
Private Sub Form_Load()
Initialise les labels des dossiers systme au chargement
Dclare une chane fixe assez longue pour contenir les informations
Dim strFolder As String * 255
Dim intLength As Integer

Obtient les informations sur le rpertoire Windows


intLength = GetWindowsDirectory(strFolder, 255)
lblWinD.Caption = Left(strFolder, intLength)

Obtient les informations sur le rpertoire System


intLength = GetSystemDirectory(strFolder, 255)
lblWinS.Caption = Left(strFolder, intLength)

Obtient les informations sur le rpertoire Temp


intLength = GetTempPath(255, strFolder)
lblWinT.Caption = Left(strFolder, intLength)
End Sub
Private Sub cmdExit_Click()
End
End Sub

Le code que vous devez utiliser pour rechercher les noms des dossiers est intressant,
car il demande plus de travail que les prcdents appels dAPI que vous avez tudis.
Ces routines recherchent les informations de dossiers ncessaires, mais vous devez les
rcuprer dans une longue chane de caractres renvoye par la fonction.
La ligne 7 rserve de la place pour une chane de longueur xe de 255 caractres. Mme
si les systmes ne demandent pas tant de caractres pour les dossiers, il vaut mieux en
avoir trop que pas assez. La ligne 8 dclare ensuite une variable entire qui sera utilise
comme valeur de retour de chaque fonction. Cette valeur, stocke dans intLength
(ligne 12), contient le nombre de caractres effectifs du chemin de dossier dans la
chane. Selon les ordinateurs, la longueur du nom de chemin peut tre diffrente, en
fonction de lemplacement des dossiers. Une chane de 255 caractres laisse votre
application beaucoup de place pour contenir les chemins daccs de ces dossiers sur
nimporte quel PC, sauf dans le cas, trs rare o un de ces noms de rpertoires dpasse
255 caractres.

>
:

750

Prog VB6 FM3B Page 751 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

Lorsque le dossier est obtenu la ligne 12, remarquez que la fonction de lAPI GetWindowsDirectory() demande comme arguments une chane pour enregistrer le chemin
daccs et la longueur maximale de cette chane. Elle ne tentera donc pas de stocker plus
de 255 caractres dans la chane strFolder.
Une fois que la fonction revient, la ligne 13 rcupre cette partie gauche, qui contient le
nom de chemin. La valeur de retour de la fonction de lAPI dtermine le nombre de
caractres du chemin daccs dans la chane. Tous les caractres aprs ce nombre
contiennent des informations non signicatives, quil nest pas souhaitable dafcher.
La ligne 20 montre une anomalie qui se rencontre souvent dans les routines API. La fonction GetTempPath() est du mme type que GetWindowsDirectory() et GetSystemDirectory(), pourtant la position de ses arguments est inverse. Faites toujours trs attention
aux instructions Declare quand vous travaillez sur des routines API pour ne pas confondre
les arguments par inadvertance.

Info

La particularit des trois fonctions illustres dans cette application


savre assez courante. De nombreuses routines de lAPI Windows exigent
de telles manipulations avant et aprs les appels de fonction. Parfois, des
fonctions identiques ont des arguments inverss (comme ici GetTempPath()). Les intrts des fonctions internes de Visual Basic est quelles
offrent plus de cohrence, quelles sassocient parfaitement aux types de
donnes intgrs Visual Basic et quelles nexposent pas aux mmes
dangers en cas dutilisation incorrecte (par exemple, une rinitialisation
intempestive de la machine).

En rsum
Cette leon supplmentaire a expliqu comment utiliser les routines de lAPI Windows.
Windows est en fait un regroupement de bibliothques de liens dynamiques qui contiennent des milliers de routines auxquelles on peut accder depuis un programme Visual
Basic. Vous nutiliserez pas toutes les procdures disponibles dans lAPI, mais certaines
sont pratiques lorsque vous devez travailler sur des informations du systme ou effectuer
une fonction apparente, par exemple lire des donnes de la base de registres ou rinitialiser la machine de lutilisateur.
La matrise de lAPI Windows demande du temps, et nombre de programmeurs nen
connaissent pas toutes les procdures beaucoup sont ncessaires au bon fonctionnement du systme dexploitation, mais nont aucune utilit pour les applications que
lutilisateur excute. Cependant, en ayant accs ces procdures de lAPI Windows

751

<
:

Prog VB6 FM3B Page 752 Lundi, 6. aot 2001 3:54 15

Partie III

(fonctions et sous-routines) vous pouvez piocher dans un assortiment riche qui informe
ou aide grer le systme de lutilisateur.
Lutilisation de lAPI Windows est assez lourde. Cependant, Visual Basic comprend
un outil, la Visionneuse dAPI. Vous pouvez lutiliser pour consulter toutes les routines
existant dans lAPI Windows et rcuprer linstruction de dclaration correspondante,
que vous pouvez coller directement dans votre propre code. Une fois colle avec
linstruction Declare, la routine de lAPI Windows peut tre appele dans votre
programme Visual Basic. Windows rendra la fonction disponible au moment de
lexcution.

Questions-rponses
Q Pourquoi les dclarations des routines de lAPI Windows et lappel des procdures semblent si complexes ?
R La complexit vient de la connexion entre Visual Basic et la routine elle-mme.
Les routines API nont pas t crites en fonction de Visual Basic. Elles ont t
conues et crites lorigine pour tre utilises avec le langage C, qui se sert dun
ensemble de types de donnes lgrement diffrent de celui de Visual Basic, et qui
appelle aussi les routines dune manire diffrente. La dclaration est la manire de
faire comprendre Visual Basic des routines qui ne font pas partie de son environnement.
Q Quels sont les autres exemples de routines API que je peux vouloir tudier ?
R Les routines sont bien trop nombreuses pour tre mentionnes. Cependant, la liste
suivante, mme si elle est loin dtre exhaustive, vous donne un point de dpart pour
savoir ce qui est votre disposition :
rechercher les valeurs de la base de registres ;
dterminer les ressources systme libres et utilises, comme lespace mmoire ou
disque ;
accder la version de Windows qui sexcute ;
travailler sur une fentre ;
graphiques de bas niveau ;
grer les valeurs dans un chier INI (les chiers INI taient utiliss par les
versions de Windows avant Windows 95 pour enregistrer des informations
systme et sont encore utiliss par certains programmes).

>
:

752

Prog VB6 FM3B Page 753 Lundi, 6. aot 2001 3:54 15

Chapitre 23 : LAPI Windows

Trouver une routine relve parfois de la devinette. En gnral, si vous trouvez une
routine API que vous pensez utile, recherchez dans laide en ligne de Visual Basic
pour voir si elle rpond vos besoins. Vous ne pouvez toujours pas dduire laction
dune routine partir de son nom. Par exemple, pour lire et crire une valeur dans un
chier INI, vous utilisez les fonctions Visual Basic GetSetting() et SaveSetting().
Q Comment puis-je dcouvrir quelles routines de lAPI Windows sont
disponibles ?
R Il existe plusieurs sources, que ce soit le systme daide en ligne de Visual Basic, le
site Web de Microsoft ou encore divers ouvrages traitant de la programmation Visual
Basic.
Q Existe-t-il un moyen de simplier lutilisation des routines API ?
R Si vous utilisez souvent une ou plusieurs routines API, vous pouvez simplier
quelque peu leur utilisation. Au lieu de lancer la Visionneuse dAPI chaque fois que
votre application doit utiliser une routine API pour coller linstruction Declare, puis
appeler la routine, vous pouvez ajouter les routines API que vous utilisez
rgulirement dans un module de code standard avec une extension de chier .BAS.
Le module contiendra toutes les instructions Declare des routines API que vous
voulez utiliser. Vous pouvez aussi crire une fonction ou une sous-routine Visual
Basic qui appelle la routine API. Utilisez une liste darguments qui correspond, en
type de donnes, ceux de la routine API. Une telle procdure permet denrober,
autour de la routine de lAPI Windows, une procdure Visual Basic qui en respecte
les conventions dappel et les arguments.
Ensuite, lorsquune application Visual Basic a besoin de faire appel lune ou
lautre de ces routines, il suft dajouter le module votre application. Cette
dernire na alors plus qu appeler la fonction denrobage Visual Basic pour excuter la routine API. En dautres termes, pour votre application, une routine API est
appele et revient comme toutes les autres procdures Visual Basic que vous crivez.
Une fois que votre bibliothque Visual Basic des routines API est correctement
dbogue, vous disposez dune mthode plus sre dappel des procdures API dont
vous avez le plus besoin.

Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension des lments traits, ainsi que des exercices qui vous permettent de mettre en
pratique ce que vous avez appris. Essayez de comprendre les questions et les exercices
avant de passer la leon suivante. Les rponses se situent lAnnexe A.

753

<
:

Prog VB6 FM3B Page 754 Lundi, 6. aot 2001 3:54 15

Partie III

Quiz
1. Quelle est la signication dAPI ?
2. Etant donn la riche collection des fonctions internes de Visual Basic, pourquoi
pouvez-vous avoir besoin dappeler une routine de lAPI Windows ?
3. Pourquoi les DLL utilises par vos applications Visual Basic naugmentent pas la
taille de ces dernires ?
4. Pourquoi les noms des DLL standards ont-ils chang avec les versions de
Windows ?
5. Quel outil vous permet de consulter plus facilement le format des routines API ?
6. Quelle est linstruction qui permet de dclarer les routines de lAPI Windows ?
7. Vrai ou faux. Les routines de lAPI Windows ont une apparence et un mcanisme
dappel uniforme.
8. Que fait linstruction Declare ?
9. Quel qualiant, Public ou Private, est ncessaire pour une procdure de lAPI
Windows dclare dans un module de feuille ?
10. Quel est le but dune procdure denrobage ?

Exercice
1. Quel chier, GDI32.DLL ou KERNEL32.DLL, contient la fonction de lAPI
GetSystemTime() ? Comment pouvez-vous le savoir de toute routine API que vous
rencontrez ?

>
:

754

Prog VB6 FM annexes Page 755 Lundi, 6. aot 2001 4:03 16

Partie

IV

Annexes
A Solutions aux exercices . . . . . . . . . . . . . . . . . . . .

757

B TPrcdence des oprateurs . . . . . . . . . . . . . . . .

789

C Table des codes ASCII . . . . . . . . . . . . . . . . . . . .

791

755

Prog VB6 FM annexes Page 756 Lundi, 6. aot 2001 4:03 16

Prog VB6 FM annexes Page 757 Lundi, 6. aot 2001 4:03 16

A
Solutions aux exercices
Chapitre 1
Quiz
1. Visual Basic est fond sur le langage BASIC.
2. Visual Basic est un environnement visuel et exploite un langage simple, driv du
BASIC. Mais il permet de crer de puissantes applications Windows.
3. La nature visuelle de Visual Basic prime sur le langage de programmation
plusieurs gards. Linterface visuelle donne vos programmes leur "visage" particulier et interagit avec lutilisateur. Le langage de programmation travaille en coulisses
pour connecter lensemble des lments visuels.
4. Une fentre de feuille peut tre la fentre dapplication, mais une mme application
peut contenir plusieurs fentres de feuilles. La fentre de feuille est ce voit lutilisateur quand il excute le programme.
5. Un bogue est une erreur dans le programme. Le dbogage est le processus de correction des bogues.
6. Les programmes crits en langage compil sexcutent beaucoup plus rapidement
que les programmes crits en langage interprt.
7. Les programmes crits en langage interprt sont plus faciles dboguer que les
programmes crits en langage compil.

757

Prog VB6 FM annexes Page 758 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

8. Lecran de prsentation safche, toujours identique, au dmarrage de lapplication.


Lcran Astuce du jour napparat quaprs, sert donner des conseils lutilisateur,
et cet utilisateur peut demander que cet cran ne safche plus.
9. Les contrles sont des objets tels que labels, boutons de commande, boutons
doption, etc., qui apparaissent sur la feuille. Les proprits et valeurs de proprits
dun contrle sont ce qui dnit son comportement et le distingue des autres.
10. Faux. Les contrles ne contiennent pas de code. Les contrles sont des objets visuels
avec lesquels lutilisateur interagit. Le code est stock sparment (dans ce que lon
appelle un module).

Exercice
Lancez lassistant Cration dapplications et rpondez Oui lorsquil demande si vous
souhaitez ajouter un accs Internet votre application. Lors de lexcution, vous slectionnerez Afchage, Navigateur Web pour ouvrir la fentre navigateur. (Vous devez naturellement disposer dune connexion Internet.)

Chapitre 2
Quiz
1. Une barre doutils est un ensemble de commandes accessibles par simples boutons.
La Bote outils est la fentre qui contient les contrles que vous pouvez placer sur
la feuille.
2. MSDN.
3. Faux. La fentre Feuilles peut contenir autant de feuilles que lapplication lexige.
Toutefois, une seule feuille peut tre slectionne la fois.
4. Lorsque vous le placez sur la feuille aprs avoir slectionn un outil, le pointeur
che de la souris se transforme en pointeur cruciforme qui permet de dessiner le
contrle.
5. Visual Basic place automatiquement le contrle au centre de la feuille. Vous pouvez
ensuite le dplaer et le dimensionner.
6. Faux. Cest dans la fentre Proprits que lon dnit les proprits de contrles (on
peut galement le faire dans le code).
7. La fentre Proprits afche les proprits de lobjet slectionn.

>
:

758

Prog VB6 FM annexes Page 759 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

8. En cliquant sur les points de suspension, par exemple la proprit Font, vous
afchez une bote de dialogue qui facilite le rglage de la proprit.
9. Caption.
10. Les noms par dfaut ne sont pas trs explicites. Attribuer au contrle un nom plus
parlant, notamment laide de prxes spciques, cela permet de deviner sa fonction daprs le seul nom, ce qui est pratique lorsquun projet contient de nombreux
contrles.

Exercices
Pour ajouter un arrire-plan bleu, double-cliquez sur la proprit BackColor de la feuille.
(La desription donne en bas de la fentre Proprits indique la fonction de la proprit
slectionne.) Une zone de liste safche, qui contient deux onglets. A longlet Palette,
vous pouvez choisir nimporte quelle couleur darrire-plan. Longlet Systme propose les
couleurs Windows plus conventionnelles. A longlet Palette, slectionnez un ton de bleu.
Ajouez un bouton de commande quelque part sur la feuille, par exemple dans le coin
infrieur droit. Changez sa proprit Name en cmdExit. Changez sa proprit Caption en
Quitter. Pour ajouter la ligne de code requise, double-cliquez sur le bouton de
commande. Tapez End au milieu de la procdure. Excutez le programme. Le nouveau
bouton de commande apparat sur fond bleu. Une fois limage afche, vous pouvez
quitter le programme en cliquant sur Quitter.

Chapitre 3
Quiz
1. Une touche de raccourci est une combinaison de touche, par exemple Alt-R, par
laquelle lutilisateur peut slectionner le contrle.
2. Faux. Les vnements concernent uniquement les contrles.
3. Lvnement Cancel permet lutilisateur de slectionner le bouton de commande
en appuyant sur la touche Echap.
4. Le contrle qui a le focus est entour dun cadre en pointill.
5. En appuyant sur Tab ou Maj-Tab (et sur la ches dans certaines applications).
6. TabIndex.

759

<
:

Prog VB6 FM annexes Page 760 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

7. les parenthses indiquent que LoadPicture () est une sorte de procdure. LoadPicture () est la procdure qui avait permis dafcher limage, au Chapitre prcdent. LoadPicture () est une fonction interne : elle ne ncessite pas de code, car le
code rside dj dans le langage de programmation Visual Basic. Les fonctions
internes ont ceci de pratique quelle vous pargne de saisir les codes appels servir
souvent. Vous dcouvrirez ces fonctions internes au Chapitre 5.
8. Faux. Visual Basic gnre souvent une procdure vnementielle Click, mais pas
toujours. Visual Basic insre la premire et la dernire ligne de la procdure vnementielle la plus probable pour le contrle. Dans le cas dune zone de texte, par
exemple, ce sera la procdure vnementielle Change.
9. Vrai.
10. La proprit PasswordChar permet de masquer ce que tape lutilisateur. Les regards
indiscrets, ainsi, ne peuvent attraper par-dessus lpaule un mot de passe ou autre
information sensible.

Exercices
1. 1: Private Sub frmMyApp_Load ()
2. Les lignes 1 et 5 indiquent que la procdure est une fonction. Les procdures vnementielles sont des sous-routines. Remplacez Function par Sub pour rsoudre le
problme.
3. Les trois zones de texte doivent avoir des proprits Style diffrentes pour les trois
barres de dlement. La proprit Text doit tre dnie lors de la cration. Vous ne
pouvez spcier plusieurs lignes dans Text. Un mot ou une phrase sufront.
Dnissez comme &Quitter la proprit Caption du bouton de commande.

Chapitre 4
Quiz
1. Le Crateur de menus.
2. Vrai.
3. Click (cest dailleurs le seul).

>
:

760

Prog VB6 FM annexes Page 761 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

4. Un raccourci clavier est une combinaison de touches (Ctrl-B, Alt-A, etc.) permettant
dexcuter une commande.
5. Les raccourcis clavier permettent de slectionner rapidement les options de menu.
6. Click.
7. Faux. Le Crateur de menus ne sert qu concevoir la structure du menu, non le code.
8. Une coche safche gauche de loption de menu.
9. Vrai, par dfaut. Cest dans le code que vous spciez le contraire.
10. Ce sont des commentaires, qui dcrivent le programme en langage clair. Le Projet
bonus 1, situ la n du Chapitre 4, vous en dira plus.

Exercices
1. Le Crateur de menus contient une srie de boutons gurant des ches. Lorsquon
clique sur la che-droite, des points de suspension sinsrent, et llment
slectionn descend dun cran dans la hierarchie du menu : option de menu, sousmenu, etc.
2. Manuel doit comprendre que cest lui de spcier, dans le code, quune option de
menu doit tre dsactive. Les options de menu ne sont pas toujours mutuellement
exclusives, comme elles ltaient dans ce chapitre. Cest au programmeur de dnir
le comportement des coches.
3. Ouvrez la fentre Code et cliquez sur chaque option de menu dans la aprtie infrieure de la fentre. Slectionnez des raccourcis clavier dans la liste fournie par le
Crateur de menus. A lexcution du programme, les raccourcis clavier apparatront
vis--vis des options de menu correspondantes. Appuyez sur lune des combinaisons
de touche pour faire un essai.

Chapitre 5
Quiz
1. Les dclarations de variables et autres donnes.
2. Une variable locale peut tre partage par plusieurs procdures, comme vous allez le
dcouvrir dans les chapitres venir.
3. Vrai.

761

<
:

Prog VB6 FM annexes Page 762 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

4. Faux. Une variable peut prendre successivement plusieurs valeurs lors de lexcution du programme.
5. Lun effectue une division classique, lautre une division entire.
6. Un oprateur surcharg est un oprateur qui peut effectuer des oprations diffrentes
selon le contexte.
7. Lesperluette (&). Le signe plus (+) doit tre de prfrence rserv aux additions.
8. Variant.
9. Faux. Les prxes ne sont pas obligatoires, mais facilitent la documentation du
code.
10. Vous pouvez spcier linstruction Option Explicit au dbut de la section de dclarations ou cochez loption correspondante dans la bote de dialogue Options. La
bote de dialogue sapplique globalement, alors que linstruction Option Explicit
ne concerne que son propre module de code.

Exercices
1. Vous pensez que la variable abc provoquera une erreur ? Bien vu, mais ce nest pas
a. A moins que vous ne spciez autre chose, Visual Basic traite a priori toutes les
variables comme de type Variant. La variable abc sera donc dclare comme
Variant.
2. Visual Basic calcule la division avant laddition, mais pour obtenir la moyenne,
Marie doit procder ainsi : sngAvg = (sngGrade1 + sngGrade2 + sngGrade3) / 3
3. a. 5.
b. 6.
c. 5.
d. 5.
e. 7.
4. a. a = (3 + 3) / (4 + 4)
b. x = (a b) * (a 2) ^ 2
c. f = a ^ (1/2) / b ^ (1/2)
5. Les esperluettes concatnent les chanes de sorte que Visual Basic traite les multiples lignes comme un seul littral.

>
:

762

Prog VB6 FM annexes Page 763 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

Chapitre 6
Quiz
1. Or.
2. Loprateur conditionnel compare deux valeurs. Loprateur logique combine deux
expressions conditionelles.
3. Une srie dinstructions appeles se rpter plusieurs fois.
4. Aprs cette affectation, la variable de type Integer contiendra 10 units de moins
quavant.
5. Cette boucle ne sexcutera jamais, car intN est dnie comme gale zro.
6. Si Exit For ntait pas inclus dans une instruction If, la boucle For ne sexcuterait
quune seule fois, puisque Exit For provoquerait larrt de la boucle ds la premire
itration.
7. Faux. Le bloc If block sexcute si la condition est satisfaite, le bloc Else si elle ne
lest pas.
8. Vrai. Si, au commencement de la boucle, la valeur nale est dj plus grande que la
valeur initiale, la boucle ne sexcutera jamais.
9. Pour excuter une boucle plusieurs fois.
10. Selon son rsultat, une instruction de dcision peut nexcuter le code quune seule
fois. Une instruction de boucle excute son code plusieurs fois.

Exercices
1. If (a = b) And (b = c) Then Le corps de linstruction suit.
2. La boucle du pauvre Momo na pas de n, parce que la variable de contrle ne
change jamais de valeur lintrieur de la boucle.
3. Dans la ralit, lhorloge dun stade de foot neffectue pas un dcompte, mais
lexemple illustre le fonctionnement des boucles imbriques :

1:
2:
3:
4:
5:

For Qtr = 1 to 2
For Minutes = 45 to 0 Step -1
Mi-temps.
Next Minutes
Next Qtr

763

<
:

Prog VB6 FM annexes Page 764 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

La boucle intrieure effectue un dcompte de 45 0, et la boucle extrieure rpte ce


dcompte deux fois.
4. Le code suivant explote trois types de Case dans une mme instruction Select Case :

1:
2:
3:
4:
5:
6:
7:
8:

Select Case intHours


Case 1 To 40
curOverTime = 0.0
Case 41 To 49
curOverTime = (intHours - 40) * 1.5 * sngRate
Case Is >= 50
curOverTime = ((intHours - 50) * 2 + (10 * 1.5)) *
sngRate
End Select

Chapitre 7
Quiz
1. La fonction interne renvoie une nouvelle valeur fonde sur la valeur de largument
qui lui est pass.
2. Vrai.
3. Empty.
4. Faux. Les trois tableaux dcrivent un mme argument de la fonction MsgBox(),
reprsent dans le chapitre par intStyle.
5. Le nom du projet.
6. Lutilisateur peut cocher autant de cases cocher que ncessaire, mais il ne peut
slectionner quun seul bouton doption la fois.
7. Vrai. Il faut pour cela que leurs valeurs soient False au premier chargement de la
feuille (par exemple, dans la procdure vnementielle Form_Load()).
8. Respectivement, les valeurs 0 et 1 de la proprit Value.
9. Respectivement, les valeurs True et False de la proprit Value.
10. An que lutilisateur puisse en slectionner plusieurs la fois, rpartis en catgories
diffrentes.

>
:

764

Prog VB6 FM annexes Page 765 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

Exercices
1. On vrie si InputBox() renvoie une chane vide ("").
2. strAns = MsgBox("You are out of paper", vbExclamation + _
vbDefaultButton2 + vbAbortRetryIgnore, "For Printer")
3. Voici la procdure vnementielle :

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

Private Sub cmdGetLocation_Click()


Obtient la ville et le dpartement par deux botes
dentre.
Concatne les deux chanes renvoyes.
Affiche le rsultat.
Dim strCity As String
Ville.
Dim strState As String Dpartement.
Dim strBoth As String
Chane concatne.
Valeur de renvoi de MsgBox().
Dim intAnswer As Integer
Demande la ville et le dpartement.
strCity = InputBox("Quelle sont la ville ?", "Ville")
strState = InputBox("Quelle est le dpartement ?",
"Dpartement")
Concatne les chanes.
strBoth = strCity & ", " & strState

Affiche la chane finale.


intAnswer = MsgBox("Vous habitez " & strBoth,
"Rsidence")
20: End Sub

4. Les procdures vnementielles pour les boutons doption seront des procdures
vnementielles Click. Click est lvnement qui se produit lorsque lutilisateur
slectionne lun des boutons doption. Vous navez pas dslectionner les autres,
Visual Basic sen charge automatiquement.

Chapitre 8
Quiz
1. Les variables publiques.
2. Les variables locales.
3. Vrai. Les arguments sont toujours passs par rfrence si vous ne spciez pas ByVal.

765

<
:

Prog VB6 FM annexes Page 766 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

4. Les sous-routines ne renvoient pas de valeurs.


5. IIf() et Choose().
6. Choose() renvoie alors Null.
7. Abs() renvoie la valeur absolue de son argument.
8. a. 74135b. 12345.67
9. intN contiendra 192.
10. Now renvoie la date et lheure, tandis que Time ne renvoie que lheure.

Exercices
1. Voici le Listing 8.1 rcrit :

>
:

766

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:

Private Sub GetTotal()


Cette procdure additionne les valeurs dun
formulaire, puis envoie le total et le pourcentage
dabattement la procdure qui calcule la taxe.
Dim curTotal As Currency
Dim sngDisc As Single
Special tax discount

Calculer le total daprs le formulaire.


curTotal = txtSale1.Text + txtSale2.Text + txtSale3.txt

Envoyer le total la procdure de taxation.


intMsg = MsgBox("The sales tax is " & SalesTax(curTotal,
_sngDisc))
13: End Sub
14:
15: Public Function SalesTax(curTotal As Currency, sngRateDisc
As _Single) As Currency
11:
Envoyer le total la procdure de taxation.
17:
Dim curSalesTax As Currency
18:

19:
Dans le chapitre, ce code tait une sous-routine.
20:
Calcul de la taxe de vente
21:
3,5 % du total.
22:
curSalesTax = (curTotal * .03) + (curTotal * .005)
23:

24:
Dduction du pourcentage dabattement.
25:
curSalesTax = curSalesTax - (sngRateDisc * curTotal)
26:

Prog VB6 FM annexes Page 767 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

27:
Dfinit la valeur renvoye.
28:
SalesTax = curSalesTax
29:

30:
Une fois termine, la procdure revient
31:
la procdure appelante.
32: End Function

2. strTitle = IIf(intTotal > 1000, "Bon boulot !", "Vir !")


3. Choose(ID, intBonus = 50, intBonus = 75, intBonus = 100)
4. intN contient 6, intO contient 5, et intP contient 6

Chapitre 9
Quiz
1. Il faut ajouter le contrle depuis la bote de dialogue Composants.
2. Ouvrir, Enregistrer, Police, Couleur, Imprimer et Aide Windows.
3. Le contrle Common Dialog permet de gnrer six botes de dialogue standards.
4. Le contrle Common Dialog ne devient visible pour lutilisateur que lorsquon lui
applique lune de ses mthodes Show. La bote de dialogue commune correspondante
safche alors au milieu de lcran.
5. Vrai.
6. La proprit Filter dtermine les types de chiers qui pourront safcher.
7. La proprit Flags dnit les divers paramtres dune bote de dialogue commune,
avant quelle ne safche.
8. Vrai.
9. Faux. La bote de dialogue Imprimer ne requiert pas de valeurs Flags prdnies
pour safcher. Cependant, on rgle en gnral certaines proprits, telles que
DialogTitle, avant lafchage.
10. Faux. La mthode doit tre plus prcise : ShowFont, ShowPrinter, etc.

767

<
:

Prog VB6 FM annexes Page 768 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

Exercices
1. Voici le Listing 9.2 modi :

1:
Prsuppose que CancelError vaut True.
2:
On Error Goto dbErrHandler
3:
Dfinit les valeurs Flags.
4:
CdbFont.Flags = cdlCFBoth Or cdlCFEffects
5:
CdbFont.ShowFont Affiche la bote de dialogue Police.
6: Dfinit les proprits du label qui
7: refltera les choix de lutilisateur.
8:
LblMessage.Font.Name = CdbFont.FontName
9:
LblMessage.Font.Size = CdbFont.FontSize
10: LblMessage.Font.Bold = CdbFont.FontBold
11: LblMessage.Font.Italic = CdbFont.FontItalic
12: LblMessage.Font.Underline = CdbFont.FontUnderline
13: LblMessage.FontStrikethru = CdbFont.FontStrikethru
14: LblMessage.ForeColor = CdbFont.Color
15: Exit Sub
16:
17: dbErrHandler:
18: Lutilisateur a cliqu sur Annuler.
19: Exit Sub Pas de modification.

2. Voici la procdure :

>
:

768

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

Private Sub mnuFileOpen_Click ()


Prsuppose que CancelError vaut True.
On Error Goto dbErrHandler
Determine les types de fichiers
qui apparatront.
cdbFile.Filter = "Texte (*.txt) | *.txt"
Spcifie le filtre par dfaut.
cdbFile.FilterIndex = 1
cdbFile.DialogTitle = "Open"
Affiche la bote de dialogue Ouvrir.
cdbFile.ShowOpen
**********************************
Ici, placez ou appelez une
*
procdure qui ouvre le fichier *
slectionn par lutilisateur. *
**********************************
Exit Sub
dbErrHandler:
Lutilisateur a cliqu sur Annuler.
Exit Sub Ne pas ouvrir de fichier.
End Sub

Prog VB6 FM annexes Page 769 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

Chapitre 10
Quiz
1. MouseDown et MouseUp rpondent des boutons spciques et indiquent, par les arguments quils passent leurs procdures, lequel des deux boutons de souris a servi.
Click, DblClick et MouseMove ne tiennent pas compte du bouton qui a servi.
2. Par largument intButton.
3. Il suft daffecter le chemin daccs dune icne la proprit DragIcon du contrle.
4. En crivant un code qui ignore certains vnements timer et ne rponde quune fois
que le laps de temps voulu sest coul.
5. On peut initialiser le contrle lors de la cration en ajoutant les lments dans la
proprit List, ou lors de lexcution (pratique la plus courante) en passant par
la mthode AddItem.
6. La proprit Value du contrle de liste spcie lindice de llment slectionn.
7. On peut supprimer les lments un un avec la mthode RemoveItem, ou les supprimer tous dun coup avec la mthode Clear.
8. Pour que la procdure vnementielle puisse tenir compte du nouvel lment, il faut
que le focus se dplace.
9. En dnissant la proprit Sorted comme True.
10. 23 lments.

Exercices
1. Ajoutez votre feuille une zone de liste, que vous initialiserez avec le code suivant
(aux prnoms prs, naturellement) dans la procdure vnementielle Form_Load():
Private Sub Form_Load()

lstFamily.AddItem ("Josette")

lstFamily.AddItem ("Paulette")

lstFamily.AddItem ("Mauricette")

lstFamily.AddItem ("Idulphe")

lstFamily.AddItem ("Tertullien")

lstFamily.AddItem ("Yolande")

lstFamily.AddItem ("Bruno")

lstFamily.AddItem ("Elvis")

769

<
:

Prog VB6 FM annexes Page 770 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

lstFamily.AddItem ("Georg Wilhelm Friedrich")

lstFamily.AddItem ("Marie-Chantal")

lstFamily.AddItem ("Casimir")
End Sub

2. (Aucune rponse ncessaire.)


3. Une fois les trois ComboBox ajoutes, il faut crire pour chacune delle une procdure vnementielle Change. Lorsquune ComboBox est change, il faut affecter
llment la valeur dindex (llment slectionn et ajout) la n des autres
ComboBox, en employant la mthode AddItem et en indexant llment dans la
ListCount de ces contrles.

Chapitre 11
Quiz
1. Lorsque lvnement Resize se produit, vous pouvez ajuster la position des contrles aux nouvelles dimensions de la feuille.
2. La proprit ScaleMode dtermine les units de mesures qui seront employes pour
les coordonnes CurrentX et CurrentY.
3. Le premier indice est 0.
4. Faux. Les applications SDI peuvent supporter plusieurs feuilles, condition que ces
feuilles ne contiennent pas chacune un jeu de donnes diffrent.
5. Une application MDI peut contenir plusieurs fentres de feuilles, chacune contenant
un jeu de donnes diffrent.
6. En haut.
7. ImageList.
8. Le contrle ImageList ne fait que contenir les icnes des boutons. Il napparat pas
lexcution.
9. Spc() insre dans une ligne de sortie un nombre xe despaces, tandis que Tab()
positionne le curseur texte sur un colonne spcique.
10. En utilisant la mthode Print toute seule.

>
:

770

Prog VB6 FM annexes Page 771 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

Exercices
1. (Aucune rponse ncessaire.)
2. Les deux sorties Print safchent sur une seule ligne, cause du point-virgule :
Ligne 1Ligne 2
3. (Aucune rponse ncessaire.)
4. Votre procdure vnementielle Click devrait contenir une instruction For comme
celle-ci :
For intCtr = 1 To 100

Form1.Print intCtr; " ";


Next intCtr

5. Voici le code :

Commence zro.
intCount = 0
Passe par chaque feuille.
For intCtr = 1 to Forms.Count
Ajoute le nombre de contrles sur chaque feuille.
intCount = intCount + Forms(intCtr).Count
Next intCtr

Chapitre 12
Quiz
1. Tous.
2. FreeFile().
3. Visual Basic lcrase.
4. Visual Basic crira la n du chier squentiel la prochaine instruction de sortie
chier.
5. linstruction ouvre un chier squentiel et permet aux instructions de sorties subsquentes dcrire la n du chier.
6. Le chiers squentiels doivent tre en mesure de localiser chaque numro denregistrement. Pour que ce calucl fonctionne, les enregistrements doivent tre de longueur
identique.

771

<
:

Prog VB6 FM annexes Page 772 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

7. Les chanes de longueur xe donnent des enregistrements de longueur xe, ce qui


nest videmment pas le cas des chanes de longueur variable.
8. Type.
9. Faux. Linstruction dnit un nouveau type de donnes, mais ne dclare aucune
variable de ce type.
10. Dir() avec arguments renvoie le premier chier trouv qui corresponde aux jokers.
Dir() sans arguments renvoie le prochain chier du dossier qui corresponde aux
jokers.

Exercices
1. Mauricette essaie sans doute de supprimer le dossier Factures qui contient encore
des chiers. La commande RmDir ne sapplique quaux dossiers vides.
2. La procdure suivante remplit le tableau (lignes 10 14) et crit ces lments dans
le chier ouvert (lignes 21 23) :

>
:

772

1: Private Sub output ()


2:
Dim strNames(5) As String
3:
Dim intAges(5) As Integer
4:
Dim strColors(5) As String
5:
6:
Dim intCtr As Integer
Compteur de boucle.
7:
Dim intFNum As Integer Numro de fichier.
8:
9:
Reoit les informations du tableau.
10:
For intCtr = 0 To 4
11:
strNames(intCtr) = InputBox("Nom suivant ?", "Nom")
12:
intAges(intCtr) = InputBox("Age suivant ?", "Age")
13:
strColors(intCtr) = InputBox("Couleur suivante ?", "Couleur")
14:
Next intCtr
15:
16:
intFNum = FreeFile
17:
18:
Ecrit la sortie.
19:
(Adaptez le chemin et le nom du fichier.)
20:
Open "C:\Stuff.txt" For Output As #intFNum
21:
For intCtr = 0 To 4
22:
Write #intFNum, strNames(intCtr), intAges(intCtr), _
strColors(intCtr)
23:
Next intCtr
24:
25:
Close #intFNum
26: End Sub

Prog VB6 FM annexes Page 773 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

3. Commencez par reproduire la feuille de la Figure 12.1. Pour chacune des trois zones
de liste, vous devez crire une procdure vnementielle Change qui mette jour les
deux autres. Voici un exemple :
Private Sub Direct_Change()

Lutilisateur a chang la liste Dossier.

filFile.Path = dirList.Path Change la liste Fichier.

Garantit quun seul fichier est slectionn.

If (filFile.ListCount > 0) Then

Slectionne le premier fichier de la liste.

filFile.ListIndex = 0

End If
End Sub

Lorsque lutilisateur slectionne un lecteur diffrent, vous devez en outre affecter le


nouveau chemin vers ce lecteur :
Private Sub Drive_Change()

Dfinit le chemin par dfaut du lecteur.

dirList.Path = drvList.Drive
End Sub

Chapitre 13
Quiz
1. En interrogeant la valeur Printers.Count.
2. Vrai.
3. ScaleMode.
4. Par la mthode NewPage.
5. Is TypeOf.
6. Vrai.
7. Faux. KillDoc ne peut annuler que les sorties imprimante de lapplication.
8. Me.
9. A la rsolution de lcran.
10. True.

773

<
:

Prog VB6 FM annexes Page 774 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

Exercices
1. Printer.Print Tab(32); "Votre nom"
2. Yolande doit comprendre que Windows supporte de multiples polices et tailles de
police. Ses calculs quant la largeur et la n de la page doivent tenir compte du
corps de la police utilise.
3. Voici le Listing 13.2 modi :

1:
2:
3:
4:
5:

Public Function IsColor() As Boolean


Dim blnIsColor As Boolean
Dim prnPrntr As Printer

Prsuppose quaucune imprimante couleur na t encore


trouve.
6:
blnIsColor = False
7:

8:
Parcourt les imprimantes.
9:
For Each prnPrntr In Printers
10:
If prnPrntr.ColorMode = vbPRCMColor Then
11:
Dfinit limprimante couleur comme imprimante par
dfaut.
12:
Set Printer = prnPrntr
13:
blnIsColor = True
14:
Exit For Laisse tomber.
15:
End If
16:
Next
Parcourt les imprimantes si ncessaire.
17:

18:
blnIsColor reste False si aucune imprimante couleur
19:
nest trouve, et devient True dans le cas contraire.
20:
Dfinit en consquence la valeur renvoye par la
fonction.
21:
IsColor = blnIsColor
22: End Function

Chapitre 14
Quiz
1. Le contrle Shape.
2. Le contrle Shape (qui dessine galement des rectangles).
3. PSet et Ligne.
4. Vrai.

>
:

774

Prog VB6 FM annexes Page 775 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

5. Loption F.
6. Parce que les boutons ne sont pas tous ncessaires.
7. Mode renvoie ltat du priphrique du contrle multimdia.
8. En rduisant la valeur de la proprit UpdateInterval.
9. Cest le contrle PictureBox qui recevra la sortie vido.
10. Cest le code qui dnit ainsi le contexte de priphrique.

Exercices
1. Voici quoi devrait ressembler votre code :

1: Private Sub Form_Load()


2:
Initialise la liste Forme.
3:
lstShape.AddItem "0 - Rectangle"
4:
lstShape.AddItem "1 - Square"
5:
lstShape.AddItem "2 - Oval"
6:
lstShape.AddItem "3 - Circle"
7:
lstShape.AddItem "4 - Rounded Rectangle"
8:
lstShape.AddItem "5 - Rounded Square"
9:
10:
Initialise la liste Motif.
11:
lstPattern.AddItem "0 - Solid"
12:
lstPattern.AddItem "1 - Transparent"
13:
lstPattern.AddItem "2 - Horizontal Ligne"
14:
lstPattern.AddItem "3 - Vertical Ligne"
15:
lstPattern.AddItem "4 - Upward Diagonal"
16:
lstPattern.AddItem "5 - Downward Diagonal"
17:
lstPattern.AddItem "6 - Cross"
18:
lstPattern.AddItem "7 - Diagonal Cross"
19:
20:
Initialise la liste Couleur.
21:
(Les couleurs ne sont pas toutes reprsentes.)
22:
lstFillColor.AddItem "Black"
23:
lstFillColor.AddItem "White"
24:
lstFillColor.AddItem "Blue"
25:
lstFillColor.AddItem "Red"
26:
lstFillColor.AddItem "Green"
27:
lstFillColor.AddItem "Yellow"
28:
29:
Initialise la liste Bordure.
30:
lstBorderColor.AddItem "Black"
31:
lstBorderColor.AddItem "White"
32:
lstBorderColor.AddItem "Blue"
33:
lstBorderColor.AddItem "Red"
34:
lstBorderColor.AddItem "Green"
35:
lstBorderColor.AddItem "Yellow"

775

<
:

Prog VB6 FM annexes Page 776 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

>
:

776

36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:

Dfininit comme valeur par dfaut la premire de chaque


liste.
lstShape.ListIndex = 0
lstPattern.ListIndex = 0
lstFillColor.ListIndex = 0
lstBorderColor.ListIndex = 0
End Sub
Private Sub lstPattern_Click()
Applique le motif slectionn.
shpSample.FillStyle = lstPattern.ListIndex
End Sub
Private Sub lstShape_Click()
Applique la forme slectionne.
shpSample.Shape = lstShape.ListIndex
End Sub
Private Sub lstFillColor_Click()
Applique la couleur de fond slectionne.
Select Case lstFillColor.ListIndex
Case 0:
shpSample.FillColor = vbBlack
Case 1:
shpSample.FillColor = vbWhite
Case 2:
shpSample.FillColor = vbBlue
Case 3:
shpSample.FillColor = vbRed
Case 4:
shpSample.FillColor = vbGreen
Case 5:
shpSample.FillColor = vbYellow
End Select
End Sub
Private Sub lstBorderColor_Click()
Applique la couleur de bordure slectionne.
Select Case lstBorderColor.ListIndex
Case 0:
shpSample.BorderColor = vbBlack
Case 1:
shpSample.BorderColor = vbWhite
Case 2:
shpSample.BorderColor = vbBlue
Case 3:
shpSample.BorderColor = vbRed
Case 4:
shpSample.BorderColor = vbGreen
Case 5:
shpSample.BorderColor = vbYellow

Prog VB6 FM annexes Page 777 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

87:
End Select
88: End Sub
89:
90: Private Sub mnuFileExit_Click()
91:
End
92: End Sub

2. (Aucune rponse ncessaire.)


3. Utilisez le contrle Common Dialog. Ajoutez une option de menu Fichier, Ouvrir
qui afchera la bote de dialogue Ouvrir. Dnissez un ltre qui ne fera apparatre
que les chiers .WAV. Une fois que lutilisateur a fait son choix, le nom du chier
doit tre affect la proprit Filename.

Chapitre 15
Quiz
1. Les modles de feuilles vous permettent dajouter des feuilles standards vos applications et dacclrer le dveloppement de vos programmes.
2. Vous pouvez ajouter les modles de feuilles partir de lassistant Cration dapplications, de loption de menu Projet, Ajouter une feuille, ou en cliquant avec le bouton
droit dans la fentre Projet et en slectionnant Ajouter, Feuille dans le menu contextuel.
3. Ajoutez simplement la mthode Show la feuille bote de dialogue A propos de lorsque
lutilisateur slectionne Aide, A propos de dans le menu de votre application.
4. Faux. La bote de dialogue A propos de contient dj le code ncessaire lafchage
des Infos systme.
5. Un cran daccueil ne doit rester lcran quun temps limit au dmarrage du
programme.
6. La bote de dialogue Astuce du jour reste lcran tant que lutilisateur le dsire,
alors que lcran daccueil napparat que brivement titre dintroduction. De plus,
lcran dAstuce du jour continue afcher des astuces supplmentaires quand
lutilisateur clique sur le bouton Astuce suivante. Lutilisateur peut dsactiver un
cran Astuce du jour pour quil ne safche plus au dmarrage de lapplication, alors
que lcran daccueil safche systmatiquement au dmarrage.
7. Lentre SaveSetting, utiliser conjointement la bote de dialogue Astuce du jour
spcie si lutilisateur souhaite la voir ou pas.

777

<
:

Prog VB6 FM annexes Page 778 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

8. ODBC (Open Database Connectivity) signie "connexion ouverte aux bases de


donnes". Elle offre une mthode standard daccs aux bases de donnes de diffrents systmes informatiques.
9. Vous devez faire de la bote de dialogue Astuce du jour ou de lcran daccueil la
feuille de dmarrage.
10. Le chier des astuces est un chier texte cr laide dun diteur tel le Bloc-notes
de Windows. Il contient une ligne par astuce. Vous devez enregistrer ce chier dans
le mme dossier que lapplication qui lutilise.

Exercices
1. Le texte du chapitre dcrit comment faire cette modication.
2. La rponse de ce projet est dj contenue dans lindice donn par la question. Le
plus compliqu est de crer lensemble des astuces laide du Bloc-notes.

Chapitre 16
Quiz
1. Lorsque vous liez un objet OLE, ce dernier reste avec son application parente. Lorsque vous incorporez un objet, votre application en obtient une copie : si lobjet incorpor est modi dans son application parente, la modication napparatra pas dans
votre application.
2. Lincorporation occupe le plus despace disque car une copie de lobjet doit se trouver dans votre application.
3. Faux. Vous devez crire le code denregistrement et de chargement des modications effectues sur lobjet OLE.
4. La mthode SaveToFile enregistre un objet sur le disque.
5. La mthode ReadFromFile charge des objets depuis le disque.
6. Linstruction If TypeOf et la fonction TypeOf() testent la classe des objets.
7. Faux. Les objets systme sont dj globaux ; vous navez pas les transmettre entre
procdures.
8. Les fonctions, les constantes nommes, les fonctions internes, les procdures et les
classes apparaissent souvent dans la liste des Membres.

>
:

778

Prog VB6 FM annexes Page 779 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

9. Visual Basic regroupe tous les membres et les classes suivant leur usage et non pas
alphabtiquement dans la liste des Membres.
10. Faux. Une des caractristiques les plus gratiantes de lExplorateur dobjets est sa
capacit trouver les objets de vos applications.

Exercices
1. La clause With npargne aucun effort de programmation lorsquil ny a que deux
proprits congurer.
2. Suivez les instructions de cette leon pour ajouter un objet WordPad une application (mais ajoutez la place lobjet Paintbrush). Vous devez utiliser le code denregistrement et de chargement des donnes OLE illustr dans la leon pour pouvoir
enregistrer vos dessins. Si cet exercice ne demande que peu en matire de rponse,
vous pourrez acqurir, en le ralisant, une bonne exprience de lutilisation dobjets
OLE dans dautres applications.

Chapitre 17
Quiz
1. LAutomatisation est le processus demprunt des fonctionnalits dune autre application pour crer lobjet de donne de cette dernire.
2. Une autre instance de Word sera dmarre et beaucoup de ressources du systme
seront utilises par les deux processus redondants.
3. Vous ne pouvez pas enregistrer des applications dans des variables ; vous devez donc
crer une rfrence une application laide de la commande Set.
4. Si vous droutez une erreur laide de linstruction On Error, vous pouvez dterminer lerreur survenue en testant la valeur de Err.Number.
5. Vous pouvez crer des contrles ActiveX en sous-classant des contrles uniques, des
agrgats de contrles ou en les crant de toutes pices.
6. Le contrle ActiveX le plus simple que vous pouvez crer est celui qui sous-classe
un contrle unique.
7. Vrai.

779

<
:

Prog VB6 FM annexes Page 780 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

8. Les blocs dnumrations sont utiliss pour dnir des listes de contantes numres.
9. Visual Basic utilise lextension .OCX pour les contrles ActiveX que vous crez.
10. Les contrles ActiveX exigent au moins une procdure Get et une procdure Let
pour que vous puissiez assigner et lire les valeurs de proprits.

Exercices
1. Aucune rponse nest ncessaire.
2. Vous devez dabord dclarer une variable pour contenir le texte dorigine. Vous
pourrez ensuite y enregistrer le texte avant de le convertir en majuscules ou en
minuscules. Vous pourriez crer une variable publique qui conserve sa valeur quand
la procdure de conversion de la casse se termine.
Etant donn que les variables locales sont prfrables, le choix dune variable publique
laisse beaucoup dsirer. Il existe plusieurs mthodes pour sauvegarder la valeur
dorigine de la zone de texte, mais la plus simple est sans doute de placer une zone de
texte masque dans la feuille (laissez la proprit Enabled True, mais mettez la
proprit Visible False). Ds que lutilisateur saisit du texte dans le contrle ActiveX, la proprit Text de ce dernier doit tre sauvegarde dans proprit Text de la
zone masque. Quand lutilisateur clique sur le bouton de commande Comme saisi, la
proprit Text du contrle ActiveX doit recevoir la valeur de la proprit Text du
contrle masqu. Indice : Assurez-vous que vous mettez bien jour la proprit Text
de la zone de texte masque chaque fois que lutilisateur tape une nouvelle valeur
dans le contrle ActiveX (comme le fait la procdure vnementielle Change).

Chapitre 18
Quiz
1. Le Gestionnaire de donnes vous permet danalyser des bases de donnes.
2. Une table est un chier de donnes qui se trouve dans une base de donnes.
3. Faux. Le nombre de colonnes naugmente pas sauf si vous augmentez le nombre de
champs de la base de donnes.
4. Vrai. Une table est une forme de jeu denregistrements recordset.

>
:

780

Prog VB6 FM annexes Page 781 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

5. Un contrle li est li un contrle de base de donnes, comme le contrle Data, qui


afche les enregistrements quand lutilisateur parcourt la base de donnes.
6. Un recordset est un regroupement denregistrements, comprenant les (mais ne se
limitant pas aux) enregistrements dune table. Un dynaset est un regroupement
denregistrements qui diffrent du classement par dfaut, par exemple en rpondant
un critre particulier. Le dynaset change si la base est modie. Un snapshot est un
instantan de dynaset, g, qui contient certains enregistrements de la base de
donnes tels quils se prsentaient linstant o il a t cr.
7. ADO est plus rapide, plus puissant et plus souple que le contrle de donnes.
8. EOF dtermine la n dune table et BOF, son dbut.
9. Une vue principale est un enregistrement et une vue secondaire est un ensemble
denregistrements qui vont avec lenregistrement principal. Il existe une relation un-plusieurs dans lafchage Principal/secondaire ; par exemple, un vendeur peut
avoir vendu plusieurs produits votre entreprise.
10. Lassistant Cration dapplications de Visual Basic gnre directement les feuilles
partir de la structure des tables de votre base de donnes.

Exercices
1. Najoutez pas de contrle Data la feuille. Il vous suft dajouter des contrles de
zones de textes et de les lier au contrle Data dj prsent. Congurez le contrle
Data dans la proprit DataSource de chaque contrle TextBox et dnissez dans la
proprit DataField la colonne (champ) correspondante de la table.
2. Pour former une relation un--plusieurs, vous devez slectionner deux tables qui ont
au moins un champ commun. Quand vous slectionnez le type de feuille Principal/
secondaire, la fentre suivante vous donne la possibilit de slectionner la table
utiliser comme source denregistrements principale. Slectionnez la table Authors dans
la liste et envoyez le champ Author dans la liste de droite pour que seul le nom de
lauteur apparaisse dans lafchage principal de lenregistrement. Une fois que vous
avez cliqu sur Suivant, la fentre de source des enregistrements secondaires safche. Vous pouvez y slectionner la table Title Author. Envoyez le champ ISBN dans
la liste de droite et cliquez sur Suivant pour afcher la fentre illustre la Figure
A.1. Mettrez en surbrillance le champ Au_ID (le seul champ commun) pour connecter
les enregistrements. Lorsque vous excutez lapplication, le nom de lauteur safche
en haut de la feuille, et les codes ISBN de chaque ouvrage crits par lauteur suivent
dans la partie infrieure.

781

<
:

Prog VB6 FM annexes Page 782 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

Figure A.1
Vous devez indiquer lassistant comment lier les deux
ensembles de champs.

Chapitre 19
Quiz
1. Le navigateur Web gnr dans lapplication afchera la page Web lURL que
vous avez fourni lorsque lapplication se connecte lInternet.
2. Faux. Votre application contiendra un navigateur Web incorpor utilisable et ne
dpend pas de linstallation dun navigateur sur la machine de lutilisateur.
3. Vrai. Vous devez disposer de Internet Explorer 4 sur votre machine pour utiliser les
fonctions compltes de programmation Web de Visual Basic. Ce navigateur est fourni
avec Visual Basic (si vous ne lavez pas dj). Il nest pas ncessaire den faire votre
navigateur par dfaut, mais cest celui dont a besoin Visual Basic pour le dveloppement.
4. Lencapsulation, dans sa forme la plus lmentaire, dsigne lempaquetage du code
et des proprits pour quun objet puisse transporter ses comportements et descriptions propres.
5. Certains contrles de Visual Basic 6 fournissent un accs direct au service en ligne
Microsoft Network. Naturellement, si lutilisateur na pas lautorisation daccs Microsoft Network, les contrles ne lui permettront pas de se connecter.

>
:

782

Prog VB6 FM annexes Page 783 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

6. Un intranet est une connexion interne de type Internet entre ordinateurs en rseau.
7. Un document ActiveX est une page Web qui contient une application Visual Basic
entirement fonctionnelle.
8. Java est un langage de programmation de type C++ qui permet dcrire de petits
programmes, dsigns sous le terme dapplets, qui voyagent avec la page Web et
sexcutent sur la machine de lutilisateur nal quand il afche la page Web qui les
contient.
9. Le langage VBScript fonctionne avec HTML pour charger les documents ActiveX.
10. Utilisez lassistant Migration de document ActiveX pour convertir des applications
existantes en documents ActiveX.

Exercices
1. Aprs avoir converti une application en un document ActiveX, vous pouvez ajouter
ces documents lapplication Classeur Ofce, qui nest rien dautre quun conteneur de contrles ActiveX. Tant que vous ne savez pas comment compiler un chier
EXE (il faut attendre le Chapitre 21), vous devrez faire vos tests avec le raccourci
Ofce en laissant Visual Basic en excution. Une fois la conversion en document
ActiveX effectue, dmarrez le programme Classeur Ofce, afchez le menu
Section, et cliquez sur Ajouter pour afcher la bote de dialogue Ajouter la slection.
Cherchez votre document ActiveX et double-cliquez dessus ; il safchera dans la
collection des outils. Dans un projet Ofce, vous pourrez donc intgrer des applications non Ofce avec les documents Ofce.
2. Avec les feuilles multiples, lassistant Migration devra crer plusieurs documents
ActiveX. Vous devez tester chacun sparment en lanant votre navigateur et en
slectionnant Fichier, Ouvrir pour chaque document ActiveX cr partir des
feuilles du projet.

Chapitre 20
Quiz
1. Vous devez utiliser des chiers RTF (Rich Text Format) pour le texte de laide et un
chier de projet HPJ, sauf si vous utilisez laide HTML, auquel cas le chier daide
aura pour extension CHM.
2. Lutilisateur peut passer dun sujet daide au suivant sans revenir un index.

783

<
:

Prog VB6 FM annexes Page 784 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

3. Ltiquette de note de bas de page K est utilise pour connecter laide aux sujets souligns.
4. Le chier de projet daide identie le chier de contenu, les ID de contexte des
pages daide et le texte de la barre de titre du moteur daide. Le compilateur daide
utilise le chier de projet durant la compilation du chier daide.
5. Utilisez la bote de dialogue Proprits de projet pour attacher laide la touche F1.
6. Utilisez les valeurs dID de contexte pour affecter des sujets daide particuliers aux
objets daide contextuelle.
7. Faux. Laide contextuelle utilise des ID de contexte numriques.
8. Les info-bulles surgissent quand lutilisateur laisse le curseur de la souris sur un
lment. Laide "Quest-ce que cest ?" ne safche que si elle est appele partir du
menu daide ou si lutilisateur clique sur le bouton "Quest-ce que cest ?" de la
barre doutils.
9. Paramtrez la proprit WhatsThisButton de la feuille True pour activer le bouton
"Quest-ce que cest ?" dans la barre de titre de la feuille.
10. Vrai.

Exercice
Dveloppez lexemple de cette leon. Lajout des autres sujets daide sera simple.
Suivez ces rgles :
1. Assurez-vous que la proprit ToolTips de chaque objet a une valeur.
2. Crez un message daide contextuelle pour chaque objet de la feuille.
3. Assignez des valeurs dID de contexte chaque sujet daide, dans le chier
projet.
4. Compilez le chier daide.

Chapitre 21
Quiz
1. Une erreur de syntaxe est une erreur dorthographe ou une mauvaise utilisation du
langage.

>
:

784

Prog VB6 FM annexes Page 785 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

2. Lordinateur dtecte les erreurs de syntaxe, mais la correction des erreurs de logique
est la charge des personnes.
3. Vrai.
4. Faux. Sil reste une erreur de syntaxe dans lapplication, Visual Basic empche son
excution.
5. Le dbogueur Visual Basic vous permet darrter un programme tout endroit en
plaant un point darrt dans le code. Vous pouvez alors poser le curseur de la souris sur
une variable pour voir sa valeur lexcution ou placer la variable dans la fentre
Espions.
6. En excutant un programme ligne par ligne, vous pouvez analyser les variables et
contrler les valeurs votre rythme, et vrier votre logique et le droulement du
programme.
7. Vrai. Vous pouvez placer des instructions dassignation dans la fentre Excution.
8. Un programme Visual Basic compil sexcute bien plus rapidement que dans
lenvironnement Visual Basic.
9. Lassistant Empaquetage et dploiement cre les routines dinstallation de vos applications.
10. Lassistant Empaquetage et dploiement peut crer un ensemble de chiers pour une
installation sur plusieurs disques.

Exercices
1. Linstruction contient une erreur de syntaxe, car Therefore est utilis la place de
Then dans linstruction If de la premire ligne.
2. Vrai. La phrase a non seulement une erreur de syntaxe, mais elle prsente aussi une
erreur de logique. En effet, la phrase na quune erreur et pas deux. Sa logique est
donc incorrecte !

Chapitre 22
Quiz
1. Faux. Tous les lments dun tableau, quelle que soit sa dimension, doivent tre du
mme type de donnes.

785

<
:

Prog VB6 FM annexes Page 786 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

2. Le second indice (9) dtermine habituellement le nombre de ligne dun tableau


multidimensionnel.
3. a. 4
b. 43
c. 12
4. Vrai.
5. Faux. Array() ne fonctionne quavec les tableaux une dimension.
6. Le contrle grille afche les donnes de table efcacement.
7. Les lignes et les colonnes xes servent de cellules de titre de la grille.
8. Utilisez une boucle imbrique pour assigner les lments de la table la grille.
9. Faux. Vous devez assigner la proprit CellPicture lexcution en utilisant la
fonction interne LoadPicture() ou un contrle image.
10. FormatString est plus simple dutilisation et est plus efcace que des instructions
dassignation pour congurer les titres des en-ttes de la grille.

Exercices
1. 28 lments sont rservs.
2. 30 lments sont rservs (noubliez pas lindice zro).
3. Le meilleur endroit pour enregistrer les valeurs de la grille dans la table est sans
doute la procdure cmdExit_Click(), telle quillustre ci-dessous :
Private Sub cmdExit_Click()

Enregistre les valeurs et termine lapplication

Dim curData(19, 7) As Currency

Remplit la table partir des donnes de grille

For Row = 1 To 19

For Column = 1 To 7

grdSales.Row = Row

grdSales.Col = Column

curData(Row, Column) = grdSales(Row, Column)

Next Column

Next Row

Quitte le programme

End
End Sub

>
:

786

Prog VB6 FM annexes Page 787 Lundi, 6. aot 2001 4:03 16

Solutions aux exercices

Chapitre 23
Quiz
1. API signie Application Programming Interface, soit Interface de programmation
dapplication.
2. Si Visual Basic comprend de nombreuses fonctions, il ne sait pas tout faire. Par
exemple, il ne comporte pas de fonction permettant de ramorcer le systme.
Les routines de lAPI Windows fournissent des fonctions systme auxquelles vous
pouvez accder depuis votre application Visual Basic.
3. Les DLL sont lies dynamiquement votre application au moment de lexcution, et
pas de la compilation. Ce qui signie que les ressources de la DLL ne sont pas mises
de ct par le systme dexploitation pendant toute la dure dexcution de votre
programme.
4. Quand Windows 95 est pass dans un environnement 32 bits, les noms de chiers des
DLL standards ont t modis. Pour distinguer les nouveaux chiers des anciens,
Microsoft a ajout 32 dans leur nom (par exemple, GDI32.DLL).
5. La Visionneuse dAPI est un outil que vous pouvez ajouter votre environnement
Visual Basic ( laide du menu Complments). Il permet de slectionner les routines
API dans des listes et den consulter la dclaration. Vous pouvez alors les copier et
les coller dans vos propres applications.
6. Linstruction Declare dclare les routines de lAPI Windows.
7. Faux. Il ny a pratiquement rien de normalis dans les routines de lAPI. Mme
parmi des familles de routines semblables, les listes darguments peuvent diffrer
considrablement, comme les types de donnes renvoys dans le cas des fonctions.
8. Linstruction Declare informe Visual Basic de lendroit o se trouve la routine
externe de lAPI Windows et de sa liste darguments. Visual Basic ne reconnat pas
ces routines externes car il contient son ensemble propre de fonctions internes, qui
sont diffrentes des procdures Windows. Linstruction Declare permet Visual
Basic de localiser et de se connecter correctement la routine API que vous avez
besoin dappeler depuis votre application.
9. Utilisez le qualiant Private quand vous dclarez des routines de lAPI Windows
depuis un module de feuille.
10. Une procdure denrobage est du code Visual Basic plac autour dun appel lAPI
Windows. Vous pouvez placer ces procdures dans un module de code rutilisable
quand une application Visual Basic a besoin des routines API. Au lieu de lancer la

787

<
:

Prog VB6 FM annexes Page 788 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

Visionneuse dAPI et de rechercher les types de donnes et leurs exigences, vous


navez plus qu appeler la procdure Visual Basic qui enrobe la routine API.
Le dbogage est simpli et vous achevez plus rapidement la cration dapplications
qui demandent des routines de lAPI Windows.

Exercice
La fonction GetSystemTime() est contenue dans le chier KERNEL32.DLL. Vous
pouvez le savoir en slectionnant la fonction dans la liste de la Visionneuse dAPI et
en consultant largument du nom de chier qui contient la fonction.

>
:

788

Prog VB6 FM annexes Page 789 Lundi, 6. aot 2001 4:03 16

B
Prcdence des
oprateurs
Le Tableau B.1 liste lordre de prfrence des oprateurs. Il regroupe les oprateurs par
type dopration.
Tableau B.1 : Ordre des oprateurs dans Visual Basic
Arithmtiques

De comparaison

Logiques

Exponentielle (^)

Egalit (=)

Not

Ngation (-)

Diffrent de (<>)

And

Multiplication et division (*, /)

Infrieur (<)

Or

Division entire (\)

Suprieur (>)

Xor

Modulo arithmtique (Mod)

Infrieur ou gal (<=)

Eqv

Addition et soustraction (+, )

Suprieur ou gal (>=)

Imp

Concatnation de chanes de caractres (&)

Like, Is

789

Prog VB6 FM annexes Page 790 Lundi, 6. aot 2001 4:03 16

Prog VB6 FM annexes Page 791 Lundi, 6. aot 2001 4:03 16

C
Table des codes ASCII
Dec.

Hexa

ASCII

Dec.

Hexa

ASCII

00

null

31

1F

01

32

20

espace

02

33

21

03

34

22

"

04

35

23

05

36

24

06

37

25

07

38

26

&

08

39

27

'

09

40

28

10

0A

41

29

11

0B

42

2A

12

0C

43

2B

791

Prog VB6 FM annexes Page 792 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

>
:

792

Dec.

Hexa

ASCII

Dec.

Hexa

ASCII

13

0D

44

2C

14

0E

45

2D

15

0F

46

2E

16

10

47

2F

17

11

48

30

18

12

49

31

19

13

50

32

20

14

51

33

21

15

52

34

22

16

53

35

23

17

54

36

24

18

55

37

25

19

56

38

26

1A

57

39

27

1B

58

3A

28

1C

59

3B

29

1D

60

3C

<

30

1E

61

3D

62

3E

>

93

5D

63

3F

94

5E

64

40

95

5F

65

41

96

60

66

42

97

61

Prog VB6 FM annexes Page 793 Lundi, 6. aot 2001 4:03 16

Table des codes ASCII

Dec.

Hexa

ASCII

Dec.

Hexa

ASCII

67

43

98

62

68

44

99

63

69

45

100

64

70

46

101

65

71

47

102

66

72

48

103

67

73

49

104

68

74

4A

105

69

75

4B

106

6A

76

4C

107

6B

77

4D

108

6C

78

4E

109

6D

79

4F

110

6E

80

50

111

6F

81

51

112

70

82

52

113

71

83

53

114

72

84

54

115

73

85

55

116

74

86

56

117

75

87

57

118

76

88

58

119

77

89

59

120

78

793

<
:

Prog VB6 FM annexes Page 794 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

>
:

794

Dec.

Hexa

ASCII

Dec.

Hexa

ASCII

90

5A

121

79

91

5B

122

7A

92

5C

123

7B

124

7C

155

9B

125

7D

156

9C

126

7E

157

9D

127

7F

158

9E

128

80

159

9F

129

81

160

A0

130

82

161

A1

131

83

162

A2

132

84

163

A3

133

85

164

A4

134

86

165

A5

135

87

166

A6

136

88

167

A7

137

89

168

A8

138

8A

169

A9

139

8B

170

AA

140

8C

171

AB

141

8D

172

AC

142

8E

173

AD

143

8F

174

AE

Prog VB6 FM annexes Page 795 Lundi, 6. aot 2001 4:03 16

Table des codes ASCII

Dec.

Hexa

ASCII

Dec.

Hexa

ASCII

144

90

175

AF

145

91

176

B0

146

92

177

B1

147

93

178

B2

148

94

179

B3

149

95

180

B4

150

96

181

B5

151

97

182

B6

152

98

183

B7

153

99

184

B8

154

9A

185

B9

186

BA

217

D9

187

BB

218

DA

188

BC

219

DB

189

BD

220

DC

190

BE

221

DD

191

BF

222

DE

192

C0

223

DF

193

C1

224

E0

194

C2

225

E1

195

C3

226

E2

196

C4

227

E3

197

C5

228

E4

795

<
:

Prog VB6 FM annexes Page 796 Lundi, 6. aot 2001 4:03 16

Partie IV - Annexes

>
:

796

Dec.

Hexa

ASCII

Dec.

Hexa

ASCII

198

C6

229

E5

199

C7

230

E6

200

C8

231

E7

201

C9

232

E8

202

CA

233

E9

203

CB

234

EA

204

CC

235

EB

205

CD

236

EC

206

CE

237

ED

207

CF

238

EE

208

D0

239

EF

209

D1

240

F0

210

D2

241

F1

211

D3

242

F2

212

D4

243

F3

213

D5

244

F4

214

D6

245

F5

215

D7

246

F6

216

D8

247

F7

248

F8

252

FC

249

F9

253

FD

250

FA

254

FE

251

FB

255

FF

=Prog VB6 FMIX.fm Page 797 Lundi, 6. aot 2001 4:05 16

Index
Symbols
= (argument nomm) 521
!, caractre de formatage de
chanes 263
, caractre de formatage de
nombres
%, caractre de formatage de
nombres 264
&, caractre de formatage de
chanes 263
&, oprateur 133
(Personnalis), proprit 283
*, joker 146
*, oprateur 133
+, oprateur 133
-, +, $, espace, caractres de
formatage de nombres 264
, oprateur 133
,, caractre de formatage de
nombres 264
., caractre de formatage de
nombres 264
/, caractre de formatage de
nombres 264
/, oprateur 133
<, caractre de formatage de
chanes 263
<, oprateur 144
<=, oprateur 144
<>, oprateur 144
<Code Non-Basic>, pile des appels 671
=, oprateur 144
>, caractre de formatage de
chanes 263
>, oprateur 144

>=, oprateur 144


?, oker 146
@, caractre de formatage de
chanes 263
\, caractre de formatage de
nombres 264
\, oprateur 133
\\, caractre de formatage de
nombres 264
^, oprateur 133

Nombres
0, caractre de formatage de
nombres 264

A
A propos de
exemple de cration 575
modle de feuille 487
A propos, bote de dialogue 24
Abs(), fonction 240, 743
Accs fichiers 407
alatoire 392
Close, instruction 393
Get , instruction
Open, instruction 393
Put , instruction
Line Input , commande
Read 382
Read Write 382
Squentiel 385
Input , instruction
Print , instruction
Write , instruction

verrouillage
Lock Read 383
Lock Read Write 383
Lock Write 383
Shared 383
Write 382
Accs Internet 624
Accolades SendKeys 189
Activate, vnement 80, 348
Activation in-situ 506
ActiveX 35, 66, 274, 532
ADO 592
automatisation 536
Excel 536
contrles
ajout au projet 533
compiler 558
conception 542
dessins par
lutilisateur 544
exemple de cration
544
fichier excutable
534
implmenter 558
mthodes de test 559
sous-classs agrgs
544
sous-classs simples
544
tester 559
crer ses contrles 541
dans Netscape 533
documents ActiveX 626

797

=Prog VB6 FMIX.fm Page 798 Lundi, 6. aot 2001 4:05 16

Index

ActiveX (suite)
excution
lexcution 545
la conception 545
tlchargement de contrles
533
UserControl_Resize() 555
ActiveX Data Objects Voir
ADO
Add, mthode 520
AddItem, mthode 301, 307
Addition 133
AddNew, mthode 617
ADO 592
contrles 601
connexion aux
donnes 609
Data 593
DataCombo 593
DataList 593
Microsoft Jet 3.51
OLE DB Provider
610
mise jour des tables
615
parcours des donnes
613
ADO Voir aussi Contrles
ADO
Afficher la dfinition,
Explorateur dobjets 526
Aide
adapter une application
644
afficher dans lapplication
655
compiler 654
connexion lapplication
655
contextuelle 642
contrle Botes de dialogue communes 655
crer les sauts hypertexte
648
crer un fichier RTF 649

>
:

798

fichier de projet 653


HTML 644
ID de contexte 650
conversion en
numrique 656
info-bulles 642
outils de cration 660
prparer le fichier des sujets
647
Quest-ce que cest ? 642,
658
RTF 647
chane de contexte
648
soulignement double
648
soulignement simple
648
symboles de note de
bas de page 648
texte masqu 648
sauts hypertexte 647, 648
touche F1 655
visionneuse de fichiers
daide 647
WinHelp 645
Aide en ligne 43
support technique 45
Aide HTML
FrontPage Express 646
Microsoft Word 97 646
Aide surgissante, soulignement
simple RTF 648
Ajout/Suppression de
programmes, Panneau de
configuration 686
Ajouter des contrles ActiveX
533
Alias 737
Align, proprit 366
Alignment, proprit 73
Alt
Souris 298
An 2000, bogue 126

And, oprateur 149, 152


And bitwise 187, 298
Animation 572
Annuler (bouton) 278
API Windows 671, 732
_lopen 737
bourrage des chanes 738
Declare 735
fonction denrobage 753
GetDriveType() 744
GetSetting() 753
GetSystemDirectory() 746
GetSystemTime() 754
GetTempPath() 746
GetWindowsDirectory()
740
incohrence des arguments
751
MessageBeep() 741
SaveSetting() 753
types de donnes 737
Visionneuse dAPI 739
App, objet systme 489
App.Major, objet systme 575
App.Minor, objet systme 575
App.Revision, objet systme
575
App.Title, objet systme 575
Appel
de fonctions 236
de procdures 228, 229,
233
de sous-routines 235
Applets (Java) 627
Application Programming
Interface Voir API Windows
Applications 8
compiler 677
dboguer 664
dsinstaller 686
distribution 677
assistant Empaquetage et dploiement
680
hirarchie des objets 536

=Prog VB6 FMIX.fm Page 799 Lundi, 6. aot 2001 4:05 16

Index

multifeuilles Voir MDI


363
test en parallle 687
tester 664
AppPath, variable systme 683
Arguments 173
Contrles 238
InputBox() 182
KeyAscii 185
MsgBox() 175
nomm 521
passement entre procdures
233
passement par rfrence/
par valeur 235
Array(), fonction 319, 703
Asc(), fonction 251
ASCII 146, 185, 188
fonctions 251
KeyCode 186
Assembleur 8
Assignation Set 537
Assistants 18
Cration dapplications
1926, 484, 593
bases de donnes
Classe 595
Code ADO 595
Contrle de donnes ADO 595
Connexion Internet
(fentre) 620
enregistrement unique
594
Grille (feuille de
donnes) 595
Internet 620
MDI 366
menus 98
MS Chart 595
MS HFlexGrid 595
Principale/secondaire
595
Empaquetage et
dploiement 680

Interface de contrles
ActiveX 547
Dfinition des attributs 551
dmarrage 548
Internet 620
Migration de document
ActiveX 628
conversion de
plusieurs feuilles 637
Rcapitulatif 631
types dapplications
converties 638
Astuce du jour 498
Afficher les astuces au
dmarrage (option) 498
Atn(), fonction 241
AutoActivate, proprit 509
Automatisation
ActiveX 536
in-situ 529
AutoRedraw, proprit 428
AutoSize, proprit 72
AutoTSize, proprit 542, 551

B
BackColor, proprit 276, 553
BackStyle, proprit 441
Barre donglets, contrle 496
Barres doutils 368
Dbogage 670
ImageList 369
Voir aussi Coolbars 372
Barres doutils Visual Basic 36
Dbogage 35
Editeur de code 35
Edition 35
Standard 35
Barres de dfilement 74, 467
Base de registres 499
Bases de donnes 578
assistant Cration dapplications 593

Classe 595
Code ADO 595
Contrle de donnes
ADO 595
Enregistrement
unique 594
Grille (feuille de donnes) 595
liens 595
MS Chart 595
MS HFlexGrid 595
Principale/secondaire 595
BIBLIO.MDB 582
champs 579
champs indexs 584
colonnes 579
compatibles ODBC 578
connexion Voir ODBCODBC
contrles avancs 592
contrles lis 587
dBase 578
donnes spares par des
virgules 578
dynaset 583
enregistrements 579
Feuilles de calculs Lotus
578
fichier squentiel 580
FoxPro 578
Gestionnaire de donnes
582
index 580
interrogation 580
jeu denregistrements 583
lignes 579
Microsoft Access 578
Microsoft Jet 3.51 OLE
DB Provider 610
NWIND.MDB 582
Paradox 578
pointeur denregistrement
591
recordset 583

799

<
:

=Prog VB6 FMIX.fm Page 800 Lundi, 6. aot 2001 4:05 16

Index

Bases de donnes (suite)


relation plusieurs--plusieurs 598
relation un--plusieurs 595
relation un--un 598
relationnelles 581
snapshot 583
SQL 612
table 580
BASIC 812, 319, 345
BASICA 9
Beep, instruction 153, 742
Before, argument nomm 521
BIBLIO.MDB 601
Bibliothques
de liens dynamiques Voir
DLL
de types 522
Bloc dnumration 542
BOF, proprit 591, 615
Bogue de lan 2000 126
Bote outils 36
ajouter des contrles 535
contrles Internet 622
crer des onglets 535
onglets 564
Botes dentre VoirInputBox()
Botes de dialogue 271
A propos 24
A propos de 487
exemple 575
Composants 534
Connexion 493
Connexion ODBC 501
Crer le projet 677
Options 496
Options, Vrification
automatique de la
syntaxe 666
Pile des appels 670
Projet, Ajouter une feuille
486
Proprits du projet 655
Botes de dialogue communes
Aide 289

>
:

800

Aide Windows 272


Bouton Annuler 278
Couleurs 272, 276
Constantes nommes
277
DialogTitle, proprit 276
Enregistrer 272, 284, 286
Filter, proprit 285
Flags, proprit 277
Imprimer 272, 287
Ouvrir 272, 284
Police 272, 280
Constantes nommes
281
ShowColor, mthode 275
ShowFont, mthode 275
ShowHelp, mthode 275
ShowOpen, mthode 275
ShowPrinter, mthode 275
ShowSave, mthode 275
Botes de message
Voir MsgBox()
Boolean, type de donnes 124,
148
Boolens Voir Boolean
BorderColor, proprit 440,
441
BorderStyle, proprit 70, 193,
440, 441
BorderWidth, proprit 440,
441
Boucles 159
Do... Loop 160
For
Voir aussi For... Next
For Each 352
imbriques 165
itrations 163
Boucles For
tableaux 699
Bourrage (chanes de lAPI)
738

Boutons
Annuler 278
CancelError, proprit
279
MsgBox() 176
Boutons doption 73, 191
Boutons de commande 74
vnements 82
proprit Default 368
proprits 75
Boutons radio Voir boutons
doption
ByRef 737
ByRef, mot cl 235
Byte, type de donnes 121, 148
ByVal 737
ByVal, mot cl 235

C
C 11
C++ 11
CAB, fichiers 680
Calc.Vbp, projet 628
Call, instruction 228, 236, 715
CallDlls.VBP (projet exemple)
736
Canal de fichier 380
Cancel, proprit 75
CancelError, proprit 279
Caption, proprit 53, 76, 193
raccourcis clavier 190
Caractres de formatage
! 263
% 264
& 263
, 264
-, +, $, espace 264
. 264
/ 264
< 263
> 263
@ 263
\ 264

=Prog VB6 FMIX.fm Page 801 Lundi, 6. aot 2001 4:05 16

Index

\\ 264
0 264
Dates 265
E-, E+, e-, e+ 264
Case Voir Select Case
Casse 146, 188, 253
CBool(), fonction 248
CByte(), fonction 248
CCur(), fonction 248
CDate(), fonction 248
CDbl(), fonction 248
CDec(), fonction 248
CellPicture, proprit 726
Cellule de tableau 696
CenterCells(), procdure 716
Chanes 124
concatnation 133
de contexte (aide RTF)
648
Dclaration 130
Empty (mot cl) 125
Fonctions 250
Formatage 263
longueur fixe/variable 130
nulle 125
Champs 104
Champs (bases de donnes) 579
Change, vnement 81
ChangeSignal(), fonction 669
ChDir, commande 402
ChDrive, commande 402
CheckBox Voir Cases cocher
Chimes.wav (son) 569
chkLoadTipsAtStartup(), procdure 499, 504
CHM, extension de fichier 646
Choose(), fonction 241
Syntaxe 247
Chr(), fonction 251
CInt(), fonction 248
Circle, mthode 449
Cities, collection 520
Classes 543
Collection 520
ComboBox 524

CommandButton 513, 520


dobjets 513
DateTime 525
dfinition 543
Explorateur dobjets 524
Form 513
instance 513
With End With 513
Clavier 184
vnements 184
proprits 184
Clear, mthode 306
Click, vnement 79, 80, 81,
185, 294, 296, 527, 574
Client 636
Clipboard, objet systme 516
CLng(), fonction 248
Close, instruction 384
cmdAni_Click(), procdure 574
cmdApply_Click(), procdure
497
cmdDecrease_Click(), procdure 722
cmdIncrease_Click(), procdure 722
COBOL 8
Code 10
lignes commentes 553
Code natif, compilation 679
Collection, classe 520
Collections 519
Cities 520
Controls 517, 518
de feuilles Voir Voir
Forms 349
Forms 491, 519
Forms Voir Forms 349
Printers 416
Tips 499
Colonnes (bases de donnes)
579
ColorConstants
Explorateur dobjets 524
ComboBox 306
mthode AddItem 307

proprits
Sorted 306
Style 306
Text 308
ComboBox, classe 524
COMDLG.DLL 733
Command, proprit 453
CommandButton, classe 513,
520
CommandButton, contrle Voir
Boutons de commande
Commandes
ChDir 402
ChDrive 402
Kill 402
lies aux fichiers 402
Line Input
MkDir 402
RmDir 402
Commentaires 18, 95
A COMPLETER 553
lignes commentes 553
Commissions sur les ventes
(exemple de contrle grille)
710
Common Dialog Voir Botes
de dialogue 271
Comparaisons 145
casse 146
conditionnelles 148
de chanes 145
If... Then 154
Select Case 157, 158
Compatibles 16 bits (DLL) 732
Compilation
application 677
code natif 679
icne de lapplication 679
informations de version
678
langages de programmation
10
nom dexcutable 678
Optimisations avances
(bouton) 679

801

<
:

=Prog VB6 FMIX.fm Page 802 Lundi, 6. aot 2001 4:05 16

Index

Complments
assistant Empaquetage et
dploiement 680
assistant Interface de
contrles ActiveX 547
assistant Migration de
document ActiveX 628
automatique dinstructions
59
charger au dmarrage 547
Gestionnaire de donnes
582
Visionneuse dAPI 739
Composants
bote de dialogue 534
Microsoft ADO Data Control 6.0 602
Microsoft Windows Common Controls 6.0 496
Compteur Voir For... Next
Concatnation 133
Condition 151
Conditionnels, oprateurs 144
ConnectionString, proprit
609
Connexion
modle de feuille 493
Connexion ODBC
modle de feuille 501
Connexion ouverte aux bases
de donnes Voir ODBCODBC
Const 554
Constantes 121
TIP_FILE 499
Constantes (Visionneuse
dAPI) 740
Constantes nommes 179
Flags 277, 281, 284
fonction LoadPicture()
437, 438
Mode 458
MsgBox() 177, 178, 180
ScaleMode 357
StartUpPosition 347

>
:

802

VarType() 244
vbInformation 554
vbWhite 554
Conteneur OLE 507
Contextuelle, aide 642
ControlBox, proprit 70
Contrle de donnes
Voir Contrle Data
Contrles
ActiveX 532
ajout au projet 533
compiler 558
conception 542
crer 541
dessins par
lutilisateur 544
exemple de cration
544
fichier excutable
534
implmenter 558
installation 681
mthodes de test 559
sous-classs agrgs
544
sous-classs simples
544
tester 559
ADO 592, 601
assistant Cration
dapplications 593
connexion aux donnes 609
Data 593
DataCombo 593
DataList 593
mise jour des tables
615
parcours des donnes
613
Barre donglets 496
Botes de dialogue
communes
Aide 655
CommandButton Voir

Boutons de commande
consulter le contenu
lexcution 670
Data 586, 588
configuration 587
utilisation avance
590
de bases de donnes
avancs 592
de transfert Internet 624
Frame Voir Frames
Gauge 532
grille 703
comprendre 704
enregistrer des images
726
en-ttes de lignes et
de colonnes 705
exemple dutilisation
710
lignes et colonnes
fixes 705
prparation 703
groupe 512
groupes 517, 569
Image 76, 436
ImageList 369, 372
insrables 66
Internet 622, 624
dencapsulation 624
Internet Explorer 625
intrinsques 66
Label Voir Labels
lis 587
Line 439
ListBox Voir Zones de liste
ListView 364
Microsoft Internet
Controls 625
Microsoft Internet
Transfer Control 6.0 625
Microsoft Winsock
Control 6.0 625
MSFlexGrid 703
MSMaskEdit 188

=Prog VB6 FMIX.fm Page 803 Lundi, 6. aot 2001 4:05 16

Index

Contrles (suite)
multimdia 450
Navigateur Web 622, 624
OCX 32 bits 532
OLE 507
OptionButton
Voir Boutons doption
passement 238
PictureBox 436, 462, 569
Shape 440
TextBox
amlioration par ActiveX 542
TextBox Voir Zones de
texte
TextSizeUL 543
Timer Voir Timer
Timer Voir Timer 310
Toolbar Voir Barres
doutils 368
TreeView 364
Winsock 624
Zone de liste Dossier 399
Zone de liste Fichier 399
Zone de liste Lecteur 399
Contrles dextension VBX
532
Contrles de fichiers 399
Controls, collection 517, 518
Conversion
chanes 250
types de donnes 241, 248
Coolbars 372
Image, proprit 373
page de proprits 374
Coordonnes
CurrentY/CurrentX 356
curseur texte 356
feuilles 346
imprimante 422
Move 300
ScaleMode 359
Copier-coller 294
Copies, proprit 288
Cos(), fonction 241

Count, mthode 520


Count, proprit 351, 519
CreateObject(), fonction 537
Crateur de menus 101116
Cration dapplications, assistant 484
Cration de projet
Assistant Cration dapplications 1926
Crer le projet, bote de dialogue
677
CSng(), fonction 248
CStr(), fonction 248
CStr(),fonction 250
Ctrl (souris) 298
Ctrl-Break 668
CurDir(), fonction 402
Currency, type de donnes 148
CurrentX, proprit 356, 422
CurrentY, proprit 356, 422
Curseur texte 74
coordonnes 356
CVar(), fonction 249

D
Data (contrle) 586, 588
configuration 587
utilisation avance 590
DatabaseName, proprit 588
DataField, proprit 589, 612
DataSource, proprit 588, 612
Date et heure 263
caractres de formatage
265
fonctions 256
fonctions de comparaison
258
Date, fonction 256
Date, type de donnes 124, 148
DateAdd(), fonction 258
Syntaxe 258
DateDiff(), fonction 258, 259
DatePart(), fonction 258

DateSerial(), fonctions 260


DateTime, classe 525
DateValue(), fonction 262
Day(), fonction 259, 262
DblClick, vnement 80, 81,
296
Deactivate, vnement 80, 348
Dbogage 664
<Code Non-Basic> 671
barre doutils 670
fentre Espion express 676
fentre Espions 675
fentre Excution 673
fentre Variables locales
674
imprimer le rsultat dune
expression 673
mthode Print 673
modifier la valeur dune
variable en cours dexcution 673
pas pas 672
Pile des appels (bote de
dialogue) 670
points darrt 669
points darrt multiples
672
Dbogueur 15, 668
Debug, objet 353
Debug, objet systme 674
Dchargement des feuilles 352
Dclarations
chanes 130
composite 394
fonctions 236
procdures 229
tableaux 316
variables 127
Visionneuse dAPI 740
Declare, instruction 735
fonction API 736
procdure API 736
Dcrmentation 164
Default, proprit 76, 368

803

<
:

=Prog VB6 FMIX.fm Page 804 Lundi, 6. aot 2001 4:05 16

Index

Dsinstallation
de lapplication 686
ST6UNST.LOG 686
Dessin 435
contrles 438
Line 439
Shape 440
mthodes 445
Circle 449
Line 447
PSet 445
DeviceType, proprit 452
DHTML 627
applications Visual Basic
636
DialogTitle, proprit 276
Dim, instruction 127, 231, 316,
697
syntaxe 127, 130
Dir(), fonction 402
DisplayCurrentTip, mthode
499
Distribution
assistant Empaquetage et
dploiement 680
de lapplication 677
du code source 677
fichiers CAB 680
Division 133
par zro 667
DLL 630, 732
nature 734
Windows
COMDLG.DLL 733
GDI32.DLL 733
KERNEL32.DLL
733
MAPI32.DLL 733
NETAPI32.DLL 733
USER32.DLL 733
WINMM.DLL 733
Dll Document ActiveX, projet
627
DLL Runtime Visual Basic 679
Do, instruction Voir Do... Loop

>
:

804

Documentation 18, 94
Documents ActiveX 626
assistant de migration 628
Done, vnement 457
DoNextTip(), procdure 499
Donnes
noms de champs 580
Donnes (types de) 120??
Donnes, types de ??126
Dossiers
Windows 745
System 745
Temp 745
Drag, mthode 300
DragDrop, vnement 299
DragMode, proprit 299
DragOver, vnement 300
DVD 451
Dynamic Hypertext Markup
Language Voir DHTML
Dynamic Link Library
Voir DLL
Dynaset (bases de donnes) 583

E
E-, E+, e-, e+, caractres de formatage de nombres 264
E/S Voir Entres/sorties
Ecrans
Astuce du jour 498
daccueil 491
de prsentation 23
Editions de Visual Basic 13
Else, instruction Voir If... Then
ElseIf, instruction 155
Empaquetage et dploiement,
assistant 680
Empty, mot cl 125, 145, 183
Enabled, proprit 108
Encapsulation
dobjets 512
Internet 624

End Function, instruction 84,


235
End If, instruction
Voir If... Then
End Sub, instruction 235
End, instruction 93, 615, 638
EndDoc, mthode 420
Enregistrements 383
bases de donnes 579
longueur 396
OLE
contenu de lobjet
510
unique (Assistant Cration
dapplications) 594
Entiers Voir Integer
Entres/sorties 173
Entreprise (dition Visual
Basic) 592, 627
Enum, instruction 554
Enumration 542
EOF(), fonction 414
EOF, proprit 591, 614
Err, objet systme 280, 538
Err.Number 538, 668
Erreurs
de logique 666
de syntaxe 665
division par zro 667
Err.Number 538
Erreurs, grer 457
On Error Goto 430
On Error Goto, instruction
382
Esperluette 22, 96
Espion express (fentre de
dbogage) 676
Espions (fentre de dbogage)
675
Etiquettes 278
lblTipText 498
Evnements 26
Activate 80, 348
boutons de commande 82
Change 81

=Prog VB6 FMIX.fm Page 805 Lundi, 6. aot 2001 4:05 16

Index

clavier 184
Click 79, 80, 81, 185, 294,
296, 527, 574
DblClick 80, 81, 296
Deactivate 80, 348
Done 457
DragDrop 299
DragOver 300
feuilles 80
Form_Keypress() 493
Initialize 81
KeyDown 184, 186
KeyPress 184, 185
KeyUp 184, 187
Load 81, 302
MouseClick 551
MouseDown 296, 551
MouseMove 296
MouseUp 296
Paint 81
Resize 81, 348
Souris 294
StatusUpdate 453
Timer 312
Unload 81, 302
Voir aussi Procdures vnementielles
zones de texte 81
Excel 536
automatisation ActiveX
536
crer des feuilles de calcul
539
Exclusive, proprit 590
Exe Document ActiveX, projet
627
EXE standard 34
Excution
pas pas, dbogage 672
Excution (fentre de dbogage) 673
Exit Do, instruction 162
Exit Sub, instruction 235
Exit, instruction 154
Exp(), fonction 241

Explorateur dobjets 522


Afficher la dfinition 526
ColorConstants 524
contrles de manuvre
523
liste des Classes 524
liste des Membres 524
Explorateur Windows 21, 364
Exposant 133
Extensions
.BAS 40
.BMP 436
.CLS 40
.CUR 436
.DOB 40
.EMF 436
.EXE 34
.FRM 40
.GIF 436
.ICO 296, 436
.JPEG 436
.JPG 436
.OCX 35, 40
.PAG 40
.RLE 436
.VBP 40
.WMF 436

F
False
VarType() 244
Fentre Code
Listes Objet et Procdure
113
Fentre fille 366
Fentre parent 365
Fentres
Assistant Cration
dapplications
Connexion Internet
620
Bote outils
crer des onglets 535

Espion express 676


Espions 675
Excution 673
Info Express 558
Infos systmes 490
Rcapitulatif 631
Variables locales 674
Fentres Visual Basic
Code 39
Feuille 36
Feuilles 16
Nouveau projet 34
Prsentation des feuilles
37
Projet 38
Proprits 40
Feuilles 50, 346
Activate, vnement 348
Actives/inactives 363
Align 366
Applications multifeuilles
Voir MDI 363
AutoRedraw 428
Collection Forms 349
Deactivate, vnement 348
dchargement 352
vnements 80
fille 366
Form 349
Form.Hide, mthode 346
Form.Show, mthode 346
Form_Load 346
Form_Load() 192
Form_Unload 346
frmActiveX 559
imprimer 423, 427
Load 302
MDIChild 366
modles 482
A propos de 487
ajouter 484
bote de dialogue
Connexion 493

805

<
:

=Prog VB6 FMIX.fm Page 806 Lundi, 6. aot 2001 4:05 16

Index

Feuilles (suite)
bote de dialogue
Connexion ODBC
501
bote de dialogue
Options 496
crer un nouveau
modle 502
cran Astuce du jour
498
cran daccueil 491
modifier 486
objet de dmarrage 492
parent 365
Print, instruction 425, 426
Print, mthode 353
PrintForm, mthode 427
proprits 70, 358
PSet 445
Resize 348
StartUpPosition 347
Unload 302
Fichiers
alatoires 392
binaire 510
CAB 680
canal 380
Close 384
commandes 402
contrles 399
CurDir() 402
de dpendances 681
Dir() 402
enregistrements 383
EOF() 414
FreeFile() 383
INI 752
Lecture/criture Voir
Accs fichiers 385
Mapi32.txt (API) 739
numros 383
Open 380
partags 684

>
:

806

script dassistant Empaquetage et dploiement


680
squentiels 385, 580
Setup.exe 685
Setup.lst 685
ST6UNST.LOG 686
Wav 567
Win32api.txt (API) 739
File Transfer Protocol Voir FTP
FileName, proprit 286
Filename, proprit 462
Aide
fichier de projet
section 653
FILES (section du fichier de
projet daide) 653
Filter, proprit 285
FilterIndex, proprit 286
Filtres
de types de fichiers 285
Fix(), fonction 239
Fixes
lignes et colonnes (contrle grille) 705
Flags, proprit 277, 281, 284
Focus 76, 77, 78
LostFocus(), procdure
vnementielle 309
Fonctions 84, 172, 239
Abs() 240, 743
appel 236
Arguments 173
Array() 319, 703
Asc() 251
ASCII 251
Atn() 241
Casse 253
CBool() 248
CByte() 248
CCur() 248
CDate() 248
CDbl() 248
CDec() 248
chanes 250

ChangeSignal() 669
Choose() 241
Chr() 251
Chronomtriques 257
CInt() 248
CLng() 248
conversion 250
Cos() 241
CreateObject() 537
CSng() 248
CStr() 248, 250
CurDir() 402
CVar() 249
Date 256
Date et heure 256, 258
DateAdd() 258
DateDiff() 258, 259
DatePart() 258
DateSerial() 260
DateValue() 262
Day() 259, 262
Dclaration 236
Dir() 402
EOF() 414
Exp() 241
Fix() 239
Format() 263, 720
FreeFile() 383
GetObject() 537
GetText() 517
hscDecrease_Change()
722
hscIncrease_Change() 722
IIf() 241, 616
InputBox() 320
InputBox() Voir InputBox() 181
Int() 239
IsDate() 241
IsEmpty() 242
IsNull() 241, 242
IsNumeric() 241, 242
LCase() 254, 558
Left() 252
Len() 250

=Prog VB6 FMIX.fm Page 807 Lundi, 6. aot 2001 4:05 16

Index

Load_Tips() 499
LoadPicture() 173, 436,
726
LoadPicture()
Voir LoadPicture() 60
Log() 241
LTrim() 254
Mid() 252
Month() 259, 262
MsgBox() 495
MsgBox()
Voir MsgBox() 174
Now 256
Prives/publiques 236
PrReady() 431
ReverseIt() 254
Right() 252
RTrim() 254
Scientifiques 241
Sin() 241
Sous-chanes 252
Spc() 354, 386
Sqr() 240
Str() 250, 254
Tab() 355, 386
Tan() 241
Time 256
Timer 257
TimeSerial() 262
TimeValue() 262
Trim() 254
TypeOf() 513
UCase() 254, 558
Val() 250
VarType() 241
Weekday() 262
Year() 259, 262
Font, proprit 56, 193, 282,
424
FontBold, proprit 424
For Each, boucle 352, 517
For Each, instruction 352
For, instruction 163, 699
For... Next 163
Exit For 154

imbriques 165
Next Out 165
Step 163, 164
Voir aussi For Each 352
ForeColor, proprit 276
Form, classe 513
Form, objet 349
Form.Hide, mthode 346
Form.Show, mthode 346
Form_DragDrop(), procdure
vnementielle 299
Form_Keypress(), vnement
493
Form_Load(), procdure 489,
716
Form_Load(), procdure
vnementielle 192, 302, 346
Form_Resize(), procdure vnementielle 412
Form_Unload(), procdure vnementielle 346
Format(), fonction 263, 720
FormatString, proprit 724
Forms, collection 349, 491, 519
Forms,collection
Count,proprit 351
FORTRAN 8
Fournisseur de services Internet
620
Frames 192
FreeFile(), fonction 383
frmActiveX, feuille 559
FromPage, proprit 288
FrontPage Express
HTML 646
FTP 624
Function, mot cl 84

G
Gauge, contrle 532
GDI32.DLL 733
Gestionnaire de donnes 582
Get , instruction

Get, procdure 553


GetDriveType() (API) 744
GetObject(), fonction 537
GetSetting() (API) 753
GetSystemDirectory() (API)
746
GetSystemTime() (API) 754
GetTempPath() (API) 746
GetText(), fonction 517
GetWindowsDirectory() (API)
740
Glisser-dposer 294, 299, 342
Globales, variables 230
Gopher 624
GridLines, proprit 707
Grille 52, 55
Grille, (Assistant Cration dapplications) 595
Grille, contrle 703
comprendre 704
enregistrer des images 726
en-ttes de lignes et de colonnes 705
exemple dutilisation 710
lignes et colonnes fixes
705
prparation 703
Groupes
dobjets 517
de contrles 512, 517, 569
GWBASIC 9

H
HCW.EXE 654
Height, proprit 52, 56, 70
HelpContext, proprit 656
HelpContextID, proprit 646,
657
HelpFile, proprit 646, 656
Hritage (objets) 513
Hexadcimale, numrotation
103

807

<
:

=Prog VB6 FMIX.fm Page 808 Lundi, 6. aot 2001 4:05 16

Index

Hirarchie des oprateurs 134,


150
HLP, extension de fichier 646
Horloge interne 257, 310
HPJ, extension de fichier 653
hscDecrease_Change(), fonction
722
hscIncrease_Change(), fonction 722
HTM 627
HTML 626, 633, 644
FrontPage Express 646
Microsoft Word 97 646
systme daide 644
HTTP 621
Hypertext Markup Language
Voir HTML
Hypertext Transfer Protocol
Voir HTTP

I
I/O Voir Entres/sorties
Icon, proprit 71, 679
Icnes
Barres doutils Voir ImageList 372
MsgBox() 180
Icnes:pointeur de la souris;
337
ID de contexte 650
conversion en numrique
656
If TypeOf, instruction 238, 424
If, instruction
Voir aussi If... Then
If... Then
And 152
Else 153
ElseIf 155
End If 151
imbriques 154, 155
Voir aussi IIf()
If... Then, instruction 176

>
:

808

If... Else Voir If... Then


IIf(), fonction 241, 616
Syntaxe 246
IIS 636
Image, contrle 76, 436
Picture 436
Stretch 437
Image, proprit 373
ImageList, contrle 369, 372
Image 373
Images
dessin 435
Image, contrle 436
LoadPicture() 436
PictureBox 436
Imbrication
de types de donnes
personnaliss 398
If... Then 154
Imbrications
boucles For 699
For... Next 165
If... Then 155
Imprimante Voir Imprimer 415
Imprimer 415
AutoRedraw 428
CurrentX 422
CurrentY 422
EndDoc 420
feuilles 423, 427
Font 424
FontBold 424
KillDoc 423
Me 428
NewPage 420
On Error Goto 430
PrintForm 427
Proprits 417
PrReady() 431
ScaleMode 421
Set Printer 417
Incrmentation
For... Next 164
Indentation 59

Index
bases de donnes 580
Indices
collection Forms 349, 350
tableaux 314, 316, 319
zones de liste 305
Info Express, fentre 558
Info-bulles 36, 642
Infos systme 490
INI, extension de fichier 752
Initialize, vnement 81
InitScroll(), procdure 716
Input , instruction
Input/Output Voir Entres/
sorties 159
InputBox(), fonction 181, 320
syntaxe 182
In-situ
activation OLE 506
Inspection de donnes 241
Installation
contrle ActiveX 681
fichiers compresss 685
fichiers partags 684
Instance de classe 513
Instructions
Beep 153, 742
Call 228, 236, 715
Close 384
Declare 735
fonction API
format 736
procdure API
format 736
Dim 127, 231, 316, 697
Do Voir Do... Loop
Else Voir If... Then 153
ElseIf 155
End 93, 615, 638
End Function 84, 235
End If Voir If... Then
End Sub 235
Enum 554
Exit 154
Exit Do 162

=Prog VB6 FMIX.fm Page 809 Lundi, 6. aot 2001 4:05 16

Index

Exit Sub 235


For 699
For Each 352
For Voir For... Next
Get
If TypeOf 238, 424
If Voir aussi If... Then
Input
Let 132
Loop Voir Do... Loop 160
MsgBox 495
multilignes 96
Next Out Voir For... Next
Next Voir For... Next 163
On Error
Next 538
On Error Goto 278, 382,
430
Open 380
Option Base 730
Option Base 1 316
Option Compare Text 146
Option Explicit 119, 127,
146
Print
Public 316, 697
Put
SaveSetting 499
Select Case 156, 574
SendKeys 188, 495
Set 367
Set Printer 417
Step Voir For... Next
To 318
Type 395
TypeOf 513
Unload Me 493
Until Voir Do... Loop 160
While Voir Do... Loop
With End With 513
Write
Instructions daffectation 131,
139, 140
Int(), fonction 239
Integer, type de donnes 148

Interfaces
botes de dialogue
communes 275
de contrles ActiveX, assistant 547
Explorateur Windows 21
monodocument (SDI) 621
monoducument Voir SDI
multidocument Voir MDI
Internet 23
accs 624
applets Java 627
Application IIS 636
Applications DHTML 636
assistant Cration dapplications 620
client 636
contrles
dencapsulation 624
de transfert 624
Navigateur Web 622,
624
Winsock 624
contrles de la Bote
outils 622
DHTML 627
encapsulation 624
fournisseur de services
620
HTML 626
HTTP 621
Java 627
protocoles 620
FTP 624
Gopher 624
TCP 624
UDP 624
serveur 636
TCP/IP 620
URL 621
Internet Explorer 372, 620
contrles 625
Internet Information Server
Voir IIS
Interprts, langages 10

Interrogations
bases de donnes 580
Interval, proprit 312, 574
Intranet 620
InvisibleAtRunTime, proprit
543
IsDate(), fonction 241
IsEmpty(), fonction 242
IsNull(), fonction 241, 242
IsNumeric(), fonction 241, 242
Item, mthode 520
Itrations 163

J
Java 627
applets 627
Jeux denregistrements 583
Jokers 146, 285, 403

K
K, Symbole daide RTF 649
KERNEL32.DLL 733
KeyAscii, argument 185
KeyCode, argument 186
KeyDown, vnement 184, 186
KeyPress, vnement 184, 185
KeyPreview, proprit 184, 189
KeyUp, vnement 184, 187
Kill, commande 402
KillDoc, mthode 423

L
Labels 54, 71
proprit AutoSize 72
proprit WordWrap 72
Langages de programmation 1,
8
BASIC 812
C 11
C++ 11
compils 10

809

<
:

=Prog VB6 FMIX.fm Page 810 Lundi, 6. aot 2001 4:05 16

Index

Langages de programmation
(suite)
interprts 10
Pascal 11
Visual C++ 13
Visual J++ 13
Langages de scripts
HTML 633
VBScript 634
lblTipText, tiquette 498
LCase(), fonction 254, 558
LCase, proprit 542
Lecture/criture de fichiers
Voir Accs fichiers 385
Left(), fonction 252
Left, proprit 52, 56, 67, 70
Len(), fonction 250
Len, option 397
Let, instruction 132
Let, procdure 553
Liaison et incorporation dobjets Voir OLE
Li, contrle 587
Lien dynamique 734
Lignes (bases de donnes) 579
Lignes demballage 112
Like, oprateur 146
Line Input , commande
Line, contrle 439
BorderColor, proprit
440
BorderStyle, proprit 440
BorderWidth, proprit
440
Line, mthode 447
LisezMoi.txt, fichier 682
List, proprit 301
ListCount, proprit 305
ListIndex, proprit 304
ListView, contrle 364
Littraux 121
Load
vnement 302
Load, vnement 81
Load_Tips(), fonction 499

>
:

810

LoadNewDoc(), procdure 368


LoadPicture(), fonction 60,
173, 436, 726
Constantes nommes 437
constantes nommes 438
Locales, variables 230
Lock Read Write, mode de
verrouillage 383
Lock Read, mode de verrouillage
383
Lock Write, mode de verrouillage 383
Locked, proprit 73
Log(), fonction 241
Logiques (oprateurs) 149
Long, type de donnes 148
Loop, instruction V
oir Do... Loop
LostFocus(), procdure
vnementielle 309
LTrim(), fonction 254

M
Main(), procdure 349
Maintenance 17
Maj (souris) 298
Aide
fichier de projet
section 657
MAP (section du fichier de projet daide) 657
MAPI32.DLL 733
Mapi32.txt 739
Mathmatiques, oprateurs 132
Matrices 695
MaxButton, proprit 71
MaxLength, proprit 73
MBASIC 9
MDI 21, 363, 644
assistant Cration dapplications 366
fentre fille 366
fentre parent 365

MDIChild, proprit 366


Set, instruction 367
versus SDI 364
MDIChild, proprit 366
Me, mot cl 428
Membres
Explorateur dobjets 524
Menus 98116
Assistant Cration
dapplications 98
Crateur de menus 101
116
esperluette 22
options cochables 107
MessageBeep() (API) 741
Mesures
ScaleMode, proprit 356
twips 52
Mthodes
Add 520
AddItem 301, 307
AddNew 617
Circle 449
Clear 306
Count 520
Dessin 445
DisplayCurrentTip 499
Drag 300
EndDoc 420
Form.Hide 346
Form.Show 346
Item 520
KillDoc 423
Line 447
Move 300, 556
MoveLast 617
MoveNext 614
MovePrevious 615
NewPage 420
Print 353, 700
dbogage 673
PrintForm 427
PSet 445
ReadFromFile 511
Remove 520, 521

=Prog VB6 FMIX.fm Page 811 Lundi, 6. aot 2001 4:05 16

Index

RemoveItem 304
SaveToFile 510
SetFocus 495
Show 501
ShowColor 275, 412
ShowFont 275
ShowHelp 275, 656
ShowOpen 275, 413
ShowPrinter 275
ShowSave 275
Update 616, 617
Microsoft
site Web 533
Word 364
Word 97, HTML 646
Microsoft ADO Data Control
6.0 602
Microsoft Calendar Control 8.0
274
Microsoft Common Dialog
Control 6.0 274
Microsoft FlexGrid Control 6.0
703
Microsoft Help Workshop 654
Microsoft Jet 3.51 OLE DB
Provider 610
Microsoft Multimedia Control
6.0 451
Microsoft Network 626
Microsoft Office 14
Microsoft Office Professionnel
639
Microsoft Windows Common
Controls 6.0, composant 369,
496
Microsoft Windows Custom
Controls 6.0 369
Microsoft Windows Custom
Controls-3 6.0 372
Microsoft Winsock Control 6.0,
contrle 625
Mid(), fonction 252
Migration de document
ActiveX, assistant 628
MinButton, proprit 71

MkDir, commande 402


mnuHelpAbout_Click(),
procdure 574
Mod, oprateur 133
Mode, proprit 457
constantes nommes 457
Modles 24
feuilles 482
A propos de 487
ajouter 484
bote de dialogue
Connexion 493
bote de dialogue
Connexion ODBC
501
bote de dialogue Options 496
crer nouveau 502
de Visual Basic 483
cran Astuce du jour
498
Ecran daccueil 491
modifier 486, 487
Modules 118, 133
de code 229
Monoducument, interface Voir
SDI
Month(), fonction 259, 262
Mot de passe 73, 493
Mots cls
ByRef 235
ByVal 235
Empty 125, 183
Function 84
Me 428
Private 83, 229
Public 229, 231
Sub 84
MouseClick, vnement 551
MouseDown, vnement 296,
551
MouseIcon, proprit 296
MouseMove, vnement 296
MousePointer, proprit 295
MouseUp, vnement 296

MouseUp, vnementvnement 296


Movable, proprit 71
Move, mthode 300, 556
MoveLast, mthode 617
MoveNext, mthode 614
MovePrevious, mthode 615
MS Chart (Assistant Cration
dapplications) 595
MS HFlexGrid (Assistant
Cration dapplications) 595
MSDN 44, 99
MSFlexGrid, contrle 703
MsgBox(), fonction 174, 495
boutons 177
constantes nommes 177,
178, 180
icnes 180
syntaxe 175
MsgBox, instruction 495
MSINFO32.EXE 490
MSMaskEdit, contrle 188
MSN 626
Multidocument, interface
Voir MDI
MultiLine, proprit 73
Multimdia contrle
lecteur vido 460
Multimdia, contrle 450
commandes 453
DeviceType, proprit 452
Filename, proprit 462
lecteur de CD Audio 452
lecteur WAV 458
Mode, proprit 457
PictureBox, contrle 462
StatusUpdate, vnement
453
UpdateInterval, proprit
456
Multiplication 133
MultiSelect, proprit 327, 335

811

<
:

=Prog VB6 FMIX.fm Page 812 Lundi, 6. aot 2001 4:05 16

Index

N
Name, proprit 41, 53, 560
Navigateur Web 23
contrle Internet 622, 624
NETAPI32.DLL 733
Netscape, support ActiveX 533
New 518
NewPage, mthode 420
Next Out, instruction
Voir For... Next
Next, instruction On Error 538
Next, instruction Voir For...
Next
Nombres
entiers Voir Integer
formatage 264
Nombres dcimaux
Voir Decimal
Noms
dobjets 42
de variables 129
Not, oprateur 149
Notation scientifique 122
Notify, proprit 457
Now, fonction 256
NULL 125, 145, 243
Numros de fichiers 383
Numrotation hexadcimale
103

O
Object, type de donnes 124,
238, 512, 537
Objets 30
ADO 592
classes 513, 543
de dmarrage 492
Debug 353
encapsulation 512
externes
OLE
externes 506

>
:

812

Form 349
groupes 517
hritage 513
noms 42
OLE
enregistrer le contenu
510
permanent 507
Printer 353, 419
Printers 416
programmation 512
RDO 592
Screen 346
sous-classer 543
systme 514
App 489
App.Major 575
App.Minor 575
App.Revision 575
App.Title 575
Clipboard 516
Debug 674
Err 538
Err.Number 668
TypeOf 513
OCX, contrles 532
ODBC (Open Database
Connectivity) 483
OLE (Object Linking and Embedding) 349, 506
activation in-situ 506
automatisation in -situ 529
conteneur 507
contrle 507
document WordPad 509
eobjet
enregistrer le contenu, objet 510
fichier binaire 510
incorporation 506
liaison 506
objet permanent 507
objets externes 506
type dobjet 508

On Error Goto, instruction 278,


382, 430
On Error, instruction, Next 538
Onglets, fentre Bote outils
535
Open, instruction 380
Oprateurs 132135
133
& 133
* 133
+ 133
/ 133
< 144
<= 144
<> 144
= 144
> 144
>= 144
\ 133
^ 133
And 149, 152
conditionnels 144
hirarchie 134, 150
Like 146
logiques 149
mathmatiques 133
Mod 133
Not 149
Or 149
surchargs 133, 145
True 149
Xor 149
Optimisations avances, compilation 679
Option Base 1, instruction 316
Option Base, instruction 730
Option Compare Text,
instruction 146
Option Explicit, instruction
119, 127, 146
OptionButton, contrle Voir
Boutons doption
Aide
fichier de projet
section 653

=Prog VB6 FMIX.fm Page 813 Lundi, 6. aot 2001 4:05 16

Index

Options
bote de dialogue,
vrification automatique
de la syntaxe 666
modle de feuille 496
OPTIONS (section du fichier
de projet daide) 653
Or, oprateur 149
Oriente objet, programmation
512
Outils
de conversion, Visual
Basic Java 635
Explorateur dobjets 522
pointeur 71

P
Pages de proprits 283
Paint, vnement 81
Panneau de configuration,
Ajout/Suppression de programmes 686
Parenthses
oprateurs 134
Pas pas 672
Pascal 11
Passement 233
contrles 238
Par rfrence/par valeur
235
PasswordChar, proprit 73,
89, 493
P-Code (compilation) 679
Personnaliser
proprits 358
types de donnes 394
Phase de cration/phase
dexcution 73
Picture, proprit 76, 174, 436
PictureBox, contrle 436, 462,
569
Picture, proprit 436
Stretch, proprit 437

Pile des appels 670


Plusieurs--plusieurs, relation
598
Point dinsertion 74
Pointeur denregistrement 591
Pointeur de la souris 295
constantes nommes 295
icne 337
Pointeur, outil 71
Points darrt 669
multiples 672
Police 67
bote de dialogue 280
Police Font, proprit 56, 68,
193, 282, 424
POO Voir Programmation,
oriente objet
Porte des variables 230
PowerPoint 97 508
Prefixes
objets 42
Prfixes
tableaux 316
variables 129
Principale/secondaire (assistant
Cration dapplications) 595
Print , instruction
Print, instruction, vers la feuille
425, 426
Print, mthode 353, 700
CurrentX, proprit 356
CurrentY, proprit 356
dbogage 673
ScaleMode, proprit 356
Spc(), fonction 354
Tab(), fonction 355
Printer, objet 353, 419
Printers, collection 416
PrintForm, mthode 427
Printform, mthode
AutoRedraw, proprit
428
Private 520
Private, mot cl 83, 229

Prives
fonctions 236
procdures 228
Procdure vnementielles 82
Procdures 59
CenterCells() 716
chkLoadTipsAtStartup()
499, 504
cmdAni_Click() 574
cmdApply_Click() 497
cmdDecrease_Click() 722
cmdIncrease_Click() 722
Dclaration 229
DoNextTip() 499
Form_Load() 489, 716
Gnrales/de classe 226
Get 553
InitScroll() 716
Let 553
LoadNewDoc() 368
Main() 349
mnuHelpAbout_Click()
574
passement darguments
233
prives/publiques 228
Property Get 360
Property Let 361
SizeCells() 716
StartSysInfo 490
tbsOptions_Click() 497
UserControl_Resize() 555
Procdures vnementielles 79
Click 185
Form_DragDrop() 299
Form_Load() 192, 302,
346
Form_Resize() 412
Form_Unload() 346
LostFocus() 309
Procotoles
Internet, HTTP 621
Professionnelle (dition Visual
Basic) 592, 627

813

<
:

=Prog VB6 FMIX.fm Page 814 Lundi, 6. aot 2001 4:05 16

Index

ProgramFiles, variable systme


683
Programmation
erreur de logique 666
erreur de syntaxe 665
oriente objet 512
retracer ses pas 670
structure 715
Programmationer
avec les objets 512
Programmes 8
structure 226
Projets 20
bote de dialogue
Ajouter une feuille
486
compiler 677
cration, assistant Cration
dapplications 1926
distribution 680
Dll Document ActiveX
627
Exe Document ActiveX
627
icne de lapplication 679
Property Get, procdure 360
Property Let, procdure 361
Proprits 29
(personnalis) 283
Align 366
Alignment 73
AutoActivate 509
AutoRedraw 428
AutoSize 72
AutoTSize 542, 551
BackColor 276, 553
BackStyle 441
BOF 591, 615
BorderColor 440, 441
BorderStyle 70, 193, 440,
441
BorderWidth 440, 441
Cancel 75
CancelError 279
Caption 53, 76, 193

>
:

814

CellPicture 726
Command 453
ConnectionString 609
ControlBox 70
Copies 288
Count 351, 519
CurrentX 356, 422
CurrentY 356, 422
DatabaseName 588
DataField 589, 612
DataSource 588, 612
Default 76, 368
DeviceType 452
DialogTitle 276
DragMode 299
du projet, bote de
dialogue, connexion de
laide 655
Enabled 108
EOF 591, 614
Exclusive 590
Feuilles 358
FileName 286
Filename 462
Filter 285
FilterIndex 286
Flags 277, 281, 284
Font 56, 193, 282, 424
FontBold 424
ForeColor 276
FormatString 724
FromPage 288
GridLines 707
Height 52, 56, 70
HelpContext 656
HelpContextID 646, 657
HelpFile 646, 656
Icon 71, 679
Image 373
Imprimante 417
Imprimer 424
Interval 312, 574
InvisibleAtRunTime 543
KeyPreview 184, 189
LCase 542

Left 52, 56, 67, 70


List 301
ListCount 305
ListIndex 304
Locked 73
MaxButton 71
MaxLength 73
MDIChild 366
MinButton 71
Mode 457
MouseIcon 296
MousePointer 295
Movable 71
MultiLine 73
MultiSelect 335
Name 41, 53, 560
Notify 457
Pages de 283
PasswordChar 73, 89, 493
personnalises 358
Picture 76, 174, 436
procdure Property Get,
procdure 360
Property Let, procdure
361
RecordSource 588, 612
Resize 348
ScaleMode 356, 421
ScrollBars 74
SelLength 516
SelStart 516
SelText 516
ShowInTaskbar 71
SizeMode 509
Sorted 302, 306
StartUpPosition 71, 347
Stretch 437
Style 76, 306
TabIndex 77
Text 74, 303, 308
ToolboxBitmap 546
ToolTipText 370, 642
Top 52, 56, 67, 70
ToPage 288
UCase 542

=Prog VB6 FMIX.fm Page 815 Lundi, 6. aot 2001 4:05 16

Index

ULText 551
UpdateInterval 456
Value 190
Wait 457
WhatsThisButton 658
WhatsThisHelp 658
WhatsThisHelpID 658
Width 52, 56, 70
WindowState 71
WordWrap 72, 708
Protocoles
Internet 620
FTP 624
Gopher 624
TCP 624
TCP/IP 620
UDP 624
Protocoles Internet 620
Prototype, dfinition 17
PrReady(), fonction 431
PSet, mthode 445
Pseudocode Voir P-Code
Public 520
instruction 316, 697
mot cl 229, 231
Publiques
fonctions 236
procdures 228, 229
Puissance 133
Put , instruction

Q
QBasic 1
Quest-ce que cest ? 642
Qualifiants
ByRef 737
ByVal 737
Const 554
New 518
Private 520
Public 520
QuickBASIC 9

R
Raccourcis clavier, Caption,
proprit 190
RDO 592
Read Write, modes daccs 382
Read, modes daccs 382
ReadFromFile, mthode 511
Rcapitulatif, fentre 631
Recordset (bases de donnes)
583
RecordSource, proprit 588,
612
Redondance
With End With 513
Relationnelles, bases de donnes
581
Relations
plusieurs--plusieurs 598
un--plusieurs 595
un--un 598
Remove, mthode 520, 521
RemoveItem, mthode 304
Resize, vnement 81, 348
Resize, proprit 348
ReverseIt(), fonction 254
Rich Text Format Voir RTF
Right(), fonction 252
RmDir, commande 402
Routines
dinstallation, tester 685
du systme dexploitation
734
RTF 647
aide, crercrer un fichier
649
chane de contexte 648
crer laide 647
prparer le fichier des sujets daide 647
soulignement double 648
soulignement simple 648

symboles de note de bas de


page 648
texte masqu 648
Rtrim(), fonction 254

S
Sauts hypertexte 647
cration RTF 648
SaveSetting() (API) 753
SaveSetting, instruction 499
SaveToFile, mthode 510
ScaleMode, proprit 356, 421
constantes nommes 357
Screen, objet 346
Scripts
assistant Empaquetage et
dploiement 680
ScrollBars, proprit 74
SDI 21
versus MDI 364
Voir aussi Interface monodocument
Sections de dclarations 119
Select Case, instruction 156,
176, 574
Case Else 156
SelLength, proprit 516
SelStart, proprit 516
SelText, proprit 516
SendKeys, instruction 188, 495
Serveur 636
Set Printer, instruction 417
Set, instruction 367
Set, instructionSet 537
SetFocus, mthode 495
Setup.exe, fichier dinstallation
685
Setup.lst, fichier dinstallation
685
Shape, contrle, 440

815

<
:

=Prog VB6 FMIX.fm Page 816 Lundi, 6. aot 2001 4:05 16

Index

Shape, contrlecontrle
BackStyle, proprit 441
BorderColor, proprit
441
BorderStyle, proprit 441
BorderWidth, proprit
441
Shared, mode de verrouillage
383
Shift, argument 186
Show, mthode 501
ShowColor, mthode 275, 412
ShowFont, mthode 275
ShowHelp, mthode 275, 656
ShowInTaskbar, proprit 71
ShowOpen, mthode 275, 413
ShowPrinter, mthodes 275
ShowSave, mthode 275
Sin(), fonction 241
Single, type de donnes 148
SizeCells(), procdure 716
SizeMode, proprit 509
Snapshot (bases de donnes)
583
Sons
Chimes.wav 569
Sorted, proprit 302, 306
Soulignement double (aide
RTF) 648
Soulignement simple (aide
RTF) 648
SourceSafe 47
Souris 294
Click, vnement 296
copier-coller 294
DblClick, vnement 296
Drag, mthode 300
DragDrop, vnement 299
DragMode, proprit 299
DragOver, vnement 300
Evnements 294
glisser-dposer 294, 299,
342
MouseDown, vnement
296

>
:

816

MouseMove, vnement
296
MousePointer, proprit,
constantes nommes 295
Move, mthode 300
pointeur 295
touches de contrles 298
Sous-chanes 252
Sous-classer 543
un contrle 546
Sous-routines 84
interrompre 235
Soustraction 133
Spc(), fonction 354, 386
SQL 612
Sqr(), fonction 240
ST6UNST.LOG, fichier de dsinstallation 686
Standard (dition Visual Basic)
586
StartSysInfo, procdure 490
StartUpPosition, proprit 71,
347
Constantes nommes 347
StatusUpdate, vnement 453
Step, instruction Voir For...
Next
Str(), fonction 250, 254
Stretch 437
Stretch, proprit 437
String, type de donnes 124,
148
Structure de programmes 226
Structured Query Language
Voir SQL
Style, proprit 76, 306
Sub, mot cl 84
Suffixes (types de donnes) 123
Support technique 45
Surchargs (oprateurs) 133,
145
Symboles de note de bas de
page (aide RTF) 648
System (dossier Windows) 745

Systme de numrotation
hexadcimal 103

T
Tab(), fonction 355, 386
TabIndex, proprit 77, 78
Table ASCII Voir ASCII
Tableaux 314
une dimension 694
Array(), fonction 319
boucles For 699
cellules 696
colonnes 695
dclaration 316
clause To 318
Dim, instruction 316
indices 314, 319
Option Base 1,
instruction 316
initialiser 701
lignes 695
multidimensionnels 694
dclaration 697
formats de dclaration
697
indices 695
nombre de dimensions 697
parallles 321
Public, instruction 316
recherche de donnes 322
types de donnes 317, 696
Tables 695
bases de donnes 580
TabStrip Voir Barre donglets
Tan(), fonction 241
tbsOptions_Click(), procdure
497
TCP 624
TCP/IP 620
Temp (dossier Windows) 745
Tests 664
en parallle 687
routine dinstallation 685

=Prog VB6 FMIX.fm Page 817 Lundi, 6. aot 2001 4:05 16

Index

Text, proprit 74, 303, 308


TextBox, contrle Voir Zones
de texte
TextSizeUL, contrle 543
Time, fonction 256
Timer 310
contrle 574
vnement 312
fonction 257
Interval, proprit 312
Timer, vnement 312
TimeSerial(), fonction 262
TimeValue(), fonction 262
TIP_FILE, constante 499
Tipofday.txt, fichier 500
Tips, collection 499
To, instruction 318
Toolbar, contrle Voir Barres
doutils 368
ToolboxBitmap, proprit 546
ToolTipText, proprit 370,
642
Top, proprit 52, 56, 67, 70
ToPage, proprit 288
Touches de raccourci 75
Transfert Internet, contrle 624
Transmission Control Protocol
Voir TCP
TreeView, contrle 364
Trigonomtriques (fonctions)
241
Trim(), fonction 254
Tronquer 240
True, oprateur 149
twip 183
twips 52
Type, instruction 395
TypeOf(), fonction 513
TypeOf, instruction 513
Types (Visionneuse dAPI) 740
Types de donnes 120126
API Windows 737
Boolean 124, 148
Byte 121, 148
chanes 124

conversion 241, 248


Currency 148
date 124, 148
inspection 241
Integer 148
Long 148
numriques 239
Object 124, 238, 512, 537
personnaliss 394
imbrication 398
Printer 419
Single 148
String 124, 148
Suffixes 123
Tableaux 317
Type, instruction 395
Variant 124, 148

U
UCase(), fonction 254, 558
UCase, proprit 542
UDP 624
ULText, proprit 551
Un--plusieurs, relation 595
Un--un, relation 598
Underscore 96, 128
Uniform Ressource Locator
Voir URL
Unload
vnement 302
Unload Me, instruction 493
Unload, vnement 81
Until, instruction
Voir Do... Loop 160
Update, mthode 616, 617
UpdateInterval, proprit 456
URL 621
User Datagram Protocol Voir
UDP
USER32.DLL 733
UserControl_Resize(), procdure 555
UserControl1 544

V
Val(), fonction 250
Valeur absolue 240
Valeur dindex Voir Indices
314
Valeur de renvoi 84
Value, proprit 190
Variables 126132
automatiques 367
compteur Voir For... Next
de contrles 238
dclaration 127
globales 230
emploi 495
locales 127, 230
modifier en cours
dexcution 673
noms 129
passes 233, 234
portes 230
prfixes 129
statiques 367
systme
AppPath 683
ProgramFiles 683
tableaux Voir Tableaux
314
Variables locales (fentre de
dbogage) 674
Variant, type de donnes 124,
148
VarType()
constantes nommes 244
fonction 241, 244
VBA 14
VBD, extension 631
vbInformation, constante
nomme 554
VBScript 633
vbWhite, constante nomme
554
VBX
contrles dextension 532

817

<
:

=Prog VB6 FMIX.fm Page 818 Lundi, 6. aot 2001 4:05 16

Index

Vrification automatique de la
syntaxe, option 666
Vido 460
contrle PictureBox 462
Visionneuse dAPI 739
constantes 740
dclarations 740
option Private 739
option Public 739
types 740
Visionneuses
de fichier daide 647
Visual Basic
compilation 677
complments
assistant Empaquetage et dploiement
680
assistant Interface de
contrles ActiveX
547
assistant Migration de
document ActiveX
628
charger au dmarrage
547
gestionnaire de
donnes 582
visionneuse dAPI
739
composants, Microsoft
ADO Data Control 6.0
602
conversion vers Java,
outils 635
Crateur de menus 488
dbogueur
utilisation 668
dimensions des tableaux
697
DLL Runtime 679
dition Entreprise 592
ditions
Entreprise 627

>
:

818

Professionnelle 592,
627
Standard 586
Visual Studio 592
exemples, Calc.Vbp 628
mots-cls
ByRef 737
ByVal 737
Const 554
Dim 697
New 518
Private 520
Public 520
programmation structure
715
Visual Basic eXtended
Voir VBX
Visual Basic for Applications
14
Visual C++ 13, 532
Visual J++ 13, 636
Visual Studio 13
Visual Studio (dition Visual
Basic) 592

W
Wait, proprit 457
Wav, fichiers 567
Weekday(), fonction 262
WhatsThisButton, proprit
658
WhatsThisHelp, proprit 658
WhatsThisHelpID, proprit
658
While, instruction Voir Do...
Loop
Width, proprit 52, 56, 70
Win32api.txt 739
Windows
API 732
Windows Help Viewer 647
Windows Paint 546
WindowState, proprit 71
WinHelp, aide 645

WINMM.DLL 733
Winsock, contrle Internet 624
With End With, instructions
513
WordPad 508
WordWrap, proprit 72, 708
World Wide Web 620
Write , instruction
Write, modes daccs 382
WYSIWYG 1

X
Xor, oprateur 149

Y
Year(), fonction 259, 262

Z
Zones de liste 73, 301, 327
AddItem, mthode 301
Clear, mthode 306
Dossier, contrle 399, 401
Fichier, contrle 399, 401
indices 305
Lecteur, contrle, contrle
399
Lecteur, contrlecontrle
400
List, proprit 301
ListCount, proprit 305
ListIndex, proprit 304
MultiSelect, proprit 327,
335
RemoveItem, mthode 304
simples 301
Sorted, proprit 302
Text, proprit 303
Voir aussi ComboBox 306
Zones de texte 72
vnements 81
proprits 73, 89

Microsoft

Visual Basic 6

Grce cet ouvrage, vous matriserez trs rapidement les techniques de programmation en

Visual Basic 6, des plus simples aux plus complexes. Un enseignement progressif et des exer-

cices pratiques vous aideront concevoir des

interfaces utilisateur conviviales et crer des


programmes efficaces et faciles maintenir.
Vous dcouvrirez galement toutes les informations ncessaires pour utiliser les contrles
ActiveX, dboguer vos applications et y intgrer
les technologies daccs aux bases de donnes
et Internet, ainsi que des images et des
lments multimdias.

Niveau : Dbutant / Intermdiaire

Prsentation de Visual Basic


L'environnement et les outils Visual Basic
Gestion des contrles
Contrles, proprits et vnements
Cration de menus
Analyse des donnes
Variables et expressions
Oprateurs et instructions de contrle
Support avanc du clavier et de l'cran
Entres utilisateur et logique
conditionnelle
Sous-routines et fonctions
Les botes de dialogue
Gestion de la souris et contrles
avancs
Slections multiples dans une zone
de liste
Pratique de la souris
Gestion des feuilles
Gestion des fichiers
Lire et crire des fichiers
Gestion de l'imprimante
Image et multimdia
Les barres de dfilement
Les modles de feuilles
Visual Basic et les objets
Contrles ActiveX
Ces lments qui enjolivent les
applications
Interactions avec les donnes
Contrles ADO
Ajout d'un accs Internet
Fournir de l'aide
Distribution de vos applications
Tableaux multidimensionnels
L'API Windows

Catgorie : Programmation
Configuration : Windows / Linux

Pearson Education France


47 bis, rue des Vinaigriers
75010 Paris
Tl. : 01 72 74 90 00
Fax : 01 42 05 22 17
www.pearson.fr

ISBN : 978-2-7440-4082-5

Vous aimerez peut-être aussi