91
B.ROCHE / IIRIAM 10/00 Page 1 / 92 BR_VB_concepts.doc VISUAL BASIC LES CONCEPTS FONDAMENTAUX INTRODUCTION _______________________________________________________________ 4 I- Présentation ___________________________________________________________________ 4 II- Les versions de Visual Basic ______________________________________________________ 4 III- Les concurrents de Visual Basic___________________________________________________ 5 IV- généralités sur le langage ________________________________________________________ 5 Le projet_______________________________________________________________________ 9 I- Présentation _____________________________________________________________________ 9 II- Notion de module_________________________________________________________________ 9 III- Méthode de programmation _______________________________________________________ 11 L'éditeur Visual Basic___________________________________________________________ 13 I- Utilisation de l'éditeur____________________________________________________________ 13 II- Principes d'écriture ______________________________________________________________ 14 Les éléments du langage _________________________________________________________ 16 I- Les variables ___________________________________________________________________ 16 II- Types utilisateurs _______________________________________________________________ 18 III- Les tableaux __________________________________________________________________ 18 IV- Structures algorithmiques_______________________________________________________ 19 V- Les opérateurs __________________________________________________________________ 21 VI- Les procédures _______________________________________________________________ 22 VII- Les fonctions prédéfinies________________________________________________________ 26 Notions d'objets ________________________________________________________________ 29 I- Définition d'objet________________________________________________________________ 29 II- Convention d'écriture des objets ___________________________________________________ 29 III- Les Classes d'objets ___________________________________________________________ 30 IV- Les propriétés d'un objet _______________________________________________________ 30 V- Les méthodes d'un objet __________________________________________________________ 36 VI- Evénements et procédures d'événement ___________________________________________ 37 Les objets propres à un projet_____________________________________________________ 38 I- L'objet App ____________________________________________________________________ 38 Les Feuilles Visual Basic ________________________________________________________ 41 I- Présentation ____________________________________________________________________ 41

VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 1 / 92 BR_VB_concepts.doc

V I S U A L B A S I CL E S C O N C E P T S F O N D A M E N T A U X

INTRODUCTION _______________________________________________________________ 4I- Présentation ___________________________________________________________________ 4

II- Les versions de Visual Basic ______________________________________________________ 4

III- Les concurrents de Visual Basic___________________________________________________ 5

IV- généralités sur le langage ________________________________________________________ 5

Le projet_______________________________________________________________________ 9I- Présentation _____________________________________________________________________ 9

II- Notion de module_________________________________________________________________ 9

III- Méthode de programmation_______________________________________________________ 11

L'éditeur Visual Basic___________________________________________________________ 13I- Utilisation de l'éditeur____________________________________________________________ 13

II- Principes d'écriture ______________________________________________________________ 14

Les éléments du langage_________________________________________________________ 16I- Les variables ___________________________________________________________________ 16

II- Types utilisateurs _______________________________________________________________ 18

III- Les tableaux__________________________________________________________________ 18

IV- Structures algorithmiques_______________________________________________________ 19

V- Les opérateurs__________________________________________________________________ 21

VI- Les procédures _______________________________________________________________ 22

VII- Les fonctions prédéfinies________________________________________________________ 26

Notions d'objets ________________________________________________________________ 29I- Définition d'objet________________________________________________________________ 29

II- Convention d'écriture des objets ___________________________________________________ 29

III- Les Classes d'objets ___________________________________________________________ 30

IV- Les propriétés d'un objet _______________________________________________________ 30

V- Les méthodes d'un objet __________________________________________________________ 36

VI- Evénements et procédures d'événement ___________________________________________ 37

Les objets propres à un projet_____________________________________________________ 38I- L'objet App ____________________________________________________________________ 38

Les Feuilles Visual Basic ________________________________________________________ 41I- Présentation ____________________________________________________________________ 41

Page 2: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 2 / 92 BR_VB_concepts.doc

II- Méthodes et événements d'une feuille _______________________________________________ 42

III- Les Boîtes de dialogue__________________________________________________________ 44

Les contrôles __________________________________________________________________ 49I- les contrôles standards ___________________________________________________________ 49

II- Les contrôles de listes et fichiers ___________________________________________________ 56

le Glisser - Déplacer (Drag and drop) ______________________________________________ 59I- principe _______________________________________________________________________ 59

II- Propriétés, événements, méthodes __________________________________________________ 59

L'accès aux données : le contrôle Data _____________________________________________ 62I- Introduction____________________________________________________________________ 62

II- Le contrôle Data ________________________________________________________________ 62

III- Les contrôles dépendants _______________________________________________________ 64

IV- Les contrôles dépendants spécifiques______________________________________________ 66

L'accès aux données : les fichiers _________________________________________________ 73I- Introduction____________________________________________________________________ 73

II- Fonctions relatives aux fichiers_____________________________________________________ 73

III- Les fichiers séquentiels _________________________________________________________ 74

IV- Les fichiers aléatoires __________________________________________________________ 76

V- Les fichiers binaires _____________________________________________________________ 77

Les applications MDI ___________________________________________________________ 78I- Présentation ____________________________________________________________________ 78

II- Création d'une feuille MDI________________________________________________________ 79

III- Organisation des feuilles-enfants _________________________________________________ 79

La gestion des erreurs ___________________________________________________________ 80I- Introduction____________________________________________________________________ 80

II- Intercepteur d'erreur ____________________________________________________________ 80

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

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

V- Erreurs inattendues______________________________________________________________ 82

Le débogage___________________________________________________________________ 85I- Introduction____________________________________________________________________ 85

II- Types d'erreurs _________________________________________________________________ 85

III- Aide fournie par les outils de débogage ____________________________________________ 86

IV- La fenêtre de débogage _________________________________________________________ 88

Les menus ____________________________________________________________________ 90I- Présentation ____________________________________________________________________ 90

II- Conception_____________________________________________________________________ 91

Page 3: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 3 / 92 BR_VB_concepts.doc

III- Conventions d'affectation des noms de menus_______________________________________ 92

Page 4: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 4 / 92 BR_VB_concepts.doc

INTRODUCTION

I- PRESENTATION

Visual Basic de Microsoft est à la fois un langage et un atelier de développement.

On retrouve le langage dans chaque produit de la gamme Office : Word, Excel, Access. Dans lesversions antérieiures à office 97, on le trouvait sous le nom de VBA (Visual Basic for Application)L’environnement de développement Visual Basic permet de créer des applications en modegraphique (GUI, Graphical User Interface) pour toutes les versions de Windows (3.x, 95, NT).

C'est donc un langage de haut niveau, simple à mettre en œuvre, contrairement aux langages Cet C++. En effet, Visual Basic se charge de faire appel et de passer les paramètres aux API(fonctions de base) de Windows.

Que l'on ait l'intention de créer un petit utilitaire ou une application pour une entreprise ou mêmedes applications partagées internationales sur Internet, Visual Basic met à disposition tous lesoutils nécessaires :

Ô Les fonctions d'accès aux données, qui permettent de créer des bases de données et desapplications pour les formats de base de données les plus utilisés (Microsoft ou autres),

Ô La technologie ActiveX™ qui permet d'utiliser les fonctionnalités offertes par d'autresapplications, telles que le traitement de texte, le tableur et autres applications Windows,

Ô Les fonctionnalités Internet facilitent l'accès à des documents et à des applications sur Internetdepuis l'application.

Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l'application finale estun véritable fichier .exe qui utilise à l'exécution une bibliothèque de liaisons dynamiques (DLL,Dynamic-Link Library) qui sont libres de diffusion.

Les applications développées avec Visual basic peuvent donc être distribuées librement.

Visual Basic répond certainement à la grande majorité des besoins de développementnotamment en informatique de gestion.Il n’offre cependant pas le degré de finesse et de souplesse nécessaire à la production delogiciels universels comme Word ou Excel. Ce domaine reste du ressort du langage C++.

II- LES VERSIONS DE VISUAL BASIC

C'est seulement à partir de la version 3.0 que Visual Basic permet d'accéder aux bases dedonnées. C'est à partir de ce moment que Visual Basic a connu un réel succès.

La version 4 intègre également les nouvelles versions du moteur de base de données JET (2.5en 16 bits et 3.0 en 32 bits) permettant la gestion de l'intégrité référentielle, et les mises à jour encascade.

Visual Basic est disponible en trois versions :

Page 5: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 5 / 92 BR_VB_concepts.doc

Ô L'édition Initiation permet aux programmeurs de créer facilement de puissantes applicationspour Microsoft Windows 95 et Windows NT. Elle comprend tous les contrôles intrinsèquesainsi que les contrôles Grid, Tab et les contrôles dépendants.

Ô L'édition Professionnelle offre une gamme d'outils aux fonctionnalités complètes permettant dedévelopper des solutions autonomes. Elle comprend toutes les fonctionnalités de l'ÉditionInitiation ainsi que des contrôles ActiveX supplémentaires, notamment les contrôles Internet, etle module Crystal Reports.

Ô L'édition Entreprise permet de créer des applications partagées fiables au sein d'une équipe.Elle comprend toutes les fonctionnalités de l'Édition Professionnelle, ainsi que le moduleAutomation Manager, le Gestionnaire de composants, des outils de gestion de base dedonnées, le système de contrôle de version orienté projet Microsoft Visual SourceSafe, et bienplus encore.

III- LES CONCURRENTS DE VISUAL BASIC

Visual Basic connaît de nombreux concurrents, nous n'en citerons que quelques uns :

Ü AccessÜ DelphiÜ PowerbuilderÜ WindevÜ Oracle / Developper 2000

IV- GENERALITES SUR LE LANGAGE

1. UN LANGAGE ORIENTE OBJETS

VB est un langage orienté objet.Les feuilles et contrôles sont des objets, tout comme les bases de données et beaucoupd'autres choses. En fait on utilise en permanence des objets en VB. il est même facile de créerses propres objets à partir des classes que l'on définit, et d'utiliser des objets pour simplifier lecode et augmenter le taux de réutilisation du code.

2. UNE PROGRAMMATION EVENEMENTIELLE

VB est un langage de programmation événementielle, c'est à dire que ce sont les actions desutilisateurs sur les objets apparaissant à l'écran qui déclenchent l'exécution de procédures.L'enchaînement des procédures n'est pas prédéfini à l'avance comme dans un langage deprogrammation procédural. On peut donc dire que c'est l'utilisateur qui pilote l'application commebon lui semble et non comme le programmeur l'a écrit dans une programmation classique.

3. UNE PROGRAMMATION GUIDEE ET ASSISTEE

VB permet de faire une partie de la programmation d'une application sans écrire de code. Eneffet, l'utilisation de la souris et des icônes va grandement simplifier la programmation.

Page 6: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 6 / 92 BR_VB_concepts.doc

4. PREMIER CONTACT

Avant de commencer, il est nécessaire de se familiariser avec un certain nombre de termes quiseront régulièrement utilisés dans VB :

Terme Description

projet regroupe les feuilles et les modules d’une application

feuille fenêtre Windows munie de ses contrôles et du code associé

module groupe de routines non liées à un événement et partageablespar l’ensemble des feuilles

contrôle objet apparaissant dans une feuille et permettant une interactionet l’application

événement action à laquelle un contrôle réagit

propriété permet de définir une caractéristique d’une fenêtre ou d’uncontrôle. Une propriété permet de définir l’aspect d’un contrôle,le comportement d‘un contrôle ou d‘une fenêtre vis à vis d’unévénement

méthode Traitement prédéfini et non modifiablepermettant d’agir sur unefenêtre ou un contrôle

Au lancement de VB, on voit apparaître un écran sensiblement ressemblant à ceci :

Page 7: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 7 / 92 BR_VB_concepts.doc

Il est composé des parties suivantes :

Ô La barre de menusElle est composée d'un menu et d'icônes, permettant de mettre en œuvre les principalesfonctionnalités de VB.

Ô La boîte à outilsElle contient les outils que l'on peut utiliser pour dessiner des contrôles sur les feuilles. Chacunde ces outils représente un contrôle.

Ô L'éditeur de feuillesReprésente une feuille de travail, c'est à dire l'interface homme/machine. C'est par le biais defeuilles que vont s'effectuer les entrées/sorties. Sous access, on les appelle les formulaires.

Ô La fenêtre de projetElle recense tous les composants d'un projet

Ô La fenêtre des propriétésElle recense toutes les propriétés relatives à l'objet sélectionné (feuille, contrôle,...). Onremarquera que la signification de la propriété sélectionnée apparaît automatiquement en bas decette fenêtre.

Ô La fenêtre présentation des feuilles :Elle indique la position de la feuille courante quand elle apparaîtra à l'écran en mode application.Cette fonctionnalité n'a d'importance que lorsque la fenêtre ne doit pas apparaître en plein écran.

Page 8: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 8 / 92 BR_VB_concepts.doc

On pourra également faire apparaître d'autres fenêtres, comme la fenêtre de palette de couleursou la fenêtre de débogage. On verra ces fenêtres ultérieurement dans le cours.

Toutes ces fenêtres peuvent être simultanément ouvertes.

Page 9: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 9 / 92 BR_VB_concepts.doc

LE PROJET

I- PRESENTATION

* Toute application Visual basic est appelée projet.Plusieurs fichiers seront créés pour chaque projet, à savoir :

Ô un fichier de projet qui répertorie tous les composants (.VBP)Il est obligatoire, et sert à mémoriser la liste de tous les fichiers nécessaires au projet, ainsique les options d'environnement du projet. C'est un fichier texte dont on peut afficher lecontenu.

Ô Un ou plusieurs fichiers contenant des contrôles ActiveX. Ces contrôles étaient auparavantappelés contrôles OLE ou contrôles personnalisés. Les éditions professionnelles etentreprises contiennent un grand nombre de contrôles ActiveX et offrent aussi la possibilité decréer ses propres contrôles. D'autres contrôles ActiveX destinés à de multiples usages sontdisponibles auprès de nombreux fournisseurs.

Ô un fichier en données binaires pour chaque feuille contrôlant les propriétés ayant des donnéesbinaires comme valeurs (.FRX)

Ô un fichier de ressources unique (.RES)

Ô Des fichiers modules (.FRM, .BAS ou .CLS)

II- NOTION DE MODULE

Dans Visual Basic, le code est stocké dans des modules. Il existe trois types de modules :Ô module de feuille,Ô module standard,Ô module de classe.

Chaque module de feuille, standard et de classe peut contenir les éléments suivants :

å Des déclarations : on peut inclure des déclarations de constantes, de types, de variables et deprocédures de bibliothèque de liaison dynamique (DLL) de niveau module pour les modules defeuille, de classe ou standard.åDes procédures : de type Sub, Function ou Property qui contiennent des morceaux de code quipeuvent être exécutés en bloc et plusieurs fois dans l'application.

1. MODULES DE FEUILLE

Les modules de feuille (dont le nom de fichier possède l'extension .FRM) sont le fondement de laplupart des applications VB. Ils peuvent contenir des procédures qui gèrent :å des événements,å des procédures générales,å des déclarations de niveau feuille de variables, de constantes, de types et de procéduresexternes.

Page 10: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 10 / 92 BR_VB_concepts.doc

Le code que l'on écrit dans un module de feuille est propre à l'application à laquelle la feuilleappartient. Il peut aussi faire référence à d'autres feuilles ou objets internes à cette application.

2. MODULES STANDARD

Les modules standard (dont le nom de fichier possède l'extension .BAS) sont des conteneurs deprocédures et de déclarations généralement utilisés par d'autres modules internes à l'application.Ils peuvent contenir des déclarations de variables, de constantes, de types, de procéduresexternes et de procédures globales.Le code écrit dans un module standard n'est donc pas nécessairement lié à une applicationparticulière. Un module standard peut être réutilisé dans plusieurs applications différentes, àcondition de ne pas faire référence aux feuilles et aux contrôles par leur nom.On peut visualiser aisément le contenu, puisque c'est un fichier ASCII.Un projet aura de zéro à n modules standards.On trouvera souvent un module .BAS (appelé souvent main), qui contiendra les déclarations devariables globales au projet.

3. MODULES DE CLASSE

Les modules de classe (dont le nom de fichier possède l'extension .CLS) sont le fondement de laprogrammation orientée objet dans VB; On écrit du code dans les modules de classe pour créerde nouveaux objets, qui peuvent inclure ses propres méthodes et propriétés personnalisées.

* remarques :Ô on pourra donner le nom que l'on veut à chacun de ces fichiers (modules), mais il estfortement conseillé de leur attribuer le nom spécifié dans la propriété name de la feuille.

Ô une fois le projet terminé, il est possible de créer un fichier exécutable (.EXE) en choisissantdans le menu Fichier la commande Créer un fichier EXE. Tous les fichiers créés deviendrontalors inutiles, à l'exception des fichiers .DLL, .VBX et .OCX qui devront être stockés dans undossier accessible par un path.

III- ERREUR! SIGNET NON DEFINI.RACCOURCIS CLAVIER

Raccourci FonctionF5 Exécution

Ctrl+PauseBascule en mode arrêt, très utile en cas deverrou (boucle infinie sur une msgbox parex.).

F7 Bascule vers le module de code d'unefeuille.

Shift+F7 Bascule du code vers l'objet.Shift+F2 en étant positionné sur unnom de procédure Affiche le code de la procédure appelée.

Ctrl+Shift+F2 Affiche la procédure précédemmentconsultée.

Ctrl+J

Affiche à nouveau la liste automatique desméthodes et propriétés d'un objet. Sepositionner dans la méthode ou lapropriété à changer.

Ctrl+Shift+Initiale d'une propriété Accès immédiat dans la fenêtre des

Page 11: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 11 / 92 BR_VB_concepts.doc

propriétés sur celle commençant parl'initiale choisie.

IV- METHODE DE PROGRAMMATION

Les points suivants ne représentent que des conseils que le programmeur est libre de suivre oude ne pas suivre.

Toutefois, il est conseillé de travailler avec rigueur et de faire une bonne analyse du problème àgérer, surtout si l'application à développer est complexe.

Il est recommandé de suivre les étapes suivantes :

* créer le projetCréer sur le disque un dossier (répertoire) qui ne contiendra que les fichiers propres au projet.

Dès le lancement de VB, faire Fichier / Enregistrer le projet sous... dès lors qu'il s'agit d'unnouveau projet

* créer les fenêtresIl est préférable, au préalable, d'avoir conçu le schéma d'enchaînement des fenêtres del'application.On créera alors l'ensemble des fenêtres du schéma et on les laissera vierges pour l'instant.Il faudra, pour chaque feuille, lui attribuer trois noms :

Ü le nom en clair, qui apparaîtra dans le bandeau de la feuille

Ü le nom raccourci, qui est le nom qui apparaîtra dans les programmes (15 caractèresmaximum).

Ü le nom de sauvegarde, qui représente le nom sous lequel la feuille sera sauvegardéesur le disque. ( 8 caractères maximum).

Il est nécessaire d'attribuer les noms de manière rigoureuse et selon un principe établi au préalable,afin de faciliter dans un premier temps la programmation et dans un deuxième temps la maintenance.

* placer les contrôlesSur chaque feuille, en leur donnant leur taille et leur emplacement définitifs. Pour les aligner, onpeut choisir l'option afficher la grille dans Outils / Options / Environnement.

Initialiser alors les propriétés de chaque contrôle, dont notamment le nom (propriété name)

Mettre à true la propriété cancel de tous les boutons AnnulerMettre à true la propriété Default de tous les boutons OK des fenêtres de saisie.Mettre à true la propriété cancel de tous les boutons Annuler des fenêtres de demande deconfirmation.

* programmer et tester les procédures d'événementNe pas programmer tout en même temps, mais au contraire, programmer de manièreprogressive, en testant le programme le plus souvent possible, afin de n'avoir pas trop dedifficultés à trouver une erreur.

Page 12: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 12 / 92 BR_VB_concepts.doc

Faire des indentations (décalages à droite) pour les structures si, tant que ,...Ne pas hésiter à commenter le programme notamment sur les points suivants :

Ü titres de paragraphes afin de bien faire ressortir la structure du programme,

Ü explications détaillées pour toutes les sections de programmes complexes.

Tester et déboguer

* créer l'aide en ligne

* imprimer la documentation automatique du projet

* créer le programme exécutable

* créer les disquettes d'installation

* rédiger la notice d'installation

* rédiger la notice d'utilisation

* former les utilisateurs au projet

Page 13: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 13 / 92 BR_VB_concepts.doc

L'EDITEUR VISUAL BASIC

Il est important de maîtriser la mécanique de l'écriture du code dans VB, afin de réduire les tempsde saisie de code, par exemple, l'éditeur de code de VB fournit automatiquement desinformations sur le code que l'on tape. Ainsi, si on tape le nom d'un contrôle suivi de l'opérateurpoint (.), les propriétés et méthodes de ce contrôle s'affichent automatiquement dans une zonede liste. De même, quand on tape le nom d'une fonction dans la fenêtre Code, VB indiqueautomatiquement la syntaxe de celle-ci.

Comme tous les autres langages de programmation, VB possède ses propres règlesd'organisation, de modification et de formatage du code. On va les détailler maintenant.

I- UTILISATION DE L'EDITEUR

L'Éditeur de code de Visual Basic est une fenêtre dans laquelle on écrit la majeure partie ducode. Elle se présente sous la forme :

Liste objet Liste procédure

Boutons de sélection d'affichage

Page 14: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 14 / 92 BR_VB_concepts.doc

II- PRINCIPES D'ECRITURE

1. ACHEVEMENT DE L'ECRITURE DE CODE

Visual Basic facilite l'écriture du code, grâce à des fonctionnalités capables de compléterautomatiquement les instructions, les propriétés et les arguments.Au fur et à mesure que l'on tape le code, l'éditeur affiche les choix, les valeurs ou les prototypesde fonction ou d'instruction appropriés.On peut activer ou désactiver ces options ainsi que d'autres valeurs du code à l'aide de l'ongletÉditeur de la boîte de dialogue Options, à laquelle on accède à l'aide de la commande Optionsdu menu Outils.

Quand on spécifie le nom d'un contrôle dans le code, le Complément automatique desinstructions affiche une liste déroulante des propriétés disponibles pour ce contrôle. Il suffit alorsde taper les premières lettres du nom de la propriété pour sélectionner automatiquement cettedernière dans la liste. La touche TAB termine automatiquement la frappe.Cette option s'avère aussi utile lorsque l'on ne connaît pas avec certitude les propriétésdisponibles pour un contrôle donné.

La fonctionnalité Info express automatique affiche la syntaxe des instructions et des fonctions.Quand l'on tape le nom d'une instruction ou d'une fonction valide, la syntaxe apparaîtimmédiatement en dessous de la ligne courante tandis que le premier argument s'affiche en gras.Une fois que l'on a spécifié la valeur du premier argument, le deuxième apparaît en gras.

2. ÉCRITURE DES INSTRUCTIONS

On peut répartir une instruction sur plusieurs lignes dans la fenêtre de l'Éditeur de code enutilisant le caractère de continuation de ligne (un espace suivi d'un trait de soulignement).Ô Exemple : Data1.RecordSource = _"SELECT * FROM Titles, Publishers" _& "WHERE Publishers.PubId = Titles.PubID" _& "AND Publishers.State = 'CA'"

On peut aussi placer plusieurs instructions sur une ligne si on les sépare par deux-points (:) Ô Exemple :Text1.Text = "Bonjour" : Red = 255 : Text1.BackColor = Red

* Remarque : Il est néanmoins préférable de placer chaque instruction sur une lignedistincte afin d'améliorer la lisibilité de votre code.

Les commentaires peuvent figurer à la suite d'une instruction, sur la même ligne, ou occuperune ligne entière.

3. CONVENTION D'AFFECTATION DE NOMS DANS VISUAL BASIC

Les noms de ces procédures, variables et constantes déclarées dans VB doivent se conformeraux règles suivantes :å· Ils doivent commencer par une lettre.å· Ils ne peuvent pas contenir de point ni de caractère de déclaration de type (caractères

spéciaux qui spécifient un type de données).

Page 15: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 15 / 92 BR_VB_concepts.doc

å· Ils ne peuvent pas dépasser 255 caractères. Les noms des contrôles, feuilles, classes etmodules sont limités à 40 caractères.

å· Ils ne peuvent pas être identiques à des mots clés avec restrictions.

Un mot clé avec restrictions est un mot qui fait partie du langage Visual Basic. Il s'agit desinstructions prédéfinies (comme Interface et Loop), des fonctions (comme Len et Abs) et desopérateurs (comme Or et Mod).

On peut utiliser les crochets pour faire référence à une feuille ou à un contrôle mais pas pourdéclarer une variable ou une procédure portant le même nom qu'un mot clé avec restrictions. Lescrochets permettent aussi d'obliger Visual Basic à accepter les noms issus d'autres bibliothèquesde types et qui entrent en conflit avec des mots clés avec restrictions.On retrouve cette notion dans le code VB Applications

On se rapportera également page 29 : Convention d'écriture des objets

Page 16: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 16 / 92 BR_VB_concepts.doc

LES ELEMENTS DU LANGAGE

I- LES VARIABLES

1. LE NOM DES VARIABLES

Le nom d'une variable commence par une lettre et doit comporter au plus 255 caractères

2. DECLARATION IMPLICITE OU EXPLICITE

Il n'est pas obligatoire de déclarer les variables utilisées dans un programme VB.C'est la déclaration implicite.VB alloue automatiquement une place en mémoire dès qu'il trouve une variable. C'est simple,mais cela peut causer quelques problèmes. En effet, si on fait une faute de frappe dans leprogramme, pour faire appel à une variable, VB allouera automatiquement un deuxièmeemplacement (ex : réfcli et refcli). Le programme fonctionnera très bien, mais il ne donnera pasles résultats attendus. La recherche de l'erreur peut s'avérer bien longue et compliquée...

Il est donc préférable de déclarer les variable de manière explicite.

Pour que VB vérifie qu'une variable est déclarée avant une première utilisation, il suffit de cocherla case Declare Variable Declaration de la boîte de dialogue OPTIONS (onglet environment),accessible par le menu OUTILS.En fait lorsque cette option est active, VB ajoute dans tous les modules la ligne Option Explicit.

* Remarque : Visual Basic ne différencie pas les minuscules des majuscules. Ainsi, il ne fait pasde différence entre la variable nomcli et Nomcli ou NomCli

3. DECLARATION EXPLICITE

Dans le cadre d'une déclaration explicite, on utilise une des instructions suivantes :

Ô Dim : variable dont la portée est limitée au domaine à l'intérieur duquel elle est déclarée. Cedomaine peut être une procédure, une fonction, un module ou une feuille. La durée de vie dela variable est alors limitée au domaine à l'intérieur duquel elle est déclarée.

Ô Static : Fonctionne sur le même principe qu'une variable déclarée avec Dim, mais sa durée devie est celle du projet. Elle conserve sa valeur en mémoire tout au long du projet, même si àmoment elle n'est pas accessible du fait de sa portée.

Ô Public : variable devant être déclarée dans la section déclaration d'un module, qui sera diteglobale à l'application, et qui sera accessible de n'importe quel endroit de l'application.

Page 17: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 17 / 92 BR_VB_concepts.doc

4. LES TYPES DE VARIABLES

Les différents types sont :

Type codetype

Définition

Byte 17 entier non signé sur 1 octet : de 0 à 255

Integer 2 entier signé sur 2 octets : de -32768 à +32767

Long 3 entier signé sur 4 octets

Boolean(à partir de V4)

11 True ou False sur 2 octets

Single 4 nombre décimal à virgule flottante, signé, sur 4 octets

Double 5 nombre décimal à virgule flottante, signé, sur 8 octets

Currency 6 virgule fixe signé (4 chiffres décimaux) sur 8 octets

String 8 chaîne de caractères longueur variable

String * n 8 Chaine de caractères de longueur fixe (n étant la longueur)

Date 7 Date et/ou heure, sur 8 octets

Object référence à un objet quelconque

Variant 12 tout type (numérique, chaîne, objet, tableau)à utiliser avec prudence !...

* Remarques :Ô Une chaîne de caractères s'écrit entre guillemets ("ceci est en exemple de chaîne")Ô Une simple quote sur une ligne implique que le reste de la ligne est du commentaire ( ' )Ô La taille d'une chaîne peut aller jusqu'à 65400 octets, une chaîne est de taille fixe ou

variable.Ô La valeur True équivaut au nombre entier 0Ô La valeur False équivaut au nombre entier -1Ô Le type variant admet tout type de données. VB associe à cette variable le type de la

valeur attribuée lors de l'affectation.

On peut tester le type de la variable avec la fonction VarType. En plus des valeurs vues cidessus, on pourra trouver les valeurs suivantes :

vbObject 9 OLE Automation object.vbError 10 Error.vbDataObject 13 Non-OLE Automation object.vbArray 8192 Array.

5. EXEMPLES

dim nom as string ' ceci est une chaîne de taille variable (adaptée à son contenu)dim ville as string * 20 ' ceci est une chaîne de taille fixe égale à 20static Heure as dateDim numcli as integer, adresse as string, ville, cp as string

Dans ce cas là, ville sera du type variant car on n'a pas défini de type.

Page 18: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 18 / 92 BR_VB_concepts.doc

6. CAS PARTICULIER : LES CONSTANTES

On utilise l'instruction const

exemple : const Maxi = 100

II- TYPES UTILISATEURS

Il peut arriver que l'on ait besoin de se créer des types particuliers.On utilise alors l'instruction Type, commençant apr le mot clé type et se finit par end type.On déclare généralement les types utilisateurs dans la procédure déclarations du module.Ces types de données peuvent contenir un ou plusieurs éléments d'un type de donnéesprédéfini, d'un type de tableau ou d'un autre type précédemment défini par l'utilisateur

Ô exemple :type enr_pers

nom as string * 20prenom as string * 15

end type

Une fois la déclaration de type faite, on peut déclarer des variables ayant ce type:

dim personne as enr_pers

personne est une variable nécessitant 35 octets en mémoire.

On peut accéder à un champ de la manière suivante :

Affectation : personne.nom = "Dupont"

III- LES TABLEAUX

Le tableau est un type complexe permettant de regrouper des informations de même nature.Visual Basic admet jusqu'à 60 dimensions, mais il est bien évident qu'il faut éviter de travailler surde telles structures !!!

La déclaration d'un tableau se fait tout simplement par l'instruction Dim (ou Static ou Public).

L'indice d'un tableau commence toujours à 0. On peut toutefois, ne travailler qu'à partir de l'indice1, ce qui laisse les vide les emplacements d'indice 0.

Ô exemples :dim tab_eleves (20) as string*20 'tableau à 1 dimension, à 21 éléments de 20 caractères 'dim tab_notes (10,20) As integer 'tableau à 2 dimensions 11 lignes et 21 colonnes d'entiers'dim tab_noms (5) 'tableau à 1 dimension, de type variant '

Ce tableau permet de stocker 200 valeurs numériques.

Page 19: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 19 / 92 BR_VB_concepts.doc

On accède aux différents éléments de la manière suivante :

tab_notes (i, j) exemple : tab_notes(4,8) = 15

Pour déclarer un tableau comportant des valeurs structurées :

type enr_persnom as string * 20

prenom as string * 15end type

dim tab_pers (10) as enr_pers

Ce tableau comporte 21 emplacements pouvant mémoriser 10 chaînes de longueur 20 et 10chaînes de longueur 15.

L'accès se fait de la manière suivante :tab_pers(i).nom

* Remarque :Ô Les tableaux peuvent être redimensionnés en cours d'exécution avec l'instruction redim

(utiliser preserve pour conserver les anciennes données).Ô Si l'on veut connaître les bornes du tableau en cours d'exécution, on utilisera les fonctions

Lbound et UBound.

IV- STRUCTURES ALGORITHMIQUES

1. STRUCTURES CONDITIONNELLES

Algorithme Visual Basic

Si conditionalors instructions[sinon instructions]

Fin si

If conditionThen instructions[Else instructions]

End if

Si conditionalors instructions[sinon si condition2

alors instructions [sinon instructions]]

Fin si

If conditionThen instructions[ElseIf condition2

Then instructions[Else instructions]]

End If

Selon variablecas valeur1 instructionscas valeur2 instructions...[autres cas instructions]

Fin selon

Select case variablecase valeur1 instructionscase valeur2 instructions...[case else instructions]

End select

Page 20: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 20 / 92 BR_VB_concepts.doc

Ô exemples

If total >= 1000then remise = 0.2

end if

If total >= 1000then remise = 0.4else remise = 0.2

end if

if total < 1000then remise = 0.2elseif codecli = "G" then remise =0.3 else remise = 0.4

end if

select case remisecase 1000 to 2000

remise = 0.2case 2000 to 3000

remise = 0.3case else

remise = 0.35typeclient = "à suivre"

end select

2. LES BOUCLES

Algorithme Visual Basic

répétersuite d’actions à faire

jusqu’à <cond>

Dosuite d’actions à faire

Loop Until <cond>

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

tant que <cond> fairesuite d’actions à faire

fin tant que

do While <cond>suite d’actions à faire

Loop

Le programme ne rentre pas forcément dans la boucle. Il y rentre si la condition est satisfaite etboucle tant qu'elle est vérifiée.

pour i de min à max fairesuite d’actions à faire

fin pour

For i = min To maxsuite d’actions à faire

Next

On utilise cette structure lorsque l’on sait le nombre de passages que l’on veut effectuer dans laboucle.A la place de min et max, on peut mettre des valeurs ou bien des expressions.L'incrémentation est automatique et la pas par défaut est 1.

Page 21: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 21 / 92 BR_VB_concepts.doc

Variantes :For i = min To max Step 2

suite d’actions à faireNext

L'option step permet de faire varier le pas d'une autre valeur que 1. Ici le pas sera de 2.

On peut aussi avoir un pas négatif :

For i = max To min Step -1suite d’actions à faire

Next

V- LES OPERATEURS

1. OPERATEURS ALGEBRIQUES

+ somme de 2 nombres ou concaténation de 2 chaînes- soustraction de 2 nombres* multiplication de 2 nombres^ élévation à la puissance/ division de 2 nombres (le résultat est un flottant)\ division entière de 2 nombres (le résultat est l'arrondi de la

division de l'arrondi des opérandes)Mod modulo, reste de la division entière (le résultat est le reste de

la division entière des deux opérandes (ex 12.6 mod 3.1donnera 1)

& concaténation de 2 chaînes de caractères

2. OPERATEURS DE COMPARAISON

< inférieur à<= inférieur ou égal à> supérieur

>= supérieur ou égal à= égal à

<> différent deLike comme le modèle de chaîne fourni

Jokers : Utilisés avec l'opérateur like pour établir le modèle de chaîne :

* remplace de 0 à n caractères quelconques? remplace un seul caractère quelconque# remplace un seul chiffre

[liste de caractères] pour tout caractère unique qui se trouve dans laliste

[!liste de caractères] pour tout caractère unique qui ne se trouve pasdans la liste

Page 22: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 22 / 92 BR_VB_concepts.doc

Ô exemples :if nomclient like "R[OA]" then...La condition sera vérifiée si le nom du client commence par RO ou RA

if nomclient like "T?[!OA]" then ...La condition sera vérifiée si le nom du client commence par T et n'a pas O ou A en troisièmeposition.

3. OPERATEURS LOGIQUES

Not non logique (pas)And et logiqueOr ou logiqueXor ou exclusifEqv équivalence logiqueImp implication logique() permet de rendre une comparaison prioritaire

Ô Equivalence logique :

resultat = expression 1 eqv expression2

Si expression1 est Et expression2 est résultat a la valeurTrue True TrueTrue False FalseFalse True FalseFalse False True

Ô Implication logique : (voir documentation VB)

VI- LES PROCEDURES

1. CLASSIFICATION DES PROCEDURES

On peut classer les procédures en deux catégories, bien qu'elles fonctionnent toutes sur le mêmeprincipe. Il est toutefois important de comprendre à quoi elles correspondent et où elles ont étécréées.

a) Les procédures de feuille

On trouvera, dans chaque feuille :

Ô une procédure pour déclarer les variables

Ô autant de procédures que d'événements qui peuvent se produire sur la feuille (chargement,déchargement,...)

Ô autant de procédures que d'événements possibles sur chaque contrôle de la feuille (click,drag,..)

Ô autant de procédures et fonctions que le programmeur désire et qui ne sont pas liés à unévénement.

Page 23: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 23 / 92 BR_VB_concepts.doc

b) Les procédures de module

On trouvera, dans chaque module autre que les feuilles :

Ô une procédure de déclaration

Ô autant de procédures et de fonctions que le désire le programmeur.

Dans tous les cas, il est fortement recommandé de faire une programmation modulaire, afind'augmenter la lisibilité des programmes et leur maintenance.

On distinguera également les types suivants de procédures :

Ô Les procédures Sub : elles ne renvoient pas de valeur.Ô Les procédures Function : elles renvoient une valeur.Ô Les procédures Property : elles peuvent renvoyer ou affecter des valeurs, et définir des

références à des objets.

2. LES PROCEDURES SUB

a) Déclaration[Private|Public][Static]Sub nom_procedure (liste des paramètres)

<déclaration des variables locales>

suite d’actionsEnd Sub

Par défaut, les procédures Sub sont des procédures Public dans tous les modules, ce qui signifiequ'elles peuvent être appelées à partir de n'importe quel endroit de l'application.

Dans Visual Basic, il est important de faire la distinction entre les deux types de procédures Sub,à savoir les procédures générales et les procédures d'événement.

b) Procédure généraleUne procédure générale indique à l'application la façon de mener à bien une tâche particulière.Une fois qu'une procédure générale est définie, elle peut être appelée par l'application. C'est lanotion de procédure telle qu'elle a été définie en cours d'algorithmique.

c) Procédure d'événementUne procédure d'événement, au contraire, reste inactive jusqu'au moment où elle est appeléepour réagir à des événements provoqués par l'utilisateur ou déclenchés par le système.Dans VB, lorsqu'un objet reconnaît qu'un événement s'est produit, il appelle automatiquement laprocédure d'événement dont le nom correspond à l'événement. Comme le nom associe les objetset le code, on dit que les procédures d'événement sont attachées aux feuilles et aux contrôles.

Toutes les procédures d'événement utilisent la même syntaxe générale:

Page 24: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 24 / 92 BR_VB_concepts.doc

Syntaxe d'un événement de contrôle Syntaxe d'un événement de feuille

Private Sub controlname_eventname (paramètres)

instructions

End Sub

Private Sub Form_eventname (paramètres)

instructions

End Sub

* Remarque :Il est aussi conseillé de définir la propriété Name des contrôles avant de commencer à écrire lesprocédures d'événement qui leur sont associées. En effet, si on modifie le nom d'un contrôleaprès lui avoir associé une procédure, on doit également modifier le nom de la procédure afinqu'elle corresponde au nouveau nom du contrôle. En effet, VB n'établit pas de lien entre lecontrôle et la procédure. Lorsqu'un nom de procédure ne correspond à aucun nom de contrôle, laprocédure devient une procédure générale.

d) Appel

call nom_procedure (liste des paramètres)

* Remarques :Ô le mot clé call est facultatif.Ô Si la procédure n'a pas de paramètres, on indique les parenthèses ouvrantes et

fermantes dans la déclaration. On ne les fait pas apparaître dans l'appel.

3. LES FONCTIONS : PROCEDURES FUNCTION

Visual Basic contient un certain nombre de fonctions prédéfinies telles que Sqr, Cos ou Chr.On peut toutefois écrire ses propres procédures Function grâce à l'instruction Function.La syntaxe d'une procédure Function est la suivante :

a) Déclaration[Private|Public][Static]Function nom_fonction (liste des paramètres) as type_valeur_retournée

<déclaration des variables locales>dim variablex as type_valeur_retournée

suite d’actionsvariablex = ...nom_fonction = variablex

End Function

b) Appel

valeur = nom_fonction (liste des paramètres)

* Remarque :

Page 25: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 25 / 92 BR_VB_concepts.doc

Si on place le mot Static devant Sub ou Function, alors toutes les variables locales serontconsidérées comme statiques.

4. LE PASSAGE DE PARAMETRES

On peut passer un paramètre de deux façons :

Ô soit par valeur,Ô soit par référence.

Si l'on n'indique rien (ou si on indique ByRef ) devant un paramètre dans la déclaration de laprocédure ou de la fonction, le type de passage sera par référence.Si l'on veut effectuer un passage par valeur il suffit d'ajouter ByVal devant le nom du paramètre.

Ô Exemple :

Sub controle (Byval nomp1 As string, testp1 As Boolean, nump1 As Integer)

nomp1 est passé par valeur,testp1 et nump1 sont passés par référence.

* Remarque :on peut aussi déclarer des paramètres facultatifs avec le mot optional (depuis la version 4)

Sub test (v1 As Integer, Optional v2 As Integer)

On ne peut pas trouver de paramètre obligatoire après un paramètre facultatif.

VII- LES FONCTIONS PREDEFINIES

1. FONCTIONS DE CONVERSIONS

Fonction DescriptionAsc retourne le code ASCII du premier caractère de la chaîne passée

en argument.Chr retourne le caractère correspondant au code ASCII (0 à 255) passé

en argument.Val convertit la chaîne passée en argument en donnée numérique

ex : val("1234") donne la valeur 1234.Str conversion d'un nombre en chaîne

Format formate une chaîne avec des instructions de formatage passéescomme arguments

Hex, Oct retourne une chaîne correspondant à une conversion Héxa ouOctale de l'argument numérique.

Cdbl convertit une expression en donnée de type double.Ccur convertit une expression en donnée de type currency.Cint convertit une expression en donnée de type integer.Clng convertit une expression en donnée de type long.

Page 26: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 26 / 92 BR_VB_concepts.doc

Csng convertit une expression en donnée de type single.Cstr convertit une expression en donnée de type string.Cvar convertit une expression en donnée de type variant.Cbool convertit une expression en donnée de type boolean.Cbyte convertit une expression en donnée de type byte.Cdate convertit une expression en donnée de type date.

IsNumeric indique si l'argument de type variant peut être traduit en numériqueIsEmpty indique si l'argument de type variant a été initialisé.IsNull indique si l'argument de type variant est nul.

IsArray indique si l'argument est de type tableau.IsError indique si l'argument de type variant représente un code erreur.

IsMissing indique si un paramètre facultatif a été effectivement renseigné lorsde l'appel.

VarType retourne le code correspondant au type de la variable passée enargument.

TypeName retourne la chaîne correspondant au type de la variable passée enargument.

2. FONCTIONS DE MANIPULATION DE CHAINES

Len longueur d'une chaîne.Instr recherche la position de la première occurrence d'une sous-chaîne

dans une chaîne.Left, Right, Mid extraction d'une chaîne.

Lcase conversion en minuscules.Ucase conversion en majuscules.

LTrim, RTrim supprime les espaces à gauche (ou à droite) de la chaîne fournieSpace renvoie une chaîne d'espaces dont la longueur est égale au

paramètre fourniStrCnv Convertit en majuscule la première lettre de chaque mot d'une

chaîne.String renvoie une chaîne de N caractères identiques.

3. LES FONCTIONS DE DATES

Date Renvoie la date systèmeDateAdd Ajoute une durée à la date fournieDateDiff Renvoie la différence entre deux dates

Day renvoie le jour du mois (1 à 31) de la date fournieHour Renvoie un nombre (0 à 23) égal à l'heure fournie

Minute Idem (0 à 59)Month Idem (1 à 12)

Second Idem (0 à 59)Now Renvoie la date et l'heure systèmeTime Renvoie l'heure système

WeekDay renvoie un nombre égal au jour de la semaine de la dateYear Renvoie un nombre égal à l'année du paramètre fourni.

Page 27: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 27 / 92 BR_VB_concepts.doc

4. FONCTIONS MATHEMATIQUES

Abs Valeur absolueFix, Int Partie entière

Log Logarithme népérienRnd Renvoie un nombre aléatoireSgn Renvoie le signe d'un nombre (-1, 0, 1)Sqr racine carrée

5. FONCTIONS DIVERSES

Il existe de nombreuses autres fonctions prédéfinies, notamment en ce qui concerne les finances,les accès aux disques et la manipulation des fichiers.Voir la documentation VB.

Page 28: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 28 / 92 BR_VB_concepts.doc

NOTIONS D'OBJETS

I- DEFINITION D'OBJET

Un objet est une entité manipulable par l'ordinateur et à laquelle correspond :

Ô à une classe d'objetÔ des propres propriétésÔ des méthodesÔ des procédures d'événementÔ des procédures et fonctions

En fait on peut citer quelques objets :

Ô la fenêtre d'accueil de l'application,Ô la fenêtre de saisie d'un client,Ô le bouton de "quitter" de la feuille affichée à l'écran,...Ces exemples font directement référence aux objets manipulés par Visual Basic, on peuttoutefois en citer d'autres :Ô le client Dupont,Ô l'imprimante connectée au poste de Monsieur Dupont,Ô la facture n° 2345,...

* Chaque objet possède un nom.

Ô Exemples :* CmdQuit : nom du bouton de commande "quitter"* FrmAccueil : nom de la feuille d'accueil de l'application,...

II- CONVENTION D'ECRITURE DES OBJETS

Sous Visual Basic, on peut adopter la convention suivante pour nommer les objets :

Objet Préfixe ExempleFeuille frm frmFileOpenCase à cocher chk chkReadOnlyListe modifiable cbo cboEnglishListe modifiable dépendante dbc dbcEnglishBouton de commande cmd cmdCancelDonnées dat datBiblioListe de répertoires dir dirSourceListe de lecteurs drv drvTargetListe de fichiers fil filSourceCadre fra fraLanguageGrille grd grdPricesGrille dépendante dbg dbgPricesBarre de défilement horizontale hsb hsbVolume

Page 29: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 29 / 92 BR_VB_concepts.doc

Objet Préfixe ExempleFeuille frm frmFileOpenDessin img imgIconEtiquette lbl lblHelpMessageLigne lin linVerticalZone de liste lst lstPolicyCodesZone de liste dépendante dbl dblPolicyCodeMenu mnu mnuFileOpenConteneur OLE ole oleObject1Bouton d'option opt optFrenchZone d’image pic picDiskSpaceForme (cercle, carré, ovale, rectangle, rectangle arrondiet carré arrondi)

shp shpCircle

Zone de texte txt txtGetTextMinuterie tmr tmrAlarmBarre de défilement verticale vsb vsbRate

Les noms d'objet et les noms de variable sont soumis aux mêmes règles, comme tout ce qui seracréé sous Visual Basic.

Les noms sous VB :Ô doivent commencer par une lettre ;Ô ne doivent contenir que des lettres, des chiffres et le trait de soulignement (_), mais pas

de caractères de ponctuation ni d’espaces ;Ô ne doivent pas dépasser 40 caractères.

III- LES CLASSES D'OBJETS

* Tout objet appartient à une classe

Dans une classe d'objets, on retrouve des objets de même nature.

Ainsi, sous Visual Basic, on manipulera, entre autre :

Ô des classes de feuilles,Ô des classes de contrôles .

Ainsi, les contrôles de la boîte à outils représentent chacun une classe d'objets.L'objet connu comme contrôle n'existe pas avant sa création sur une feuille. Lorsque l'on crée uncontrôle sur une feuille, on crée une copie (ou occurrence ou instance de la classe) de cecontrôle. Cette occurrence de la classe constitue l'objet auquel on fait référence dansl'application.La feuille que l'on utilise au moment de la création est une classe. Au moment de l'exécution,Visual Basic crée une occurrence ou instance de la classe de la feuille.

IV- LES PROPRIETES D'UN OBJET

A chaque classe d'objets sont affectées un certain nombre de propriétés (au moins le nom del'objet). Chaque objet de la classe a ses propres valeurs de propriétés.Chaque propriété a un nom, il faudra connaître les propriétés les plus courantes.

Page 30: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 30 / 92 BR_VB_concepts.doc

Ô exemples :* la propriété caption qui représente le titre d'une fenêtre ou d'un bouton,* la propriété Font qui représente la police de caractère du titre d'une fenêtre ou d'un

bouton,...

La plupart des propriétés (mais pas toutes) sont modifiables aussi bien lors de la conception quelors de son exécution.

Lors de la conception on peut modifier la valeur d'une propriété via la fenêtre des propriétés.Si la feuille des propriétés n'est pas apparente, il suffit d'appuyer sur la touche F4 ou de cliquersur l'icône propriétés :

Exemple de fenêtre de propriétés :

La modification de la valeur d'une propriété, pendant la phase d'exécution, se fait en utilisant lanotation pointée :

Ô Exemple :FrmAccueil.Cmdbouton1.Caption = "Quitter"

modifiera le texte du bouton de nom CmdBouton1 se trouvant dans la feuille de nom FrmAccueil.Si l'instruction précédante se trouve dans le module concernant la feuille FrmAccueil, on peutomettre FrmAccueil., ce qui donne :

Cmdbouton1.Caption = "Quitter"

Objet auquel serapporte la liste depropriétés

Nom de la propriété

Valeur

Définition de lapropriété

Classe de l'objet

Colonne des propriétésadmises pour cet objet

Page 31: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 31 / 92 BR_VB_concepts.doc

En fait cette instruction modifie le texte du bouton de nom FrmAccueil se trouvant dans la feuillecourante.

Liste des principales propriétés, leur signification et les objets auxquels elles s'appliquent :

Propriétés Signification ObjetsActiveControl contrôle qui aurait le focus si le conteneur était

actif.FormMDIForm

ActiveForm feuille active pour une application MDI. MDIFormAlign alignement automatique sur le bord de la feuille. Data

PictureBoxAlignment cadrage du texte CheckBox

LabelOptionButtonTextBox

Appearance apparence 3D ou normale (à choisir dans la liste). tout contrôlevisible

AutoRedraw booléen indiquant si il y a mémorisation desdessins ou non, true mémorise au prix d'unaffichage très lent.

FormPictureBox

AutoShowChildren booléen indiquant si les feuilles enfants sontautomatiquement rendues visibles ou non.

MDIForm

AutoSize ajustement automatique des dimensions ducontrôle par rapport à son contenu.

LabelPictureBox

BackColor couleur de fond. tout contrôlevisible

BackStyle indique si un contrôle graphique est transparent ounon.

LabelShape

BorderStyle type de bordure (à choisir dans la liste). FormGridImageLabelLinePictureBoxShapeTextBox

Caption chaîne de caractères apparaissant dans l'objet(barre de titre pour une feuille).

CheckBoxCommandButtonDataFormFrameLabelMDIFormOptionButton

CellSelected indique si la cellule courante fait partie de lasélection.

Grid

ClipControls booléen indiquant si il faut tout redessiner(méthodes graphiques) en dehors des contrôlesnon graphiques.

FormFramePictureBox

Col n° de la colonne de la cellule courante. DBGridGrid

Cols nombre de colonnes. GridColWidth largeur des colonnes. Grid

DBGrid

Page 32: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 32 / 92 BR_VB_concepts.doc

ControlBox booléen indiquant si le menu système est présentou non

Form

Controls tableau des contrôles contenus dans un contrôlede type conteneur. (collection).

FormPictureBoxFrameSStab

Count nombre de contrôles dans un conteneur. FormPictureBoxFrameSStab

CurrentX position de la souris en X. FormPictureBox

CurrentY position de la souris en Y. FormPictureBox

DataChanged booléen indiquant si le contenu du contrôle achangé ou non (pour un contrôle lié à une BD).

CheckBoxDBComboDBListImageLabelPictureBoxTextBox

DataField champ de données auquel le contrôle est lié CheckBoxComboBoxDBComboDBGridDBListImageLabelListBoxPictureBoxTextBox

DataSource contrôle Data auquel le contrôle est lié. idemDragIcon icône utilisé pour une opération de glisser tout contrôle

visibleDragMode mode utilisé pour une opération de glisser

(automatique (vbautomatic) ou manuel(vbmanual)).

tout contrôlevisible

DrawMode mode de dessin des traits (à choisir dans la liste). FormLinePictureBoxShape

DrawStyle type de trait (à choisir dans la liste). FormPictureBox

DrawWidth largeur du trait de dessin. FormPictureBox

Drive unité de disque courante. DriveListBoxEnabled booléen indiquant si le contrôle peut être activé ou

non.tout contrôle

FillColor couleur de remplissage. FormPictureBoxShape

FillStyle motif de remplissage. FormGridPictureBox

Page 33: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 33 / 92 BR_VB_concepts.doc

ShapeFixedCols nombre de colonnes fixes. GridFixedRaws nombre de lignes fixes. GridFont police de caractères active pour la méthode print. tout objet

pouvant contenirdu texte

FontBold booléen indiquant si la police est en gras ou non. tout objetpouvant contenirdu texte

FontItalic booléen indiquant si la police est en italique ounon.

tout objetpouvant contenirdu texte

FontSize taille de la police. tout objetpouvant contenirdu texte

FontStrikethru booléen indiquant si la police est barrée ou non. tout objetpouvant contenirdu texte

FontTransparent booléen indiquant si le fond de la police esttransparent ou non.

tout objetpouvant contenirdu texte

FontUnderline booléen indiquant si la police est soulignée ou non. tout objetpouvant contenirdu texte

ForeColor couleur des caractères. tout objetpouvant contenirdu texte

GridLines booléen indiquant si il y a affichage du quadrillageou non.

Grid

GridLineWidth largeur des traits de quadrillage. GridhDC Handle graphique attribué par Windows. Form

PictureBoxHeight hauteur d'un contrôle. tout contrôlehWnd Handle de la fenêtre attribué par Windows. contrôles listes

contrôles boutonsFormFrameGridH et VScrollBarMDIFormPictureBoxTextBox

Icon fichier icône de la feuille. FormMDIForm

Index numéro dans un groupe de contrôle. tout contrôlevisible

Interval périodicité de événement timer en millisecondes TimerKeyPreview booléen indiquant si la feuille doit recevoir les

événements clavier avant ses contrôle ou non.Form

Left coordonnée en X du bord supérieur gauche. tout contrôleList tableau des textes d'une liste. contrôles listesListCount nombre d'éléments d'une liste. contrôles listesListIndex indice de l'élément sélectionné dans une liste. contrôles listes

Page 34: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 34 / 92 BR_VB_concepts.doc

Locked booléen indiquant si le contrôle est en lecture seuleou non.

Column (Grid)TextBox

Max valeur maximum de la propriété value. H et VScrollBarMaxButton booléen indiquant si le bouton d'agrandissement

est présent ou non.Form

MaxLenght nombre maximal de caractères acceptés TextBoxMDIChild booléen indiquant si la feuille est une feuille enfant

dans une application MDI.Form

Min valeur minimum de la propriété value. H et VScrollBarMinButton booléen indiquant si le bouton de réduction est

présent ou non.Form

MouseIcon image personnalisée pour le curseur de la souris. tout contrôlevisible

MousePointer image prédéfinie pour le pointeur de la sourislorsqu'il passe sur un contrôle.

tout contrôlevisible

MultiLine booléen indiquant si la saisie se fait sur plusieurslignes ou non.

TextBox

MultiSelect indique le mode de sélection multiple dans uneliste.

contrôles listes

Name identifie un objet. tout contrôleNewIndex indice de l'élément ajouté en dernier dans une liste. contrôles listesParent feuille où se trouve le contrôle. tout contrôlePasswordChar caractère utilisé pour l'affichage du texte ("" normal

ou un autre caractère).TextBox

Path chemin d'accès courant. DirListBoxFileListBox

Picture fichier du dessin de fond. FormImageMDIFormPictureBox

Row n° de la ligne de la cellule courante. GridDBGrid

RowHeight hauteur d'une ligne. GridDBGrid

Rows nombre de lignes. GridScrollBars booléen indiquant la présence de barres de

défilement ou non.Column (Grid)GridMDIFormTextBox

Selected tableau de booléens indiquant l'état de sélection dechaque élément d'une liste.

contrôles listes

SelEndCol n° de la colonne de la dernière cellule sélectionnée. GridDBGrid

SelEndRow n° de la ligne de la dernière cellule sélectionnée. GridSelLenght longueur de la sélection ComboBox

DBComboTextBox

SelStart position du premier caractère sélectionné. ComboBoxDBComboTextBox

SelStartRow n° de la ligne de la première cellule sélectionnée. Grid

Page 35: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 35 / 92 BR_VB_concepts.doc

SelStartCol n° de la colonne de la première cellulesélectionnée.

GridDBGrid

SelText chaîne sélectionnée. ComboBoxDBComboTextBox

Shape figure géométrique (carré, rectangle...). ShapeSorted indicateur de tri ComboBox

ListBoxStretch booléen indiquant si il y a ajustement de l'image

aux dimensions du contrôle ou non.Image

Style type de liste combinée (déroulante, simple,déroulante sans saisie).

ComboBoxDBCombo

TabIndex ordre d'activation des contrôle lors de l'utilisation dela touche tabulation.

tout contrôlepouvant avoir lefocus

TabStop booléen indiquant si il y a arrêt ou non sur lecontrôle lors de l'utilisation de la touche tabulation.

tout contrôlepouvant avoir lefocus

Tag chaîne de caractères disponible pour leconcepteur.

tout contrôle

Text contenu du champ de saisie. Column (Grid)contrôles listesGridDBGridTextBox

Top coordonnée en Y du bord supérieur gauche. tout contrôleValue valeur d'un contrôle. contrôles boutons

H et VScrollBarVisible booléen indiquant si un contrôle est visible ou non. tout contrôle

visible !Width largeur du contrôle. tout contrôleWindowState état de la fenêtre (normale, icône, plein écran). Form

MDIForm

V- LES METHODES D'UN OBJET

Une méthode correspond à un programme lié à un objet. C'est le programmeur qui écrit lesméthodes accessibles par un objet lorsqu'il crée une classe d'objet. Dans Visual Basic 4 Pro, iln'est pas possible d'écrire ou de modifier les méthodes d'une classe d'objets.Comme pour les propriétés, chaque objet pourra faire appel à certaines méthodes.

On pourra appeler une méthode dans un programme.

Ô Exemples :

FrmAccueil.Hide

La méthode Hide fermera la fenêtre citée (ici la fenêtre ayant pour nom FrmAccueil).

Page 36: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 36 / 92 BR_VB_concepts.doc

FrmAccueil.show

affichera la feuille de nom FrmAccueil (si la propriété visible est égale à true).

LstListetitre.AddItem "Monsieur le Directeur"

On ajoutera la rubrique "Monsieur le Directeur" à l'objet LstListetitre qui correspond à une listedéroulante.

* Remarque :On utilise pour les méthodes la notation pointée, comme pour les propriétés.

VI- EVENEMENTS ET PROCEDURES D'EVENEMENT

Il existe plusieurs types d'événements, les plus simples à maîtriser et à comprendre sont lesévénements utilisateurs directs à savoir les actions sur le clavier ou la souris.

Par exemple, il se produira un événement click sur un bouton de commande lorsque l'utilisateurcliquera sur le bouton en question. De même, il se produira l'événement change sur une zone detexte lorsque l'utilisateur aura saisi un caractère sur cette zone de texte.

Lors d'une action sur le clavier ou la souris, Windows va générer des messages pour l'applicationconcernée (celle qui est active).

Par exemple, l'utilisateur va modifier la dimension d'une fenêtre en cliquant sur la bordure et endéplaçant la souris en maintenant le bouton gauche enfoncé. Le code exécutable qui fait quevous voyez le cadre suivre le curseur de la souris est du code Windows (contenu dans unensemble de DLL formant les APIs Windows). Il n'y a rien à écrire dans l'application VB. Parcontre, lorsque l'opération est terminée (relâchement du bouton gauche de la souris), Windowsgénère un ensemble d'événements (Resize, Paint...) à destination de l'application concernée.

Pour chaque objet, un ensemble d'événements est susceptible de se produire.Pour chacun de ces événements concernant un objet, il est possible d'écrire du code VB quis'exécutera lorsque l'événement se produira, il s'agit de la procédure événement.

Ô Exemple :Private Sub Command2_Click()calculette.HideForm1.ShowEnd Sub

Page 37: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 37 / 92 BR_VB_concepts.doc

LES OBJETS PROPRES A UN PROJET

Les objets globaux sont des objets qui existent systématiquement. Ils correspondent à desfonctions du système d’exploitation tels que l’objet Screen, Printer ou Clipboard ou contiennentdes informations sur l’application elle-même.

I- L'OBJET APP

L'objet App permet de déterminer des informations relatives à l’application.

1. PROPRIETES ESSENTIELLES

EXEName Retourne le nom du fichier EXE en cours d’exécution ou le nom du projet.HelpFile Détermine le nom du fichier d’aide Windows d’une application.Hinstance Renvoie l’identificateur de l’instance de l’application.LogMode Détermine les modalités de journalisation.LogPath Renvoie le chemin et le nom du fichier de journalisation utilisé par la

méthode LogEvent.Path Détermine le chemin d’accès absolu en cours.PrevInstance Indique si une instance précédente (copie) de l’application fonctionne.StartMode Détermine si une application démarre en tant que projet autonome ou

comme serveur OLE Automation.TaskVisible Détermine si l’application apparaît dans la liste des tâches de Windows.Title Détermine le titre de l’application qui apparaît dans le gestionnaire de tâ-

ches de Windows.ThreadID Renvoie l’identificateur Win32 de la thread en cours d’exécution (utilisé

dans les appels à l’API Win32).UnattendedApp Définit si une application sera exécutée sans interface utilisateur.

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

Lors de la communication de l’application avec un composant ActiveX, des boîtes de dialogue pardéfaut peuvent apparaître. Elles indiquent que le composant est occupé ou bien que la demandede l’application est en attente (c’est-à-dire en cours d’exécution).Les propriétés suivantes permettent de paramétrer les boîtes de dialogue devant apparaître :

OLERequestPendingMsgText Définit le texte de la boîte de dialogue. Demande en attente.OLERequestPendingMsgTitle Définit le titre de la boîte de dialogue. Demande en attente.

OLERequestPendingTimeOut Définit la durée au bout de laquelle la boîte de dialogue.Demande en attente apparaît.

OLEServerBusyMsgText Définit le texte de la boîte de dialogue Serveur occupé.OLEServerBusyMsgTitle Définit le titre de la boîte de dialogue. Serveur occupe.OLEServerBusyRaiseError Définît si une requête d’automation rejetée génère une erreur au

lieu d’afficher la boîte de dialogue. Serveur occupé.

OLEServerBusyTimeOut Définit la durée au bout de laquelle la boite de dialogue Serveur

Page 38: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 38 / 92 BR_VB_concepts.doc

occupé apparaît.

3. METHODES

LogEvent Permet d’enregistrer un événement dans le journal de l’application.StartLogging Définit le journal et le mode de journaIisation.

II- SCREEN

Permet d’obtenir des informations sur l’écran et de contrôler le pointeur de la souris en dehorsdes feuilles de l’application exécutée.

1. PROPRIETES

ActiveControl Contrôle ayant le focus.ActiveForm Feuille ayant le focus.FontCount Nombre de polices de caractères de l’écran.Fonts Table des polices de caractères de l’écran.Height Hauteur de l’écran en twips (1440 twips/pouce, 567 twips/cm).MousePointer Définit l’apparence du pointeur de la souris.TwipsPerPixelX Indique le nombre pixel en abscisse.TwipsPerPixelY Indique le nombre pixel en ordonnée.Width Largeur de l’écran en twips.

Exemple

III- PRINTER / PRINTERS(COLLECTION)

Permet de réaliser des impressions contrôlées par l’application. L’objet Printer peut êtreconsidéré comme une page de l’imprimante sur laquelle on peut placer du texte et desgraphismes (comme dans une feuille).

1. PROPRIETES

ColorMode Détermine si l’impression sur une imprimante couleur est en couleurs oumonochrome.

Copies Détermine le nombre d’exemplaires à imprimer.Count Renvoie le nombre d’objets Printer (imprimante) de la collection Printers.DeviceName Renvoie le nom du périphérique pris en charge par un pilote donné.DriverName Renvoie le nom du pilote associé à un objet Printer (imprimante).Duplex Détermine si une page est imprimée des deux côtés.FONTCOUNT Nombre de polices de caractères de l’imprimante.Fonts Table des polices de caractères de l’imprimante.Height Hauteur d’une page de l’imprimante en twips.Orientation Indique si les documents sont imprimés en orientation portrait ou paysage.Page Numéro de la page courante.PaperBin Indique le bac d’alimentation par défaut de l’imprimante.PaperSize Indique la taille du papier.Port Détermine le nom du port de l’imprimante.PrintQuality Détermine la qualité d’impression.TrackDefault Détermine si l’objet Printer désigne toujours la même imprimante.

Page 39: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 39 / 92 BR_VB_concepts.doc

TwipsPerPixelY Indique le nombre de twips pour un pixel en abscisse.TwipsPerPixelX Indique le nombre de twips pour un pixel en ordonnée.Width Largeur d’une page de l’imprimante en twips.Zoom Détermine le pourcentage d’agrandissement ou de réduction des données

imprimées.

2. METHODES

EndDoc Met fin à l’impression d’un document et l’envoie au périphérique d’impression ou auspooler.

KillDoc Arrête un travail d’impression.NewPage Met fin à la page en cours et passe à la suivante.PaintPicture Dessine le contenu d’un fichier graphique (.BMP, .WMF, .ICO, .EMF ou .DIB) sur

un objet Printer.

IV- CLIPBOARD

Permet de manipuler le contenu du Presse-papiers.

1. METHODES

Clear Efface le contenu du presse-papiers.GetData Renvoie une image depuis le presse-papiers.GetFormat Indique si le format des données contenues dans le presse-

papiers correspond au format spécifié.GetText Renvoie un texte depuis le presse-papiers.SetData Place une image dans le presse-papiers en précisant le

format.

V- DEBUG

Permet d’envoyer les données de sortie dans la fenêtre de débogage pendant l’exécution.

1. METHODES

Assert Suspend l’exécution du programme et affiche la ligne où cette méthode apparaît sila valeur booléenne passée comme argument est à False. Ceci permet deprovoquer des arrêts conditionnels lors de l’exécution du programme mais en modedéveloppement seulement, car les lignes de code contenant cette méthode ne sontpas prises en compte par le compilateur.

Print Envoie des données dans la fenêtrede débogage.

Page 40: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 40 / 92 BR_VB_concepts.doc

LES FEUILLES VISUAL BASIC

I- PRESENTATION

1. DEFINITION

La feuille VB représente l'interface avec l'utilisateur, dans quasiment tous les projets.Un projet peut comporter de nombreuses feuilles.

Une feuille peut jouer un rôle particulier, c'est la feuille de démarrage. C'est elle qui apparaîtralors du lancement du projet, si toutefois elle a été déclarée comme fenêtre de démarrage dans lemenu outil/option/projet. On peut aussi démarrer un projet par la procédure main. Il suffit de lesignaler dans le même menu.

Les principales propriétés sur les objets ont été décrites dans le chapitre précédent, il fautmaintenant voir les méthodes et événements.

2. FENETRE MODALE OU NON MODALE

Une fenêtre A est dite modale si elle doit être fermée avant d'afficher une autre fenêtre Bprécédemment chargée.Toutefois, une fenêtre modale A peut ouvrir une autre fenêtre C, à condition que celle-ci soit elleaussi modale.

Fenêtre B non modale

Fenêtre A modale Fenêtre A modale

Fenêtre A modale

Fenêtre A modale

Fenêtre B non modale

Fenêtre C modale

Non Possible

Possible

La plupart des feuilles seront modales. Toutes les feuilles d'information, de message d'erreur oude confirmation seront obligatoirement modales, puisque le programme a besoin de connaître laréponse du message pour pouvoir continuer à travailler.

Page 41: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 41 / 92 BR_VB_concepts.doc

II- METHODES ET EVENEMENTS D'UNE FEUILLE

1. LES METHODES

Les méthodes les plus courantes sont les suivantes :

Méthode Description

Show Rend visible une feuille à l'écran. Si la feuille n'est pasprésente en mémoire, elle est chargée automatiquement.

Hide Cache une feuille tout en la gardant en mémoire

Move Déplace et redimensionne la feuille selon les coordonnéesfournies en paramètre.

PopupMenu Affiche le menu contextuel spécifié

Printform Imprime la feuille

SetFocus Donne le focus à la feuille spécifiée, à condition que la feuillesoit chargée en mémoire.

Ô Exemple :FrmCalcul.Show 1

Cette méthode affichera (après avoir éventuellement chargé) la feuille FrmCalcul. Le 1 signifieque la fenêtre est modale. Par défaut une fenêtre est non modale (valeur 0).

2. LES EVENEMENTS

Les événements présentés ici concernent uniquement la feuille et non les contrôles situés sur lafeuille.Le principaux événement sur une feuille sont les suivants :

Evénement Description

Load Il se produit au moment ou la feuille est chargée en mémoire,par l'instruction load. La feuille ne sera pas forcément affichée.

Unload Il se produit au moment ou la feuille est déchargée de lamémoire, par l'instruction unload.

Activate Il se produit lorsque la feuille devient active (quand on luidonne le focus), par les méthodes Show ou SetFocus.

Deactivate Il se produit lorsque lorsque la feuille n'est plus la feuille active.(déplacement du focus sur une autre feuille et nondéchargement de la feuille).

Click Il se produit lorsque l'utilisateur clique sur un bouton de lasouris et le relâche.

DblClick Idem, mais double cilck

Resize Il se produit lorsque l'utilisateur redimensionne la feuille.

Page 42: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 42 / 92 BR_VB_concepts.doc

Ô Exemple :load FrmCalcul

Cette instruction chargera en mémoire la feuille FrmCalcul, sans toutefois l'afficher , etdéclenchera la procédure d'événement Form_Load().

III- LA VIE D'UNE FEUILLE DANS UN PROJET

La manipulation des feuilles nécessite une bonne connaissance des événements de la vie d'unefeuille. Les scénarios suivants présentent l'enchaînement des événements d'une feuille, leursignification et leur usage.

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

Le terme feuille non exploitée signifie :Ø Aucune variable publique déclarée dans cette feuille n'a déjà été sollicitée par uneprocédure extérieure.Ø Aucune propriété de la feuille ou de ses contrôles n'a été sollicitée par une procédureextérieure.Ø La feuille n'a jamais été affichée.

Lorsque cette feuille est affichée suite à une instruction "NomFeuille.show", les événementssuivants se produisent dans cet ordre :

À Form_Initialize : Signale que les variables publiques et privées déclarées dans lafeuille sont chargées en mémoire. On profite de cet événement pour attribuer desvaleurs à des variables dès leur création.

Á Form_Load : Signale que les propriétés de la feuille et de ses contrôles sont chargéesen mémoire. On en profite pour paramétrer dynamiquement des objets avant leuraffichage. Attention, la feuille n'est pas encore présente à l'écran. Si on utilise cetévénement pour coder des méthodes graphiques comme .line, .circle, etc..., aucuneerreur ne se produira mais les méthodes n'auront pas d'effet.

 Form_Resize : Signale que la fenêtre est redimensionnée. La fenêtre n'est cependantpas encore visible. On peut en profiter pour attribuer une dimension précise à lafenêtre.

à Form_Paint : Signale un rafraîchissement du contenu graphique de la fenêtre. Elle estvisible à l'écran. On peut alors coder des méthodes graphiques.

2. MASQUAGE D'UNE FEUILLE PRESENTE A L'ECRAN :Si la feuille est affichée, ses variables et propriétés sont en mémoire. Masquer une feuille parl'emploi de sa méthode .hide entraine l'événement Form_DeActivate. Les variables et propriétéssont toujours en mémoire.

Déchargement d'une feuille avec l'instruction Unload :Ceci entraîne particulièrement deux événements :

À Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) : Signale que ledéchargement a été demandé. Il permet grâce à l'argument UnloadMode de savoir

Page 43: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 43 / 92 BR_VB_concepts.doc

quelle est l'origine du déchargement (Windows, Feuille mère MDI, Instruction Unload,Utilisation des cases "système"). L'argument Cancel fonctionne comme un booléen. Enplaçant sa valeur sur True dans la procédure événementielle, le déchargement de lafeuille est annulé.

Á Form_Unload(Cancel As Integer) : signale le déchargement de la feuille. Peut êtreannulé par l'emploi de l'argument Cancel (Cancel=True). Sans annulation, l'événementUnload signifie le déchargement des propriétés, mais pas celui des variables quirestent chargées. Les variables publique, privées, statiques déclarées dans une feuillesurvivent donc à la fermeture de celle-ci.

3. DESTRUCTION DE L'INSTANCE D'UNE FEUILLE:Pour obtenir une destruction définitive de toute référence à une feuille, on utilise l'instructionsuivante :

Set NomFeuille = Nothing

l'événement Form_Terminate est activé. Il signale que les variables déclarées dans la feuillesont détruites. A utiliser pour éventuellement archiver des valeurs.

4. MANIPULATION D'UNE VARIABLE D'UNE FEUILLE NON EXPLOITEE:Si une procédure accède en consultation ou modification à une variable déclarée dans une feuillequi n'a encore jamais été exploitée d'une quelconque manière que ce soit, l'événementForm_Initialize se produira et toutes les déclarations de la feuille seront réalisées.

5. MANIPULATION D'UNE PROPRIETE D'UNE FEUILLE NON EXPLOITEE:Si une procédure accède en consultation ou modification à une propriété d'une feuille ou de sescontrôles qui n'a encore jamais été exploitée d'une quelconque manière que ce soit, lesévénements Form_Initialize et Form_Load se produiront.Les variables.de la feuille seront donc chargées, puis les propriétés.Il n'est donc pas nécessaire qu'une feuille soit chargée par l'instruction LOAD pour pouvoirutiliser ses variables ou propriétés depuis une procédure extérieure.

IV- LES BOITES DE DIALOGUE

Les boîtes de dialogue sont des feuilles prédéfinies par Visual Basic et qui permettent d'afficherdes messages d'erreur, des messages à l'attention de l'utilisateur, de proposer des choix quiinfluenceront la suite du programme.

Deux types de boîtes de dialogue sont possibles :

Ô les MsgBox pour les messagesÔ les InputBox pour la saisie d'une valeur

1. LES BOITES DE DIALOGUE DE TYPE MSGBOX

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

Page 44: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 44 / 92 BR_VB_concepts.doc

Le principe est le même, sauf qu'avec la fonction MsgBox, il sera possible de savoir sur quelbouton l'utilisateur a appuyé, et ainsi de conditionner la suite du programme.

Ô Exemple : L'xemple ci-dessous montre une procédure qui utilise à la fois l'instruction MsgBox et la fonction.On notera que les paramètres ne sont pas les mêmes).

Titre

Prompt

Page 45: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 45 / 92 BR_VB_concepts.doc

Private Sub Form_Load()Dim reponse As IntegerForm1.Showreponse = MsgBox("ceci est un test de boîte de dialogue", 35, "Bienvenue")Select Case reponse Case 6 MsgBox ("vous avez appuyé sur OUI") Case 7 MsgBox ("vous avez appuyé sur NON") Case 2 MsgBox ("vous avez appuyé sur ANNULER")End SelectEnd Sub

* Remarque : avec la saisie assistée, on aurait pu se dispenser de calculer la valeur de lavariable boutons, en cliquant successivement sur les styles de boutons proposés par l'éditeur.Ainsi la commande devient :

reponse = MsgBox("Ceci est un test de boîte de dialogue", vbDefaultButton1 + vbQuestion +vbYesNoCancel, "Bienvenue")

Syntaxe :

MsgBox(prompt[, boutons][, titre][, helpfile, context])

Seul le prompt est précisé pour l'instruction. Helpfile et Context sont rarement utilisés.

Prompt : il s'agit du texte du message. Il ne doit pas excéder 1024 caractères . Le passage à laligne sera automatique, à moins d'introduire la caractère de code ASCII 13 pour forcer le passageà la ligne à l'endroit souhaité.

Boutons : C'est une valeur numérique égale à la somme des 4 indications suivantes :* sur les boutons

Code types de boutons0 OK1 OK et Annuler2 Abandonner, répéter et Ignorer3 Oui, Non et Annuler4 Oui et Non5 Répéter et Annuler

* sur l'icôneCode types d'icône

16 Message critique "X"32 Confirmation "?"48 Avertissement "!"64 Information "i"

Page 46: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 46 / 92 BR_VB_concepts.doc

* sur le bouton par défautCode bouton par défaut

0 Premier256 Deuxième512 Troisième

* sur la modalité de la boîteCode modalité

0 La boîte est modale et il est possible de passer à uneautre application par ALT + TAB ou bien ALT + ESC

1 La boîte est modale et il est impossible de passer àune autre application par ALT + TAB ou bien ALT + ESC

On peut tester, avec la fonction MsgBox quel bouton a été activé par l'utilisateur.Les valeurs de retour sont les suivantes :

Code bouton sélectionné1 OK2 Annuler3 Abandonner4 Répéter5 Ignorer6 Oui7 Non

Titre : C'est le texte affiché dans le bandeau de la boîte de dialogue (son titre).

2. LES BOITES DE DIALOGUE DE TYPE INPUTBOX

L'affichage d'une boîte de dialogue de type InputBox ne peut se faire que par l'instermédiaire dela fonction InputBox.

Syntaxe

InputBox(prompt[, titre][, défaut][, xosx][, ypos][, helpfile, context])

Ici aussi, seuls Prompt, titre et défaut seront généralement utilisés.

Prompt et titre : même signification que pour une MsgBox.

Défaut : Valeur par défaut qui s'affichera dans la boîte de dialogue. Cet argument n'est pasobligatoire !

Dim reponse As String...reponse = InputBox("Entrer le titre du client", "Saisie du client", "Monsieur")

Page 47: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 47 / 92 BR_VB_concepts.doc

* Remarques :Ô Le type retourné par la fonction est du chaîne. Attention donc à éventuellement convertir la

valeur saisie.

Ô Si l'utilisateur appuie sur le bouton Annuler, la fonction retournera une chaîne vide.

Page 48: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 48 / 92 BR_VB_concepts.doc

LES CONTROLES

Les principaux contrôles offerts par Visual Basic sont consignés dans la boîte à outils quiapparaît dans le projet.On étudiera dans ce chapitre les principaux.

I- LES CONTROLES STANDARDS

Label

Cadre (frame)Case à cocher

Liste modifiable (combo box)

Minuteriel

Liste de répertoires

Forme (shape)Dessin

Contrôleur OLE

Barre défilement horizontale

Liste modifiable dépendante (accès aux données)

SStab

Zone d'image

Texte (textBox)

Bouton de commandeCase d'option

Barre de défilementverticaalZone de liste d'unités

Zone de liste de fichiersLigne (line)

Donnée (data)

Zone de liste(ListBox)

Liste dépendante (DBList)

Dialogue commun

Grille dépendante(DBGrid)

Pointeur

1. LE POINTEUR

Permet de déplacer et de redimensionner des feuilles et des contrôles.(Il ne s'agit pas d'un contrôle.)

2. LE CONTROLE ETIQUETTE (LABEL)

Affiche du texte que l'utilisateur ne peut pas modifier et avec lequel il ne peut pasdialoguer. Ce contrôle ne peut recevoir le focusIl pourra être modifié par la propriété caption.

Page 49: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 49 / 92 BR_VB_concepts.doc

On utilisera ce contrôle comme étiquette en regard d'un champ de saisie, comme titre, pourplacer un commentaire ou afficher une donnée non modifiable.

Propriétés courantes Valeurs DescriptionAlignement 0

12

texte aligné à gauchenombre aligné à droitecentré

Caption Texte Texte qui sera affiché dans le contrôleEnabled True ou False Affiche en grisé le contrôle si la valeur est

False. Le contrôle ne pourra réagir auxévénements générés par l'utilisateur

FontBold True ou False GrasFontItalic True ou False ItaliqueFontUnderline True ou False SoulignéFontName Police de caractèresFontSize Taille de la police de caractèresName Nom du contrôle (ne pas confondre avec le

contenu)Visible True ou False Visible sur la feuille ou nonDataSource (voir la paragraphe accès aux données)DataField (voir la paragraphe accès aux données)

* RemarquesÔ D'autres propriétés sont disponibles, qui se rapportent à la présentation du contrôle

(couleur, bordure,...), mais il est conseillé de se rapporter à la norme Windows et de s'yconformer.

3. LE CONTROLE ZONE DE TEXTE (TEXTBOX)

Fournit une zone pour taper ou afficher du texte. La différence avec un label est quel'utilisateur a la possibilité de modifier le contenu par l'intermédiaire du clavier, après avoir cliquésur le champ.

Propriétés courantes Valeurs DescriptionAlignementEnabledFontBoldFontItalicFontNameFontSizeFontUnderlineNameVisibleDataSourceDataFieldIndex Numéro qui identifie de manière unique un

contrôle dans un groupe de contrôles.MaxLengh Nombre Nombre maximal de caractères pouvant être

saisisMultiline True ou False Autorise ou pas plusieurs lignes dans une zone

Page 50: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 50 / 92 BR_VB_concepts.doc

Propriétés courantes Valeurs Descriptionde texte.

PasswordChar un caractère Caractère affiché dans un mot de passeScrollBars 0

123

pas de barre de défilementBarre de défilement horizontaleBarre de défilement verticalBarres de défilement horizontale et verticale.

TabIndex nombre numéro d'ordre des tabulations dans sa feuillemère.

TabStop True ou False Arrêt ou pas sur la zone de texte en cas detabulation

Text Texte qui sera affiché dans le contrôle.

* RemarquesÔ D'autres propriétés sont disponibles, qui se rapportent à la présentation du contrôle

(couleur, bordure,...), mais il est conseillé de se rapporter à la norme Windows et de s'yconformer.

Ô Il est possible de se positionner directement sur un champ de saisie en utilisant le etcommercial dans la propriété caption du label précédent le champ de saisie dansl'ordre des tabulations. Ce caractère sera alors souligné et on pourra se rendredirectement sur le champ de saisie par le raccourci clavier ALT + caractère souligné

4. BOUTON DE COMMANDE (COMMANDBUTTON)

Exécute une commande ou une action lorsque l’utilisateur le choisit.

Propriétés courantes Valeurs DescriptionCaptionEnabledDataChangedDataFieldDataSourceFontBoldFontItalicFontNameFontSizeFontUnderlineIndexNameTabIndexTabStopVisibleCancel True ou False Si la valeur est à true, la touche Echap équivaut

à un click sur ce bouton.Default True ou False Si la valeur est à true, la touche Entrée

équivaut à un click sur ce bouton.

Page 51: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 51 / 92 BR_VB_concepts.doc

* RemarquesÔ D'autres propriétés sont disponibles, qui se rapportent à la présentation du contrôle

(couleur, bordure,...), mais il est conseillé de ne pas abuser de ces propriétés et delaisser les propriétés par défaut.

Ô On peut mettre, à la place du texte (propriété caption), une image ou une animation.Cela peut parfois être utile, mais attention aux abus et au côté gadget qui risque delasse l'utilisateur.

Ô Il est possible de faire précéder un caractère de la propriété caption d'un et commercial(&). Ce caractère sera alors souligné et on pourra sélectionner le bouton de commandepar le raccourci clavier ALT + caractère souligné (comme pour les menus).

Ô Il est conseillé d'utiliser la même valeur pour le nom du contrôle (propriété Name) etpour son contenu (propriété caption). Si on utilise un préfixe on fera précéder le nomdu préfixe (ex : Quitter / CmdQuitter).

Ô la propriété Cancel égale à True est généralement attribuée à un bouton du typeAnnuler et la propriété Default est généralement attribuée à un bouton du type OK

5. CASE A COCHER (CHECKBOX)

Affiche une option Vrai/Faux ou Oui/Non.Le nombre de cases à cocher que l'on peut activer simultanément est illimité.Le texte associé fait partie du contrôle. Ce n'est donc pas un label.

Propriétés courantes Valeurs DescriptionAlignment 0 ou 1CaptionEnabledFontBoldFontItalicFontNameFontSizeFontUnderlineIndexNameTabIndexTabStopVisibleValue 0

12

La case n'est pas cochéeLa case est cochéeLa case est grisée

* RemarqueÔ Les propriétés DataSource, DataField et DataChanged seront vues dans le paragraphe

accès aux données.

Page 52: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 52 / 92 BR_VB_concepts.doc

6. CASE D'OPTION (OPTIONBUTTON)

Fait partie, avec d'autres boutons d'option, d'un groupe d'options qui permet d'afficherplusieurs choix possibles. L'utilisateur ne peut sélectionner qu'un seul de ces boutons à lafois, les autre s'excluant automatiquement. On appelle également ce contrôle bouton de radio.

Propriétés courantes Valeurs DescriptionAlignment 0 ou 1CaptionEnabledFontBoldFontItalicFontNameFontSizeFontUnderlineIndexNameTabIndexTabStopVisibleValue True

Falsel'option est validéel'option n'est pas validée

* RemarquesÔ Les valeurs de la propriété Value ne sont pas les mêmes que pour un contrôle case à

cocher.

Ô Les propriétés DataSource, DataField et DataChanged ne sont aps disponibles pour cecontrôle.

Ô N'utiliser ces cases que lorsque l'on sait que les valeurs des options proposées ne vontpas changer ou qu'il ne faudra pas en rajouter d'autres, afin de limiter la maintenencedes programmes.

Ô Exemple :

Private Sub CmdOK_Click()If OptHomme Then MsgBox "c'est un homme" Else MsgBox "c'est une femme"End If

End Sub

Page 53: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 53 / 92 BR_VB_concepts.doc

Page 54: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 54 / 92 BR_VB_concepts.doc

7. LE CADRE (FRAME)

Constitue un conteneur fonctionnel et visuel pour des contrôles. Il est surtout utilisé pourles cases d'option. Il s'avère indispensable dans une feuille où il y a plusieurs groupes decases d'option afin de les distinguer. On pourra alors choisir une option dans chaquecadre. On s'en sert également à titre visuel pour permettre une meilleure lisibilité de lafeuille. On regroupe alors dans chaque cadre des informations de même nature.

Propriétés courantes Valeurs DescriptionCaptionFontBoldFontItalicFontNameFontSizeFontUnderlineNameVisibleValue True

Falsel'option est validéel'option n'est pas validée

* RemarquesÔ On peut forcer une option par défaut en mettant la valeur true dans la propriété value

lors de la conception de la feuille.

Ô Si l'on ne veut pas faire figurer le cadre sur la grille pour des raisons esthétiques, maisque celui-ci est indispensable, on peut mettre la propriété visible à false.

Ô Exemple :

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

Page 55: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 55 / 92 BR_VB_concepts.doc

II- LES CONTROLES DE LISTES ET FICHIERS

1. LE CONTROLE LISTE MODIFIABLE (COMBO BOX)

Permet à l'utilisateur de taper dans un élément sélectionné ou d’en sélectionner undans une liste déroulante. Si la zone de liste contient trop d'éléments pour qu'ils puissent êtreaffichés tous à la fois, des barres de défilement apparaissent automatiquement sur lecontrôle. Ce type de contrôle permet à l'utilisateur de procéder à une sélection soit en tapantdu texte dans la partie modifiable, soit en sélectionnant l'un des éléments dans la partie liste.

* remarque : il existe trois styles de listes modifiables :Ô liste modifiable déroulante (Propriété Style = 0) ;Ô liste modifiable simple (Propriété Style = 1) ;Ô zone de liste déroulante (Propriété Style = 2).

La figure suivante montre les trois styles de zones de liste modifiables.

Liste modifiable déroulante (Style 0 par défaut)La valeur par défaut (lorsque la propriété Style a la valeur 0) définit une liste comme étantmodifiable et déroulante. L'utilisateur peut taper directement du texte (comme dans une zone detexte) ou cliquer sur la flèche située à droite de la zone afin d'ouvrir une liste de choix.

Liste modifiable simple (Style 1)Pour afficher tous les éléments de la liste, il faut dessiner une liste de taille suffisante. Une barrede défilement verticale est automatiquement insérée lorsque le nombre d’éléments est supérieurau nombre d’éléments pouvant être affichés dans la liste. L'utilisateur peut taper directement dutexte ou faire sa sélection dans la liste. Tout comme dans une liste modifiable déroulante,l’utilisateur a la possibilité de taper des choix qui ne sont pas proposés dans la liste.

Zone de liste déroulante (Style 2)Une liste déroulante ressemble à une zone de liste normale : elle affiche une liste d'options parmilesquelles l'utilisateur doit choisir. Toutefois, contrairement aux zones de liste, la liste ne s'affichepas tant que l’utilisateur ne clique pas sur la flèche située à droite de la zone déroulante. Demême, dans une zone de liste, l’utilisateur est uniquement autorisé à sélectionner un élément.

Les éléments de la liste peuvent être fournis :

Ô dans la propriété Liste

Page 56: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 56 / 92 BR_VB_concepts.doc

En fait cette liste peut être considérée comme un tableau, dont l'index du premier élément ala valeur 0.

Ô par programme

On peut, par programme, modifier la liste en utilisant les méthodes suivantes :

Méthode Syntaxe ExempleAddItemajout d'un élément dans la liste

Objet.AddItem valeur[,index] Cmbcru.AddItem "Côtes deBourg"

RemoveItemSuppression d'un élément

Objet.RemoveItem index CmbCru.RemoveItem 1

ClearSuppression de tous leséléments de la liste

Objet.Clear CmbCru.Clear

On peut aussi travailler sur les éléments de la liste en utilisant les propriétés suivantes :Propriété Fonction Exemple

List(index) Accès à un élément de la liste TxtVin.text = CmbCru.list(4)ListIndex Position de l'élément

sélectionné dans la listepos = CmbCru.ListIndex

ListCount Fournit le nombre d'élémentsde la liste.

Sorted tri de la liste Attention avec la méthodeAddItem

* Remarque : On pourra associer à une zone de liste les éléments d'une table relationnelle. Onétudiera ce cas dans le chapitre concernant les données.

2. LE CONTROLE ZONE DE LISTE (LISTBOX)

La liste simple (listbox) contient un ensemble de chaînes de caractères. Si la liste ne rentrepas dans le rectangle défini lors de la conception, une barre de défilement verticale apparaîtautomatiquement. On peut demander à ce que les données apparaissent sur plusieurscolonnes (propriété column), cela pouvant faire apparaître une barre de défilementhorizontale. Les éléments de la liste peuvent être triés (propriété sorted à la conception).

Page 57: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 57 / 92 BR_VB_concepts.doc

On peut demander à ce que la liste permette la sélection multiple simple (chaque clic sélectionneou désélectionne un élément), ou étendue (avec les touche CTRL ou MAJ) avec la propriétémultiselect. Par défaut cette propriété vaut 0 (pas de sélection multiple).

Pour savoir si un élément de la liste a été sélectionné, on peut utiliser la propriété Selected(index)qui correspond à un tableau de booléens indiquant l'état de sélection de chaque élément.

Ü Exemple : if LstVin.Selected(j) then i = i + 1

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

Ces trois listes vont généralement ensemble. Ils correspondent aux contrôles suivants :

La liste d'unités de disques (DriveListBox) est une liste déroulante sans saisie, dont la listecontient automatiquement toutes les unités de disques de la machine (y compris CD-ROM). La propriété drive permet de connaître l'unité de disque sélectionnée.

La liste des répertoires (DirListBox) donne la liste des sous-répertoire du répertoirecourant. La propriété path permet de connaître le répertoire sélectionné.

La liste des fichiers (FileListeBox) donne la liste des fichiers du répertoire dont le nom estcontenu dans la propriété path du contrôle liste des fichiers.La propriété pattern permet de spécifier un filtre d'affichage (*.* par défaut).

En fait, à chaque sélection de l'utilisateur les répercutions d'une liste à l'autre ne sont pasautomatiques. Il suffit d'écrire deux lignes de code pour que tout se passe bien, en utilisant laprocédure d'événement Change chaque fois que le lecteur ou le répertoire courant change :

Ü Exemple :

Private Sub Dir1_Change()Fil1.Path = Dir1.PathEnd Sub

Private Sub Drv1_Change()Dir1.Path = Drv1.DriveEnd Sub

Page 58: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 58 / 92 BR_VB_concepts.doc

LE GLISSER - DEPLACER (DRAG AND DROP)

I- PRINCIPE

On appelle glisser l'opération qui consiste à déplacer un contrôle en maintenant enfoncé unbouton de la souris.On appelle déplacer le relâchement de ce bouton.

Le tableau suivant indique les propriétés, événements et méthodes associées aux opérations deglisser - déplacer.

Catégorie Elément DescriptionPropriétés DragMode Permet le glissement automatique ou

manuel d'un contrôleDragIcon Spécifie l'icône à afficher lors du

déplacement du contrôleEvénements DragDrop Correspond à la dépose d'un contrôle sur un

objetDragOver Correspond au glissement d'un contrôle sur

un objetMéthodes Move Déplace un contrôle à un nouvel

emplacement de coordonnées X et YDrag Commence ou arrête un glissement manuel

Les contrôles Menu, timer, Line et Shape ne reconnaissent pas les propriétés DragMode etDragIcon, ainsi que la méthode drag (on ne pourra donc pas les déplacer)

Les feuilles reconnaissent les événements DragDrop et DragOver, ne reconnaissent pas lespropriétés DragMode et DragIcon, ainsi que la méthode Drag.

II- PROPRIETES, EVENEMENTS, METHODES

1. GLISSEMENT AUTOMATIQUE (PROPRIETE DRAGMODE)La valeur 0 (manuel) de cette propriété signifie que le glisser n'est possible qu'avec la méthodeDrag.La valeur 1 (automatique) signifie que le glissement est activé, c'est à dire que le glisseemnt del'objet est permis et se fait sans programmation.

On peut modifier par programme la valeur de cette propriété.

Ü exemple : PicImage.DragMode = 0

2. ICONE DE GLISSEMENT (PROPRIETE DRAGICON)Pendant le glissement, ce n'est pas l'objet qui est déplacé, mais son contour. Il est possible deremplacer ce contour par une icône, en utilisant la propriété DragIcon. Visual Basic fournit uncertain nombre d'icônes dans un sous répertoire Icons du répertoire Visual Basic.

Page 59: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 59 / 92 BR_VB_concepts.doc

3. DEPOSE D'UN OBJET (EVENEMENT DRAGDROP)Cet événement se produit lorsque l'on relâche le bouton de la souris.On peut donc répondre à cet événement de plusieurs manières, notamment en déplacent l'objetsource sur l'objet destination, ou bien en refusant de déplacer l'objet source sur l'objetdestination.Ü Exemples :- Cet exemple interdit tout collage sur l'objet pic1

Private Sub Pic1_DragDrop(Source As Control, X As Single, Y As Single)MsgBox "il est interdit de déplacer un objet dans cette zone"End Sub

- cet autre exemple déplace le contrôle sur l'objet FrmAccueil :Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)If Source.Name = "Lbl1" ThenSource.Move X, YElseMsgBox "vous n'avez pas le droit de déplacer ce contrôle"End IfEnd Sub

L'argument Source correspond à l'objet source du déplacement. On teste ici le nom de l'objetsource afin d'autoriser uniquement le déplacement sur la feuille du contrôle Lbl1. Le déplacementa été fait grâce à la méthode move.

4. DEPLACEMENT DE L'OBJET (METHODE MOVE)Cette méthode est utilisée pour déplacer ou modifier la taille d'un objet.Sa syntaxe est la suivante :

objet.Move gauche [, haut [, largeur [, hauteur]]]

On voit que seul le premier argument est facultatif, toutefois si on veut indiquer la hauteur, il fautpréciser tous les paramètres précédents.

Pour déplacer un objet, on utilisera les arguments gauche et haut.On le voit dans l'exemple précédent.

* remarque : Il se peut que le contrôle ne se positionne pas exactement au même endroit quecelui de son propre contour apparu lors de l'opération de glissement. C'est normalcar les coordonnées fournies (X et Y) sont en fait celles de la souris, qui necorrespond pas forcément au coin supérieur gauche du contour de l'objet déplacé.Pour remédier à ce petit inconvénient, on peut faire un déplacement relatif aprèsavoir conservé les positions initiales de la souris.

5. GLISSEMENT D'UN CONTROLE SUR UN OBJET (EVENEMENT DRAGOVER)Cet événement se produit lorsque on fait glisser un contrôle sur un autre objet. On peut doncécrire du code dans la procédure d'événement correspondante, notament pour changer parexemple le pointeur de la souris pour lui signifier que le déplacement du contrôle sur cet objet estinterdit.

La procédure d'événement comporte 3 paramètres :Ô source qui donne le contrôle déplacé et qui peut être utilisé comme un contrôle

Page 60: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 60 / 92 BR_VB_concepts.doc

Ô X et Y : position en cours du pointeur de la souris dans la feuille ou le contrôle cibleÔ State( ou état) : Entier qui correspond à l'état de transition du contrôle en cours dedéplacement par rapport à la feuille ou au contrôle cible.

0 = Entre (le contrôle source entre dans la portée de la cible).1 = Sort (le contrôle source sort de la portée de la cible).2 = Dessus (le contrôle source est passé d'une position à une autre dans la cible).

L'exemple ci-dessous montre un changement de pointeur de souris lorsque un contrôle entre surl'objet Picture1 et redevient normal quand le contrôle ne glisse plus au dessus de picture1.Quand il sort, on affiche également un message d'au revoir.

Private Sub Picture1_DragOver(Source As Control, X As Single, Y As Single, State As Integer) Select Case State Case 0 ' Charge l'icône. source.MouseIcon = LoadPicture("c:\vb\icons\traffic\trffc14.ico") Case 1 ' Décharge l'icône. Source.MouseIcon = LoadPicture() MsgBox "Au Revoir" End SelectEnd Sub

Page 61: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 61 / 92 BR_VB_concepts.doc

L'ACCES AUX DONNEES : LE CONTROLE DATA

I- INTRODUCTION

Visual basic permet d'accéder à des données stockées sur disque. Ceci est indispensable eninformatique de gestion pour un langage de développement.Les données peuvent être stockées :

Ô soit dans des fichiers classiques,Ô soit dans des bases de données.

L'objet de ce chapitre est de traiter l'accès aux données stockées dans des bases de données.On peut accéder aux données d'une base de plusieurs façons. Nous ne nous intéresserons ici àl'accès aux données d'une base Access 2, dans la mesure où le moteur DataJet est inclus dansVB. Le contrôle Data permet d'accéder aux données sans quasiment écrire de code. L'accès auxdonnées par programmation est largement développé dans le cours D.A.O (Data Access Object).

II- LE CONTROLE DATA

1. PRESENTATION

Le contrôle Data peut, sans l'emploi de code, effectuer les tâches suivantes :

å se connecter à une base de données locale ou distante ;å ouvrir une table de base de données spécifiée ou définir un jeu d'enregistrements à partir

d'une requête SQL sur les tables de cette base de données ;å passer des champs de données à des contrôles dépendants dans lesquels on peut afficher ou

modifier les valeurs ;å ajouter de nouveaux enregistrements ou mettre à jour une base de données en fonction des

modifications apportées aux données affichées dans les contrôles dépendants ;å intercepter les erreurs qui se produisent au moment de l'accès aux données ;å fermer la base de données.

L'ajout du contrôle Data sur une feuilles se déroule exactement comme pour n'importe quel autrecontrôle Visual Basic.On peut avoir autant de contrôles Data que nécessaire sur une feuille. Il ne sera pastoutefois nécessaire qu'ils soient tous visibles (propriété visible).En règle générale, on utilisera un contrôle Data pour chaque table (ou requête) de base dedonnées avec laquelle on souhaite travailler.

Page 62: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 62 / 92 BR_VB_concepts.doc

2. MISE EN OEUVRE

Il est nécessaire de suivre les étapes suivantes :

ÀÔ Ajouter le contrôle Data à la feuille.

Une fois que le contrôle dessiné et dimensionné le contrôle sur la feuille, une légende apparaît(dans l'exemple suivant il s'agit de Data1). Le nom par défaut du contrôle est Data1, il s'agit de lapropriété Caption, que l'on peut changer comme l'on veut.

ÁÔ Définir ses propriétés de façon à identifier la base de données et la table à partir desquelleson veut obtenir des informations.

En dehors de la propriété caption, il faut renseigner les propriétés suivantes :

Ô Connect : il s'agit du type de base de données que l'on souhaite utiliser

Ô DatabaseName pour définir le nom du fichier et du répertoire de la base de données àlaquelle on souhaite se connecter.

RecordSource pour le nom de la table de base de données à laquelle on souhaite accéder.

* Remarque : Si la base de données n'est pas disponible au moment de la création, on doitdéfinir les propriétés DatabaseName et RecordSource au moment de l'exécution.

ÂÔ Ajouter des contrôles dépendants (notamment des zones de texte, des zones de liste etd'autres contrôles qu'on "lie" au contrôle Data).

ÃÔ Définir les propriétés des contrôles dépendants pour identifier la source et le champ dedonnées à afficher.

Quand on exécute l'application, ces contrôles dépendants affichent automatiquement les champsde l'enregistrement en cours dans la base de données.

3. LE DEPLACEMENT DANS UNE TABLE OU UNE REQUETE

On peut modifier les informations contenues dans la base de données en changeant la valeuraffichée dans l'un des contrôles dépendants. Lorsque l'on clique sur une flèche du contrôle Datapour passer à un nouvel enregistrement, Visual Basic enregistre automatiquement toutes lesmodifications apportées aux données.Bien entendu, on peut ajouter du code pour enrichir l'application.

Page 63: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 63 / 92 BR_VB_concepts.doc

III- LES CONTROLES DEPENDANTS

1. PRESENTATION

Les contrôles dépendants sont des contrôles liés aux bases de données par l'intermédiairedesquels on accède aux informations contenues dans une base de données.Lorsqu'un contrôle est lié au contrôle Data, Visual Basic applique au contrôle dépendant lesvaleurs de champ de l'enregistrement de base de données en cours. Le contrôle affiche ensuiteles données et accepte vos modifications. Si on modifie des données dans un contrôledépendant, les changements peuvent être automatiquement répercutés dans la base de donnéeslorsque l'on passe à un autre enregistrement.La plupart des contrôles dépendants se caractérisent par trois propriétés liées aux bases dedonnées, à savoir DataChanged, DataField et DataSource.

Propriété DescriptionDataChanged Indique si une valeur affichée dans un contrôle dépendant a changé.DataField Spécifie le nom d'un champ dans le jeu d'enregistrements créé par le contrôle

Data.DataSource Spécifie le nom du contrôle Data auquel le contrôle est lié.

2. AJOUT DE CONTROLES DEPENDANTS DANS UNE FEUILLE

Pour ajouter des contrôles dépendants dans une feuille, il faut : ¬Ô Dessiner le contrôle dépendant sur la même feuille que le contrôle Data auquel il sera lié. ­Ô Définir la propriété DataSource pour spécifier le contrôle Data auquel il sera lié. ®Ô Affecter à la propriété DataField un champ valide dans l'objet Recordset du contrôle Data.

Si la base de données est accessible au moment de la création, une liste des champs valides estaffichée dans la zone des paramètres de la propriété DataField dans la fenêtre Propriétés. Enrevanche, si elle n'est pas disponible au moment de la création, on doit indiquer un nom dechamp valide au moment de l'exécution avant que les valeurs des données soient transmises aucontrôle à partir de la base de données.

3. AJOUT D'UN NOUVEL ENREGISTREMENT

On peut ajouter un nouvel enregistrement à la base de données à l'aide du contrôle Data dedeux manières différentes :Ô en affectant la valeur "2 - Add New" à la propriété EOFAction du contrôle Data ;Ô en utilisant, dans du code, la méthode AddNew de l'objet Recordset du contrôle Data.

Utilisation de la propriété EOFActionEOFAction et BOFAction sont des propriétés du contrôle Data qui déterminent ce qu'il se passequand on se déplace au-delà du début ou de la fin de l'objet Recordset du contrôle Data.

Le tableau suivant répertorie les constantes qui peuvent être affectées à la propriété EOFAction.

Page 64: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 64 / 92 BR_VB_concepts.doc

Constante Valeur ActionvbEOFActionMoveLast 0 Une méthode MoveLast a été utilisée pour positionner

l'enregistrement en cours au niveau du dernier enregistrementdu jeu d'enregistrements et ainsi empêcher l'utilisateur depoursuivre le défilement au-delà de la fin du jeud'enregistrements.

vbEOFActionEOF 1 Positionne l'enregistrement en cours au niveau del'enregistrement non valide (EOF) et désactive le boutoncorrespondant à la méthode MoveNext dans le contrôle Data.

vbEOFActionAddNew 2 Valide le dernier enregistrement et invoque automatiquementla méthode AddNew avant de positionner le contrôle Data auniveau du nouvel enregistrement.

Si la propriété EOFAction a la valeur vbEOFActionAddNew, lorsque l'utilisateur se déplace au-delà du dernier enregistrement, le contrôle Data crée automatiquement un nouvel enregistrementet autorise l'utilisateur à taper des données. Quand l'utilisateur tape de nouvelles données puisquitte l'enregistrement en cours (le nouvel enregistrement), celui-ci est automatiquement mis àjour et enregistré dans la base de données. En revanche, si l'utilisateur quitte le nouvelenregistrement sans ajouter des données, celui-ci est effacé.

Utilisation de la méthode AddNewIl est également possible d'ajouter un nouvel enregistrement à l'aide de la méthode AddNew del'objet Recordset du contrôle Data. Cette méthode nécessite toutefois l'emploi de code VisualBasic. Sa syntaxe est la suivante :

Data1.Recordset.AddNew

Quand la méthode AddNew est utilisée, Visual Basic ajoute un nouvel enregistrement à la fin dujeu d'enregistrements. A ce stade, tous les contrôles dépendants sont vidés de leur contenu et onpeut taper les valeurs du nouvel enregistrement. Après l'ajout d'un nouvel enregistrement, on doitenregistrer les informations en appliquant la méthode Update ou en cliquant sur une flèche ducontrôle Data pour atteindre un autre enregistrement. La syntaxe de la méthode Update est lasuivante :

Data1.Recordset.Update

Quand on utilise les flèches du contrôle Data ou une des méthodes Move pour se déplacerjusqu'à un autre enregistrement, la méthode Update est automatiquement appelée pourenregistrer le nouvel enregistrement.

4. MISE A JOUR D'UN ENREGISTREMENT

Après avoir modifié un enregistrement, on doit enregistrer les données mises à jour dans la basede données en appliquant la méthode Update au jeu d'enregistrements :

Data1.Recordset.Update

on peut aussi utiliser la méthode Update après la méthode AddNew au lieu de cliquer sur unedes flèches du contrôle Data.

Page 65: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 65 / 92 BR_VB_concepts.doc

* Remarque : Une tentative d'ajout ou de modification d'un enregistrement peut échouer dansles conditions suivantes :Ô· la table possède un index unique et cet enregistrement figure déjà dans la table ;Ô la valeur Null est affectée à un des champs de la clé d'index de votre enregistrement ;Ô on ne dispose pas de la permission d'écriture pour la table ou la base de données ;Ô la base de données, la table ou le champ ne peut pas être mis à jour ;Ô la page qui contient l'enregistrement est verrouillée ;Ô le contenu du contrôle dépendant ne correspond pas à la définition du champ dans la base dedonnées ;Ô la modification enfreint une des règles d'intégrité de la base de données;Ô la modification enfreint une des règles de validation que l'on a spécifié.

Il faudra donc systématiquement envisager ces cas lorsque l'on fera une modification ou un ajoutd'enregistrement en créant des routines de gestion d'erreur.

Si on souhaite annuler la méthode AddNew, il suffit d'exécuter une nouvelle fois cette mêmeméthode (à condition de ne pas avoir validé l'enregistrement par update ou par la flèche ducontrôle Data) et de passer à un autre enregistrement. On peut également exécuter la méthodeUpdateControls du contrôle Data pour restaurer les valeurs précédentes des contrôlesdépendants.

5. SUPPRESSION D'UN ENREGISTREMENT

on peut supprimer un enregistrement à l'aide de la méthode Delete. Pour cela, on doit d'aborddéplacer le contrôle Data jusqu'à l'enregistrement à supprimer, puis appeler la méthode Delete. Iln'est pas nécessaire d'utiliser ensuite la méthode Update. La méthode Delete supprimel'enregistrement en cours de la base de données et le rend non valide. On doit alors passer à unautre enregistrement du jeu.Toute tentative de modification du contenu de l'enregistrement supprimé entraîne une erreurrécupérable. On peut donc créer un bouton "Supprimer" avec ces deux lignes de codes, sansoublier l'intercepteur d'erreur :

Data1.Recordset.DeleteData1.Recordset.MoveNext

IV- LES CONTROLES DEPENDANTS SPECIFIQUES

1. LES CONTROLES DBCOMBO ET DBLIST

Les contrôles DBList et DBCombo ressemblent beaucoup aux contrôles ListBox etComboBox, à l'exception de quelques différences majeures qui leur confèrent davantage desouplesse ainsi qu'une plus grande utilité dans les applications de base de données.

Ces deux contrôles peuvent être automatiquement remplis à partir d'un champ de base dedonnée du contrôle Data auquel ils sont liés. En outre, ils peuvent éventuellement faire passer unchamp sélectionné à un autre contrôle Data, caractéristique extrêmement pratique pour lesapplications de type "tables de consultation".

Comme leurs homologues intégrés, les contrôles DBList et DBCombo se différencientessentiellement par le fait que le contrôle DBCombo fournit une zone de texte qui peut êtremodifiée et dans laquelle le champ sélectionné peut être copié.

Page 66: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 66 / 92 BR_VB_concepts.doc

Contrairement à la plupart des autres contrôles dépendants, les contrôles DBList et DBCombose caractérisent par cinq propriétés spéciales, énumérées dans le tableau ci-après, quidéfinissent la liaison aux données.

Propriété DescriptionDataSource Nom du contrôle Data auquel est lié le contrôle DBList ou

DBCombo.DataField Nom d'un champ dans le jeu d'enregistrements spécifié par la

propriété DataSource. Ce champ servira à déterminer quelélément de la liste sera mis en surbrillance. En cas de nouvellesélection, ce champ est mis à jour quand on passe à un autreenregistrement

RowSource Nom du contrôle Data qui servira à remplir la liste.BoundColumn Nom d'un champ dans le jeu d'enregistrements spécifié par la

propriété RowSource. Cette liste doit être du même type que lechamp DataField qui sera utilisé pour mettre à jour DataField.

ListField Nom d'un champ dans le jeu d'enregistrements spécifié par lapropriété RowSource qui sera utilisé pour remplir la liste.

Ces contrôles sont généralement utilisés pour construire une liste d'éléments sur la base d'unerequête de base de données à partir de laquelle un utilisateur peut sélectionner ou taper unevaleur, voire modifier le champ sélectionné dans le cas d'une liste modifiable dépendante.Lorsqu'un élément de la liste est sélectionné, la valeur BoundColumn qui lui est associée devientaccessible au contrôle Data spécifié par la propriété DataSource. Dès que le contrôle Data passeà un autre enregistrement ou est mis à jour d'une autre manière, le jeu d'enregistrements est misà jour avec le texte sélectionné ou modifié.

Ô Exemple

On va étudier un exemple concret pour d'utilisation que l'on peut faire de ces deux contrôles.

On gère des élèves qui appartiennent à un lycée. Un élève n'est inscrit que dans un et un seullycée, on a donc naturellement le numéro du lycée dans la table des élèves. Lorsqu'on saisit unélève, on veut lui affecter le numéro de lycée adéquat. Le problème, c'est que dans une feuille desaisie digne de ce nom, on veut que l'opérateur choisisse parmi une liste de nom de lycées etque le numéro soit automatiquement affecté dans la table des élèves de manière transparente.

Voici donc le mode opératoire pour réaliser cet exemple.La table ELEVES contient les champs suivants : noel de type compteur, nomel de type chaîne,prenomel de type chaîne, nolyc de type entier long.

La table LYCEE est composée de : nolyc de type compteur, nomlyc de type chaîne, ville de typechaîne.

Sur une feuille de travail, on place les contrôles nécessaires à la saisie ou à la modification d'unélève :- 4 contrôles de type zone de texte (textbox) appelés txtnoel, txtnomel, txtprenomel et txtnolyc,- un contrôle data appelé data1.

Les propriétés du contrôle données à modifier sont :- databasename : le nom de la base avec son chemin d'accès (VB offre un parcours standard),- recordsource : eleve.

Page 67: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 67 / 92 BR_VB_concepts.doc

Pour chacun des contrôles zone de texte, il faut que la propriété datasource contienne la valeurdata1 et que la propriété datafield contienne le nom du champ de la table élève correspondant.

Pour la liste des lycées, on insère un contrôle dbcombo, appelé DbClistlyc, et un deuxièmecontrôle de données appelé data2 (dont on peut mettre la propriété visible à false).

La propriété databasename de data2 est la même que data1, la propriété recordsource de data2doit contenir lycee.

Les propriétés du contrôle DbClistlyc sont :- rowsource : data2,- listfield : nomlyc,- datasource indique le contrôle données devant être mis à jour, ici : data1,- datafield est le champ devant être mis à jour, ici : nolyc (numéro de lycée de la table ELEVE),- Boundcolumn indique le lien entre les deux tables, ici : nolyc (numéro de lycée de la tableLYCEE).

Lorsqu'une sélection est faite dans la liste, la propriété boundtext contient la valeur du champindiqué dans boundcolumn correspondant à la ligne sélectionnée; en clair elle contiendra lenuméro du lycée correspondant au nom de lycée sélectionné dans la liste.

Le problème est que le report n'apparaît pas immédiatement à l'écran, pour que cela se fasse ilsuffit d'ajouter la ligne de code suivante dans la procédure événement change du contrôleDbClistlyc :

nolyc.text = lystlyc.boudtext

Pour ajouter un nouvel enregistrement, on place un bouton de commande, sur l'événement clickon écrit la ligne suivante :

data1.recordset.addnew

2. LE CONTROLE DBGRID

Il est possible de personnaliser intégralement le contrôle DBGrid et de le manipulerdirectement dans le code, ce qui confère une grande souplesse dans la création d'applications debase de données sur mesure.Dans bien des cas cependant, DBGrid servira à afficher et à parcourir rapidement tous lesenregistrements d'une table de base de données. On peut effectuer cette opération en quelquesminutes, sans écrire une seule ligne de code.

Pour utiliser DBGrid afin d'afficher et de parcourir une table de base de données existante, il fautsuivre la procédure suivante :¬ Ô Ajouter un contrôle Data à une nouvelle feuille et spécifier la base de données et la table àafficher (propriétés DatabaseName et RecordSource de ce contrôle).

­Ô2. Ajouter un contrôle DBGrid à la feuille et li attribuer le contrôle Data que l'on vient de créer(propriété DataSource). ®Ô3. Exécutez l'application.

Page 68: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 68 / 92 BR_VB_concepts.doc

Lorsque le programme s'exécute, la table de base de données que spécifiée s'affiche dans lecontrôle DBGrid, avec tous ses éléments : titres de colonne (provenant du Recordset du contrôleData) et barres de défilement. On peut immédiatement passer en revue tous les enregistrementset les champs de la table. De plus, il est possible de modifier n'importe quelle cellule de la table,la mise à jour s'effectuant automatiquement dès que l'on passe à une autre ligne (à condition quela mise à jour du Recordset sous-jacent soit possible et que la propriété AllowUpdate du contrôleDBGrid ait la valeur True).Si les propriétés AllowAddNew et AllowDelete possèdent la valeur True, On peut mêmesupprimer des enregistrements en sélectionnant et en supprimant la ligne toute entière.

a) Concepts fondamentaux

Le contrôle DBGrid dépend de deux autres objets :Ô L'objet Recordset du contrôle Data ;Ô La collection Columns de ce contrôle DBGrid.

DBGrid est en fait une collection d'objets Column, comportant chacun un nombre de lignesvariable. Chaque colonne correspond à un champ d'une table de base de données et chaqueligne à un enregistrement. La propriété Count de la collection Columns du contrôle détermine lenombre de colonnes, et la propriété RecordCount du Recordset du contrôle Data détermine lenombre de lignes.

A l'exécution, les propriétés Row et Col spécifient la cellule courante dans une grille. On peutdonc utiliser ces propriétés dans le code. L'utilisateur peut la modifier à l'exécution, à l'aide d'unesouris ou des touches de direction. Quand l'utilisateur change de cellule courante, le Recordsetdu contrôle Data sous-jacent est repositionné automatiquement sur l'enregistrement contenant lacellule sélectionnée.

b) Actions lors de la conceptionLors de sa conception, le contrôle DBGrid possède une seule colonne et une seule ligne. Ilcontient également une ligne vide (désignée à l'exécution par l'astérisque (*)), qui sert à ajouterde nouveaux enregistrements.Lorsqu'on définit la propriété DataSource, le contrôle DBGrid se lie au Recordset créé par lecontrôle Data ; il définit ensuite le nombre de colonnes et les autres propriétés de colonne à partirdes propriétés correspondantes des objets Field contenus dans le Recordset du contrôle Data.La fenêtre Propriétés affiche les propriétés pour l'ensemble du contrôle DBGrid.

(1) Définir les colonnes

Pour définir les propriétés des objets Column individuels, on doit:Ô activer le contrôle DBGrid pour l'interface utilisateur : à l'aide du bouton droit de la souris,choisir Modifier dans le menu contextuel du contrôleÔ Utiliser le menu contextuel pour insérer ou supprimer des colonnes

On arrive à ceci :

Page 69: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 69 / 92 BR_VB_concepts.doc

On voit que chaque colonne (objet Column) a son propre onglet.On peut utiliser ces onglets pour définir interactivement des propriétés pour l'ensemble ducontrôle DBGrid ou pour des colonnes sélectionnées individuellement.

L'onglet "Général" affiche les propriétés qui s'appliquent à la totalité du contrôle DBGrid et quipeuvent être fixées lors de la conception. Ces propriétés sont également disponibles dans lafenêtre Propriétés standard.

L'onglet "Colonnes" affiche les propriétés d'une colonne individuelle. Si plusieurs colonnes sontsélectionnées, les propriétés de la colonne la plus à gauche dans l'onglet "Colonnes"apparaissent. La définition de propriétés d'objet Column n'affecte pas les propriétés générales decontrôle DBGrid.

L'onglet "Couleurs" permet de sélectionner les couleurs s'appliquant à l'ensemble du contrôleDBGrid. Les couleurs d'objet Column ne sont pas affectées par ces définitions.

L'onglet "Polices" permet de sélectionner les polices utilisées dans l'ensemble du contrôle DBGridet dans les titres. Les polices d'objet Column ne sont pas affectées par ces définitions.

(2) Mise en forme des colonnesOn peut définir des propriétés spécifiques pour chaque colonne du contrôle DBGrid.Lors de la création, on a la possibilité de définir la largeur de colonne et la hauteur de ligne, maisaussi de masquer des colonnes. Il est possible d'empêcher les utilisateurs de modifier la mise enforme à l'exécution.Si le texte d'une cellule est trop long pour être affiché dans cette cellule, le passage à la lignes'effectue automatiquement à l'intérieur de la cellule. Pour afficher l'intégralité du texte, on peutaugmenter la valeur de la propriété Width de l'objet Column de la cellule ou celle de la propriétéRowHeight du contrôle DBGrid lui-même. Lors de la conception, on peut modifier la largeur decolonne de manière interactive, soit en redimensionnant la colonne, soit en modifiant la propriétéWidth de la colonne dans l'onglet de l'objet Column.

Page 70: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 70 / 92 BR_VB_concepts.doc

c) Actions lors de l’exécutionA l'exécution, le contrôle DBGrid affiche les enregistrements de l'objet Recordset sous-jacent. Il ya toujours un seul enregistrement courant dans le contrôle DBGrid, même si plusieurs lignes sontsélectionnées : l'enregistrement courant correspond à l'enregistrement courant du contrôle Dataet peut être défini ou extrait à l'aide de la propriété Bookmark du contrôle DBGrid.Comme dans tous les contrôles dépendants, la modification d'un enregistrement (ou d'un champdans un enregistrement) dans le contrôle DBGrid entraîne la mise à jour du Recordset sous-jacent dès que l'on se déplace vers un nouvel enregistrement (une nouvelle ligne), à conditionque cette mise à jour soit possible et que la propriété AllowUpdate du contrôle DBGrid ait lavaleur True. Autrement, une erreur récupérable se produit.Si on affecte la valeur True à la propriété MultiSelect, il est possible d'accéder aux colonnessélectionnées à l'aide de la collection SelBookmarks (renvoyée dans la propriété SelBookmarks).Si la propriété RecordSelectors possède la valeur True, l'utilisateur peut sélectionner une lignetoute entière en cliquant sur l'icône du sélecteur d'enregistrement pour cette ligne.

(1) Sélection de cellulesLorsque l'on sélectionne une cellule, la propriété ColIndex est définie, ce qui provoque lasélection d'un des objets Column dans la collection Columns de l'objet DBGrid. Les propriétésText et Value de l'objet Column se rapportent au contenu de la cellule courante.Il est possible d'accéder aux données de la ligne sélectionnée à l'aide de la propriété Bookmark,qui donne accès à l'enregistrement courant de l'objet Recordset sous-jacent.

(2) Sélection de plagesLe contrôle DBGrid permet de sélectionner des plages de cellules, comme dans une feuille decalcul. Toutefois, il n'offre pas de fonctionnalité automatique pour la manipulation de plages (parexemple, copier, supprimer ou déplacer des blocs entiers de champs ou d'enregistrements). Si onsouhaite mettre en œuvre ce type de fonctionnalité, il faudra écrire le code correspondant.

Les informations relatives aux plages sélectionnées sont renvoyées de deux manières :Ô Les cellules DBGrid elles-mêmes sont renvoyées dans les propriétés SelStartCol,

SelStartRow, SelEndCol et SelEndRow.Ô Des signets (bookmark) pointant sur les enregistrements de base de données affichés dans la

plage sélectionnée sont renvoyés dans la propriété SelBookmarks.

Par exemple, pour supprimer la plage d'enregistrements sélectionnée il faut : ¬Ô Parcour itérativement la collection SelBookmarks, en utilisant la propriété Count pourdétecter ses limites. ­Ô2 A chaque parcours de la boucle, affecter à la propriété Bookmark de l'objet Recordset ducontrôle Data la valeur du signet dans la collection SelBookmarks, et supprimez l'enregistrement.Cette démarche est illustrée dans l'exemple de code suivant :

Private Sub DeleteRows_Click ()Do While DataGrid1.SelBookmarks.Count <> 0

Data1.Recordset.Bookmark = DataGrid1.SelBookmarks(0)Data1.Recordset.Delete

LoopEnd Sub

Page 71: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 71 / 92 BR_VB_concepts.doc

(3) Champs calculésIl est possible d'utiliser le contrôle DBGrid pour afficher des champs calculés. On appelle ainsides champs qui ne figurent pas réellement dans la base de données, mais sont calculés à partirdes données contenues dans les champs de cette base.Un exemple de champ calculé est fourni par l'affichage d'une colonne "TVA" lorsque la base dedonnées contient seulement un champ "prix".Pour afficher un champ calculé il faut : ¬Ô Ajouter un champ indépendant au contrôle DBGrid. ­Ô Sur l'événement RowLoaded, effectuer le calcul et affecter le résultat à la propriété Valuede la colonne.

Page 72: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 72 / 92 BR_VB_concepts.doc

L'ACCES AUX DONNEES : LES FICHIERS

I- INTRODUCTION

L'objet de ce chapitre est de traiter l'accès aux données stockées dans des fichiers sachant quec'est loin d'être le cas le plus fréquent. Stocker des informations dans des fichiers peut êtretoutefois intéressant dans une application, par exemple pour stocker des données de manièretemporaire, ou bien lorsque l'on ne manipule qu'un nombre très restreint d'informations (tant ennombre de fichiers que d'enregistrements).

Le type de données contenues dans le fichier permet de déterminer le type d'accès à ce fichier. Ilexiste trois types d'organisation et d'accès de fichiers dans Visual Basic :

Ô Séquentiel : concerne les fichiers texte standards. Les données sont stockées sous forme decaractère ANSI. Chaque caractère du fichier représente un caractère de texte ou bien uncaractère de mise en forme (Retour chariot par exemple). On peut visualiser le contenu de cesfichiers sous un éditeur de texte.

Ô Aléatoire : contient un certain nombre d'enregistrements de longueur fixe. Un enregistrementpeut donc comporter un certain nombre de champs. Les informations sont stockées en binaire.On accède à un enregistrement avec son numéro.

Ô Binaire : il s'agit du même type de fichier que le précédent, mis à part le fait qu'il n'y a pas decontrainte quant aux types de données ni à la longueur des enregistrements. On ne l'utiliseraquasiment jamais.

II- FONCTIONS RELATIVES AUX FICHIERS

Fonction SignificationDir Renvoie le nom d'un fichier, d'un répertoire, ou bien le nom de

volume d'un lecteur.EOF Renvoie une valeur qui indique si la fin d'un fichier est atteinte.

EOF(filenumber)FileCopy (instruction) Copie un fichier. FileCopy source, destinationFileDateTime Renvoie une date qui indique la date et l'heure de la création ou

de la dernière modification d'un fichier. FileDateTime(pathname)FileLen Renvoie la taille d'un fichier en octets. FileLen(pathname)FreeFile Renvoie le numéro de fichier disponible suivant à l'usage de

l'instruction Open. FreeFile[(plage)]GetATTr Renvoie un nombre qui représente les attributs d'un fichier ou

d'un répertoire. GetAttr(pathname)Loc Renvoie la position de lecture/écriture en cours dans un fichier

ouvert. Loc(filenumber)

LOF Renvoie la longueur, exprimée en octets, d'un fichier ouvert àl'aide de l'instruction Open. LOF(filenumber)

Seek Renvoie la position de lecture/écriture en cours dans un fichierouvert à l'aide de l'instruction Open. Seek(filenumber)

Page 73: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 73 / 92 BR_VB_concepts.doc

Fonction SignificationSetAttr (instruction) Définit les attributs d'un fichier. SetAttr pathname, attributes

III- LES FICHIERS SEQUENTIELS

1. OUVERTURE

L'ouverture du fichier va déterminer son mode d'utilisation :Ô Lecture (entrée) : InputÔ Ecriture (sortie) : OutputÔ Ajout en fin de fichier : Apend

Syntaxe :Open chemin [For Input | Output | Append] As numérofichier

L'instruction Open comprend les éléments suivants :

chemin Expression de chaîne qui spécifie un nom de fichierpeutcomprendre un nom de répertoire et un nom de lecteur.

numérofichier Numéro de fichier compris entre 1 et 511 inclus. Utilisez lafonction FreeFile pour obtenir le numéro de fichier disponiblesuivant.

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

Close [listenumérofichier]

2. LECTURE D'UN ENREGISTREMENT

Line Input #numérofichier, variable

Lit une ligne à partir d'un fichier séquentiel ouvert et l'affecte à une variable de type String.

Input #numérofichier, listevariables

Lit les données à partir d'un fichier séquentiel ouvert et les affecte à des variables.

Ô Exemples

Open "FICHTEST" For Input As #1 ' Ouvre le fichier.Do While Not EOF(1) ' La boucle est effectuée jusqu'à la fin du fichier.

Line Input #1, LigneTexte ' Place la ligne lue dans la variable.Debug.Print LigneTexte ' Affiche dans la fenêtre Débogage.

LoopClose #1 ' Ferme le fichier.

Page 74: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 74 / 92 BR_VB_concepts.doc

Open "FICHTEST" For Input As #1 ' Ouvre le fichier en lecture (Input).Do While Not EOF(1) ' La boucle est effectuée jusqu'à la fin du fichier.

Input #1, MaChaîne, MonNombre ' Place les données lues dans les variables.Debug.Print MaChaîne, MonNombre ' Affiche les données dans la fenêtre Débogage

LoopClose #1 ' Ferme le fichier.

3. ECRITURE D'UN ENREGISTREMENT

Print #numérofichier, [listeexpression]

Ecrit des données formatées pour l'affichage dans un fichier séquentiel.

Write #numérofichier, [listeexpression]

Ecrit des données brutes dans un fichier séquentiel.

Contrairement à l'instruction Print #, l'instruction Write # insère des virgules entre les éléments etdes guillemets doubles de part et d'autre des chaînes de caractères au moment de l'écriture dansle fichier. Vous n'avez donc pas à placer de séparateurs explicites dans la liste. L'instructionWrite # insère un caractère de passage à la ligne (retour chariot ou retour chariot et saut de ligne)dès qu'elle a écrit dans le fichier le dernier caractère contenu dans l'argument listeexpression .

Ô Exemples :numfic = FreeFileOpen "FICHTEST" For Output As #numfic ' Ouvre le fichier en écriture (Output).Write #numfic, "Bonjour tout le monde", 234 ' Les données écrites sont délimitées par

' des virgules.Write #numfic ' Ecrit une ligne vierge.MonBool = False: MaDate = #February 12, 1969#: MonNul = NullMonErreur = CVErr(32767)Write #numfic, MonBool ; " est une valeur booléenne"Write #numfic, MaDate ; " est une date"Write #numfic, MonNul ; " est une valeur de type nul"Write #1, MonErreur ; " est une valeur d'erreur"Close #numfic ' Ferme le fichier.

Open "FICHTEST" For Output As #1 ' Ouvre le fichier en écriture (Output)Print #1, "Ceci est un exemple" ' Ecrit le texte dans le fichier.Print #1, ' Ecrit une ligne vierge dans le fichier.Print #1, "Zone 1"; Tab ; "Zone 2" ' Ecrit dans deux zones.Print #1, "Bonjour" ; " " ; "tout le monde" 'Sépare les chaînes de caractères avec des espaces.Print #1, Spc(5) ; "5 espaces à gauche " ' Insère 5 espaces à gauche.Print #1, Tab(10) ; "Bonjour" ' Ecrit le mot à partir de la colonne 10.MonBool = False : MaDate = #February 12, 1969# : MonNul = NullMonErreur = CVErr(32767)Print #1, MonBool ; " est une valeur booléenne"Print #1, MaDate ; " est une date"Print #1, MonNul ; " est une valeur nulle"Print #1, MonErreur ; " est une valeur d'erreur"Close #1 ' Ferme le fichier.

Page 75: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 75 / 92 BR_VB_concepts.doc

IV- LES FICHIERS ALEATOIRES

1. LES ENREGISTREMENTS

Dans un fichier en accès aléatoire, tous les enregistrements doivent avoir une longueur fixe. Onpeut donc, si besoin, déclarer des types d'enregistrements.Les types de données définis parl'utilisateur peuvent contenir un ou plusieurs éléments d'un type de données fondamentalquelconque, d'un type de tableau ou d'un autre type précédemment défini par l'utilisateur.

Ô exemple :

Type EnfantsMonNom As String ' La variable de type String contient un nom.MonAnniversaire As Date ' La variable de type Date contient une date de naissance.MonSexe As Integer ' La variable de type Integer contient le sexe (0 pour féminin,

1 pour masculin).End Type

La déclaration se fait alors de la manière suivante :Dim MonEnreg As Enfants ' Déclare la variable.

' L'affectation de la variable de type Enfants doit se faire dans une procédure.MonEnreg.MonNom = "ROCHE" ' Affecte une valeur à un élément.

2. OUVERTURE

Open chemin For Random [Access accès] [verrou] As [#]numérofichier Len=longueur

chemin Expression de chaîne qui spécifie un nom de fichier. Peutcomprendre un nom de répertoire et un nom de lecteur.

accès Mot clé qui spécifie les opérations qui peuvent être exécutéessur le fichier ouvert : Read, Write ou Read Write.

verrou Mot clé qui spécifie les opérations que d'autres processuspeuvent exécuter sur le fichier ouvert : Shared, Lock Read, LockWrite, Lock Read Write.

numérofichier Numéro de fichier compris entre 1 et 511 inclus. On peut utiliserla fonction FreeFile pour obtenir le numéro de fichier disponiblesuivant.

longueur Nombre inférieur ou égal à 32 767 (octets). Cette valeurreprésente la longueur de l'enregistrement.

Page 76: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 76 / 92 BR_VB_concepts.doc

3. LECTURE D'UN ENREGISTREMENT

Get # numérofichier, numéroenreg, variable

Lit les données d'un fichier disque ouvert et les place dans une variable définie par l'utilisateur.

numérofichier N'importe quel numéro de fichier valide.numéroenreg Numéro de l'enregistrement à lirevariable Nom de variable valide utilisé pour recevoir le contenu de la

lecture.

Ô Exemple

Type Enreg ' Définit un type défini par l'utilisateur.ID As IntegerNom As String * 20

End TypeDim MonEnreg As Enreg ' Déclare la variable.Open "FICHTEST" For Random As #1 Len = Len(MonEnreg) ' Ouverture du fichier en Random.Position = 3 ' Définit le numéro d'enregistrement.Get #1, Position, MonEnreg ' Lit le troisième enregistrement.Close #1 ' Ferme le fichier.

4. ECRITURE D'UN ENREGISTREMENT

Put # numérofichier, numéroenreg, variable

Ecrit le contenu d'une variable dans un fichier disque.

numérofichier N'importe quel numéro de fichier valide.numéroenreg Numéro de l'enregistrement marquant le début de l'écriturevariable Nom de la variable contenant les données à écrire sur le disque.

Ô Remarque : Pour supprimer un enregistrement dans un fichier à accès aléatoire, il faut créerun nouveau fichier aléatoire, recopier dedans les enregistrements à garder, supprimer le fichierd'origine (instruction Kill) et renommer le nouveau fichier pour lui donner le nom de celui que l'onvient de détruire (instruction Name).

V- LES FICHIERS BINAIRES

Fonctionne exactement comme les fichiers à accès aléatoire sauf que l'instruction open a laforme suivante :

Open chemin For Binary As numérofichier

Il n'est pas utile de préciser la longueur de l'enregistrement dans la mesure où leur longueur peutêtre variable.

Page 77: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 77 / 92 BR_VB_concepts.doc

LES APPLICATIONS MDI

I- PRESENTATION

Une application MDI (Multiple Document Interface) permet de visualiser, dans une feuilleprincipale, un ensemble de feuilles-enfants (MDIChild). Ces feuilles peuvent contenir :

Ô des représentations différentes d'une même information,Ô plusieurs enregistrements d'une base de donnéesÔ des informations complémentaires...

Exemple de visualisation d'une même information dans 2 feuilles-enfants :

On pourrait utiliser des feuilles indépendantes pour réaliser la même opération, alors pourquoiune application MDI ? En fait, il y a plusieurs avantages offerts par cette technique; tout d'abord,les feuilles-enfants ne sortent pas de la fenêtre principale lorsqu'on les déplace. On peut iconifierles feuilles-enfants à l'intérieur de la feuille principale. On dispose de méthodes permettant lamaîtrise de positionnement des feuilles-enfants. Ces avantages sont essentiellement liés à unemeilleur utilisation de l'écran pour les applications ouvrant trop de fenêtres afin que l'espace detravail de l'utilisateur ne soit pas trop surchargé.

Page 78: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 78 / 92 BR_VB_concepts.doc

II- CREATION D'UNE FEUILLE MDI

La création d'une application MDI est très simple. il suffit d'utiliser l'option " Insertion FeuilleMDI".VB crée une nouvelle feuille destinée à contenir d'autres feuilles. Il faut noter que cette option nesera plus accessible, dans la mesure où l'on ne dispose que d'une feuille MDI par application. Onpeut créer un menu propre à la feuille principale.

Si une application ne peut avoir qu'un seul objet MDIForm , elle peut avoir plusieurs feuilles MDIfilles.

Un objet MDIForm ne peut contenir que des contrôles Menu (menu) et PictureBox (zone d'image)ainsi que des contrôles personnalisés qui disposent d'une propriété Align.

Un objet MDIForm ne peut pas être modal.

* Rappel : une fenêtre ou une boîte de dialogue est dite modale lorsqu'elle exige une action dela part de l'utilisateur avant qu'une autre feuille ou une autre boîte de dialoguepuisse devenir active.

Les feuilles MDI filles sont conçues indépendamment de la feuille MDI, mais elles sont toujourscontenues dans la feuille MDI au moment de l'exécution.

Les feuilles-enfants sont des feuilles normales pour lesquelles on donne la valeur True à lapropriété MDIChild.Chaque feuille-enfant peut avoir son propre menu, il se substituera à celui de la feuille principalechaque fois que la feuille-enfant sera activée. Une feuille MDI fille réduite apparaît sous formed'icône dans l'objet MDIForm.

III- ORGANISATION DES FEUILLES-ENFANTS

Pour organiser les feuilles-enfants et les icones à l'intérieur de la feuille principale on utilise laméthode Arrange :

objet.Arrange disposition

objet Obligatoire. Expression d'objet qui prend la valeur d'un objetfigurant dans la rubrique " Application ".

disposition Obligatoire. Valeur ou constante qui spécifie l'organisation desfenêtres ou des icônes dans un objet MDIForm, comme indiquédans la section " Valeurs ".

Valeurs 0 : Met en cascade toutes les feuilles-enfants ouvertes,1 Met en mosaïque horizontale toutes les feuilles-enfants

ouvertes,2 Met en mosaïque verticale toutes les feuilles-enfants

ouvertes,3 Arrange tous les icônes présents dans la feuille

principale.

Ô Remarque : La propriété Count de MDIForm vous renseigne sur le nombre de contrôlescontenus dans la collection Controls.

Page 79: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 79 / 92 BR_VB_concepts.doc

LA GESTION DES ERREURS

I- INTRODUCTION

Lorsque des erreurs surviennent dans le code et que l'on ne les vérifie pas, Visual Basic génèresouvent une erreur d'exécution qui arrête l'exécution du code et empêche généralementl'utilisateur de poursuivre l'application. Il existe aussi d'autres types d'erreurs qui n'arrêtent pasl'exécution du code, mais qui peuvent être à l'origine d'actions imprévisibles.Visual Basic permet d'intercepter ces erreurs. Le processus de gestion d'erreurs comprend troisétapes :

ÀÔ Définir (ou valider) un intercepteur d'erreur en indiquant à l'application où effectuer lebranchement en cas d'erreur, c'est-à-dire quelle routine de gestion d'erreur exécuter.

L'instruction On Error valide cet intercepteur et dirige l'application vers une étiquette.

ÁÔ Ecrire une routine de gestion d'erreur qui soit en mesure de répondre aux diverses erreurssusceptibles d'intervenir. Si le contrôle passe effectivement à l'intercepteur, celui-ci est alorsdit actif

ÂÔ Quitter la routine de gestion d'erreur.

Les instructions Resume et Resume Next permettent de reprendre le déroulement del'application.

II- INTERCEPTEUR D'ERREUR

Un intercepteur d'erreur est validé lorsque Visual Basic exécute l'instruction On Error :

On Error GoTo ligneOn Error GoTo 0

On Error GoTo ligne Active la routine de gestion d'erreur qui commence à ligne. Ils'agit d'une étiquette de ligne ou d'un numéro de ligne. Par lasuite, si une erreur d'exécution se produit, le contrôle se branchesur ligne, activant ainsi le gestionnaire d'erreur. La ligne spécifiéedoit se trouver dans la même procédure que l'instructionOn Error, sinon une erreur au moment de la compilation seproduit.

On Error GoTo 0 Rend non valide tout gestionnaire d'erreur validé dans laprocédure en cours.

Page 80: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 80 / 92 BR_VB_concepts.doc

Un intercepteur d'erreur est validé lorsque Visual Basic exécute l'instruction On Error,laquelle désigne un gestionnaire d'erreur. L'intercepteur demeure ensuite Validé tant que laprocédure qui le contient est active, c'est-à-dire jusqu'à ce qu'une instruction Exit Sub, ExitFunction, Exit Property, End Sub, End Function ou End Property soit exécutée pour cetteprocédure. Bien qu'un seul intercepteur d'erreur puisse être validé à la fois pour une procéduredonnée, on peut créer plusieurs intercepteurs d'erreur et valider tel ou tel intercepteur selon lasituation. Il est également possible d'invalider un intercepteur d'erreur à l'aide de l'instructionOn Error Goto O. (Voir chapitre Erreurs inattendues).

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

La routine commence donc à l'étiquette ligne:. On donne en général un nom significatiof à cetteétiquette (gesterreur, checkerror,...), pour mieux la repérer dans le code source.

La propriété Number de l'objet Err contient un code numérique correspondant à l'erreurd'exécution la plus récente. On teste donc cette valeur avec une instruction Select Case ouIf...Then...EIse afin de mettre en oeuvre une action particulière en fonction de l'erreur qui seproduit.Il est courant de placer le code de gestion d'erreur à la fin de la procédure, en spécifiant uneinstruction Exit Sub, Exit Function ou Exit Property juste avant l'étiquette de ligne, ce quipermet à la procédure de ne pas exécuter la routine de gestion d'erreur si aucune erreur ne seproduit.

Ô Remarque : La chaîne contenue dans la propriété Description de l'objet Err explique l'erreurassociée au numéro d'erreur en cours. Toutefois selon la version de Microsofi Visual Basicutilisée, le contenu de la description peut varier. On conseille donc d'utiliser Err.Number plutôtque Err.Description pour identifier l'erreur qui s est produite.

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

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

Resume [O] Reprend l'exécution du programme a partir de l'instruction àl'origine de l'erreur ou de l'appel le plus récemment exécutédepuis la procédure contenant la routine de gestion d'erreur.

Resume Next Reprend l'exécution du programme a partir de l'instruction quisuit immédiatement celle qui a provoqué l'erreur. Si l'erreur s'estproduite en dehors de la procédure qui contient la routine degestion d'erreur, l'exécution reprend à partir de l'instruction quisuit immédiatement l'appel de la procédure dans laquelle l'erreurs'est produite, Si la procédure appelée nc contient pas degestionnaire d'erreur validé.

Resume ligne Reprend l'exécution du programme à partir de l'étiquettespécifiée par l'élément ligne, celui-ci étant une étiquette de ligneou un numéro de ligne différent de zéro qui doit se trouver dansla même procédure que le gestionnaire d'erreur.

Page 81: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 81 / 92 BR_VB_concepts.doc

V- ERREURS INATTENDUES

Comme on l'a vu plus haut, on dit qu'un gestionnaire d'erreur est validé par l'exécution d'uneinstruction On Error et s'il n'a pas encore été arrêté par une instruction On Error GoTo O ou enquittant la procédure où il a été validé. On dit d'un gestionnaire d'erreur qu'il est actif lorsqu'il esten cours d'exécution. Un gestionnaire d'erreur doit être validé avant de pouvoir être actif, mais iln'est pas nécessairement actif par ce simple fait. Après une instruction Resume, par exemple, legestionnaire est désactivé, mais demeure validé.

Lorsqu'une erreur intervient à l'intérieur d'une procédure ne contenant pas de routine de gestiond'erreur validée ou au sein d'une routine de gestion d'erreur active, Visual Basic recherche dansla liste des appels une autre routine de gestion d'erreur validée.

On visualise ce phénomène dans le cas suivant :

1 Une procédure d'événement appelle la procédure A.

2.La procédure A appelle la procédure B.

3 La procédure B appelle la procédure C.

Sub private Form_load () ProcedureA

......End Sub

Sub ProcedureA () X = ProcedureB()

......End Sub

Function Procedure B () ProcedureC()

......End Funct

Sub ProcedureC () ......

......End Funct

Si une erreur se produit dans la procédure C et si celle-ci ne contient pas de gestionnaire d'erreurvalidé, Visual Basic en recherche un en remontant dans les procédures en attente, enl'occurrence, d'abord dans la procédure B, puis dans la procédure A, puis dans la procédured'événement d'origine (mais pas plus loin). Il exécute le premier gestionnaire d'erreur validérencontré. S'il n'en existe aucun, il affiche le message approprié et arrête l'exécution.

Si Visual Basic trouve une routine de gestion d'erreur validée, l'exécution se poursuit dans celle-ci, comme si l'erreur s'était produite dans la procédure qui contient le gestionnaire d'erreur. Si uneinstruction Resume ou Resume Next est exécutée à l'intérieur de la routine de gestion d'erreur,l'exécution se poursuit comme indiqué dans le tableau suivant :

Page 82: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 82 / 92 BR_VB_concepts.doc

Résultat Visual Basic appelle de nouveau la procédure dans laque vientd'effectuer la recherche. Si, dans la liste des appels, plus haut, laprocédure A contient un gestionnaire d'erreur validé comprenantune instruction Resume, Visual Basic appelle de nouveau laprocédure B.

Resume Next L'exécution se poursuit à partir de l'instruction qui suit la dernièreinstruction exécutée dans cette procédure, autrement dit celle quisuit l'appel de la procédure dans laquelle Visual Basic vientd'effectuer une recherche en arrière. Dans la liste des appels vueplus haut, si la procédure A contient un gestionnaire d'erreurvalidé comprenant une instruction Resume Next, l'exécutionreprend au niveau de l'instruction située après l'appel de laprocédure B.

On peut remarquer que l'instruction exécutée est située dans la procédure dans laquelle laprocédure de gestion d'erreur est localisée et non pas nécessairement dans celle où l'erreur s'estproduite. Si on ne tient pas compte de ceci, le code risque d'avoir des comportements imprévus.Pour faciliter le débogage du code, on peut simplement passer en mode Arrêt chaque fois qu'uneerreur se produit. (voir les options de débogage).

Ô Exemple de gestion des erreurs

La procédure suivante renvoie la valeur True si le fichier spécifié existe et dans le cas contraire,la valeur False. Elle ne contient pas de code de gestion d'erreur :

Function FileExists (filename) As BooleanFileExists = (Dir(filename) <> "")

End Function

En effet, cette fonction utilise la fonction Dir qui renvoie le nom du premier fichier (avec ou sanscaractères génériques, lettre de lecteur ou chemin d'accès) correspondant à celui qui est spécifié.En revanche, si elle ne trouve aucun fichier correspondant, elle renvoie une chaîne de longueurnulle.Le code semble répondre aux deux résultats possibles de l'appel de la fonction Dir. Cependant,si la lettre de lecteur spécifiée dans l'argument ne correspond pas à un lecteur valide, l'erreurPériphérique non disponible est générée. De même, si le lecteur spécifié est un lecteur dedisquette, cette fonction ne s'exécute correctement que si le lecteur en contient une et que sonvolet est refermé. Si ce n'est pas le cas, Visual Basic génère l'erreur Disque non prêt et arrêtel'exécution du code.Pour remédier aux problèmes causés par un lecteur non valide ou par l'absence de disquettedans un lecteur, il suffit d'ajouter le code suivant :

Function FileExists (filename) As BooleanDim Msg As StringOn Error GoTo CheckError ' Active l'interception des erreurs afin que la routine

de gestion d'erreur réagisse si une erreur est détectée.

FileExists = (Dir(filename) <> "") ' Empêche l'exécution de la routine de gestion d'erreur si aucune erreur n'est détectée.

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

CheckError: ' En cas d'erreur, effectue un branchement ici.

Page 83: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 83 / 92 BR_VB_concepts.doc

Const ErrDiskNotReady = 71, ErrDeviceUnavailable = 68' Définit des constantes représentant le code d'erreur Visual Basic.' vbExclamation, vbOK, vbCancel, vbCritical et vbOKCancel sont des' constantes définies dans la bibliothèque de types VBA.

If (Err.Number = ErrDiskNotReady) ThenMsg = " Placez une disquette dans le lecteur et fermez le volet."

' Affiche une zone de messageIf MsgBox(Msg, vbExclamation & vbOKCancel) = vbOK Then

ResumeElse

Resume NextEnd If

ElseIf Err.Number = ErrDeviceUnavailable ThenMsg = " Ce lecteur ou ce chemin n'existe pas : " & filenameMsgBox Msg, vbExclamationResume Next

ElseMsg = " L'erreur inattendue #" & Str(Err.Number)&" s'est produite : " &

Err.Description' Affiche du message comportant l'icône du signe Stopet un bouton OK.MsgBox Msg, vbCriticalStop

End IfResume

End Function

Page 84: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 84 / 92 BR_VB_concepts.doc

LE DEBOGAGE

I- INTRODUCTION

Les techniques de débogage de Visual Basic incluent des points d'arrêt, des expressions d'arrêt,des expressions espionnes, un mode d'exécution pas à pas, un mode d'exécution procédure parprocédure et l'affichage des valeurs des variables des propriétés. Visual Basic comprend aussides options spéciales de débogage, telles que la possibilité de modifier et de continuerl'exécution, la définition de l'instruction suivante à exécuter et la vérification des procédurespendant que l'application est en mode arrêt.

II- TYPES D'ERREURS

Pour comprendre l'utilité du débogage, il faut connaître les trois types d'erreurs que l'on risque derencontrer : les erreurs de compilation les erreurs d'exécution les erreurs de logique.

1. ERREURS DE COMPILATION

Elles proviennent d'un code incorrectement construit. (exemples : erreur de syntaxe,mot clé malorthographié, signes de ponctuation, une instruction Next sans l'instruction Forcorrespondante,...). Visual Basic détecte ces erreurs lors de la compilation de l'application.

On peut éviter de rencontrer ces erreurs lors de la compilation, en utilisant l'option "Vérificationautomatique de la syntaxe", qui forcera Visual Basic à afficher un message d'erreur dès que l'onaura fait une erreur de syntaxe en saisissant le Code.

Ô Pour activer l'option "vérification automatique de la syntaxe " :¬Ô Choisir Outils Options, et cliquer sur l'onglet «Environnement » dans la boîte de dialogueOptions.

­Ô Sélectionner "Vérification automatique de la syntaxe".

2. ERREURS D'EXECUTION

Les erreurs d'exécution surviennent (et sont détectées par Visual Basic) lorsqu'une instructiontente une opération impossible à exécuter. L'exemple courant est la division par zéro. Commel'application doit s'exécuter pour pouvoir détecter cette erreur, il est recommandé d'inclure dansles applications un code destiné à intercepter et gérer les erreurs d'exécution lorsqu'elles seproduisent. Voir le chapitre "Gestion des erreurs".

3. ERREURS DE LOGIQUE

Les erreurs de logique se produisent lorsqu'une application ne s'exécute pas comme prévu. Uneapplication peut être écrite correctement d'un point de vue syntaxique, se dérouler sansrencontrer d'opérations non valides, et toutefois produire des résultats incorrects. Ce n'est qu'entestant l'application et en analysant les résultats que l'on peut en vérifier le bon fonctionnement.Visual Basic fournit des outils pour faciliter la mise au point de l'application.

Page 85: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 85 / 92 BR_VB_concepts.doc

III- AIDE FOURNIE PAR LES OUTILS DE DEBOGAGE

1. LES OUTILS DE DEBOGAGE DE LA BARRE D'OUTILS

Parmi ses nombreux outils de débogage, Visual Basic propose plusieurs boutons de la barred'outils qui s'avèrent très utiles :

Exécution de l'application

Arrêt

Fin de l'application

Basculer le point d'arrêtInformations immédiates

Appels

Pas à Pas détaillé

Pas à pas principal

Basculer le point d'arrêt définit, dans la fenêtre Code, une ligne où VB interromptl'exécution de l'application.

Information immédiate Affiche la valeur en cours d'une expression pendant quel'application est en mode arrêt.

Appels Affiche, pendant que l'application est en mode arrêt, une boîtede dialogue montrant toutes les procédures qui ont été appelées,mais qui n'ont pas encore été totalement exécutées.

Pas à pas détaillé Exécute la ligne de code exécutable suivante de l'application etexécute pas à pas les procédures.

Pas à pas principal Exécute la ligne de code exécutable suivante de l'applicationsans exécuter pas à pas les procédures.

La barre de titre de Visual Basic indique toujours le mode en cours. Ce mode est l'un des troissuiavnts : création, exécution et mode arrêt. On passe de l'un à l'autre à l'aide des trois boutonsde la barre d'outils.

La disponibilité de ces boutons dépend du mode dans lequel se trouve Visual Basic (exécution,création ou arrêt). Le tableau suivant indique les boutons accessibles dans chacun de ces modes:

Mode Boutons disponiblesCréation ExécuterExécution Arrêt, FinArrêt Continuer, Fin

Page 86: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 86 / 92 BR_VB_concepts.doc

2. TECHNIQUES DE DEBOGAGE

Avant l'exécution d'un programme qui pose problème, on peut spécifier les lignes sur lesquelleson souhaite que le programme s'arrête.En mode création, on place le curseur sur une ligne de programme on clique sur le bouton"Basculer le point d'arrêt" ou on appuie sur la touche F9.On vient alors de déclarer un point d'arrêt. Pour l'enlever, on refait la même opération.

Pour déboguer votre programme, on le lance normalement et il va s'arrêter sur le premier pointd'arrêt qu'il rencontre. A ce moment, on peut choisir l'une des possibilités suivantes :

Ô ignorer simplement le point d'arrêt en demandant au programme de continuer à s'exécuternormalement : il suffit de cliquer sur le bouton "exécution de l'application" pour poursuivre ou bienappuyer sur la touche F5

Ô continuer l'exécution du programme instruction par instruction. C'est le mode "pas à pas".On peut choisir entre le mode pas à pas détaillé (bouton ou touche F8) ou principal (bouton outouche MAJ + F8).L'exécution pas à pas principale est identique à l'exécution pas à pas détaillé, sauf lorsquel'instruction en cours contient un appel à une procédure. Contrairement à la commande pas à pasdétaillé qui exécute progressivement la procédure appelée, la commande pas à pas principalexécute la procédure en bloc, puis passe à l'instruction suivante de la procédure en cours.

Ô spécifier la prochaine instruction à exécuter, si on ne souhaite pas que ce soit l'instructionsuivante (cela peut être fort utile pour sortir d'une boucle infinie !!!), on clique sur l'instruction oùon désire aller et on tape sur les touches Ctrl + F9 (ou Exécuter Définir l'instruction suivante),

Ô afficher dans la fenêtre "Information immédiate" le contenu d'une variable dont on doute : onsélectionne la variable dans le programme et on clique sur le bouton information immédiate (celuiqui représente une paire de lunettes).

Ô ajouter une variable espion, en cliquant sur le bouton "Ajouter" de la fenêtre "informationimmédiate". Ceci permettra d'ajouter une ligne permanente dans la fenêtre "Debug" où le contenude la variable souhaitée s'affichera et sera rafraîchie à chaque modification.

Ô utiliser le bas de la fenêtre "Debug" pour y taper n'importe quelle instruction Visual Basicvalide, y compris l'instruction "?" qui équivaut à Print et qui est fort utile pour afficherimmédiatement la valeur d'une variable ou d'une expression.

Ô corriger une erreur d'exécution et poursuivre l'exécution du programme. Cette possibilité esttrès utilisée, notamment quand l'erreur provient de noms mal orthographiés ou de propriétés ouméthodes mal accordées aux objets.

Page 87: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 87 / 92 BR_VB_concepts.doc

Dans ce cas, la méthode show n'est pas appropriée à l'objet Recordset.On peut cliquer sur Débogage pour corriger l'erreur (remplacer show par findfirst par exemple) etrepartir à partir de cette ligne.

Ô modifier le programme pendant le point d'arrêt, c'est à dire sans avoir arrêté le programme.

IV- LA FENETRE DE DEBOGAGE

La fenêtre Débogage comprend deux parties. Le volet Espion apparaît dans la moitié supérieurede la fenêtre tandis que le volet Exécution est affiché dans sa moitié inférieure.

1. LE VOLET "ESPION"

Le volet Espion affiche les expressions espionnes en cours, qui sont des expressions dont ondécide de contrôler les valeurs au fur et à mesure de l'exécution de l'application. Dans ce volet,la colonne "Contexte" indique la procédure, le module ou les modules dans le(s)quel(s) chaqueexpression est évaluée.Le volet Exécution peut afficher la valeur d'une expression espionne pour autant que l'instructionen cours figure dans le contexte spécifié. Sinon, la colonne "Valeur" affiche un messageindiquant que l'instruction est hors contexte.

2. LE VOLET EXECUTION

Le volet Exécution affiche des informations fournies par les instructions de débogage du code oudes informations que l'on demande en tapant directement des commandes dans le volet.

La procédure et la feuille (ou module) en cours déterminent les variables qui peuvent s'afficher,conformément aux règles de portée des variables.On peut employer la méthode Debug.Print pour examiner les valeurs de variables locales de laprocédure affichée ou la valeur d'une variable publique.

Page 88: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 88 / 92 BR_VB_concepts.doc

Page 89: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 89 / 92 BR_VB_concepts.doc

LES MENUS

I- PRESENTATION

On peut utiliser le Créateur de menus pour ajouter des commandes à des menus existants ouremplacer des commandes existantes par des commandes propres à l'application, créer desmenus et barres de menus, modifier ou supprimer des menus et barres de menus existants. LeCréateur de menus est très simple d'utilisation. On peut personnaliser des menus de façonentièrement interactive, réduisant ainsi les tâches de programmation.

Pour afficher le Créateur de menus, il suffit de choisir Outils Créateur de menus dans la barrede menu ou de cliquer sur le bouton le bouton "Créateur de menus" dans la barre d'outils.

Le créateur de menus se présente ainsi :

La plupart des propriétés des contrôles de menu peuvent être définies à l'aide du Créateur demenus. Par contre, toutes les propriétés de menus sont disponibles dans la fenêtre Propriétés.Les deux principales propriétés des contrôles de menu sont les suivantes :

Ô Name : Nom utilisé pour faire référence au contrôle de menu dans le code de l'application.Ô Caption : Texte qui apparaît sur le contrôle que verra l'utilisateur).

Utilisation de la zone de liste du Créateur de menusLa zone de liste des contrôles de menu répertorie tous les contrôles de menu de la feuille encours. Lorsque l'on tape un élément de menu dans la zone de texte "Caption", cet élémentapparaît également dans la zone de liste des contrôles de menu. Pour modifier les propriétésd'un contrôle de menu, il suffit de sélectionner le contrôle voulu dans la zone de liste.

Page 90: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 90 / 92 BR_VB_concepts.doc

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

La position du contrôle de menu dans la zone de liste des contrôles de menu indique si lecontrôle est un titre de menu, un élément de menu, un titre de sous-menu ou un élément desous-menu :Ô Un contrôle de menu aligné à gauche dans la zone de liste apparaît comme un titre de menudans la barre de menus.Ô Un contrôle de menu qui présente un premier niveau de retrait dans la zone de liste apparaîtsur le menu lorsque l'utilisateur clique sur le titre du menu précédent.Ô Un contrôle de menu suivi de plusieurs contrôles de menu en retrait est un titre de sous-menuet les contrôles de menu qui le suivent sont les éléments qui composent ce sous-menu.Ô Un contrôle de menu avec un tiret (-) comme paramètre de propriété caption, apparaît commeune barre séparatrice. Une barre séparatrice sépare les éléments de menu en groupes logiques.

II- CONCEPTION

Pour créer des contrôles de menu dans le Créateur de menus, il faut suivre les étapes suivantes :¬ Sélectionner la feuille.­ Sélectionner Outils Créateur de menus ou Choisir le bouton "Créateur de menus" dans labarre d'outils. ® Dans la zone de texte "Caption", taper le texte du premier titre de menu que l'on veut voirapparaître dans la barre de menus. De même, insérer le signe & avant la lettre que l'on souhaitedéfinir comme touche d'accès rapide pour cet élément de menu. Cette lettre seraautomatiquement soulignée dans le menu. Le texte du titre du menu apparaît dans la zone deliste des contrôles de menu. ¯Dans la zone de texte "Name", taper le nom que l'on utilisera pour faire référence au contrôlede menu dans le code. ° A l'aide des boutons "Flèche gauche" et "Flèche droite", modifier le niveau de retrait ducontrôle.

Page 91: VISUAL BASICa.joannes.free.fr/Divers/Cours/BTS/Informatique/Excel/...Visual Basic permet de créer un pseudo-code exécutable, c'est à dire que l' application finale est un véritable

B.ROCHE / IIRIAM 10/00 Page 91 / 92 BR_VB_concepts.doc

± Si nécessaire, définir d'autres propriétés pour ce contrôle. On pourra les modifier par la suite. ² Choisir le bouton "Suivant" pour créer un autre contrôle de menu ou choisir le bouton "Insérer"pour ajouter un contrôle de menu entre des contrôles existants. On peut également utiliser lesboutons "Flèche vers le haut" et "Flèche vers le bas" pour déplacer le contrôle parmi les contrôlesexistants. ³ Une fois que l'on a créé tous les contrôles de menu voulus pour cette feuille, choisir "OK" pourfermer le Créateur de menus.

Les titres de menus que l'on vient de créer apparaissent sur la feuille. Pour dérouler le contenud'un menu, il suffit de cliquer sur le titre correspondant.

III- CONVENTIONS D'AFFECTATION DES NOMS DE MENUS

Lorsque l'on nomme des éléments de menus, il est conseillé de se conformer aux règlessuivantes :å Les noms d'éléments doivent être uniques au sein d'un même menu, mais peuvent être utilisésdans différents menus pour représenter des actions identiques ou différentes.å Les noms d'éléments peuvent être composés d'un ou plusieurs mots, composés ou non.å Chaque nom d'élément de menu ne doit comporter qu'une seule lettre d'accès rapide. La lettred'accès doit être soit la première lettre du titre de menu, soit une autre lettre plus mnémonique.å Des points de suspension ( . . . ) doivent suivre les noms des commandes qui requièrent uncomplément d'informations pour pouvoir être exécutées.å Les noms d'éléments doivent être disposés dans une seule colonne.å Utiliser des noms d'éléments courts.

Définition de la propriété NameBien que l'on puisse définir ses propres conventions d'affectation des noms, on peut utiliser laconvention suivante pour définir la propriété Name dans le Créateur de menus.

Élément de menu Syntaxe ExempleTitre de menu mnuTitreMenu mnuFichierElément de menu mnuTitreMenuItem mnuFichierItemEléments d'un groupe de menus mnuTitreMenuArray mnuFichierArrayElément de sous-menu mnuTitreSous-MenuItem mnuCouleurItem