Vous êtes sur la page 1sur 52

SUPPORT VISUAL BASIC

STUDIO 2008
TABLE DES MATIERES
1. INTRODUCTION ................................................................................................................................................... 4
2. ELEMENTS D'UN PROGRAMME ..................................................................................................................... 5
2.1. LES COMMANDES ET FONCTIONS ...................................................................................................................... 5
2.2. LES OBJETS : METHODES ET EVENEMENTS ........................................................................................................ 5
2.2.1. Propriétés ................................................................................................................................................... 5
2.2.2. Méthodes ..................................................................................................................................................... 6
2.2.3. Evénements ................................................................................................................................................. 6
2.3. METHODOLOGIE DE TRAVAIL ........................................................................................................................... 6
2.4. COMPOSITION D'UN PROGRAMME ..................................................................................................................... 6
3. LES VARIABLES ................................................................................................................................................... 8
3.1. LES NOMS ......................................................................................................................................................... 8
3.2. PORTEE............................................................................................................................................................. 8
3.3. LES TYPES ........................................................................................................................................................ 8
3.3.1. Type numérique........................................................................................................................................... 9
3.3.2. Type décimaux ............................................................................................................................................ 9
3.3.3. Type caractères ........................................................................................................................................... 9
3.3.4. Type Boolean .............................................................................................................................................. 9
3.3.5. Type Date .................................................................................................................................................... 9
3.3.6. Type nullable............................................................................................................................................. 10
3.4. CONVERSION DE TYPE .................................................................................................................................... 10
3.5. FORMATAGE ................................................................................................................................................... 11
3.6. CHAINE DE CARACTERES ................................................................................................................................ 11
3.7. INFERENCE DE TYPE........................................................................................................................................ 12
3.8. LES CONSTANTES ........................................................................................................................................... 12
3.9. VARIABLES TABLEAUX ................................................................................................................................... 12
3.10. LES STRUCTURES ............................................................................................................................................ 13
4. ENTREES/SORTIES DE DONNEES ................................................................................................................. 15
4.1. SORTIES .......................................................................................................................................................... 15
4.2. ENTREES : ....................................................................................................................................................... 16
5. CALCULS ET COMPARAISONS ...................................................................................................................... 17
5.1. LES OPERATEURS DE COMPARAISON ............................................................................................................... 17
5.2. LES CALCULS .................................................................................................................................................. 17
6. BOUCLE ET TEST .............................................................................................................................................. 18
6.1. GOTO ............................................................................................................................................................. 18
6.2. IF….THEN ...................................................................................................................................................... 18
6.3. SELECT….CASE .............................................................................................................................................. 18
6.4. FOR…NEXT ................................................................................................................................................... 19
6.5. DO…LOOP ..................................................................................................................................................... 20
6.6. FOR EACH ... NEXT .......................................................................................................................................... 20
6.7. WITH … END WITH ........................................................................................................................................ 20
6.8. USING … END USING ..................................................................................................................................... 21
7. LES ERREURS ..................................................................................................................................................... 22
7.1. DEBOGAGE ..................................................................................................................................................... 22
7.2. GESTION DES ERREURS ................................................................................................................................... 22
8. APPLICATION WINDOWS ............................................................................................................................... 24
8.1. INTERFACE SDI .............................................................................................................................................. 24
8.2. INTERFACE MDI ............................................................................................................................................. 24
8.3. LES EVENEMENTS ........................................................................................................................................... 26
8.3.1. Evénements clavier ................................................................................................................................... 26
8.3.2. Les événements souris ............................................................................................................................... 27
9. LES COMPOSANTS D'UN FORMULAIRE ..................................................................................................... 29
9.1. BOITE DE DIALOGUE DE WINDOWS ................................................................................................................. 29
9.1.1. Ouvrir ....................................................................................................................................................... 29
9.1.2. Choix des dossiers .................................................................................................................................... 29
9.1.3. Choix d'une couleur .................................................................................................................................. 29
9.1.4. Choix d'une police..................................................................................................................................... 30
9.2. CONTROLE D'AFFICHAGE ................................................................................................................................ 30
9.2.1. Le label ..................................................................................................................................................... 30
9.2.2. LinkLabel .................................................................................................................................................. 30
9.2.3. Le contrôle ToolTip .................................................................................................................................. 31
9.2.4. Le contrôle ErrorProvider ........................................................................................................................ 31
9.2.5. Le contrôle progressbar ............................................................................................................................ 31
9.3. EDITION DE TEXTE .......................................................................................................................................... 32
9.3.1. Le contrôle TextBox .................................................................................................................................. 32
9.3.2. Le contrôle MaskedTextBox ...................................................................................................................... 32
9.3.3. Le contrôle RichTextBox ........................................................................................................................... 33
9.4. DECLENCHEMENT D'ACTION ........................................................................................................................... 33
9.4.1. Button ........................................................................................................................................................ 33
9.4.2. MenuStrip ................................................................................................................................................. 33
9.4.3. ContextMenuStrip ..................................................................................................................................... 34
9.4.4. Toolstrip .................................................................................................................................................... 35
9.5. CONTROLES DE SELECTION ............................................................................................................................. 35
9.5.1. Checkbox................................................................................................................................................... 35
9.5.2. RadioButton .............................................................................................................................................. 37
9.5.3. Groupbox .................................................................................................................................................. 37
9.5.4. Listbox....................................................................................................................................................... 38
9.5.5. Les listes déroulantes ........................................................................................ Erreur ! Signet non défini.
9.6. LE TIMER ....................................................................................................................................................... 41
9.7. CREATION DE MENU: ........................................................................................ ERREUR ! SIGNET NON DEFINI.
9.8. L’OBJET SCREEN : ............................................................................................ ERREUR ! SIGNET NON DEFINI.
9.9. L’OBJET APP : .................................................................................................. ERREUR ! SIGNET NON DEFINI.
10. LES FEUILLES .............................................................................................. ERREUR ! SIGNET NON DEFINI.
10.1. LA GESTION : .................................................................................................... ERREUR ! SIGNET NON DEFINI.
10.2. APPLICATION MDI (MULTIPLE DOCUMENT INTERFACE) : ............................... ERREUR ! SIGNET NON DEFINI.
10.3. PROPRIETE D’UNE FEUILLE : ............................................................................. ERREUR ! SIGNET NON DEFINI.
10.4. LES EVENEMENTS D’UNE FEUILLE : .................................................................. ERREUR ! SIGNET NON DEFINI.
10.5. LES METHODES D’UNE FEUILLE : ...................................................................... ERREUR ! SIGNET NON DEFINI.
11. LES IMPRESSIONS : .................................................................................... ERREUR ! SIGNET NON DEFINI.
11.1. LES PROPRIETES : ............................................................................................. ERREUR ! SIGNET NON DEFINI.
11.2. LES METHODES : ............................................................................................... ERREUR ! SIGNET NON DEFINI.
12. MODULES ET PROCEDURES .................................................................... ERREUR ! SIGNET NON DEFINI.
12.1. MODULES : ....................................................................................................... ERREUR ! SIGNET NON DEFINI.
12.2. LES PROCEDURES : ........................................................................................... ERREUR ! SIGNET NON DEFINI.
12.3. PROCEDURES FUNCTION :................................................................................. ERREUR ! SIGNET NON DEFINI.
12.4. PROCEDURES SUB : .......................................................................................... ERREUR ! SIGNET NON DEFINI.
13. COLLECTION : ............................................................................................. ERREUR ! SIGNET NON DEFINI.
14. FICHIERS ....................................................................................................... ERREUR ! SIGNET NON DEFINI.
14.1. L'ACCES SEQUENTIEL ....................................................................................... ERREUR ! SIGNET NON DEFINI.
14.1.1. L'ouverture ........................................................................................................................................... 50
14.1.2. L'écriture .............................................................................................................................................. 51
14.2. L'ACCES DIRECT ............................................................................................... ERREUR ! SIGNET NON DEFINI.
14.2.1. Définition de la structure ............................................................................. Erreur ! Signet non défini.
14.2.2. Ouverture ..................................................................................................... Erreur ! Signet non défini.
14.2.3. La lecture ..................................................................................................... Erreur ! Signet non défini.
14.2.4. L'écriture ...................................................................................................... Erreur ! Signet non défini.
14.3. L'ACCES BINAIRE .............................................................................................. ERREUR ! SIGNET NON DEFINI.
14.4. INSTRUCTION TYPE DOS ................................................................................................................................. 51
15. LES BASES DE DONNEES ........................................................................... ERREUR ! SIGNET NON DEFINI.
15.1. LES DIFFERENTS OBJETS ................................................................................... ERREUR ! SIGNET NON DEFINI.
15.2. CONTROLES "DONNEES OU "DATA" .................................................................. ERREUR ! SIGNET NON DEFINI.
16. LIAISON DDE-OLE ....................................................................................... ERREUR ! SIGNET NON DEFINI.
16.1. LIAISON DDE ................................................................................................... ERREUR ! SIGNET NON DEFINI.
16.2. CREATION D'UN CLIENT DDE ........................................................................... ERREUR ! SIGNET NON DEFINI.
1. INTRODUCTION
Visual Basic Studio n’est pas une évolution de Visual Basic 6.0 mais
vraiment une nouvelle technologie de développement d’applications. Vous
pouvez faire :

• Des applications Windows classiques


• Des applications Web
• Des services de Windows
• Des services Web.

Tout ceci est possible grâce à FRAMEWORK .NET qui prend en charge
l’intégralité d’une application. Le Framework est hébergé par le système
d’exploitation et au moment où j’ai ce support la dernière version est la 3.5.
Vous pouvez aussi faire fonctionner une plateforme .NET sur des systèmes
Linux, Mac OS, Sun,…

De manière simple, le Framework est composé de deux éléments


principaux :

• Common Language Runtime permet de créer une machine


virtuelle pour prendre en charge les instructions au fur et à
mesure des besoins.
• Base Class Library qui met à votre disposition un ensemble
d’outils pour votre future application. Ces outils sont disponibles
sous forme de classe. Une classe est organisée de manière
hiérarchique.

A bon gout il y a un nombre trop important de classe mais au moins on a le


choix.

Mon cours sera axé sur la création d’interface Windows et sur l’accès aux
bases de données dont cela concernera la classe system.windows et
system.data.

Thierry GRANDADAM Page 4


2. ELEMENTS D'UN PROGRAMME

2.1. Les commandes et fonctions


Les commandes sont des instructions connues de VB avec lesquelles vous
lui passez des ordres. On parle de "mots-clé".
Les fonctions servent à calculer des nombres ou à manipuler du texte et
retournent un résultat.
Vous pouvez combiner commandes et fonctions.
Par exemple vous demandez à VB : "d'afficher le calcul racine carré de 4"

commande fonction
Dans VB toute portion de code doit être contenue dans un module ou une
classe.

Personnellement je vais utiliser la console qui permet de faire des petites


procédures afin de vous faire découvrir les bases de vb sans passer par des
manipulations longues et fastidieuses.

2.2. Les objets : méthodes et événements


Avec VB, la gestion des menus et des boîtes de dialogues sont laissées à
Windows.
Ainsi les manipulations standard de Windows sont utilisables avec les
mêmes touches et les mêmes actions souris.
La première action avec VB est de construire une feuille de travail (form)
pour le dialogue avec l'utilisateur. Chaque chose que vous allez placer sur
cette feuille de travail, par exemple, un texte, un cadre, une zone de saisie,
…sera un objet.
Une feuille de travail est elle-même un objet.
De plus, chaque objet dispose de propriétés, de méthodes et d'événement.
Chaque objet porte un nom pour l'identifier.

2.2.1. Propriétés
Les propriétés sont par exemple, la couleur ou la légende des objets.
Vous pouvez les initialiser à la création via la boîte à outils, mais aussi les
modifier par programme. Pour modifier par programme vous pouvez donner
le nom de l'objet, ainsi que la désignation de la propriété.

Par exemple vous pouvez changer le nom de la feuille de travail qui s'intitule
"Form1" en "Adresse".
La propriété relative au nom s'appelle "Caption". Cela nous amène à la
syntaxe suivante :
Form1.Caption = "Adresse"

De manière plus générale :

NomObjet.Nompriété=" "

Thierry GRANDADAM Page 5


2.2.2. Méthodes
Une commande est une instruction pour un processus interne : traitement de
variable, test, boucle,…

Une méthode est toujours un verbe en français.

Une méthode est une instruction relative à un processus au système tel que
le traitement des entrées, des sorties.
En résumé, toutes les manipulations d'objet que ce soit des fenêtres, des
contrôles, des imprimantes, sont des méthodes. On peut résumer ceci en
disant que toutes les instructions adressées à un objet bien défini sont des
méthodes.

2.2.3. Evénements
Le plus important dans un programme VB, se sont les actions de l'utilisateur.
Par exemple lorsqu'il clique sur un bouton de commande "OK" ou bien
lorsqu'il sélectionne une commande d'un menu.
Pour que le programme ne passe pas tout son temps à vérifier quel est
l'objet qui a été activé ou non, VB répartit lui-même les tâches ou déclenche
la routine associés à chaque action.
Ses tâches sont appelées des "procédures évènementielles".
Chaque évènement à un nom, mais cela ne suffit pas. En effet, le nom de
l'objet dans lequel l'événement a été crée, ainsi que la désignation de
l'évènement en lui-même se combinent pour donner un nom de procédure.

Par exemple, si vous cliquez sur une fenêtre intitulée "Adresse", vous
déclenchez automatiquement la procédure :

Adresse_load() Nom objet_nom événement

2.3. Méthodologie de travail


Voici les différentes étapes à suivre :

1) Création de la boîte de dialogue, placement des contrôles, des


menus.
2) Affectation des propriétés aux objets de cette feuille de travail.
3) Analyse des événements auxquels vous devez réagir.
4) Appeler la procédure événementielle associée dans l’éditeur.
5) Programmation de la procédure relative à l’événement.

2.4. Composition d'un programme


Lorsque vous travaillez avec VB vous devez faire un projet qui sera l'élément
principal de votre programme. Un projet à une extension .vb et vous devez
spécifier la version du framework, le langage et le type de projet.

Thierry GRANDADAM Page 6


Attention un projet fait partie d'une solution qui portera un nom et sera votre
dossier plus d'autres petites choses comme un fichier vbproj et vbproj.user.

Dans une solution, vous pouvez trouver différents projets.

Votre solution se gère avec l'explorateur de solution dont le raccourci est


Ctrl-R.

Vous pouvez aussi créer des dossiers dans votre solution afin d'organiser
vos différents projets.

Par exemple nous allons créer une solution "formation" avec un projet "base"
de type console ou code.
Vous obtenez l'écran suivant :

Dans un module (module1) votre trouverez une procédure (Main) et


observez l'explorateur de solutions.

De plus une solution doit se paramétrer avec le menu Projet\Propriété de


formation et notamment l'objet de démarrage :

Pour exécuter un code il suffit d'appuyer sur la touche F5.

Thierry GRANDADAM Page 7


3. LES VARIABLES
3.1. Les noms
Une variable est définie par son nom et son symbole. Le nom peut être un
mot d’une longueur de 255 caractères, mais il doit commencer par une lettre
suivie de lettre, chiffres et -. Attention au mot-clé.

Minuscule et majuscule n’ont pas d‘importance mais plus pratique pour l'aide
à la saisie.

Vous n'êtes pas obliger de les déclarer sauf si il y a l'instruction Options


Explicite dans le module général. A éviter par principe.

3.2. Portée
Toute variable possède une certaine durée de vie, ce que l’on appelle sa
portée. Celle-ci dépend de deux éléments : le mode et l’emplacement de ces
variables :

• Si vous déclarez une variable à l’aide de l’instruction Dim sa partie est


limitée à cette procédure. On dit que la variable est locale.

• Si vous déclarez une variable à l’aide de Dim dans la section


Générale, elle est limitée au module dans toutes les procédures. On
peut utiliser l’instruction Private à la place de Dim

• Si vous déclarez une variable toujours dans la section Générale en


utilisant le mot clé Public à la place de Dim, la variable est accessible
dans toutes les feuilles et tous les modules de l’application. On dit que
la variable est globale.

L’instruction Static à la place de Dim permet de garder la valeur précédente.


On peut aussi placer la ligne Option Explicit dans la partie générale.

3.3. Les types


Toutes les données qui surgissent en cours de programme doivent être
stockées en mémoire par l’intermédiaire d’une variable, mais il faut identifier
la nature de la valeur stockée.

Pour cela vous devez déclarer votre variable au début de votre programme.

Voici les différents types de variables en distinguant les numériques entiers,


les décimaux, les caractères, les booleans, les dates, les nullables.

Attention, aujourd'hui la philosophie est de ne pas mettre l'information donc


quand vous déclarez une variable de type entier et que vous mettez du texte
il n'y plus de message d'erreur.

Thierry GRANDADAM Page 8


3.3.1. Type numérique
Sbyte -128 +127
Short -32 768 + 32 767
Integer - 2 147 483 648 2 147 483 647
Long - 9,22 10^38 9,22 10^38

3.3.2. Type décimaux


Single -3.40282347 10^38 +3.40282347 10^38
Double -1.79769 10^308 -1.79769 10^308
Decimal - 7.92281 10^27 7.92281 10^27

3.3.3. Type caractères


Il existe le type Char pour stocker un caractère de type unicode utilisant deux
octets dont le dernier pour le pays et l'alphabet du pays.
Il existe le type String pour stocker 2 147 483 648 caractères.

3.3.4. Type Boolean


Permet d'avoir deux valeurs possibles : True ou False, ou -1 et 0
respectivement.

3.3.5. Type Date


Parent pauvre en VB comparé à d'autres langages :

Thierry GRANDADAM Page 9


3.3.6. Type nullable
Le type nullable permet de définir une variable qui n'a pas de valeur bien
définie comme une récupération d'information venant d'une base de
données. Il suffit de mettre le symbole ? après le nom ou le type
Uniquement pour les types numériques ou structure.

3.4. Conversion de type


Voici des exemples courants

Val() Convertit une chaîne en un nombre


Str() Convertit une valeur numérique en une chaîne
Cstr() Convertit une valeur numérique en une chaîne mais
le point devient une virgule suivant le panneau de
configuration
CInt() Convertir une chaîne de caractères en entier
Clng() Convertir une chaîne de caractères en entier long
CSng() Convertir une chaîne de caractères en réel simple
CDbl() Convertir une chaîne de caractères en réel double
CCur() Convertir une chaîne de caractères en réel
CVar() Convertir une chaîne de caractères en variant

Thierry GRANDADAM Page 10


3.5. Formatage
Vous pouvez formater par l'instruction format. Voici des exemples :

3.6. Chaîne de caractères


De manière générale une fonction chaîne de caractère permet de manipuler,
de découper un morceau de texte.

+ ou & Concaténation

Instr() Recherche des caractères dans une chaîne


INSTR(Depuis, chaine,Cherche)
Left() Extraire la partie gauche d’une chaîne
Left(chaine,longueur)
Len() Renvoi la longueur d’une chaîne
Longueur=Len(chaine)
Mid() Extraire une portion de chaîne
Mid(chaine,Depuis,Longueur)
Right() Extraire la partie droite d’une chaine
Right(chaine,longueur)
LTrim() Supprime les espaces à gauche
LTrim(chaine)
RTrim() Supprime les espaces à droite
RTrim(chaine)
LCase() Convertit une chaîne en minuscules
Lcase(chaine)

Thierry GRANDADAM Page 11


Ucase() Convertit une chaîne en majuscules
Ucase(chaine)
Space() Génère des espaces
Space(longueur)

3.7. Inférence de type


Le compilateur peut déterminer le type de variable à utiliser au moment de
son affectation. Dans ce cas vous ne devez pas préciser de type et vous
pouvez aussi lui affecter une valeur.

3.8. Les constantes


La définition d'une constante se fait par l'instruction Const.

Il existe aussi des constantes prédéfinie dans vb comme vbCR (=chr(13)),


vbCRLf (chr(13) et saut de ligne),…

3.9. Variables tableaux

Un tableau n'est rien d'autre qu'un nombre prédéfini de variables de même


nature rangées sans un nom commun.

Pour définir :
Dim NomTableau (nombre ligne, nombre colonne) As Type

Commence à 0
voir variable

Dim Tableau (100)

Doit être fait dans la partie Déclaration

Thierry GRANDADAM Page 12


Si vous utilisez la commande Redim au lieu de Dim, le tableau sera détruit à
la sortie de la procédure. Elle permet aussi de redimensionner le tableau en
effaçant ou non le tableau. Par exemple ReDim Preserve(conserve le
contenu) Tableau (200).

Pour avoir un tableau disponible partout dans un programme, utilisé :


Global au lieu de Dim

Pour identifier un type pour un tableau on peut aussi lui donner un symbole.
Par exemple Dim Tableau(100) crée un tableau de 100 lignes de caractères.

Pour identifier les limites d'un tableau, on utilise length et rank pour savoir
sa dimension.

Pour rechercher dans un tableau on utilise indexof et pour le tri sort

Voici un exemple de manipulation de tableau :

3.10. Les structures


Cela vous permet de combiner des données de différents types pour former
un nouveau type composite comme une table par exemple.
Vous devez d'abord déclarer votre structure entre les mots clés Structure …
End Structure et après vous pouvez les utiliser.

Thierry GRANDADAM Page 13


Voici un exemple :

Thierry GRANDADAM Page 14


4. ENTREES/SORTIES DE DONNEES

4.1. Sorties

Mais la meilleure façon pour le faire est d'utiliser une boite de message. Une
boite de message permet également de fournir une réponse.

Syntaxe :
MsgBox(Texte Message,Numéro,Titre)

message à afficher Titre de la fenêtre

Le numéro est une addition de différentes valeurs dont voici la signification

Première valeur :

Bouton Valeur
OK (par défaut) 0
Ok et Annuler 1
Abandon, Répéter, Ignorer 2
Oui, Non, Annuler 3
Oui, Non 4
Répéter et Annuler 5

Deuxième valeur :

Icones Valeur
Panneau Stop 16
Point d'interrogation 32
Point d'exclamation 48
Information 64

Troisième valeur :

Bouton par défaut Valeur


1er Bouton 0
2ème Bouton 256
3ème Bouton 512

Exemple :

MsgBox ("Vous avez appris quelques choses",36,"Question")

Thierry GRANDADAM Page 15


Attention quand vous cliquez sur un bouton, cette instruction renvoie la
valeur du bouton cliqué à condition de transformer votre instruction en
fonction. Pour cela vous devez stocker la réponse dans une variable.

Voici la valeur des boutons :

Ok=1, Annuler=2, Abandon=3, Répéter=4, Ignorer=5, Oui=6, Non=7

4.2. Entrées :
Permet de saisir des données de l'utilisateur. On utilise également une boite
que l'on appelle Boite de dialogue. Attention l'information saisie par
l'utilisateur sera toujours du texte.

Syntaxe :
Nomvariable = InputBox (message, titre, défaut )

Exemple :
Reponse = InputBox("SVP, Entrez votre nom")
Msgbox Reponse

Vous pouvez aussi utiliser naturellement une zone de saisie dans un objet
Forms.

Thierry GRANDADAM Page 16


5. CALCULS ET COMPARAISONS
5.1. Les opérateurs de comparaison

> Supérieur
< Inférieur
<> Différent
>= Supérieur ou égal
<= Inférieur ou égal
Like utilisation de caractère générique
Not Négation
And Et logique
OR Ou logique
XOR Ou exclusif

5.2. Les calculs


Bien sûr vous trouvez les opérateurs standards qui sont :

+ Addition
- Soustraction
* Multiplication
/ Division
^ Puissance
\ Division entière
MOD Donne le reste de la division
& Concaténation de chaînes

Mais aussi les fonctions mathématique suivante :

Sin(x) Sinus de x
Cos(x) Cosinus de x
Ton(x) Tangente de x
Atn(x) Arc tangente de x
Sqr(x) Racine Carrée de x
Log(x) Logarithme de x

Thierry GRANDADAM Page 17


6. BOUCLE ET TEST

6.1. GoTo
Permet de dérouter le cours de normal d'un programme à une étiquette. A
éviter absolument car cela peut provoquer des erreurs d'exécution suivant le
modèle de votre microprocesseur.

Syntaxe :
Goto Etiquette
'Instructions
Etiquette
'Instructions

On peut remplacer par un Goto qui permet d'accéder à une série d'étiquettes
en fonction de la valeur d'une certaine expression.

Syntaxe :
On Test Goto Suite1, Suite2, Suite3

6.2. If….Then
Permet de renvoyer à une suite d'instructions en fonction d'une condition.

Syntaxe :
If Condition Then
'Instructions si condition est vraie
Else
'Instructions si condition est fausse
End If

Else n'est pas obligatoire si vous avez qu'une seule instruction. If Condition
Then instruction1

Il existe une variante : IIF(condition, valeur si vrai, valeur si faux)

Vous pouvez aussi ajouter ElseIf Condition2 Then, mais cela devient lourd
et il est préférable de faire une instruction Select Case.

6.3. Select….case
C'est une structure qui permet de faire des tests comme la structure IF.

Si vous devez écrire une série de conditions, il est préférable de faire appel à
Select Case plutôt qu'à If car l'écriture est plus simple et plus courte.

Le principe de la syntaxe est que l'on énonce avant le nom de la variable.

Thierry GRANDADAM Page 18


Voici un exemple qui test les différentes saisons :

Select Case NuméroMois


Case1,2,12
Saison="Hiver"
Case 3,4,5
Saison="Printemps"
Case 6
Saison="Eté"
Case 7,8
Saison="Eté-Vacances"
Case 9,10,11
Saison="Automne"
Case Else
Saison="Inconnue"
End Select

6.4. For…Next
Ici la structure For permet de faire une boucle compteur et permet de faire
Xfois une suite d'instructions.

Syntaxe :
For nomvariable = début To Fin Step pas
Instructions
Next

Utile pour compter un nombre de ligne pour une facture, une page, etc….

Exemple :
On veut remplir une variable tableau de la manière suivante :

0 1 2 3
1 2 3 4
2 3 4 5
9
Voici la solution :
Dim Essai(9,4) as Integer
For I=0 To 9
For J=0 to 3
Essai (I,J)=I+J
Next

Pour sortir de cette boucle on utilise l'instruction Exit For.

Thierry GRANDADAM Page 19


6.5. Do…Loop
Cette structure permet de faire une boucle conditionnelle.
Permet d'exécuter une suite d'instruction en fonction d'une condition.
Il existe plusieurs variante.

Syntaxe 1 :
Do Until condition On boucle jusqu'à ce que la
Instructions condition devienne vraie.
Loop

Syntaxe 2 :
Do While condition On boucle tant que la condition
Instructions reste vraie ou jusqu'à ce que la
Loop condition soit fausse.

Syntaxe 3 :
Do Idem que la syntaxe 1 mais on
Instructions passe au moyen une fois.
Loop Until Condition

Syntaxe 3 :
Do
Instructions
Loop While condition

On peut sortir d'une boucle avec Exit Do


On peut remplacer Do While …Loop par While Condition …. Instructions
…Wend.

6.6. For each ... next


Permet d'exécuter un bloc de code pour chaque élément d'un tableau ou
d'une collection. Voici un exemple :

6.7. With … End with


Permet d'exécuter une série d'action sur un objet sans avoir à rappeler son
nom. Très pratique et très rapide. On le verra en œuvre dans les connexions
aux bases de données.

Thierry GRANDADAM Page 20


6.8. Using … End Using
Utiliser pour un bloc de code prenant une ressource externe comme une
connexion à une base de données.
Permet de prendre en charge automatiquement la libération de la ressource
à la fin du code

Thierry GRANDADAM Page 21


7. LES ERREURS
7.1. Débogage
On distingue 3 types d'erreurs pouvant se produire :
- les erreurs de syntaxe : erreurs d'écriture. Se fait en temps réel.
- les erreurs d'exécution : erreurs lors de l'exécution
- les erreurs logiques : le programme ne se déroule pas comme vous le
souhaitiez.

Pour vous aider dans cette démarche on utilise la fenêtre Débogage. Si vous
exécutez votre programme pas à pas ainsi vous allez examiner le code et les
variables.

• La touche F8 pour un pas à pas détaillé


• La touche Shift F8 pour un pas à pas principal
• La touche Ctrl-B pour interrompre

Vous pouvez placer un point d'arrêt en cliquant dans la zone grise à gauche
de votre écran.

7.2. Gestion des erreurs


Lorsqu'une erreur se produit, la variable Err de VB contient le numéro de
l'erreur et une boite de message vous informe mais le programme s'arrête.

Pour éviter cela, on peut indiquer une séquence d'instruction en cas d'erreur.
Ce déroutage est effectué par l'instruction On error ou par un renvoi à une
procédure.

Syntaxe de l'étiquette :
On Error GoTo étiquette

Attention placé cette instruction en 1er ligne (avant les futurs erreurs).

Pour revenir dans le déroulement normal de votre programme il faut avoir


l'instruction RESUME qui reprend à la ligne de l'erreur et RESUME NEXT qui
reprend à la ligne suivante.

Exemple :
Sub maprocédure()
On Error GoTo Erreur

Instructions

Exit Sub

Erreur :
MsgBox "une erreur est survenue. Elle porte le N° "&Err"
Resume Next

Thierry GRANDADAM Page 22


Syntaxe de la procédure :
On peut éviter le renvoi à une étiquette, en testant la valeur de la variable Err

On error Resume Next

Exemple :
Sub procerreur()
On Error Resume Next
Instructions
If Err= … Then
Instructions
End If
End Sub

Thierry GRANDADAM Page 23


8. APPLICATION WINDOWS
8.1. Interface SDI
Une seule fenêtre est disponible (Single Document Interface). Pour pouvoir
ouvrir un autre document il faut utiliser la méthode show.
Pour fermer un document on utilise Me.close()

Personnellement je préfère utiliser une interface MDI qui est plus pratique.

8.2. Interface MDI


Les applications MDI (Multi Document Interface) sont constituées de deux
types de feuilles :

• Les feuilles mères


• Les feuilles filles.

Pour définir une feuille mère, il suffit de mettre sa propriété IsMdicontainer à


True.

Vous remarquerez qu'il y a déjà beaucoup de choses de faites!!!.

Maintenant nous allons créer deux fenêtres filles. Pour cela il suffit de mettre
le code suivant au chargement de la feuille mère :

Private Sub menu_Load(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
Dim fenetre1 As Form
Dim fenetre2 As Form

fenetre1 = New Form()


fenetre2 = New Form()

fenetre1.Text = "fenetre 1"

Thierry GRANDADAM Page 24


fenetre1.MdiParent = Me
fenetre1.Show()

fenetre2.Text = "fenetre 2"


fenetre2.MdiParent = Me
fenetre2.Show()
End Sub

Maintenant nous allons voir comment créer une application de type


explorateur.

• A partir de votre feuille mère, ajouter un contrôle "TreeView"


• Modifiez la propriété "Dock" du "TreeView" sur "Left" pour le
mettre sur la bordure gauche de la fenêtre
• Ajouter les éléments dans le "TreeView" en vous aidant de
l'éditeur de nœuds.

• Vous créez vos différents nœuds en donnant comme nom "im"


pour les images et "re" pour les recettes :

Thierry GRANDADAM Page 25


Et idem pour les sous nœuds

• Maintenant vous allez écrire le code suivant en faisant un double


clic sur le premier nœud :

If Not IsNothing(e.Node.Parent) Then


Dim f As Form
For Each f In Me.MdiChildren
f.Close()
Next
Select Case e.Node.Parent.Name
Case "im"
MsgBox("Vous avez sélectionné l'image :" _
& e.Node.Name)
Case "re"
MsgBox("Vous avez sélectionné la recette de : " _
& e.Node.Name)
End Select
End If

8.3. Les événements

8.3.1. Evénements clavier


L'utilisateur peut simplement appuyer sur le clavier et cela se traduit par 3
événements distincts :

• KeyDown : lorsque vous appuyez sur la touche


• KeyUp : lorsque vous relâchez la touche
• KeyPress : lorsque lors de l'enfoncement et uniquement si la
touche correspond à un caractère ASCII

Sur KeyDown et KeyUp, un argument KeyEventArgs indique si la touche Alt,


Ctrl et Shift sont utilisés.
Keycode indique le numéro de la touche sur le clavier.

Thierry GRANDADAM Page 26


Par exemple si vous appuyez sur la combinaison Ctrl-F8, vous voulez qu'une
zone de texte se transforme en majuscule. Sur l'événement KeyUp

If e.Control And (e.KeyCode = 119) Then


TextBox1.Text = UCase(TextBox1.Text)
End If

Par exemple vous voulez émettre un bip si l'utilisateur et en plus inhiber cette
saisie. Pour cela vous avez la propriété "Handled" qu'il faut mettre à "true"

If IsNumeric(Chr(e.KeyCode)) Then
Beep()
e.Handled = True
End If

8.3.2. Les événements souris


Liés à l'utilisation des boutons et de la molette de la souris. Voici les
principaux événements :

• MouseDown : lorsque qu'un bouton est enfoncé


• MouseUp : lorsque qu'un bouton est relâché
• MouseWheel : lorsque la molette est actionnée.

Un paramètre de type "MouseEventArgs" est fourni qui vous permet d'obtenir


des informations comme :

• Le bouton à l'origine de l'événement : "button"


• Le nombre de fois où le bouton est enfoncé ou relâché : "Clicks"
• Le nombre de crans de déplacement de la roulette : "Delta"

A noter que la valeur d'un cran est de 120.

Vous pouvez aussi avoir un déplacement de la souris :

• MouseEnter : lorsque la souris entre au-dessus d'un contrôle


• MouseMove : lorsque la souris se déplace sur un contrôle
• MouseLeave : lorsque la souris quitte la surface du contrôle
• MouseHover : lorsque la souris reste pendant 1 seconde

Nous allons faire un petit logiciel de dessin qui trace un point à chaque
déplacement de la souris si on appuie sur le bouton gauche.

Thierry GRANDADAM Page 27


Sur cette form vous placez 3 zones de texte (txtrouge, txtbleu, txtvert).

Vous tapez le code suivant sur l'événement MouseMove mais noté bien la
première ligne :

Maintenant vous allez ajouter le code suivant quand vous allez toucher à
votre molette de souris sur les 3 zones de texte.

Maintenant nous allons éviter de cliquez sur la zone de texte pour actionner
la molette grâce à l'événement "mouseHover" et en tapant le code :

Thierry GRANDADAM Page 28


9. LES COMPOSANTS D'UN FORMULAIRE
9.1. Boite de dialogue de Windows
Rien ne vous empêche de reprendre les boites de dialogues de Windows
grâce à une série de classes de l'espace System.windows.form
Nous allons voir quelques exemples.

9.1.1. Ouvrir

9.1.2. Choix des dossiers


Très similaire à "Ouvrir" mis à part la propriété "Multiselect" qui disparait.

9.1.3. Choix d'une couleur


Utilisation de la classe ColorDialog où la propriété Color permet d'initialiser la
boite de dialogue et la propriété "AllowFullOpen" permet d'interdire l'affichage
des couleurs personnalisées et la propriété "FullOpen" pour avoir un choix
plus important.

Thierry GRANDADAM Page 29


9.1.4. Choix d'une police
Utilisation de la classe FontDialog avec la propriété "Font" qui permet de
définir la police de caratères utilisée et le choix de la couleur ou non
("ShowColor") et des effets ("ShowEffects"). Je vous conseille de mettre la
propriété "FontMustExist" a "True" pour forcer la vérification de la fonte se
trouvant sur la machine. "Maxsize" et "MinSize" permet de planifier une
plage.

9.2. Contrôle d'affichage

9.2.1. Le label
Le plus basique dont les propriétés essentielles sont :

• Text : affiche le texte


• Autosize : s'adapte en fonction du texte
• TextAlign : position du texte
• Image : affiche une image

9.2.2. LinkLabel
Idem que le contrôle "Label" et ajoute simplement un lien hyper texte grâce à
la propriété "LinkArea" pour indiquer la portion du texte qui activera le lien,
"linkcolor" pour la couleur normal, "visitedlinkcolor" pour la couleur après
une première utilisation et "activelinkcolor" au moment où l'on clique
dessus.
Quand l'utilisateur clique sur le lien, l'événement "LinkClicked" est
déclenché et à vous de jouer pour le code. La propriété "LinkVisited" permet
de valider que le lien a été cliqué.

Par exemple pour lancer votre navigateur sur la page de google.fr avec un
contrôle qui s'appelle lnk_internet :

Thierry GRANDADAM Page 30


9.2.3. Le contrôle ToolTip
Ce contrôle permet l'affichage d'une bulle d'information associée à un
contrôle. Attention ce contrôle n'est pas visible et il ajoute la propriété
"Tooltip" à chaque contrôle, qui vous servira à placer une bulle d'information.
Vous pouvez aussi mettre votre bulle d'information à partir de ce contrôle :

ToolTip1.SetToolTip(button1,"Cliquez pour jouer")

9.2.4. Le contrôle ErrorProvider


Ce contrôle vous permet d'afficher des erreurs de validation d'information par
une petite icône associé à un texte. Cette vérification est effectuée quand le
contrôle perd le focus et votre code doit être écrit dans l'événement
"Validating". La propriété "SetError" permet d'associer un texte.
Par exemple dans une texte box voulez-vous signaler une erreur de saisie

9.2.5. Le contrôle progressbar


Permet d'informer l'utilisateur de la progression d'une action. Vous avez
plusieurs styles d'affichage :

• Continuous : barre bleue pleine


• Blocks : série de petits rectangles
• Marquee : idem que block mais défilement

La propriété "value" contrôle la barre de progression entre la propriété


"Minimum" et "Maximum". La méthode "PerformStep" permet
d'incrémenter la valeur en fonction de la propriété "Step". Vous avez aussi la
propriété "Increment".
Evitez de prendre le style "Marquee" car "Value", "PerformStep" et
"Increment" ne fonctionne pas.

Thierry GRANDADAM Page 31


Voici une horloge réalisé avec 3 progressbar.

9.3. Edition de texte

9.3.1. Le contrôle TextBox


Le plus classique mais il faut savoir qu'il peut accueillir 2000 caractères ou
32000 si la propriété "MultiLine" est à "True". La propriété "WordWrap" doit
être à "True" pour voir la barre de défilement verticale. La propriété "Lines"
est une variable tableau contenant les lignes si vous êtes en multi lignes.
La propriété "SelectedText" permet de sélectionner un texte.
La méthode "Undo" permet d'annuler la dernière modification (Ctrl-Z).

9.3.2. Le contrôle MaskedTextBox


Version évolué d'un textbox car il permet de vérifier automatiquement que les
informations saisies correspondent à ce que vous attendez.
La prorpiété "Mask" détermine le format des informations saisies.

Exemple pour une adresse IP :

Thierry GRANDADAM Page 32


9.3.3. Le contrôle RichTextBox
Comme le contrôle "TextBox" mais vous pouvez en plus ajouter de la mise
en forme comme les couleurs, la police,… un peu comme le bloc note voir le
Wordpad.
La méthode "LoadFile" et SaveFile" permet de charger et d'enregistrer un
fichier avec comme format de fichier rtf mais vous pouvez gérer d'autres
types en accord avec la constante "RichTextBoxStreamType".
La méthode "AppendText" vous permet d'ajouter un texte à un contenu.
La propriété "SelectionFont" gère la police, "SelectionColor" pour la couleur.

Voici un exemple d'utilisation :

Cela nous donne le code suivant :

9.4. Déclenchement d'action

9.4.1. Button
Le plus grand classique de vb et je n'ai pas grand-chose à vous dire sauf que
le symbole & permet de mettre un raccourci devant la lettre sur la propriété
Text.

9.4.2. MenuStrip
Ce contrôle permet de faire un menu dans votre formulaire. Ce menu peut
être composé de différents éléments comme un sous-menu, une liste
déroulante,…

Thierry GRANDADAM Page 33


Les propriétés les plus importantes sont :

• Text : contient le libellé


• Visible : pour masquer ou non le menu
• Enabled : pour interdire ou non le menu (il devient grisé)
• Checked : pour coché ou non
• CheckonClick : pour changer automatiquement à chaque clic
• ShortcutKeys : touche de raccourci. Show permet de le montrer

Ensuite il faut écrire le code dans l'événement "click" tout simplement.

Voici un exemple :

9.4.3. ContextMenuStrip
Permet de faire apparaitre un menu contextuel sur un contrôle. Pour cela
ajouter ce contrôle et ensuite par un clic droit, vous devez ajouter un
élément. Cet élément porte un nom qui sera ensuite utilisé sur le contrôle
que vous voulez pour votre menu et par la propriété "ContextMenuStrip".
Voici un exemple sur le contrôle "MaskedTextbox" :

Thierry GRANDADAM Page 34


9.4.4. Toolstrip
Permet de faire une barre d'outils. Très simple à utiliser.

Dans ce cours je me limite à une barre d'outils mais si vous voulez en avoir
plusieurs, il faut ajouter le contrôle de type "ToolstripContainer" pour gérer
leur emplacement dans votre formulaire.

9.5. Contrôles de sélection

9.5.1. Checkbox
Permet de faire un choix ou non. Attention une case à cocher peut avoir 3
états : coché, pas coché ou indéterminé (grisé). La propriété "Checked"
renvoie vrai ou faux.
Vous devez faire le formulaire suivant :

Thierry GRANDADAM Page 35


Voici le code associé :

Pour information je mémorise le style déjà appliqué. Ce style est représenté


par un entier.

Thierry GRANDADAM Page 36


9.5.2. RadioButton
Permet de faire un seul choix comme sur un poste de radio car on ne peut
écouter qu'une seule station en même temps.

Vous devez faire le formulaire suivant :

Voici le code associé :

9.5.3. Groupbox
Permet de regrouper des radiobutton afin de les isoler. Voici un exemple :

Maintenant la personne qui peut sélectionner "centrer" et "rouge" je lui paye


un voyage à l'ile maurice. Pour cela il faut faire un groupe "Alignement" et
"Couleur". Il existe aussi le contrôle "Panel" qui n'a pas de propriété "Text"
afin de rendre invisible pour l'utilisateur le groupe.
La propriété "Enabled" activera ou non l'ensemble du groupe bien sûr.

Thierry GRANDADAM Page 37


Voici le code pour mettre en couleur :

9.5.4. Listbox
Permet de choisir parmi une liste. Les éléments de la liste sont gérés sous
forme de collection par la propriété "Items".
Votre premier travail est de remplir la liste grâce à la méthode add ou
directement sur le formulaire.
Par exemple nous allons ajouter un choix de couleur de fond sur notre
formulaire :

Nous allons remplir la liste par le code suivant :

Thierry GRANDADAM Page 38


Vous pouvez gérer l'action de la souris par la propriété "SelectionMode" (pas
de clic, simple, multiple étendue ou pas).

La récupération de cette sélection peut se faire par "SelectedIndex" dans le


cas d'une sélection simple ou par "SelectedItem". Dans le cas d'une
sélection multiple, les informations seront renvoyés dans une collection
"SelectedIndices" qui sera la liste des index et par la collection
"SelectedItems" qui sera la liste des objets sélectionnés.

Pour remplir la liste, il faut utiliser la méthode Add en général au chargement


du formulaire.

Pour le code :

9.5.5. DomainUpDown
Idem que la listbox mais n'accepte pas de sélection multiple et de
présentation légèrement différente.

9.5.6. CheckedListbox
Idem que la listbox mais n'accepte pas de sélection multiple. De plus il y a
des cases à cocher et la collection "CheckedItems" possède les éléments
cochés.

Thierry GRANDADAM Page 39


9.5.7. Combobox
Personnellement j'utilise beaucoup ce contrôle. Idem que le contrôle
"ListBox" mais pas de sélection multiple et vous pouvez définir grâce à la
propriété "DropDownStyle" le comportement de votre liste déroulante :

• Simple : L'utilisateur sélectionne un élément ou saisit du texte


mais la liste est affiché en permanence
• DropDown : idem mais la liste est affichée quand on clique mais
ne se déroule pas
• DropDownList : se déroule automatiquement et en plus
l'utilisateur ne peut pas saisir autre chose qu'un élément.

Pour dérouler automatiquement la liste dès que le contrôle reçoit le focus :

La propriété Text possède l'élément sélectionné et SelectedIndex pour


l'indice de sélection. Si l'utilisateur n'a rien sélectionné cette propriété est à -1

9.5.8. NumericUpDown
Permet de faire monter ou descendre une valeur numérique. La propriété
"Minimium" et "Maximum" gère l'intervalle et la propriété "Valeur" vous donne
la valeur sélectionné.

9.5.9. TrackBar
Idem que le contrôle "NumericUpDown" permet un effet plus visuel mais
sans afficher la valeur.

Voici un exemple des deux contrôles :

Thierry GRANDADAM Page 40


9.5.10.ListView
Permet de présenter des informations de 4 manières différentes comme
l'explorateur de Windows.
Nous allons réaliser ce formulaire

Pour cela il faut poser ce contrôle et cliquer sur "modifier les éléments"

Par le code :

Maintenant on veut savoir sur quelle ligne l'utilisateur a cliqué :

Thierry GRANDADAM Page 41


9.5.11.TabControl
Permet d'afficher plusieurs onglets dans le même formulaire.
La propriété "TabPages" contient la liste de toutes les pages et vous permet
de paramétrer vos onglets.

Voici un exemple d'utilisation :

Après avoir créé vos onglets, vous pouvez placer vos contrôles comme si il
s'agissait d'un formulaire.

Cela nous donne par exemple :

Thierry GRANDADAM Page 42


9.6. Les contrôles divers
Je vais voir les plus importants à mes yeux.

9.6.1. TableLayoutPanel
Très intéressant car il permet de réorganiser votre formulaire si l'utilisateur
change sa dimension ou la résolution d'écran.
Il faut d'abord poser ce contrôle et ensuite faire des zones en fonction de vos
besoins sachant que dans une zone vous pouvez placer un seul contrôle.

Ensuite vous devez ancrer votre TableLayoutPanel sur le bord gauche, haut
et droit.

Vous pouvez essayer de redimensionner votre formulaire.

Thierry GRANDADAM Page 43


9.6.2. PictureBox
Vous permet de gérer des images. Par exemple nous allons créer un
explorateur d'image.

Il faut savoir que vous pouvez gérer les formats d'images du type jpg, bmp,
ico, gif, wmf.
De plus la propriété "SizeMode" gére le comportement comme l'adaptation
de la taille de l'image comme l'adaptation à la taille (Stretchimage), ou le
sens contraire (Autosize), …

Code de cette application :

9.6.3. Imagelist
Contrôle qui vous permet de stocker des images ico, jpg, gif,… sauf les wmf
pour les utiliser dans d'autres contrôles ayant la propriété "ImageList",
"SmallImageList" ou "LargeImageList".

Les images s'ajoutent depuis l'interface ou par le code grâce à la méthode


"add". Vous pouvez aussi toutes les effacer par la méthode "Clear".
Par exemple nous allons reprendre le formulaire ayant le contrôle ListView.
Maintenant dans les propriétés de "ListView" sélectionnez votre "ImageList1"

Thierry GRANDADAM Page 44


Maintenant pour chaque élément sélectionnez votre image dans la propriété
"ImageIndex".
Cela nous donne maintenant :

9.7. Les contrôles de gestion du temps

9.7.1. Le Timer
L'objet TIMER permet l'exécution d'instruction pendant une période de temps
déterminée. . L'unité de temps est le 1/1000 seconde grâce à la propriété
"Interval". La propriété "Enabled" passe à False pour arrêter le Timer.

Le timer à une taille unique.

Par exemple vous voulez faire une horloge. Pour cela créez un formulaire
avec une zone de texte nommée "horloge" et un objet timer nommé "temps"
et avec comme intervalle 1000. Maintenant faîtes un double clic sur l'objet
timer et taper le programme ci-dessous :

Private Sub temps_Timer()


horloge.Caption = Time
End Sub

Thierry GRANDADAM Page 45


9.7.2. DateTimePicker
Contrôle très fréquent sur le Web qui permet d'éviter la saisie d'une date.

La propriété "Value" permet de récupérer la date sélectionnée où de spécifier


la date affichée (par défaut la date du jour).

9.7.3. MonthCalendar
Permet de faire des choses plus évoluées que le contrôle précédent. Par
exemple faire une plage de date en gras. Pour cela vous devez utiliser la
propriété "AnnuallyBoldedDates".

Par le code :

La propriété "MonthBoldedDates" permet de faire la même chose mais pour


tous les mois.
La propriété "MaxSelectionCount" permet de définir le nombre de jours maxi
que vous pouvez sélectionner.

Vous pouvez même afficher plusieurs mois en même temps grâce à la


propriété "CalendarDimensions".

Thierry GRANDADAM Page 46


Maintenant il faut savoir récupérer les dates sélectionnées :

Thierry GRANDADAM Page 47


10. L'ACCES AUX BASES DE DONNEES
10.1. Principe
Lorsque vous fait un programme, la meilleure solution est séparée votre base
de données du langage dans lequel vous travaillez. Ainsi si votre base de
données grossit et que vous êtes obligé d'en changer pour des raisons de
temps d'accès par exemple, vous n'aurez qu'un morceau de code à changer.
Dans le principe on utilise une base de données de type Access, SQL
Server, Oracle,… et vous allez chercher les données par une requête SQL
pour les manipuler ensuite dans votre programme.

Formulaire VB
Base
Requête SQL de
données

Ce principe utilise le modèle ADO.net qui contient un ensemble de classes,


d'interfaces, de structures facilitent ces opérations.

10.1.1.Mode connecté
L'utilisateur est en permanence connecté aux données et cela se gère de la
manière suivante :

• On établit une connexion au début de l'application et on ferme cette


connexion à la fin
• Vous pouvez contrôler qui est connecté et avec quelles données il
travaille

Les données sont à jour en permanence.

10.1.2.Mode déconnecté
Beaucoup plus difficile à programmer, mais l'utilisateur n'est pas en
permanence connecté. Ceci est très pratique pour des ordinateurs portables,
comme pour le monde du Web.

Comme tout système cela présente des avantages et des inconvénients.

• La connexion n'occupe pas en permanence le serveur comme dans le


mode connecté.
• Vous amélioré les performances et l'évolutivité de votre application.
• Les données ne sont pas forcément à jour.
• Quand les mises à jour se font vous devez privilégier soit les données
les plus récentes, les plus anciennes ou à l'utilisateur de choisir.

Thierry GRANDADAM Page 48


10.2. ADO.NET
L'architecture d'ADO.NET permet de fournir un ensemble de classes
permettant l'accès aux bases de données.
Il vous faut un fournisseur d'accès permettant de récupérer les données vers
votre application et transférer les données de votre application vers la base
de données.
Vous aurez aussi besoin de classes permettant de manipuler vos données
de manière indépendante de votre base.

10.2.1.Fournisseurs d'accès
Vous avez le choix entre 4 fournisseurs d'accès dans le Framework.net :

• Fournisseur pour SQL Server


• Fournisseur pour OLE DB (autres bases de données)
• Fournisseur pour ODBC
• Fournisseur pour Oracle

L'ensemble de ces fournisseurs vous propose 4 classes :

• La classe "Connection" pour établir une connexion avec votre base


• La classe "Command" pour exécuter une commande SQL
• La classe "DataReader" procure un accès en lecture seule
• La classe "DataAdapter" pour mettre à jour vos données.

Thierry GRANDADAM Page 49


11. LES FICHIERS TEXTES
VB permet l'accès aux fichiers de type texte, très pratique pour faire un
journal de log d'erreur, de paramétrage, ….
Le traitement des fichiers se divise en 3 phases :

 L'ouverture (OPEN)
 Le traitement
 La fermeture (CLOSE)

Un fichier texte est constitué de lignes de caractères se terminant par un


retour chariot (Chr$(13)) et un retour à la ligne (Chr$(10)).

11.1.1.L'ouverture
Pour ouvrir un fichier texte on utilise l'instruction suivante :

Open Nom_fichier For mode As n°Canal

Input : fichier ouvert en lecture seulement


Output : fichier ouvert en écriture mais en écrasant le
contenu
Append : fichier ouvert en écriture mais place à la fin

La lecture des lignes se fait grâce à l'instruction Line Input :

Line Input # Canal

La fonction EOF permet de savoir si l'on arrive à la fin du fichier sinon on


provoque une erreur.
Voici un exemple :
Dim Retour, Nextline
Retour = Chr(13) + Chr(10)
Canal = FreeFile
Open "C:\WINDOWS\SYSTEM.INI" For Input As #Canal
Do Until EOF(Canal)
Line Input #Canal, contenu
Print Contenu
Printer.Print Contenu
Loop
Print.EndDoc
Close #Canal

Si on veut imprimer le fichier on doit ajouter ce qui est en italique.

Thierry GRANDADAM Page 50


Le meilleur moyen pour afficher un fichier texte consiste à utiliser un objet
Zone de texte (TextBox) et la propriété Multiline=True.
Attention limité à une taille de fichier inférieur à 65Ko.

On peut aussi lancer l'application associée au fichier par l'instruction Shell


nomprogramme nomfichier

Pensez à fermer le fichier avant la fin de la procédure.

11.1.2.L'écriture
Pour écrire dans un fichier, s'est l'instruction Print # dont la syntaxe est la
suivante :

Print #n°canal, variable

11.2. Instruction type Dos


Quand vous manipulez des fichiers, il est important d'effectuer des
opérations du type DOS. Voici la liste par catégorie :

Sur les répertoires


ChDrive lecture change le lecteur courant
ChDir chemin change le répertoire courant
CurDir retourne le nom du répertoire courant
MkDir répertoire crée le répertoire
RmDir répertoire supprime le répertoire si vide
Dir(masque,attr) retourne le nom du 1er fichier
correspondant ou masque et possédant
l'attribut. Dir seul retourne ensuite le nom
suivant.

Sur les fichiers


FileAttr nomfichier retourne les attributs
FileDate nomfichier retourne la date
File nomfichier retourne la longueur
Kill nomfichier supprime le fichier
Name ancien As Nouveau change le nom
FileCopy source,destination copie

Thierry GRANDADAM Page 51