Vous êtes sur la page 1sur 0

Cours dinitiation

Visual Basic.NET
Par
Philippe Lasserre
Version 1.0 PDF du 6/12/2004 ralise grce Alexandre Freire


Une version on-line est disponible ladresse : http://plasserre.developpez.com/vbintro.htm













Cours dinitiation Visual Basic.NET par Philippe Lasserre











Prface
Il s'agit d'un cours de Visual Basic.Net de Microsoft, pour dbutants ou ancien
voulant passer la version .net. Cest la somme des connaissances que jaurais aim trouver
mes dbuts et la manire dont jaurais aim quon mexplique les choses (Au dpart c'tait
mes notes puis petit petit...).

Visual Basic.Net apporte une puissance ingale et ncessite une rigueur importante mais il
devient vite complexe et technique. La documentation et les livres sont totalement
hermtiques pour les novices et rebutent totalement les dbutants. Les articles sur le Web
sont trs technique et traitent d'emble de problmes complexes, ils sont ncessaire mais pas
pour le dbutant. Jexplique donc dans ce cours, ma manire, trs simplement, comment
crer un programme afin de permettre un bon dmarrage mme celui qui n'a jamais fait
d'informatique. (Je traite des programmes Windows et pas ASP Web).

Jencourage par ce cours sans prtention, lamateur dvelopper ses propres
programmes.

Soyez un utilisateur actif :
Retournez les bugs et erreurs.
Envoyer moi vos critiques et remarques.
Adressez moi vos ides, du code original.

Ou simplement indiquez moi que vous avez lu mon cours, cela fait toujours plaisir et
m'incite poursuivre.


Conseils de lecture : Lire ce cours dans lordre mme si vous avez dj un minimum
dexprience en Visual Basic .NET. Ne pas hsiter relire plusieurs fois les chapitres.

















Cours dinitiation Visual Basic.NET par Philippe Lasserre
Sommaire

Introduction
0.0 Qu'allons nous tudier ?
0.1 Les Objets

Principe et structure des programmes
1.1 Les vnements
1.2 Les procdures
1.2.2 Les modules

1.D Lenvironnement de dveloppement Visual Studio.NET
1.D Bis Lenvironnement de dveloppement SharpDevelop

Langage Visual Basic
1.3 Introduction
1.4 Les Algorithmes
1.5 L'Affectation
1.6 Les Variables
1.6.1 String et Char
1.6.2 Numriques
1.6.3 Conversion
1.6.4 Tableaux
1.6.5 Collections
1.6.6 Structures
1.6.7 Les variables par valeur ou rfrence

1.7 Soyons strict et explicite
1.8 Les constantes
1.9 La surcharge
1.10 Les oprateurs
1.11 Les structures de contrle
1.12 Revenons sur les procdures et leurs paramtres
1.13 Porte des variables
1.14 Nombres alatoires
1.15 Rcursivit

1.19 Faut-il oublier le GOTO
1.20 Les Classes, les objets

Exemple de petites routines
E 1.1 Petites routines d'exemples trs simple
E 1.2 Petits programmes mathmatiques
E 1.3 Tri et recherche dichotomique
E 1.4 Calculs financiers simples

L'interface utilisateur
3.1 Introduction
3.2 Les feuilles
3.3 Les boutons
3.4 Les TextBox
3.5 Les labels
3.6 Les cases cocher
3.7 Les listes
3.8 Boites toutes faites
3.9 Regroupement de contrles
3.10 Dimensions, position des contrles
3.11 Main Menu, ContextMenu

Cours dinitiation Visual Basic.NET par Philippe Lasserre
3.12 Avoir le Focus
3.13 Barre de bouton, barre de status
3.14 Les images

3.30 Exemple dtaill: Calcul de l'IMC
Rvision++, structuration des programmes+++
3.31 Ordre des Instructions

Exemple de petits programmes
E 3.1 Conversion F/ (Une fentre)
E 3.2 Calcul mensualits d'un prt (les fonctions financires de VB)

Pour faire un vrai programme il faut savoir:
4.1 Dmarrer ou arrter un programme Procdure Main()
4.2 Ouvrir une autre fentre
4.3 Traiter les erreurs
4.4 Crer une fentre multi document
4.5 Travailler sur les dates, les heures, sur le temps
4.6 Lire et crire dans les fichiers (squentiel ou Random)
4.7 Travailler sur les rpertoires
4.8 Afficher correctement
4.9 Modifier le curseur
4.10 Lancer une autre application, afficher une page Web
4.11 Imprimer
4.12 Dessiner
4.13 Faire une aide pour l'utilisateur
4.14 Piloter une autre application: Word
4.20 Dboguage

Pour diffuser le programme, il faut
D.1 Comprendre le FrameWork
D.2 Distribuer l'application

Autres exemples
E 4.1 Horloge numrique

Cration de Classes, composant, Programmation objet
5.1 Programmation oriente objet
5.2 Crer une Classe
5.3 Crer un composant (Bibliothque de Classe et de Contrles)

Un gros morceau: les bases de donnes
6.1 Notion sur les bases de donnes
6.2 Gnralits sur ADO.NET
6.3 Syntaxe SQL
6.4 Lire rapidement en lecture seule: le DataReader
6.5 Travailler sur un groupe de donnes: le DataSet

Migration VB6=>VB.NET Optimisation.
7.1 Diffrences entre VB6 et VB.net; Migration
7.2 Rgles de bonne programmation
7.3 VB.net est-il rapide? Optimiser le code en vitesse

Cours dinitiation Visual Basic.NET par Philippe Lasserre
0.0 Quallons nous faire ?

Qu'allons nous tudier ?
Quel plan de cours suivrons nous ?
Quels logiciels utiliser ?
Quelle configuration est ncessaire ?


Qu'allons nous tudier ?

Ce cours est un cours de VisualBasic.Net
Nous tudierons principalement : LES APPLICATIONS WINDOWS.



Les applications Windows utilisent les WindowsForms.

Les applications Windows sont des programmes directement excutables qui utilisent
des fentres Windows : des programmes de traitement de texte, d'image, de musique, des
jeux, de petits utilitaires, des logiciels mtiers (mdicaux)...

Nous laisserons de cot les applications 'Web' (en ASP qui utilisent les WebForms) et
qui permettent de crer des sites Internet, les applications 'console'...







Quel plan de cours suivrons nous ?

Nous tudierons donc comment crer une application Windows :
- On tudiera la notion d'objet, d'vnement. (Section 0.)
- On tudiera le langage Visual Basic. (Section 1.)
- On utilisera les objets 'formulaire' et les 'divers contrles' pour crer l'interface
utilisateur (Section 3.).
- On dcouvrira la manire de crer une application. (Section 4.)
- On apprendra crer une classe (Section 5.)
- On verra comment utiliser les bases de donnes. (Section 6.)
-
Voir le Sommaire du cours. On peut s'aider de l'Index pour rechercher un mot cl.



Conseil de lecture : Lire la succession de pages en cliquant sur le bouton Suivant en bas de
page. Ne pas hsiter relire plusieurs fois les chapitres.





Quels logiciels utiliser ?

Il y a plusieurs manires de faire du VB.NET :
Acheter Visual Studio.Net 2003 de Microsoft, il contient une interface de
Cours dinitiation Visual Basic.NET par Philippe Lasserre
dveloppement (IDE) (programme permettant d'crire un logiciel et de crer un
programme excutable). Il comporte : VB.Net mais aussi C#.Net. Il existe des versions
d'initiation', 'professionnelle', 'entreprise', 'architect'.



Ce cours utilise Visual Studio.Net 2003

Nous allons apprendre utiliser Visual Basic .NET version 7.1 2002 avec le Framework 1.1 de
2002.

Vous pouvez essayer Visual Studio.Net 2003 avant dacheter, une version dessai
limite 60 jours est disponible gratuitement sur le site de Microsoft.
(http://www.microsoft.com/france/vstudio/versioneval.asp)

Tester Visual Studio Express 2005 de Microsoft, Bta gratuite base sur la bta
du Framework 2.0

Dans Visual Studio il y a Visual Basic 2005 qui est la future version VB. La version Express
est une version allge pour dbutant. Gratuite ? La Bta est gratuite elle.

Nouveau Framework, avec nouvelle Classe. Elle ne contient que le VB. (Il existe VisualWeb
Express par ailleurs). Dans Visual Studio il y a aussi Visual C#...
(http://www.vsnetfr.com/lien.aspx?ID=5636)

L'alternative gratuite: SharpEditor
Installer un logiciel de dveloppement gratuit :


SharpEditor

Par exemple,SharpDevelop le configurer pour qu'il marche en VB (il supporte VB et C#).
(http://www.icsharpcode.net/OpenSource/SD/)

Voir la partie "IDE #develop" dans cet ouvrage pour plus dinformations.

Utiliser C#Builder de Borland.



C# Builder est l'IDE .NET de Borland.L'dition personnelle de C# builder est entirement
gratuite mais limite des dveloppements non commerciaux en VB ou C#.
Il existe des versions payantes plus puissantes.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
(http://www.borland.com/products/downloads/download_csharpbuilder.html)

Un produit part :
WebMatrix de Microsoft, il est gratuit :

Cet outil permet de dvelopper des applications WEB (des pages Internet)
en ASP.NET, en C# et VB.NET. Vous trouverez des informations supplmentaires sur ce lien
http://www.asp.net/webmatrix/default.aspx?tabindex=4&tabid=46.

Si j'ai bien compris : dans une page HTML, l'ASP gre les contrles, le code des procdures
peut tre en VB.

Il ne permet pas d'utiliser des WebForms et d'crire des applications Windows.

ASP.NET Web Matrix necessite le Microsoft .NET Framework, 1.1 et tourne sur Windows Server
2003, Windows 2000, et Windows XP.

Web Matrix est disponible ladresse :
http://www.asp.net/webmatrix/download.aspx?tabindex=4

Help : Avez-vous utiliser WebMatrix C#Builder ? Envoyer un message a lauteur pour
partager votre exprience.

Quel logiciel choisir?
Lire le comparatif C#Builder versus VisualStudio ladresse :
http://www.dotnetguru.org/articles/CSharpbuilder/csharpbuildervsdotnet.htm



Quelle configuration est ncessaire ?

Pour dvelopper avec Visual Studio 2003 il faut Windows XP ou 2000 avec au
minimum 256 Mo de mmoire vive. Un grand cran (vu le nombre de fentre) est conseill.

Les excutables fonctionnent sous Windows 98, XP, 2000.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
0.1 Quallons nous faire ?

VB utilise la notion d''OBJET'.
Pour bien comprendre ce quest un objet, nous allons prendre des exemples dans la
vie courante puis nous passerons des exemples dans Visual Basic.

Ma voiture est un objet, cet objet existe, on peut l'utiliser.
Ma voiture fait partie des voitures, du type, du genre 'voiture'.
Les 'voitures' cest une classe dobjet (Class) qui a ses caractristiques : cest en mtal, a
roule en transportant des passagers mais je ne peux pas utiliser 'les voitures'.

De manire gnrale, une classe est une reprsentation abstraite de quelque chose,
tandis qu'un obj et est un exemple utilisable de ce que reprsente la classe.

Pour fabriquer ma voiture, je prends les caractristiques de la class voitures (cest comme un
moule) et je fabrique (jinstance) une voiture, je la nomme MaVoiture.


Classe --> Objet


Proprits (Attributs) :

Prenons MaVoiture.

Elle a des proprits : une marque, une couleur, une puissance

Pour indiquer la couleur de ma voiture on utilise la notation :
MaVoiture.couleur

Pour modifier la couleur et avoir une voiture verte on crit :
MaVoiture.couleur="Vert"
Et la voiture devient verte !!

MaVoiture.Phares.Avant indique les phares avant de le voiture.
MaVoiture.Phares.Avant.Allum indique ltat des phases (Allum ou non)

Si je fais :
MaVoiture.Phares.Avant.Allum=True (Vrai) cela allume les phares.


Mthodes :

MaVoiture fait des choses : elle roule par exemple.

Pour faire rouler la voiture jappelle la mthode Roule
MaVoiture.Roule

Si cest possible pour cette mthode je peux indiquer quelle vitesse la voiture doit rouler :
MaVoiture.Roule(100) jai ajouter un paramtre.

Le paramtre est un renseignement envoyer avec la mthode.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Il est possible parfois dindiquer en plus si la voiture doit rouler en marche avant ou en
marche arrire.
MaVoiture.Roule(10, Arriere)

Il y a donc 2 manires dappeler la mthode Roule : avec 1 ou 2 paramtres, on dit que la
mthode est surcharge; chaque manire d'appeler la mthode s'appelle 'signature'.


Evnement :

Des vnements peuvent survenir sur un objet.

MaVoiture_dmarre est un vnement, quand la voiture se met en route (si par exemple j'ai
fait MaVoiture.Roule(10, Arriere)), cet vnement dmarre survient automatiquement.

Tous cela ce sont des images, mais voila, vous avez compris ce quest un objet !


Dans Visual Basic.Net :

Une application Windows se compose de fentres (nomme aussi formulaires) dans
lesquelles se trouvent des contrles (bouton, liste, texte)

Exemple de fentre avec 2 boutons, une zone de texte (un label) et une icne :



Dans une application Windows, il y a aussi des lignes de code utilisant des variables pour faire
des calculs.

En Visual Basic.net tout est objet :
- les fentres (on dit les formulaires),
- les variables,
- les contrles (les boutons, listes, images, cases cocher...)


Il faut un moule pour faire un objet. Le moule cest une classe.
Le moule va servir crer un objet, on dit une instance.

On peut crer, instancer une multitude dobjets avec le mme moule.

Pour crer, dmouler un objet, on utilise les mots cl Dim et As New.
Dim objet As New Classe

New est un constructeur.

Exemple, crer une fentre (un formulaire) :
Je dessine une fentre FormDmarrage (c'est la Classe, le moule) puis :
Dim F As New FormDmarrage

Cre une fentre qui se nomme 'F' partir du moule, du modle (FormDmarrage) que jai
dessin.

Cours dinitiation Visual Basic.NET par Philippe Lasserre

Autre exemple :
Dim F as New Windows.Forms.Form
Crer une fentre en gnral avec les attributs habituels des fentres (Class Forms.Form)


Troisime exemple :
Comment crer une variable nomm Mavariable pouvant contenir un entier (Integer)
Dim MaVariable As New Integer
Dim MaVariable As Integer 'est correct aussi

Ici, pour une variable, on remarque que New peut tre omis


Tout objet a des proprits.
On utilise la syntaxe : Objet.Proprit (Il y a un point entre les 2 mots)

F.BackColor indique la couleur de fond de la fentre.

Sil y a un bouton, la couleur de fond du bouton sera :
Bouton.BackColor
Ou
F.Bouton.BackColor

Noter la syntaxe : La couleur du bouton qui est dans la fentre F

Comment modifier cette proprit?

Bouton.BackColor=Red 'modifie la couleur de fond du bouton




Autre exemple :
La proprit Visible: si elle a la valeur True (Vrai) l'objet est visible si elle est False l'objet
n'est pas visible.
Bouton.Visible=False 'fait disparatre le bouton
<==Ici il y a un bouton invisible!! Oui, oui!!


Les objets ont des mthodes parfois.

Prenons un exemple simplifi.
Les Listes (liste droulante) ont une mthode Clear qui permet de les vider.

Si je veux vider toutes les lignes d'une liste nomm Liste1, je fais:
Liste1.Clear 'Le concept est exact mais l'exemple est un peu simplifi !

Les proprits et mthodes se nomment les membres d'un objet.


Certains objets ont des vnements.

Reprenons notre bouton. Quand l'utilisateur click dessus, l'vnement Bouton_Click survient.
Ce sont les objets contrles (bouton, case cocher) et les formulaires qui ont des
vnements.


Cours dinitiation Visual Basic.NET par Philippe Lasserre
Interface et implmentation.

Ce que je vois de l'objet, c'est son interface (le nom des proprits, mthodes..) exemple: la
mthode Clear fait partie de l'interface d'une ListBox. Par contre le code qui effectue la
mthode (celui qui efface physiquement toutes les lignes de la listeBox), ce code se nomme
implmentation, lui n'est ni visible ni accessible.


Visibilit.

Quand un objet est cr, il est visible et utilisable, uniquement dans la partie du programme
o il a t dfini.

Par exemple habituellement, je peux voir et modifier la couleur d'un bouton uniquement dans
le code de la fentre ou il est situ.

Pour les variables on parle de porte: la variable peut tre locale (Private) ou de porte
gnrale ('Public') visible partout.


En rsum :

En Visual Basic.net tout est objet.
Les Classes sont des types d'objet.

Pour crer un objet partir d'une Classe, il faut utiliser les mots cl Dim ...As New:
Dim Objet As New Class

Un objet possde :
- Des proprits.
- Des mthodes.
- Des vnements.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Principe et structure des programmes

1.1 Les vnements

Nous allons comprendre la programmation vnementielle : Comment fonctionne
Visual Basic :
- Ce que voit l'utilisateur
- Ce qu'a fait le dveloppeur pour arriver ce rsultat.


Principes de la programmation VB :

Le programmeur va dessiner linterface utilisateur (fentre, bouton, liste..), il va ensuite
uniquement crire les actions effectuer quand certains vnements se produisent
sur cette interface.

Cest Visual Basic qui va entirement soccuper de la gestion des vnements.


Exemple, le premier programme :

Il affiche 'Bonjour' quand on clique sur un bouton.
C'est pas original: le premier programme, dans tous les cours d'informatique, permet
d'afficher 'Bonjour' (ou 'Hello Word').

Que voit l'utilisateur du programme ?
Lutilisateur final, celui qui utilise le logiciel, voit une fentre avec un bouton, Si il
appuie sur ce bouton il voit safficher Bonjour.



Que se passe t-il dans le programme ?
Quand l'utilisateur clique sur le bouton cela dclenche automatiquement un vnement.
(Button1_Click), cet vnement contient du code qui affiche Bonjour.

Que doit faire le programmeur pour arriver ce rsultat ?
Pour atteindre ce rsultat, le programmeur va dessiner la fentre, le bouton, la zone
d'affichage du texte (un label) puis il va simplement indiquer dans l'vnement
Button_Click dafficher Bonjour.

Le fait de dterminer la procdure appeler ou de raliser lappel est
entirement pris en charge par VB.


En pratique, que fait le programmeur :

Le programmeur est en mode 'conception' (ou mode Design):
Il crit le programme :


Cours dinitiation Visual Basic.NET par Philippe Lasserre
A- Il dessine linterface utilisateur

(Ce que verra lutilisateur final, c'est l'interface utilisateur : une fentre avec des
boutons, des listes, du texte...) :



Il cre une fentre :
Menu Projet, Ajouter un formulaire Windows, cliquer sur Windows Form, une fentre
Form1 apparat.

Il ajoute un bouton, pour cela il utilise la Boite outils:



Il clique sur Boite Outils gauche, bouton Windows Forms, puis bouton Button, il clique
dans Form2, dplace le curseur sans lcher le bouton, puis lche le bouton de la souris : le
dessin d'un bouton apparat.

Pour lexemple, il ajoute un label.
Un label est un contrle qui permet dafficher un texte.

Comme pour le bouton il clique sur Boite Outils gauche, bouton Windows Forms, bouton
Label et met un contrle label sur la fentre.


B- Il va crire le code correspondant aux vnements :

Il double-clique sur le bouton qu'il a dessin :
Une fentre de conception de code souvre et il apparat :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
End Sub

Cela correspond la procdure (entre Sub et End Sub) vnement qui, quand le
Cours dinitiation Visual Basic.NET par Philippe Lasserre
programme fonctionne, est automatiquement dclenche quand lutilisateur du logiciel clique
sur le bouton1.

Une procdure est un ensemble de ligne de code qui commence par Sub et se termine par
End Sub (ou Function..End Function).


Comment indiquer dans cette procdure d'afficher "Bonjour" ?

Le label possde une proprit nomm '.text' qui contient le texte afficher.
Il faut taper le code qui modifie cette proprit '.text' , qui y met la chane de caractre
"Bonjour":

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Label1.Text = "Bonjour"
End Sub

Cela donne :



Voila votre premier programme est crit.

Comment excuter ce programme?
Il est possible de tester immdiatement le programme en mode dboguage, sans
quitter l'environnement de dveloppement:

Utiliser le menu Dboguer puis Dmarrer qui lance lexcution du programme.
On peut aussi taper sur F5 pour lancer le programme.
Ou plus simplement cliquer sur la flche:



C'est plus rapide, lancer l'excution avec le premier bouton, le second servant arrter
temporairement l'excution, le troisime terminer l'excution.

Quand le programme est totalement crit, termin, test, il est possible de le compiler et
ainsi de crer un fichier excutable (possdant une extension '.exe') qui fonctionne de
manire autonome en dehors de l'environnement de dveloppement.

C'est ce fichier excutable qui est fourni l'utilisateur.
Par opposition le code crit par le programmeur, compos d'instruction Visual Basic, se nomme
le code source.

En mode excution :
Lutilisateur voit bien une fentre avec un bouton, sil clique dessus, Bonjour saffiche.


Cours dinitiation Visual Basic.NET par Philippe Lasserre
En rsum :

Le programmeur utilise des outils de dessin pour construire une interface utilisateur : des
fentres avec des contrles dessus: menus, boutons, case cocher

VB, pour chaque feuilles ou pour chaque contrle, gnre une liste dvnements,
(Evnement li au chargement d'une fentre, vnement li au fait de cliquer sur un bouton,
vnement survenant quand on modifie un texte...)

Il suffit, dans la procdure vnement qui nous intresse, dcrire le code qui doit tre
effectu lorsque cet vnement survient.

Comme nous lavons vu le code sert a agir sur linterface (Afficher un texte, ouvrir
une fentre, remplir une liste, un tableau), mais il peut aussi effectuer des calculs,
valuer des conditions et prendre des dcisions, travailler en boucle de manire
rptitive et ainsi effectuer les taches ncessaires.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.2 Les instructions, les procdures

Qu'est ce qu'une instruction, une procdure?
Quelles diffrences entre les procdures :
- lies aux vnement ?
- non lies aux vnements ?
- les 'Sub', les 'Functions'.


Les instructions :

Une instruction est le texte permettant d'effectuer une opration, une dclaration, une
dfinition.

Dim A As Integer est une instruction (de dclaration)
A=1 est aussi une instruction qui effectue une opration.

C'est habituellement une 'ligne de code' 'excutable'.
Une instruction est excute lorsque le programme marche.

Plusieurs instructions peuvent se suivre sur une mme ligne, spares par ':'
Dim B As String : B="Bonjour"

Quand un programme tourne, les instructions sont effectues ligne par ligne.
Pour mettre des commentaires dans un programme, on le fait prcd de ':
'Ceci est un commentaire, ce n'est pas une instruction.

Le commentaire ne sera pas excut.


Les procdures :

Une procdure est un ensemble d'instructions, de lignes de code, un groupement
d'instructions bien dfinie effectuant une tache prcise.

Les procdures sont bien dlimites, il en existe 2 sortes :
- Les procdures Sub :
Elles dbutent par le mot Sub et se terminent par End Sub.
- Les procdures Function :
Elles dbutent par Function et se terminent par End Function.

Exemple :
Sub Maprocdure
A=1
End Sub

Exemple concret d'une procdure :
La procdure Button_Click du premier programme.(Celui qui affiche 'Bonjour'; elle ne contient
qu'une ligne de code.

Le mot Sub est prcd de Private, on verra plus loin ce que cela signifie.
Cours dinitiation Visual Basic.NET par Philippe Lasserre


Vous avez vu que lon peut dessiner l'interface, une fentre Form1 par exemple. En mode
conception, aprs avoir dessin linterface, on doit avoir accs aux procdures.

Si on double-clique sur la fentre, on a accs aux procdures vnement lies
cette fentre, si on double-clique sur un objet (bouton, case cocher on voit
apparatre les procdures vnement de ce contrle.



Quand on voit ces procdures, on peut y inclure du code.

Nous allons voir qu'il y a 2 types de procdures: les procdures lies aux vnements
et celles qui ne sont pas lies.


Procdures lies aux vnements :

Si on double clique sur le fond dune fentre,(Celle du programme 'Bonjour') on voit
apparatre les procdures lies cette fentre et aux contrles contenus dans cette fentre :
Public Class Form1
Inherits System.Windows.Forms.Form
Dim a As String

#Region " Code gnr par le Concepteur Windows Form "

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Label1.Text =
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Label1.Text = "Bonjour"
End Sub

End Class
Cours dinitiation Visual Basic.NET par Philippe Lasserre


Dtaillons, on voit 3 parties :

Public Class Form1
Ce nest pas une procdure mais la dfinition de la fentre.
La fentre fait partie des Windows.Forms.Form..
Ces lignes sont gnres automatiquement par VB.

Si vous droulez cette partie, en cliquant sur le petit +, vous pouvez lire le code permettant de
crer la fentre, les contrles

C'est gnr automatiquement par VB. (Le chapitre 8-2 explique en dtails le code gnr par
VB, mais c'est un complexe pour les dbutants pour le moment!!)

Private Sub Form1_Load
Chaque fentre a une procdure Form_Load qui est excute lorsque la fentre est charge,
on y met gnralement le code initialisant la feuille.
Il y a bien dautres procdures lies la fentre.

Droulez la liste box en haut gauche de la fentre de code, cliquer sur (Form1 events), si
vous drouler maintenant la liste droite vous aurez tous les vnements qui gnrent
une procdure :

Load Lors du chargement de la fentre
Unload Lors du dchargement de la fentre
Activated Lorsque la fentre devient active
GotFocus Lorsque la fentre prend le focus
Resize Lorsque la fentre est redimensionne


Private Sub Button1_Click
Cest la procdure lie au bouton et qui contient le code effectuer quand lutilisateur
clique sur le bouton.

Cest l que lon crit le code qui doit seffectuer lorsque lutilisateur clique sur le bouton.
De la mme manire que pour la fentre, vous pouvez voir dans la liste en haut, tous les
vnements lis aux boutons qui gnrent une procdure :

Click Lorsque l'utilisateur clique sur le bouton.
DoubleClick Lorsque l'utilisateur double-clique sur le bouton.
MouseDown se dclenche si appuie du bouton de la souris
MouseUp se dclenche si relchement du bouton de la souris


On voit donc que le formulaire (la fentre) et tous les contrles d'une application
ont chacun des procdures pour chaque vnement qui peut survenir.




Procdures non lies aux vnements :

Parfois on a besoin de code qui fait une tche particulire, qui est utilis plusieurs endroits et
qui nest pas lie un vnement.

On cre dans ce cas une procdure indpendante des vnements.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Le systme des procdures permet aussi de dcouper un problme complexe en
quelques fonctions moins complexes et indpendantes les unes des autres.

Ces procdures sont en fait des sous-programmes : si une ligne appelle une procdure, le
programme saute au dbut de la procdure, il effectue le code de la procdure puis revient
juste aprs la ligne qui avait appel la procdure et continue les lignes suivantes.

Exemple : plusieurs fois dans le programme jai besoin de calculer la surface dun cercle
partir de son rayon et de lafficher sur un label.

Plutt que de retaper dans chaque procdure le code, je peux crer une procdure 'Sub'
nomme AfficheSurfaceCercle.
Il suffit ensuite si ncessaire dappeler la procdure qui effectue le calcul et affiche le rsultat
puis revient effectuer le code situ aprs lappel.

Comment appeler une procdure ?
Par Call NomdeProcedure() ou par NomdeProcedure()

Call est facultatif.
Noter les guillemets aprs le nom de la procdure.


Procdures Sub :

Comment crer cette procdure Sub ?

Dans la fentre de code, tapez :
Sub AfficheSurfaceCercle puis validez. Vous obtenez :
Sub AfficheSurfaceCercle()
End sub

Le code de la procdure est compris entre le Sub et le End Sub.

Pour que le calcul se fasse, il faut fournir, (transmettre de la procdure qui appelle la
procdure Sub) la valeur du rayon.

Pour indiquer que la Sub doit recevoir un paramtre (un argument en VB) ajouter entre les
parenthses :
Sub AfficheSurfaceCercle( Rayon as Single)

Cela signifie quil existe une procdure qui reoit comme paramtre une variable de type
Single (Rel simple prcision) contenant le Rayon.

Ajoutez le code :
Label.text =(3.14*Rayon*Rayon).ToString

Que fait cette ligne ?
Elle fait le calcul (3.14*Rayon*Rayon), on transforme le rsultat en chane de caractres
(grce '.ToString') que lon met dans la proprit .text du label.

Cela affiche le rsultat. (On verra toute cette syntaxe en dtail ultrieurement)

On obtient:
Sub AfficheSurfaceCercle( Rayon as Single)
Label.text =(3.14*Rayon*Rayon).ToString
End sub

Comment appeler cette Sub?
Nimporte quelle procdure pourra appeler la Sub AfficheSurfaceCercle en envoyant la
Cours dinitiation Visual Basic.NET par Philippe Lasserre
valeur du rayon afin d'afficher la surface du cercle dans un label.

Exemple dappel pour un rayon de 12 :
AfficheSurfaceCercle(12)

Affiche dans le label : 452.16


Procdures Function :

Parfois on a besoin que la procdure retourne un rsultat, qu'elle donne en retour un
rsultat la procdure appelante. . Dans ce cas on utilise une Fonction.
Exemple: je veux crer une fonction qui je fournis un rayon et avoir en retour la surface d'un
cercle.

Comment crer cette Function?
Tapez Function SurfaceCercle puis validez, ajouter (Rayon As Single)
Tapez Return 3.14*Rayon*Rayon

Ce que la fonction doit retourner est aprs Return (ce que la procdure doit renvoyer la
procdure appelante.)

On obtient la fonction complte :
Function SurfaceCercle( Rayon as Single)
Return 3.14*Rayon*Rayon
End sub

Comment appeler cette Function?
Dans la procdure qui appelle, il faut une variable pour rcuprer la valeur retourner par la
Fonction:
S= NomdelaFonction()

Nimporte quelle procdure pourra appeler la fonction et obtenir le rsultat dans la variable S
par exemple pour un rayon de 12 :
Dim S As Single
S=SurfaceCercle(12)

On appelle la fonction SurfaceCercle en envoyant le paramtre '12', ce qui fait que l'entre
de la fonction, Rayon=12, le calcul est effectu et le rsultat du calcul (452.16) est retourn
grce Return. S rcupre ce rsultat.

Aprs l'appel de cette fonction, S est gal 452.16

Il est possible de spcifier le type retourn par la fonction :
Function SurfaceCercle( Rayon as Single) As Single

As Single en fin de ligne aprs () indique que la fonction retourne un Single.
Il faut donc que la variable qui reoit la valeur retourne (S dans notre exemple) soit aussi un
Single.

Il existe une autre manire de retourner le rsultat d'une fonction, reprenons l'exemple
prcdent, on peut crire:
Function SurfaceCercle( Rayon as Single)
SurfaceCercle= 3.14*Rayon*Rayon
Exit Function
End sub

Ici on utilise le nom de la fonction pour retourner le rsultat, avec un signe '='.
Utilisez plutt la mthode Return.
Cours dinitiation Visual Basic.NET par Philippe Lasserre

Exit Function permet aussi de sortir de la fonction, cela a le mme effet que Return sauf que
Return peut tre suivi d'un argument de retour (et pas Exit Function).


Module standrad :

La sub AfficheSurfaceCercle affiche le rsultat dans le formulaire ou elle est situe.

Par contre la fonction SurfaceCercle est dintrt gnral, nimporte quelle procdure doit
pouvoir lappeler, de plus elle nintervient pas sur les contrles des formulaires et nest donc
pas li aux formulaires.

On la placera donc dans un module standard qui est un module du programme qui ne
contient que du code. (Pas dinterface utilisateur)

Pour crer un module standard Menu Projet>Ajouter un module.
Y mettre les procdures.


Privat Public :

Avant le mot Sub ou Function on peut ajouter :
Private indiquant que la procdure est accessible uniquement dans le module.

Cest donc une procdure prive.

Les procdures lies aux vnements dune feuille sont prives par dfaut.

Public indiquant que la procdure est accessible partir de toute lapplication.
Sil ny a rien devant sub la procdure est public


Remarques :

- Pour sortir dune procdure Sub avant la fin utiliser Exit Sub (Exit Function pour une
fonction).
- Quand vous appelez une procdure, il faut toujours mettre des parenthses
mme s'il n'y a pas de paramtres.

FrmSplash.ShowDialog ()
Eventuellement on peut faire prcder l'appel du mot cl Call, mais ce n'est pas obligatoire.
Call FrmSplash.ShowDialog ()

Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.2.2 Les modules

Qu'est ce qu'un module?

On a vu qu'un programme est dcompos en modules, chaque module contenant des
procdures.

Chaque module correspond physiquement un fichier '.vb'.
Il existe :
- les modules des formulaires.
- les modules standard.
- les modules de 'Classe'.

Un programme Visual Basic comporte donc :

Les 'Modules de Formulaires' :
Ils contiennent :
- Le dessin des fentres de linterface utilisateur (ou formulaire) contenant les
contrles (boutons, listes, zones de texte, cases cocher)
- Le code, qui lui mme comprend :
- Les procdures lies aux vnements de la feuille (Button_Click...)
- Les procdures indpendantes des vnements mais qui interviennent sur
linterface. Ce sont des Sub() ou des Function().

Les modules standard.
Ils servent de stockage de procdures. Procdures "dintrt gnral".

Ces procdures sont des Sub() ou des Function() qui peuvent tre appeles partir de
nimporte quel endroit (pourvu qu'elles soient 'Public').

Ils peuvent aussi servir dclarer les objets ou dclarer les variables 'Public' qui seront
utilises donc accessibles par la totalit du programme.

les modules de Classe
Ils ont vocation fabriquer des objets, on verra cela plus loin.

Comment crer un module standard?
Faire Menu Projet>Ajouter un module. Donner un nom au module. C'est Module1.vb par
dfaut.

On remarque que le module est bien enregistr dans un fichier .vb
Un module standard ne contient que du code.

Comment ajouter une Sub dans un module Standard?
Taper Sub Calcul puis valider, cela donne:
Sub Calcul
End Sub


Exemple dutilisation de procdures et de modules :

Crons un petit programme exemple :
L'utilisateur saisit un nombre puis il clique sur un bouton, cela affiche le carr de ce nombre.



Il faut crer l'interface utilisateur:
Crer une fentre (Form1), y mettre un bouton (nomm Button1), une zone de texte (Text1)
permettant de saisir un nombre, un label (label1) permettant l'affichage du rsultat.
Cours dinitiation Visual Basic.NET par Philippe Lasserre

Crer un module standard (Module1) pour y mettre les procdures communes.

On observera uniquement l'agencement des procdures et non leur contenu.

Pour un programme d'une telle complexit, la structure aurait pu tre plus simple, mais
l'intrt de ce qui suit est didactique.

On dcompose le programme en taches plus simples :
En particulier une procdure sert au calcul, une sert l'affichage.

La procdure CalculCarr calcule le carr.

La procdure AfficheCarre affiche le rsultat dans le label.

La procdure Button1_Click (qui est dclenche par le Click de l'utilisateur) :
- Lit le chiffre tap par l'utilisateur dans la zone texte.
- Appelle la procdure CalculCarr pour calculer le carr.
- Appelle la procdure AfficheCarr pour afficher le rsultat.

Ou sont places les procdures?
La procdure Button1_Click est automatiquement dans le module du formulaire, Form1 (elle
est lie au contrle Bouton1) elle est cre automatiquement quand on cre le bouton.

La procdure AfficheCarr est cre dans le module du formulaire (Form1) car elle agit sur
le contrle Label1 de ce formulaire.

La procdure CalculCarr est cre dans le module Standard (Module1) car elle doit tre
appelable de n'importe o; elle est d'ailleurs 'Public' pour cette raison.

Elle n'agit sur aucune fentre, aucun contrle, elle est 'd'intrt gnral', c'est pour cela qu'on
la met dans un module standard.




Voyons le cheminement du programme :

Cours dinitiation Visual Basic.NET par Philippe Lasserre


Quand l'utilisateur clique sur le bouton la Sub Button1_Click dmarre.

Elle appelle CalculCarre.
CalculCarre calcul le carr et renvoie la valeur de ce carr.
La Sub Button1_Click appelle ensuite AfficheCarre qui affiche le rsultat.

On remarque que lon appelle la Function CalculCarre par Carre= CalculCarre(Valeur)
On envoie un paramtre Single, la fonction retourne dans la variable Carre, la valeur du carr.

Par contre la Sub AfficheCarre reoit un paramtre et ne retourne rien puisque c'est une Sub.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.D Lenvironnement de dveloppement de Visual Basic.NET

C'est l'IDE : Environnement de dveloppement intgr de Visual Studio de Microsoft.


Fentre Projet

Quand on lance VB.net, le logiciel prsente une fentre Projets qui permet :
- d'ouvrir un projet existant
ou
- de crer un nouveau projet



Pour un projet Visual Basic normal, il faudra choisir dans les projets Visual Basic 'Application
Windows'.



Puis il faut donner un nom au projet, modifier si ncessaire le chemin de l'emplacement du
projet qui est par dfaut 'C:\Documents and Settings\Nom Utilisateur\Mes documents\Visual
Studio Projects' enfin valider sur 'Ok'.


Dans un nouveau projet, crer une fentre

Pour ajouter un fentre (un formulaire) Menu Projet, Ajouter un formulaire Windows,
cliquez sur Windows Form, une fentre Form1 apparat ('Form2' pour la seconde feuille).

La zone de travail se trouve au centre de l'cran : C'est l'onglet Form1.vb[Design] ci-
dessous qui donne donc accs au dessin de la feuille (du formulaire), on peut ajouter des
contrles, modifier la taille de ces contrles
Cours dinitiation Visual Basic.NET par Philippe Lasserre



Voir les procdures

L'onglet Form1.vb donne accs aux procdures lies Form1.



La liste droulante de gauche donne la liste des objets, celle de droite, les vnements
correspondants.

Il est possible en double-cliquant dans le formulaire ou un contrle de se retrouver
directement dans le code de la procdure correspondant cet objet.


Ajouter des contrles la feuille

Ajouter un bouton par exemple :


Cliquez sur Boite Outils gauche, bouton Windows Forms,
puis sur Button, cliquez dans la Form, dplacez le curseur sans
lchez le bouton, puis lchez le bouton :

Un bouton apparat.




Cours dinitiation Visual Basic.NET par Philippe Lasserre
Modifier les proprits dun contrle ou dun formulaire

Quand un formulaire ou un contrle est
slectionn dans la fentre Design, ses
proprits sont accessibles dans la fentre
de proprits droite en bas :
Ici ce sont les proprits du contrle 'Button1'
(BackColor, Image, Texte)
(on peut les modifier directement.)



Voir tout les composants dun projet

Pour cela il faut utiliser L'explorateur de
solution en haut droite, il permet de voir et
d'avoir accs au contenu du projet :
Form2.vb qui est un formulaire (une fentre).
Module1.vb qui est un module standard.
Rfrences qui contient les espaces de nom.
AssemblyInfo: info ncessaire pour crer un
installateur.


Il suffit de cliquer sur la ligne module1.vb dans l'explorateur de solution pour voir apparatre le
module et son code dans la fentre principale.

Si on clique sur un espace de noms dans la liste Rfrences, cela ouvre la fentre Explorateur
d'objet qui montre l'arborescence des Classes et une description sommaire en bas de la
fentre.


Tester son logiciel

On peut tester le projet grce : lancer l'excution avec le premier bouton
(mode 'Run', le second servant arrter temporairement l'excution (mode 'Debug'), le
troisime terminer l'excution (Retour au mode 'Design' ou 'Conception').

Quand on est en arrt temporaire en mode 'Debug', la ligne courante, celle qui va tre
effectue, est en jaune :

For i=0 To 100
Label1.Text=i.ToString
Next i

Si on tape la touche F10 (excution pas pas), la ligne 'Label1.Text=i.ToString' est traite et
Cours dinitiation Visual Basic.NET par Philippe Lasserre
la position courante passe la ligne en dessous.

For i=0 To 100
Label1.Text=i.ToString
Next i


La sauvegarde du projet se fait comme dans tous les logiciels en cliquant sur l'icne du
paquet de disquettes.


Projet et solutions

Dans la terminologie VB, un projet est une application en cours de dveloppement.
Une solution regroupe un ou plusieurs projets (C'est un groupe de projets).


Fichiers, Chemins des sources

Si vous regardez les fichiers correspondants un projet VB, les extensions sont :
- .vbproj est le fichier de projet.
- .sln est le fichier solution.
- .vb sont tous les fichiers Visual Basic (Feuille module...)

Les sources sont par dfaut dans ' C:\Documents and Settings\NomUtilisateur\Mes
documents\Visual Studio Projects\nom projet'
Si on compile le projet l'excutable est dans un sous rpertoire \Bin


VB propose des aides

Quand on tape du code, VB affiche, quand il le peut, des aides :
-VB permet de choisir dans une liste une des proprits d'un objet.


Exemple
Si je cre une variable chane de caractres (Dim Chaine As String , on verra cela plus loin), et
que je tape le nom de la variable suivi d'un point: 'Chane.' la liste des mthodes possibles
s'affiche.

Chaine.


Quand je pointe dans la liste un des membres (proprit ou mthode) un carr jaune affiche la
dfinition de la fonction avec ses paramtres et une explication.


Cours dinitiation Visual Basic.NET par Philippe Lasserre

-VB aide retrouver les paramtres d'une fonction :
Si on tape le nom d'une fonction et ( , VB affiche les paramtres possibles dans un cadre.



En plus il affiche les diffrentes manires d'utiliser les paramtres (les diffrentes signatures),
on peut les faire dfiler avec les petites flches du cadre jaune.

-VB aide complter des mots.
Si je tape App puis sur le bouton 'A->', Vb affiche la liste des mots commenant pas App
Anchor
AnchorStyle
AppActivate
AppDomain


Il existe une abondante documentation

-VB donne accs l'aide sur un mot Cl. Si le curseur passe sur un mot cl, un
carr affiche la dfinition de la fonction. Si je clique sur un mot et que je tape F1 l'aide
s'ouvre et un long texte donne toutes les explications.

-VB donne accs l'aide sur les contrles. Si le curseur est sur un contrle et que
je tape F1 l'aide s'ouvre pour donner accs la description des diffrents membres de
cet objet.

-L'aide dynamique est constamment mise jour. Pour la voir, il faut cliquer sur
l'onglet 'Aide Dynamique' en bas droite (mme fentre que la fentre proprit). Elle
donne une liste de liens en rapport avec le contexte en cours.

Enfin il est toujours possible de rechercher des informations en passant par les 3
onglets de la fentre en haut droite.
1. Sommaire (plan, arbre de l'aide)
2. Index (liste des mots)
3. Recherche (rechercher un mot)

(Ici on vient de dcrire l'aide interne; on peut paramtrer le logiciel pour avoir l'aide
externe c'est dire que l'aide s'affiche dans une fentre externe l'ide, cela allge les
fentres et onglets de l'ide.)


Erreurs

S'il existe une erreur dans le code au cours de la conception, celle-ci est souligne en bleu
ondul. Un carr donne la cause de l'erreur si le curseur passe sur la zone ou se trouve
l'erreur.



Ici la proprit 'Text' a t mal orthographie.
Si je lance le programme en mode 'Run' et qu'il y a des erreurs, Vb me le signale et rpertorie
les erreurs dans la liste des taches en bas.


Mode dboguage (mode BREAK)
Cours dinitiation Visual Basic.NET par Philippe Lasserre

Une fois lancer l'excution (F5), puis stopper (Ctrl +Alt +Pause), on peut:
Voir la valeur d'une proprit d'un objet en la slectionnant avec la souris :



Il s'affiche un petit cadre donnant la valeur de la proprit d'un objet.

Voir la valeur d'une variable, simplement en positionnant le curseur sur cette variable.
Par dfaut on ne peut pas modifier le code en mode Break.

On peut l'autoriser en passant par les menus Outils/Options/Dboguage/Modifier&continuer,
activer 'M'autoriser modifier des fichiers vb durant le dboguage' mais la modification
n'est pas prise en compte sauf si on relance le programme !!!

F11 permet l'excution pas pas (y compris des procdures appeles)
F10 permet le pas pas (sans dtailler les procdures appeles)
Maj+F11 excute jusqu' la fin de la procdure en cours.

En cliquant sur le bouton droit de la souris, on peut afficher ou dfinir l'instruction
suivante, excuter jusqu'au curseur, voir la dfinition de ce qui est sous le curseur
(La dfinition, c'est l'instruction ou une variable t dclare par exemple).




On peut grce au menu dboguage puis Fentre ouvrir les fentres :
- Automatique, qui affiche les valeurs des variables de l'instruction en cours et des
instructions voisines.
- Immdiat o il est possible de taper des instructions ou expressions pour les excuter
ou voir des valeurs.
- Espions permettant d'afficher le contenu de variables ou d'expressions.
- Espions Express permet d'afficher la valeur de l'expression slectionne.
- Points d'arrts permet de modifier les proprits des points d'arrts. on peut mettre
un point d'arrt en cliquant dans la marge grise gauche : l'instruction correspondante
s'affiche en marron et l'excution s'arrtera sur cette ligne.
- Me affiche les donnes du module en cours.
- Variables locales affiche les variables locales.
- Modules affiche les dll ou .exe utiliss.
- Mmoire, Pile d'appels, Thread, Registres, Code Machine permettent d'tudier le
Cours dinitiation Visual Basic.NET par Philippe Lasserre
fonctionnement du programme un niveau plus spcialis et technique.

Il est possible de mettre des points d'arrt, des espions pour arrter l'excution et suivre la
valeur de certaines expressions. (Voir traiter les erreurs)

Voir la leon 4.20 concernant le dboguage pour plus d'informations.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.D Bis Lenvironnement de dveloppement SharpDevelop

C'est l'IDE: Environnement de dveloppement intgr GRATUIT, alternative la version
payante VisualStudio.


Oui, vous pouvez faire du Visual Basic.Net (ou du C#) gratuitement et lgalement.

C'est un logiciel libre en Open Source (GPL), fonctionne officiellement sous Windows XP et
2000 (Pas officiellement sous ME et 98).

Il parait que SharpDevelop fonctionne sous Windows 98 (non test, si vous avez essay, m'en
faire part), Millenium (test), NT 4, Windows 2000 (test) , XP (test). Alors que Visual Studio
ne fonctionne pas sur un PC non NT (exit Windows 98 et Millenium).


O le trouver et comment linstaller ?

Respectez l'ordre d'installation.

1/ Tlcharger et installer le FrameWork. (Imprativement en premier)
Installer Microsoft .NET version 1.1 Redistibutable package.

C'est le Framework (la couche logiciel entre l'application et le systme), il est tlchargeable
sur le Net.
(http://msdn.microsoft.com/netframework/downloads/updates/default.aspx)

2/ Tlcharger et installez le SDK
C'est le Kit de Dveloppement Microsoft .NET Framework: SDK version 1.1 en
franais.
Le SDK est disponible sur la mme page que le Framework. Attention, changez la langue et
tlchargez la version franaise.

3/ Tlcharger et installez SharpDevelop 1.0
Tlchargez SharpDevelop partir de http://www.icsharpcode.net/OpenSource/SD/
L'installer en excutant le fichier 'SharpDevelop_1.0.0.1550_Setup.exe'.

4/ Configurer SharpDevelop
Au premier dmarrage, crez une nouvelle base de compltion de code (option par
dfaut)

Allez dans le menu 'Outils' - 'Options'

Choisissez :
Style visuel : Choisir VBNET dans la liste.
Type de Fichier : cocher 'Fichier source VB.NET '(.vb) en plus.


Le Framework, le SDK et SharpDevelop suffisent pour faire des programmes.

On peut aussi installer:
Framework .NET v2.0 Beta (gratuit)
SDK .NET v2.0 Beta (gratuit)
MSDE, SQL SERVER version light (gratuit)
SDK Direct X, pour faire du graphisme ou du multimdia (gratuit)

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Quelques liens :
Petit didacticiel (en anglais)
http://dotnetjunkies.com/WebLog/MarkDiGiovanni/archive/2004/06/17/16847.aspx

WikiSharpDevelop (en anglais)
http://wiki.sharpdevelop.net/default.aspx/SharpDevelop

WikiDeboguage (en anglais)
http://wiki.sharpdevelop.net/default.aspx/SharpDevelop.DebuggingInSharpDevelop


Fentre Projet

Lancer SharpDevelop :


Au lancement de lapplication, on peut :
- ouvrir une solution existant: Bouton 'Ouvrir une solution'
- crer un nouveau projet (une nouvelle solution) :
Bouton 'Nouvelle solution'
ou
Menu 'fichier'-'Nouveau'-'Solution'
Cours dinitiation Visual Basic.NET par Philippe Lasserre


Slectionner la catgorie 'VBNET' et choisir le type d'application crer. (Dans le cas d'une
cration d'un projet Visual Basic, il faudra choisir dans les 'Modles': Application Windows.)

On remarque que #Develop permet aussi d'crire du C#, du C++.

Puis il faut donner un nom au projet (il n'y a pas de nom par dfaut), modifier si ncessaire le
chemin de l'emplacement du projet qui est par dfaut 'C:\Documents and
Settings\NomUtilisateur\Mes documents\SharpDevelop Projects' (cocher si ncessaire 'Crer le
rpertoire source') enfin valider sur le bouton 'Crer'. Une fentre 'MainForm' apparait.

Importer / exporter un projet de Visual studio en passant par le menu 'Fichier'.

Si l'on veut rajouter des fichiers notre projet il faut faire :
'Fichier'-'Nouveau'-'Fichier' et catgorie VB.















Cours dinitiation Visual Basic.NET par Philippe Lasserre
Quand on ouvre une solution (un projet), le logiciel se prsente ainsi :



Noter que le logiciel est francis (Si cela n'a pas t fait, le faire par le menu Tools,
Options).


Dans un nouveau projet, crer une fentre

Pour ajouter un fentre (un formulaire) Cliquer sur le premier bouton gauche Nouveau
Fichier (le toolTip dit 'Ouvrir un nouveau Buffer', ou utiliser le menu 'Fichier', 'Nouveau',
'Fichier'.

Dans la fentre qui s'ouvre, gauche, choisir 'VB.NET', droite 'formulaire' puis 'Ok', une
fentre Form1 apparat. La premire fentre qui s'ouvre quand on cre un projet se nomme
'MainForm', si on en ajoute une, elle se nomme 'Form1'.

La zone de travail se trouve au centre de l'cran: On voit les onglets MainForm, Form1.vb
pour chaque formulaire (fentre)
Cours dinitiation Visual Basic.NET par Philippe Lasserre


En bas les onglets 'Source' et 'Design' permettent de passer de l'affichage du code('Source')
la conception de l'interface utilisateur ('Design'), affichage de la fentre et de ses contrles
permettant de dessiner l'interface.


Voir les procdures

L'onglet 'Source' en bas donne accs aux procdures (au code) lies Form1.



La liste droulante de droite donne la liste des objets. Si on en choisit un, le pointeur va sur
les procdures lies cet objet.

Il est possible en double-cliquant dans le formulaire ou sur un contrle de se
retrouver directement dans le code de la procdure correspondant cet objet.
Si la procdure n'existe pas (ButtomClick par exemple), le fait de double-cliquer sur le bouton
la cr.
Pour crer les autres procdures vnements, utilisez le bouton qui est sur la fentre des
proprits droite, il fait apparatre la liste des vnements et permet de crer les procdures.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Ajouter des contrles la feuille

Ajoutons un bouton par exemple :


Cliquer sur l'onglet Outils gauche en bas , bouton 'Windows
Forms', puis sur Button,cliquer dans la MainForm, dplacer le
curseur sans lcher le bouton, puis lcher le bouton :

Un bouton apparat.
























Cours dinitiation Visual Basic.NET par Philippe Lasserre
Modifier les proprits dun contrle ou du formulaire

Quand une feuille ou un contrle est
slectionn dans la fentre Design, ses
proprits sont accessibles dans la fentre
de proprits droite en bas :
Ici ce sont les proprits du contrle 'Button1'
(BackColor, Image, Texte)

Un petit texte d'aide concernant la proprit en
cours apparat en bas.
(on peut modifier les proprits directement.)



Voir tout les composants dun projet

Pour cela il faut utiliser la fentre Projet et la fentre Class gauche, elles permettent de
voir et d'avoir accs au contenu du projet, aux:
- Rfrences qui contient les espaces de nom.
- Assembly: info ncessaire pour crer un installateur


Remarque relative aux fentres de lIDE

Pour faire apparatre une fentre qui a disparu (fentre projet par exemple), utilisez le
menu 'Affichage' puis 'projet'.

Quand la fentre est ancre (accroche aux bords), le fait de la dplacer avec sa barre de titre
la 'd ancre' et elle devient autonome.

Pour la 'r ancrer', il faut double-cliquer dans sa barre de titre.


Tester son logiciel

On peut compiler le projet avec le premier bouton ci-dessous. Lancer l'excution avec le
bouton flche verte, le rond droite (qui devient rouge pendant l'excution) sert
terminer l'excution.



La sauvegarde du projet se fait comme dans tous les logiciels en cliquant sur l'icne du
paquet de disquettes.



Cours dinitiation Visual Basic.NET par Philippe Lasserre
Projet et solutions

Dans la terminologie VB, un projet est une application en cours de dveloppement.
Une solution regroupe un ou plusieurs projets (C'est un groupe de projets).

#Sharp permet de crer, douvrir :
- des fichiers
- des projets/solutions.


Fichiers, Chemins des sources

Si vous regardez les fichiers correspondants un projet VB, les extensions sont :
.prjx est le fichier de projet.
.cmbw est le fichier solution.
.vb sont tous les fichiers Visual Basic (Feuille module...)
.ressources pour les ressources.

Les sources sont par dfaut dans 'C:\Documents and Settings\NomUtilisateur\Mes
documents\SharpDevelop Projects'

Si on compile le projet l'excutable est dans un sous rpertoire \Bin\Debug ou \Bin\Release

Si vous avez plusieurs version du Framework sur votre machine (version 1.0, version 1.1 voire
version 2.0 Beta), il vous est possible de choisir le compilateur dans les options du projet.
Visual Studio 2003 version 1.1 du framework.
Visual Studio 2005 version 2.0 du framework
Il est possible d'importer ou d'exporter au format VisualBasic de Microsoft.


SharpDevelop propose des aides

La fentre d'aide droite donne accs aux aides :
- de #develop en anglais, non jour!!
- du Framework
- de zipLib

Si vous avez install le SDK (SDK Framework .Net et/ou SDK Direct X) , vous avez accs
laide (partie en haut droite de lcran) , et donc galement lintellisense, qui affiche les
proprits, les mthodes des objets, les paramtres des fonctions, des types, , des
diffrents objets.



Ici par exemple on a tap MessageBox., la liste des membres (Equals, Show...) est affiche.


Dboguage avec le dbogueur du SDK de Microsoft

Ce qui est nomm point d'arrt dans SharpDevelop est en fait un signet dans le texte.
Pour dboguer il faut installer le dboguer fournit gratuitement avec le SDK que vous avez
install.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Le dbogueur est un programme autonome, indpendant de ShapDevelop.

Si vous avez install le Framework, le SDK et SharpDevelop, il se trouve donc dans le
rpertoire :
C:\Program Files\Microsoft.NET\SDK\v1.1\GuiDebug

Si vous avez install Visual Studio.Net, Il est dans le rpertoire :
C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\GuiDebug

et le dbogueur en lui mme se nomme : DbgCLR.exe

Pour l'ouvrir rapidement partir de SharpDevelop, il faut ajouter une ligne 'Debug'
dans le menu 'Outils' :
Menu 'Outils', sous menu 'Option', et cliquer la ligne outils (outils externes) de la liste
droite.



Cliquer sur le bouton 'Ajouter'
Titre:debug

Commande :
C:\Program Files\Microsoft.NET\SDK\v1.1\GuiDebug\DbgCLR.exe
ou
C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\GuiDebug\DbgCLR.exe

Puis cliquer sur "OK"

Maintenant vous avez une ligne 'Debug' dans le menu 'Outils' :
Cliquer dessus, cela ouvre le Dbogueur 'Microsoft'

Pour charger le programme dboguer :
Il faut 'charger' le fichier excutable .EXE
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Menu "Dbuguer", sous menu "Programmes dbuguer", slectionner le programme
".Exe" (rpertoire 'bin')
Il faut 'charger' les sources :
Menu "Fichier", charger tous les fichiers .VB du projet
Enregistrer le fichier debugger solution (.dln) en passant par le menu 'fichiers' puis 'Fermer la
solution'.

Cela permet, la fois suivante, d'ouvrir le fichier solution (.dln)
(et non plus la totalit des fichiers sources et exe , ce qui est plus long).

Pour lancer le dboguage :
touche F5 ou la flche droite.



Une fois l'excution lance :
On peut la stopper (Ctrl +Alt +Pause).
Ajouter des points d'arrt.

Grce des points d'arrt (pour dfinir un point d'arrt en mode de conception, cliquez en
face d'une ligne dans la marge grise, cela fait apparatre un rond marron.

Quand le code est excut, il s'arrte sur cette ligne).
For i= 1 To 6
Tableau(i)=i*i
Next i
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Voir la valeur d'une proprit d'un objet en la slectionnant avec la souris :


Il s'affiche un petit cadre donnant la valeur de la proprit d'un objet.

Voir la valeur d'une variable, simplement en positionnant le curseur sur cette variable.

F11 permet l'excution pas pas (y compris des procdures appeles)
F10 permet le pas pas (sans dtailler les procdures appeles)
Maj+F11 excute jusqu' la fin de la procdure en cours.

En cliquant sur le bouton droit de la souris, on peut
- Excuter jusqu'au curseur
- Insrer un point d'arrt.

On peut grce au menu 'Dboguage' puis 'Fentre' ouvrir les fentres :
Automatique, qui affiche les valeurs des variables de l'instruction en cours et des
instructions voisines.

Immdiat o il est possible de taper des instructions ou expressions pour les excuter ou voir
des valeurs.

Taper "?I" (c'est l'quivalent de "Print I" qui veut dire: crire la valeur de la variable I) puis
valider, cela affiche la valeur de la variable I.

Autre exemple, pour voir le contenu d'un tableau A(), tapez sur une seule ligne:
For i=0 to 10: ?i: Next i

Enfin, il est possible de modifier la valeur d'une variable: Tapez" I=10" puis validez, cela
modifie la valeur de la variable.

En bas gauche on a aussi les fentres :
Espions permettant d'afficher le contenu de variables ou d'expressions.
Espions Express permet d'afficher la valeur de l'expression slectionne.
Variables locales affiche les variables locales.

Attention : comme dans Visual Studio, il n'est pas possible de modifier les
fichiers sources partir du moment o vous avez dmarr le dboguage.


Conclusion

Programme permettant de faire du VB.net gratuitement (rapport qualit/prix infiniment lev).

CONCLUSION D'UN UTILISATEUR:
SharpDevelop est un IDE agrable utiliser, pour le dveloppement des programmes
.NET, en mode WYSIWYG.

Il est possible datteindre un niveau de qualit quivalent Visual Studio ou Borland
C# Builder en faisant une installation complte. Trs ouvert, on peut lui rajouter des
plugins. Certains programmes externes peuvent tre utiliss galement avec Visual
Studio ou Borland C# Builder.

SharpDevelop est en perptuelle volution.
Un forum permet de dposer le descriptif des erreurs rencontres mais galement de
vos demandes de modifications, si vous pensez une volution qu'il serait bien que
Cours dinitiation Visual Basic.NET par Philippe Lasserre
SharpDevelop possde.
En plus vous pouvez rcuprer le code source et pouvez donc modifier loisir lIDE.

Ancien utilisateur de Visual basic 5.0 Pro, Visual Studio 6.0 entreprise (Visual Basic,
Visual InterDev et Visual C++) et de Visual Studio 2003 .Net architecte, je ne me sens
pas ltroit avec SharpDevelop.

Bien sur, pour les dbutants, il manque les assistants de Visual Studio (Crystal report,
ADO .NET, ). Le problme avec les assistants est quune fois quon pratique un peu, ils
deviennent vite une gne, et souvent il faut repasser derrire eux, pour enlever le
superflu de code quils ont crits (souvent ils noptimisent pas le code).

Il manque galement la partie UML de Visual Studio Architecte, mais l on attaque le
haut du panier des dveloppeurs.

Par contre SharpDevelop apporte en plus :
- Aide la gnration automatique des MessageBox
- Aide la conversion C# vers VB.NET et de VB.NET vers C#
- Aide la gnration dexpression rgulire.
- Importer / exporter un projet de Visual studio.
- Support du multi langage.

Il fournit les logiciels:
- NDoc : permet de faire des fichiers daide compile au format MSDN, partir de
lignes commentes dans le code.
- NUnits : permet de faire des tests unitaires (!).
- SharpQuery : Permet de se connecter aux bases de donnes.


Installateur

Comment crer un installateur avec SharpDevelop ? Merci de votre exprience.

Merci Fabrice SAGE pour son aide.
Merci Hubert WENNEKES, CNRS Institut de Biologie de Lille pour son aide.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Langage Visual Basic

1.3 Introduction au langage

Nous allons tudier :

Le langage Visual Basic.Net qui est utilis dans les procdures.

Comme nous lavons vu, le langage Visual Basic sert :
- agir sur linterface (Afficher un texte, ouvrir une fentre, remplir une liste, un
tableau, poser une question).
Button1.Text="Bonjour"

- effectuer des calculs, des affectations en utilisant des variables.
B=A+1

- faire des tests avec des structures de dcision: valuer des conditions des
comparaisons et prendre des dcisions.
If A=1 Then...End If

- travailler en boucle pour effectuer une tache rptitive.
For I=0 To 100... Next I

Tout le travail du programmeur est l.


Dans VB.Net nous avons notre disposition :

Les Classes venant du FrameWork
On travaille sur des objets en utilisant leurs proprits, leurs mthodes.

Il existe des centaines de 'Classes' : les plus utilises sont les classes String (permettant de
travailler sur des chanes de caractres), Maths (permettant d'utiliser des fonctions
mathmatiques), Forms (permettant l'usage de formulaire, de fentre), Controls (donnant
accs aux contrles: bouton, case cocher, liste...)

Elles sont communes tous les langages utilisant le FrameWork.

Exemple d'utilisation de la Class TextBox (contrle contenant du texte) :
TextBox1.Text="Hello" Affiche "Hello" dans le textbox.

Les instructions du Common Langage Runtime (Un autre composant de VS)
Il s'agit d'instruction, de mot cl.

Exemple :
A = Mid(MaString, 1, 3) 'Mid retourne une partie de la chane de caractres.

Les Classes de compatibilit VB6.
Elles ne dpayseront pas ceux qui viennent des versions antrieures de VB car elles reprennent
la syntaxe utilise dans VB6. Ajoute VB.Net des fonctions VB6.

Loutil d'import automatique de VB6 vers VB.Net en met beaucoup dans le code. Il faut mon
avis viter de les utiliser. Ce cours 'pur' VB.Net n'en contient pas ou peu.

Pour le moment cela peut paratre un peu compliqu, mais ne vous inquitez pas, cela va
devenir clair.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.4 Les Algorithmes

Pour crire un programme, aller du problme rsoudre un programme excutable, il
faut passer par les phases suivantes :

Analyse du cahier des charges
Il doit tre clair, exhaustif, structur.

Analyse gnrale du problme
Il existe des mthodes pour professionnelles (MERISE, JACKSON..), nous utiliserons plutt
l'analyse fonctionnelle: Le problme global est dcoup en sous problmes nomms
fonctions. Chaque fonction ne contient plus qu'une partie du problme. Si une fonction est
encore trop complexe, on itre le processus par de nouvelle fonction un niveau plus bas.

Analyse dtaille
Chaque fonction est mise en forme, la logique de la fonction est crite dans un pseudo langage
(ou pseudo code) dtaillant le fonctionnement de la fonction.

Ce pseudo code est universel, il comporte des mots du langage courant ainsi que des mots
relatifs aux structures de contrle retrouves dans tous les langages de programmation.

Codage
Traduction du pseudo code dans le langage que vous utilisez.

Test
Car il faut que le programme soit valide.


Exemple simpliste :
Analyse du cahier des charges
Cration d'un programme affichant les tables de multiplication, d'addition, de soustraction.

Analyse gnrale du problme
Dcoupons le programme en diverses fonctions :
Il faudra crer une fonction 'Choix de l'opration', une fonction 'Choix de la table', une fonction
'TabledeMultiplication', une fonction 'TabledAddition', une fonction Affiche'...

Analyse dtaille
Dtaillons la fonction 'TabledeMultiplication'
Elle devra traiter successivement (pour la table des 7 par exemple) :
1X7
2X7
3X7...

Voici l'algorithme en pseudo code.
Dbut
Pour i allant de 1 10
Ecrire (i*7)
Fin Pour
Fin

Codage.
Traduction du pseudo code en Visual Basic.

Sub MultiplicationPar7
Dim i As Integer
For i=1 to 10
Call Affiche(i*7)
next i
Cours dinitiation Visual Basic.NET par Philippe Lasserre
End Sub

Test
Ici il suffit de lancer le programme pour voir si il marche bien..


L'algorithme dtaille, en pseudo code, le fonctionnement d'une fonction et en
dcrit la logique.

Il faut avouer que dans la pratique, la phase d'analyse dtaille avec criture du
pseudo code se passe dans la tte et que bien souvent le code VB est crit
directement, mais ce qui suit est DIDACTIQUE et comme on l'a dit, commun tous
les langages.


On verra plus loin dans le cours, qu cot de la mthode fonctionnelle existe une autre
mthode utilisant des classes dobjet.


Etudions cette logique valable pour tous les langages de programmation :


Structure squentielle dun programme :

Au sein d'une procdure, la structure dun programme est gnralement
squentielle.

Le code dune procdure est fait dune succession de lignes (ou instructions) qui seront lues
et traites les unes aprs les autres.

Instruction 1
Instruction 2
Instruction 3


En VB on peut mettre plusieurs instructions sur la mme ligne spares par ":"
Instruction1 : Instruction2


Les variables :

Elle contiennent les informations ncessaire au droulement du programme (C'est le mme
sens qu'en mathmatique)

Chaque variable a un nom (identifiant) et un type. Ce dernier indique la nature de
l'information que l'on souhaite mettre dans la variable: Entier, rel, boolen, caractre, chane
de caractres, objet.

Exemple: la variable 'Total' contiendra un rel dans un programme de comptabilit.


Affectation (ou Assignation) :

C'est une instruction consistant donner une valeur une variable.
En langage algorithmique on l'indique par '<-'
X <- 2 veut dire: donner la valeur X la valeur 2
Z <- X+1 veut dire: donner la variable Z la valeur de la variable X laquelle on ajoute 1
(Z prend la valeur 2+1 =3
Cours dinitiation Visual Basic.NET par Philippe Lasserre

Cela revient valuer l'expression de droite et en mettre la valeur dans la variable
de gauche.

En VB le signe d'affectation est '=' on crit donc :
Z=X+1

Attention ce n'est pas une galit mais une affectation.


Les choix :

Le programme doit pouvoir choisir parmi deux ou plusieurs possibilits en fonction dune
condition :
Si Condition Alors
Action 1
Sinon
Action 2
Fin Si
Si Condition est vraie Action 1 est effectu, sinon Action 2 est effectu.

Parfois il ny a pas de seconde branche :
Si Condition Alors
Action 1
Fin Si

Ou sur une seule ligne :
Si Condition Alors Action 1

Il peut y avoir plusieurs conditions imbriques :
Si Condition 1 Alors
Si Condition 2 Alors
Action 1
Sinon
Action 2
Fin Si
Sinon
Action 3
Fin Si

Noter bien le retrait des lignes de la seconde condition afin de bien visualiser la logique du
programme :

Action 2 est effectu si la Condition 1 est remplie et la Condition 2 nest pas remplie.

En VB cela correspond linstruction IF THEN :
If Condition 1 Then
Action 1
Else
Action 2
End If



Dcider entre :

Il est parfois ncessaire deffectuer un choix parmi plusieurs solutions :
Dcider Entre
Quand Condition 1 Alors
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Action 1
FinQuand

Quand Condition 2 Alors
Action 2
FinQuand
..
..
Autrement
Action 4
FinAutrement
FinDcider

Si la condition 1 est remplie Action 1 est effectue puis le programme saute aprs FinDcider.

Si la condition 1 nest pas remplie, on teste la condition 2
Si aucune condition nest remplie on saute Autrement, on effectue Action 4.

On pourrait aussi parler de slection :
Slectionner.
Le cas : condition 1
Action 1
Le cas : condition 2
Action 2
..
Les autres cas
FinSlectionner

En VB cela correspond :
Select Case Valeur
Case condition 1
Action 1
Case condition 2
Action 2
..
Case Else
Action 4
End Select

Si Valeur=Condition 1 Action 1 est effectue, si Valeur=Condition 2 Action 2 est effectue...


Pour :

Permet de rpter une squence un nombre de fois dtermin :
Le cas le plus classique est :
Pour I variant de 0 N Rpter
Action
FinRpter

I prend la valeur 0, 'Action' est effectu,
Puis I prend la valeur 1, Action est effectu,
Puis I prend la valeur 2..
Cela jusqu' N

La boucle tourne N+1 fois (car ici on commence 0)

Cela se nomme une itration, quel en est lintrt ?

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Au lieu de faire
Afficher (1*7)
Afficher (2*7)
Afficher (3*7)
Afficher (4*7)
...

On remarque qu'un lment prend successivement la valeur 1, 2, 3
Une boucle peut faire l'itration :
Pour i allant de 1 10 Rpter
Affiche (i*7)
Fin rpter

La variable dite 'de boucle' prend bien les valeurs 1 puis 2 puis 3..., elle est utilise dans le
corps de la boucle.

En VB:
For i=0 To N
...
Next i

On peut aussi boucler en parcourant tous les lments dune collection.
(Une collection est une liste d'objet, liste de taille variable en fonction de ce qu'on ajoute ou
enlve.)
Pour chaque lment de la liste
Action
Fin Pour

En VB :
For each In

Next


Tant que :

Permet de faire une boucle sans connatre le nombre ditration lavance.
Tant Que Condition
Action
Fin Tant Que

Laction qui est dans la boucle doit modifier la condition afin qua un moment Tant que ne soit
pas vrifi et que lon sorte de la boucle. Sinon la boucle tourne sans fin.

Pour plus cadrer avec la ralit :
Faire tant que condition
Action
Boucler
En VB :
Do while Condition
Action
Loop

Il existe une boucle quivalente :
Rpter
Action
Jusqu Condition

En VB :
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Do
Action
Loop Until Condition


Sous programme ou procdure :

On a dj vu cette notion.
Quand on appelle une procdure, le logiciel saute la procdure, il effectue celle-ci puis
revient effectuer ce qui suit lappel.

Et VB les sous-programmes (ou procdures) sont des Sub ou des Function.
Pour appeler une procdure on utilise Call NomProcedure() ou NomProcedure()

Instruction 1
Instruction 2
Call
MaProcdure()3
Instruction 4
Instruction 5

Sub MaProcdure
Instruction 10
Instruction 11
End Sub

Le programme effectuera les instructions 1, 2, 3, 10, 11, 4, 5.

Une opration complexe peut tre dcoupe en plusieurs procdures ou sous-programme plus
petits et plus simples qui seront appels.

On peut fournir aux procdures des paramtres, ce sont des variables qui seront
transmissent la procdure.


Exemple, cration d'une Procdure 'MaProcdure' recevant 2 paramtres :
Sub MaProcdure(paramtre1, paramtre2)
..
End Sub


Exemple d'appel de la procdure 'Maprocdure' en envoyant 2 paramtres :
Call MaProcdure(premierparamtre, secondparamtre)


Exemple, si j'cris Call MaProcdure(2,3) dans la procdure MaProcdure paramtre1=2 et
paramtre2=3.

Il est ncessaire de dfinir le type des paramtres :
Sub MaProcdure(paramtre1 As Integer, paramtre2 As Integer) indique que la procdure
attend 2 entiers.
Il y a 2 manires denvoyer des paramtres :
- Par valeur : (By Val) cest la valeur, le contenu de la variable qui est envoy.
- Par rfrence :(By Ref) cest ladresse (le lieu physique ou se trouve la variable) qui
est envoy. Si la Sub modifie la variable, cette modification sera visible dans la
procdure appelante aprs le retour.

Parfois on a besoin que la procdure appele retourne une valeur dans ce cas il faut crer une
fonction :
Function MaFonction As Integer
..
End Function

Pour appeler la fonction :
Cours dinitiation Visual Basic.NET par Philippe Lasserre
ValeurRetourne=MaFonction()


Les tableaux :

Un tableau de variables permet de stocker plusieurs variables de mme type sous un mme
nom de variable, chaque lment tant repr par un index ou indice.
C'est une suite finie d'lments.

Soit un tableau A de 4 lments :

3
12
4
0

Pour accder un lment il faut utiliser l'indice de cet lment.

L'lment d'index 0 se nomme A[0] et contient la valeur 3.
L'lment d'index 1 se nomme A[1] et contient la valeur 12.

Quand on cre un tableau, il a un nombre d'lment bien dfini : 4 dans notre exemple
d'index 0 3.

Pour donner une valeur a un des lments, on affecte la valeur l'lment.
A[2] <- 4

Pour lire une valeur dans un tableau et l'affecter une variable x:
x <- A[2]

Traduction en VB :
A(2)=4
x = A(2)

Pour parcourir tous le lments d'un tableau on utilise une boucle :


Exemple, afficher tous les lments du tableau tab qui contient n lments.
Dbut
Pour i de 0 n-1 Rpter
crire(tab[i])
Fin Rpter
Fin

Il existe des tableaux multidimensionnels :

1,1 1,2 1,3
2,1 2,2 2,3
3,1 3,2 3,3

B[2,1] dsigne l'lment rouge (ligne 2, colonne 1).


Notion de Collections :

Une collection permet de stocker plusieurs variables ou objets, chaque lment tant repr
par un index ou indice.
Soit la collection Col, au dpart elle est vide.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
J'ajoute des lment (ou items) cette collection.
Col.Ajouter ("Toto")

Voici la collection :

Toto

La collection a maintenant 1 lment.


Col.Ajouter("Lulu")
Col.Ajouter("Titi")

Toto
Lulu
Titi

La collection a 3 lments maintenant.


Col.Retirer(2) enlve l'lment numro 2

Toto
Titi

La collection n'a plus que 2 lments maintenant.


On voit que le nombre d'lment n'est pas connu l'avance, il varie en fonction des lments
ajouts (ou retirs). Un lment est repr par un indice.

En VB :
Col.Add Ajoute un lment
Col.Remove Enlve une lment


Utilisation de Flag :

Un Flag (ou drapeau) est une variable utilise pour enregistrer un tat, la valeur de cet tat
servant dclencher ou non des actions. C'est une manire de retenir qu'un vnement s'est
produit.
Si le drapeau est abaiss, les voitures roulent


Exemple, utiliser un Flag pour sortir d'une boucle :
On utilise FlagSortir.
FlagSortir=Faux
Tant que FlagSortir=Faux
Si on doit sortir de la boucle, on met la valeur de FlagSortir Vrai
Boucler

En VB :
FlagSortir=Faux
Do while FlagSortir=Vrai
Si on doit sortir de la boucle, on met la valeur de FlagSortir Vrai
Loop

Tant que FlagSortir =Faux la boucle tourne.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.5 LAffectation

C'est l'instruction la plus utilise en programmation.
On peut aussi utiliser le terme 'Assignation' la place de l'affectation.
NomdeVariable=Expression est une affectation.

Elle transfre le rsultat de l'expression situe droite du signe 'gal' dans la variable (ou la
proprit) gauche du signe gal.


Exemple :

A=B est une affectation (ou assignation.)
A=B affecte la valeur de la variable B la variable A, la valeur de B est mise dans A.



Si
A=0
B=12
A=B entrane que A=12

Si ncessaire l'expression, (l'lment) droite du signe = est value, calcule avant
d'tre affecte la premire variable.

Si
A=0
B=12
A=B+2 entrane A=14

Laffectation permet donc de faire des calculs :
Si NombrdHeure=100 et TauxHoraire=8

Paye= NombredHeure*Tauxhoraire

Paye prend la valeur 800

Attention dans le cas de l'affectation "=" ne veut donc pas dire gal.

A=A+1 est possible

Si A=1
A=A+1 entrane A=2

On verra qu'il existe des variables numriques ('Integer' 'Single') et alphanumriques
(chane de caractres ou 'String'), l'affectation peut tre utilise sur tous les types de
variables.

Le second membre de l'affectation peut contenir des constantes, des variables, des calculs
dans le cas de variables numriques.
A=B+2+C+D

On ne peut pas affecter une variable d'un type une variable d'un autre type :
Si A est numrique et B est alphanumrique (chane de caractres) A=B n'est pas accept.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Ecriture compacte :
A=A+1 peut scrire de manire plus compacte : A += 1
A=A*2 peut scrire de manire plus compacte : A *= 2
A=A&"Lulu" pour une variable chane de caractre peut scrire de manire plus compacte : A
&= "Lulu"

L'affection marche pour les objets, leurs proprits..
Bouton1.BackColor= Bouton2.BackColor

Signifie que l'on donne au Bouton1 la mme couleur de fond que celle du bouton2, on affecte
la valeur BackColor du Bouton2 au Bouton1.

Attention le signe '=' signifie par contre 'gal' quand il s'agit d'valuer une condition,
par exemple dans une instruction If Then (Si Alors) :
If A=B then 'signifie: Si A gal B alors...


Permutation de variables :

C'est un petit exercice :
J'ai 2 variables A et B contenant chacune une valeur.

Je voudrais mettre dans A ce qui est dans B et dans B ce qui est dans A.

Si je fais
A=B
B=A

Les 2 variables prennent la valeur de B!!!
Comment faire pour permuter ?

Et bien il faut utiliser une variable intermdiaire C qui servira temporairement conserver le
contenu de la variable A :
C=A
A=B
B=C

Voila, on a bien permut.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.6 Les Variables

Cest le mme sens quen mathmatique.
Sauf quen VB la variable est un objet.

Une variable est un objet qui sert stocker (qui contient) un nombre, du texte (chane de
caractres), une date, un objet
Une variable a un nom et un type qui indique ce que lon peut y mettre.

Si STR est une variable de type chane de caractre : je peux y mettre une chane de caractre
( TOTO par exemple)


STR="TOTO"

Si Age est une variable de type numrique, je peux y stocker un nombre (45,2 par exemple).
Age=45,2


Nom des variables :

On peut utiliser dans les noms de variable des majuscules ou des minuscules mais pour VB
il ny a pas de diffrence.


Exemple :
On ne peut pas dclarer une variable VB et une variable vb.
Si on dclare une variable nomme 'VB' et si ultrieurement on tape 'Vb', le logiciel le
transforme automatiquement en 'VB'.

On peut mettre des chiffres et des lettres dans les noms de variable mais pas de
chiffres en premier caractre.
2A nest pas un nom valide
Nom2 lest.

Certains caractres de ponctuation (..) ne peuvent pas tre utiliss, d'autres
"_" et "" sont permis :
Nom_Utilisateur est valide.
L'espace n'est pas permis.

Bien sur, les mots cl de VB ne peuvent pas tre utiliss, on ne peut pas nommer
une variable Form ou BackColor

Il est conseill de donner des noms explicites qui rappellent ce que contient la variable :
Nom_Utilisateur est explicite, pas NU.

Parfois on indique en dbut de nom, par une lettre, le type de variable ou sa porte (la zone
de code o la variable existe).
s_Nom 'Le s indique qu'il s'agit d'une variable String (Chane de caractres)
iIndex 'Le i indique qu'il s'agit d'une variable Integer (Entier)
gNomUtilisateur 'g indique que la variable est globale

Il est possible de 'forcer' le type de la variable en ajoutant un caractre spcial la fin du
nom de la variable.
Dim c$ = "aa" ' $ force c a tre une variable String.

De mme % force les Integer, & les long
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Cette notation est moins utilise.

Voir en annexe, en bas de page des recommandations supplmentaires.


Dclaration :

Avant d'utiliser une variable, il faut la dclarer, la crer, pour cela on utilise
l'instruction Dim :
Dim A As Integer 'Dclare une variable nommer 'A' de type Entier

Avant la ligne, A n'existait pas, aprs le DIM, A existe et contient 0.
Il faut aussi parfois l'initialiser, c'est dire lui donner une valeur de dpart :
A=3
On peut dclarer et initialiser en mme temps :
Dim A As Integer =3


En pratique :

Les variables aprs avoir t dclares, vont servir stocker des valeurs, effectuer
des calculs, on peut afficher ensuite leur valeur.


Exemple simpliste d'utilisation de variables :
Dim A As Integer 'Cration d'une variable A
Dim B As Integer 'Cration d'une variable B
Dim Total As Integer 'Cration d'une variable total
A=3 'Mettre '3' dans A
B=2 'Mettre '2' dans B
Total=A+B 'Mettre dans la variable 'Total' la valeur de A et de B
LabelTotal.Text= Total.ToString 'Afficher le total dans un label (un label est une zone
permettant d'afficher du texte), pour cela transformer 'Total' qui est un entier en chane de
caractres puis le mettre dans un label.

Noter bien la diffrence entre :
Dim Total As Integer
Total=123 'Total est une variable numrique (Integer ou Entier) contenant le nombre 123

Et

Dim Total2 As String
Total2="123" 'Total2 est une variable string contenant la chane de caractre "123" c'est
dire les caractres "1" , "2" et "3"

On peut afficher les chanes de caractres, pas les variables numriques. On fait des
calculs avec les variables numriques.

Il faudra donc parfois convertir le contenu d'une variable dans un autre type, (convertir une
variable numrique en String pour l'afficher par exemple) on apprendra cela plus loin.

L'exemple simpliste juste au dessus en montre un exemple, il faut convertir Total qui est un
entier en string pour l'afficher.

Concernant les variables numriques :

En mathmatique, les entiers ou les rels peuvent tre infiniment grands, en informatique les
entiers ou les rels sont stocks sur un certains nombre d'octets.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Ce qui fait qu'il existe une limite suprieure dans les nombres que l'on peut stocker.


Exemple un Entier 'Integer' est stock sur 32 bits soit 4 octets, on conoit donc qu'il y a une
valeur maximum (c'est 2147483647)

Si on dpasse cette valeur VB le signale en dclenche une erreur.

Les variables numriques peuvent tre signes (accepter les valeurs ngatives ou positives)
ou non signes (Comme le Type 'Byte' qui ne contient que des valeurs positives)


Il existe diffrents types de variables :

Nom : Contient :
Boolean Contient une valeur Boolenne : True ou False.
Byte Contient les nombres entiers de 0 255 (sans signe)
Short Entier sur 16 bits (-32768 32768)
Integer Entier sur 32 bits (-2147483648 2147483647)
Long Entier sur 64 bits (-9223372036854775808 9223372036854775807)
Single Nombre rel en virgule flottante (-1,401298 *10^-45 1,401298 10^45)
Double Nombre rel en virgule flottante double prcision. (..Puissance 324)
Decimal Nombre rel en virgule fixe grande prcision
Char 1 caractre alphanumrique
String Chane de caractre de longueur variable(jusqu'a 2 milliards de caractres)
DateTime Date plus heure
Objet Peut contenir tous les types de variables mais aussi des contrles, des fentres...
Structure Ensemble de diffrentes variables dfinies par lutilisateur.


Dtaillons :

Variable entire :

Byte, Short, Integer, Long
Byte Contient les nombres entiers de 0 255 (sans signe)
Short Entier sur 16 bits (-32768 32768)
Integer Entier sur 32 bits (-2147483648 2147483647)
Long Entier sur 64 bits (-9223372036854775808 9223372036854775807)

Pour une variable entire il n'y a pas de possibilit de virgule!!!
Attention, une division de 2 entiers donne un entier.

Attention : les variables numriques ne peuvent pas contenir de nombre
infiniment grand, il y a une limite maximum.

Un Integer est par exemple cod sur 32 bits ce qui fait qu'il peut varier de -2147483648
2147483647.
Si on utilise une valeur trop grande, une erreur se produit. Les entiers peuvent tre positifs ou
ngatifs (Sauf les Bytes).

Plus on augmente le type (Long au lieu de Integer) plus on peut y mettre des grands nombres.
Mais cela prend aussi plus de place et le traitement des oprations est plus long.

Les processeurs travaillant sur 32 bits, travailler plutt sur les Integer (qui sont cods sur 32
bits aussi), cest plus rapide, que sur les short.

On utilise largement les 'Integer' comme variable de boucle, Flag, l ou il y a besoin
Cours dinitiation Visual Basic.NET par Philippe Lasserre
d'entier... (Les calculs sur les rels en virgule flottante sont beaucoup plus lents.)


Exemple:
Dim I As Integer
I=12

Le type de donnes Byte est utilis pour contenir des donnes binaires (octet codant de 0
255) non sign.


Variable rel avec virgule :

Un rel peut avoir une partie fractionnaire: 1,454 est un rel.

Single, Double, Decimal.
Single Nombre rel en virgule flottante (-1,401298 *10^-45 1,401298 10^45)
Double Nombre rel en virgule flottante double prcision. (..Puissance 324)
Decimal Nombre rel en virgule fixe grande prcision


Les variables en virgule flottante ou notation scientifique :

(Single, Double)
La variable peut tre positive ou ngative.
Le 'Double' est, bien sur, plus prcis et peut atteindre des nombres plus grands que le 'Single'.

Le 'Single' comporte 7 chiffres significatifs maximum.
Le nombre est cod en interne sous forme scientifique, exemple:1,234568E+008.

Mais en pratique, on travaille et on les affiche de manire habituelle, en notation normale avec
un point comme sparateur dcimal :
Dim Poids As Single
Poids=45.45

Format Scientifique, Mantisse et exposant:

Voici 3 nombres :
14500000
0,145
0,0000145

Ils comportent tous les 3, deux informations :
- le nombre entier 145
- la localisation du premier chiffre par rapport la virgule
8
-1
-5 dans nos exemples.

Donc un rel peut tre stock sous la forme d'un couple :
- Partie entire
- Localisation de la virgule

Il est cod en interne avec une mantisse (la partie entire) et un exposant (position de la
virgule), sous la forme mmmEeee, dans laquelle mmm correspond la mantisse (chiffres
significatifs: partie entires) et eee l'exposant (puissance de 10).

En fait, en notation scientifique (en codage interne) un chiffre prcde toujours la virgule :
1,234568E+008.
Cours dinitiation Visual Basic.NET par Philippe Lasserre


Attention : les variables numriques relles ne peuvent pas contenir de nombre
infiniment grand, il y a une limite maximum comme pour les entiers.

La valeur positive la plus leve d'un type de donnes Single est 3,4028235E+38 et celle d'un
type de donnes Double est 1,79769313486231570E+308.

Quand on travaille avec des nombres ayant beaucoup de chiffres significatifs, il peut
y avoir des erreurs d'arrondi.

Le type 'Single' comporte par exemple une mantisse de 7 chiffres significatifs
seulement.

Si on utilise des nombres (mme petit: avec un exposant ngatif par exemple) avec 8
chiffres significatifs il peut y avoir des erreurs arrondi.

Le type de donnes en Virgule fixe (Decimal) prend en charge jusqu' 29 chiffres significatifs
et peut reprsenter des valeurs jusqu' 7,9228 x 10^28.

Ce type de donnes est particulirement adapt aux calculs (par exemple, financiers) qui
exigent un grand nombre de chiffres, mais qui ne peuvent pas tolrer les erreurs d'arrondi.

Pour les calculs financiers ont utilisera les 'Decimal' ou les 'Double'

Pour les petits calculs du genre rsultats d'examen biologique ont utilisera les
'Single' ou les 'Double' qui sont les plus rapides.


String, Char :

Le type 'String' peut contenir une 'chane de caractres' (alphanumrique) comme du texte.
La longueur de la chane n'est pas dfinie et peut aller jusqu' environ 2 milliards de
caractres.

Les chanes de longueur fixe nexistent pas (plus).

Le Type 'Char' contient un seul caractre. On utilise souvent des tableaux de 'Char'.
Pour information Char et String contiennent des caractres au format Unicode (dans la
variable, chaque caractre est cod sur 2 octets) et pas de l'ASCII ou de l'ANSI... (Ancien
codage ou chaque caractre tait cod sur un octet).

Les premiers caractres ont le mme code Unicode et Ascii.


Exemple :
Caractre Code
"a" 65
"b" 66
" " 32

Il y a aussi des caractres non affichables :
RC 13 retour chariot
LF 10 Line Feed
09 Tabulation

Pour passer la ligne, on utilise les codes 13 puis 10. Il y a une constante VB pour cela :
ControlChars.CrLf Chr$(13)+Chr$(10)
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Annexe 1, Place occupe en mmoire :

Exemple de place occupe par une variable (et le nom de sa Classe dans le Common
Langage Runtime).
Boolean 2 octets de System.Boolean
Byte 1 octet de System.Byte
Short 2 octets de System.Int16
Integer 4 octets de System.Int32
Long 8 octets de System.Int64
Single 4 octets de System.Single
Double 8 octets de System.Double
Decimal 16 octets de System.Decimal
Date 8 octets de System.DateTime
Char 2 octets de System.Char
Objet 4 octets de System.Objet


Annexe 2, Type primitif :

Mise part Objet, Structure, Class tous les autres types sont dit 'Primitif'(Byte, Boolean,
Shot, Integer, Long, Single, Double, Decimal, Date, Char, String)

Tous les types primitifs permettent la cration de valeurs par l'criture de littraux.
Par exemple, i=123 ou i=123I (le I force 123 a tre entier) est un littral de type
Integer.

Il est possible de dclarer des constantes des types primitifs.

Lorsque qu'une expression est constitue de constantes de type primitif, le compilateur
value l'expression au moment de la compilation. C'est plus rapide.


Annexe 3, Choix des noms de variables
La plupart des noms sont une concatnation de plusieurs mots, utilisez des
minuscules et des majuscules pour en faciliter la lecture.

Pour distinguer les variables et les routines (procdures), utilisez la casse Pascal
(CalculTotal) pour les noms de routine (la premire lettre de chaque mot est une
majuscule).
Pour les variables,la premire lettre des mots est une majuscule, sauf pour le premier
mot (documentFormatType).

Les noms de variables boolennes doivent contenir Is qui implique les valeurs Yes/No
ou True/False, Exemple fileIsFound.

Mme pour une variable courte dure de vie qui peut apparatre uniquement dans
quelques lignes de code, utilisez un nom significatif. Utilisez des noms courts d'une
seule lettre, par exemple i ou j, pour les index de petite boucle uniquement.

N'utilisez pas des nombres ou des chanes littrales telles que For i = 1 To 7. Utilisez
plutt des constantes nommes, par exemple For i = 1 To Nombre_jour_dans
_semaine, pour simplifier la maintenance et la comprhension.

Utilisez des paires complmentaires dans les noms de variables telles que min/max,
begin/end et open/close ou des expressions min max si ncessaire en fin de nom.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.6.1 String et Char

Une variable String peut contenir une chane de caractres, des donnes
alphanumriques.

Une variable Char peut contenir un caractre.

Pour travailler avec les 'String', on peut :
- Utiliser les mthodes de la Classe String.
- Utiliser les mthodes du Basic (les anciens reconnatrons)


String

Il faut dclarer une variable avant de lutiliser, pour cela on utilise linstruction DIM
DIM Str As String Dclare une variable nomme Str et qui peut contenir une chane
de caractre.

Cette variable peut tre utilise pour conserver une chane de caractre.

Str="TOTO"

On met la chane de caractres "TOTO" dans la variable Str
On peut afficher le contenu de la chane dans un label (zone prsente dans une fentre et o
lon peut afficher du texte) par exemple :
Label.text = Str

Cela affiche 'TOTO'

Remarquons que pour dfinir une chane de caractres il faut utiliser des " " : Ce qui est entre
" et " est la chane de caractres.

TOTO est une chane littrale : (une reprsentation textuelle d'une valeur particulire)

Aprs avoir t cre une String contient NOTHING ( pas une chane vide : ""), il
faudra l'initialiser pour qu'elle contienne quelque chose.

DIM Str As String 'Str contient Nothing (pas le texte "Nothing" mais 'Rien')
Str="" 'Str contient "" : chane vide
Str="TOTO" 'Str contient "TOTO"

Notez bien l'importance des guillemets :
A est la variable A
"A" est une chane de caractres contenant le caractre "A"


Exemple :

Dim A As string="Visual "
Dim B As string="Basic"
Label.text="A+B" affiche btement la chane A+B
Label.text=A+B affiche Visual Basic on affiche les variables A et B.

Notez enfin que " ", lespace est un caractre part entire.
Si je veux inclure un caractre " dans la chane il faut le doubler pour qu'il ne soit pas
Cours dinitiation Visual Basic.NET par Philippe Lasserre
considrer comme caractre de fin de chane :
A = " Bonjour ""Monsieur"" " 'Afficher cela donne : Bonjour "Monsieur"

On peut initialiser la variable en mme temps quon la dclare.
Dim Chane as string = "Toto"

On peut dclarer plusieurs variables d'un mme type sur une mme ligne.
Dim x, y, z As String 'Dclare 3 variables string


Les variables chane de caractres sont des objets STRING

Le type String (Chane de caractres) est une Classe qui a des mthodes.

Pas besoin de connatre toutes les mthodes, il suffit (Aprs dclaration de la String par
DIM Str AS String) de taper Str.Et vous voyez apparatre toutes les proprits et mthodes :
- .Split
- .StarsWith
- ..
- .ToUpper
- .Trim


Par exemple la mthode .ToUpper
Mettre en majuscules une chane de caractre
Str=Str.ToUpper()
Si Str contenait "abc", il contiendra "ABC"

.ToLower
Transforme par contre la chane en minuscule.


Exemple :
Je dois comparer 2 String pour savoir si elle sont gales, la premire a t saisie par
lutilisateur et je ne sais pas si lutilisateur a tap en majuscule ou en minuscules.

Si je compare A = "Vb" et B= "vb" elles sont diffrentes.
Si je compare A.ToLower et B.ToLower elles sont gales.

.Trim
Permet de supprimer des caractres en dbut et fin de chane.
Dim A As String = "#@Informatique@#"
Dim B As Char() = {"#", "@"}
A=A.Trim(B) Donne A= "Informatique"

Attention : Bien utiliser Char() qui est un tableau de caractres pour dfinir les caractres
supprimer.
Dim B As string = "#@" est dconseill car produisant des rsultats curieux. On peut
la rigueur utiliser les String pour un seul caractre.

Pour enlever les espaces avant et aprs la chane (Cas le plus frquent) :
A = A.Trim(" ")

Il existe aussi StartTrim et EndTrim pour agir seulement sur le dbut ou la fin de la chane.

Length : Taille dune chane en nombre de caractre.
Afficher la taille de la chane VB
Dim S as String = "VB"
Cours dinitiation Visual Basic.NET par Philippe Lasserre
MsgBox(S.Length.ToString) Affiche 2
Concat :
Concatnation de plusieurs chanes mise bout bout :
S=String.Concat(A,B)

Il est plus rapide de faire : S=A&B
(S=A+B marche mais est dconseill)

Insert :
Insre une chane dans une autre.
Dim S as string = "VisualBasic"
S = A.Insert(6," " ) Donne S = "Visual Basic"

Replace :
Remplace partout dans une chane de dpart, une chane par une autre.
Resultat=ChaineDpart.Replace(ChaneARemplacer,ChaneQuiRemplace)
Dim S as string= "Visual_Basic"
S= S.Replace("_"," " ) Donne S = "Visual Basic"


Autre exemple:
L'utilisateur a tap une date, mais avec comme sparateur des ".", comme on le verra plus
loin, il est ncessaire d'utiliser plutt les "/", pour cela on utilise Replace
Dim LaDate as string= "12.02.1990"
LaDate= LaDate.Replace(".","/" ) Donne S= "12/02/1990"

Split :
Dcoupe en plusieurs sous Chanes une chane de dpart, cela par rapport un sparateur.


Exemple :
Je rcupre dans un fichier une chane de mots ayant pour sparateur ; , je veux mettre
chaque mot dans un tableau.

Chane contenant les mots spars par ;
Dim S as string= "Philippe;Jean ;Toto"
Dim Separateur as Char = ";"
Dim Nom() as String
Nom=S.Split(Separateur)

Donne :
Nom(0) = "Philippe"
Nom(1) = "Jean"
Nom(2) = "Toto"

Remarque : Quand on dclare le tableau Nom(), on ne donne pas le nombre d'lment, c'est
Split qui cre autant d'lment qu'il faut.


.IndexOf .LastIndexOf
Indique le numro du caractre, la position (la premire occurrence) ou une chane chercher
est trouve dans une autre.
Dim A as String= "LDF.EXE"
Dim R as Char()={"."}
A.IndexOf(R) retourne 3

Se souvenir : le premier caractre est en position 0.

Cours dinitiation Visual Basic.NET par Philippe Lasserre

.LastIndexOf
Retourne la dernire occurrence.

.Compare
Compare 2 chanes :
String.Compare(a,b)

Retourne un entier
Ngatif si a<b
0 si a=b
Positif si a>b

.Substring
Extrait une partie dune chane
Dim A as string = "Informatique"
MessageBox.show(A.Substring(2,3)) Affiche for

.Char
Une chane peut tre perue comme un tableau de caractres (instances Char) ; vous
pouvez extraire un caractre particulier en faisant rfrence l'index de ce caractre par
l'intermdiaire de la proprit Chars.


Par exemple :
Dim maString As String = "ABCDE"
Dim monChar As Char
monChar = maString.Chars(3) ' monChar = "D"

On peut crer des chanes avec la Classe String :
MyString = New String(" ", 15) 'Crer une chane de 15 espaces

.PadRight
Aligne les caractres de cette chane gauche et remplit droite en ajoutant un caractre
Unicode spcifi pour une longueur totale spcifie.
Dim str As String
Dim pad As Char
str = "Nom"
pad = Convert.ToChar(".")
Console.WriteLine(str.PadRight(15, pad)) ' Affiche Nom............

PadLeft fait l'inverse.


On peut aussi utiliser les mthodes Visual Basic :

Elles sont bien connues des 'anciens' et font partie intgrante du langage vb (Common
Langage RunTime) et sont parfois plus simples.

Elles font partie de l'espace de nom Microsoft.VisualBasic mais il est 'charg' par dfaut et il
n'y a pas lieu de l'importer. Par contre quand certaines proprits sont communes plusieurs
classes, il peut y a avoir ambigut et il faut utiliser dans ce cas la syntaxe complte.

Cela semble le cas pour left qui est un mot cl Vb mais aussi une proprit des contrles. Pour
lever l'ambigut il faut crire Microsoft.VisualBasic.left(C,i) par exemple.

Ces mthodes font souvent double emploi avec les mthodes de la classe String :

Mid
Cours dinitiation Visual Basic.NET par Philippe Lasserre
MaString = "Mid Demonstration
A = Mid(MaString, 1, 3) ' Retourne "Mid".
Retourne 3 caractres partir du premier

Left, Right
Retourne x caractres de gauche ou de droite :
A = Right(MaString,2) 'A="on"
A = Microsoft.VisualBasic.Left(MaString,2) 'A="Mi"

Len.
Retourne la longueur de la chane :
MyLen = Len(MaString) ' Retourne 17

LTrim, RTrim
Enlve les espaces gauche ou droite d'une chane.
A=LTrim(" RRRR") ' A="RRR"

InStr
Retourne un entier spcifiant la position de dbut de la premire chane l'intrieur d'une
autre.
N=InStr(1,"aaaaRaa","R") 'retourne 5

Recherchez partir du premier caractre, quelle position se trouve 'R' dans la chane
"aaaaRaa"
Si la chane n'est pas trouve, retourne 0

InStrRev
Recherche aussi une chane mais de droite gauche. La position de dpart est le 3me
argument.
InStrRev (Ch1, Ch2, PosDpart)

StrComp
Compare 2 chanes.

Space
Retourne une chane d'espace: Space(10) retourne " "

StrDup
Retourne une chane de caractres par duplication d'un caractre dont on a spcifi le nombre.
maString = StrDup(5, "P") ' Retourne "PPPPP"

Asc
Retourne le code de caractre du caractre entr.

Il peut tre compris entre 0 et 255 pour les valeurs du jeu de caractres cod sur un octet
(SBCS) et entre -32 768 et 32 767 pour les valeurs du jeu de caractres cod sur deux octets
(DBCS). La valeur retourne dpend de la page de codes

AscW
Retourne le code Unicode du caractre entr. Il peut tre compris entre 0 et 65 535.
x=Asc("A") 'retourne 65
x=Asc("ABCD") 'retourne 65 galement. Seul le premier caractre est pris en
compte

Chr et ChrW
Retourne le caractre associ au code de caractre.
Chr(65) retourne "A" cela dpend de la page de code.
ChrW retourne le caractre correspondant l'Unicode

Cours dinitiation Visual Basic.NET par Philippe Lasserre

GetChar
Retourne le caractre d'une chane une position donne.
Dim maString As String = "AIDE"
Dim monChar As Char
monChar = GetChar(maString, 3) ' monChar = "D"

LCase Ucase
Retourne la chane en minuscule ou majuscule:
Lowercase = LCase(UpperCase)

Lset Rset
Retourne une chane aligne gauche avec un nombre de caractre.
Dim maString As String = "gauche"
Dim R As String
R = LSet(maString, 2) ' Retourne "ga"

Si la chane de dpart est plus courte que la longueur spcifie, des espaces sont
ajouts.
R = LSet(maString, 8) ' Retourne "gauche "

StrRevers
Retourne une chane ou les caractres ont t inverss:
Dim maString As String = STRESSED"
Dim revString As String
revString = StrReverse(myString) ' Retourne "DESSERTS"

Marrant l'exemple!!


Combinaison de chanes de caractres, de variables

Souvent, on a besoin d'afficher une combinaison de chanes littrales, le contenu de variables,
des rsultats de calcul, c'est possible :


Exemple :
Pour afficher dans un label le carr de X est X2, avec x ayant une valeur :
Label1.text = "Le carr de "& X & " est "& X * X

Ce qui est entre guillemets est affich tel quel. C'est le cas de "Le carr de "
Ce qui nest pas entre guillemets est valu, le rsultat est affich. C'est le cas e X et X2

Pour ne faire qu'une chane on ajoute les bouts de chanes avec l'oprateur '&'.

Notez lusage despace en fin de chane pour ne pas que les mots et les chiffres se touchent.
Pour X=2 on affichera : Le carr de 2 est 4


Like :

Instruction hyper puissante: Like, elle compare une chane String avec un modle (Pattern),
elle permet de voir si la chane contient ou ne contient pas un ou des caractres, ou une plage
de caractres.

result = String Like Pattern

Si string correspond pattern, la valeur de result est True, s'il n'y a aucune correspondance,
la valeur de result est False. Si string et pattern sont une chane vide, le rsultat est True
Cours dinitiation Visual Basic.NET par Philippe Lasserre

Sinon, si string ou pattern est une chane vide, le rsultat est False.

L'intrt de Like est que l'on peut y mettre des caractres gnriques :
- ? veut dire tout caractre unique
- * veut dire * ou plusieurs caractres.
- # veut dire tout chiffre.
- [caractres] veut dire tout caractres prsent dans la liste.
- [!caractres] veut dire tout caractres NON prsent dans la liste.
- - trait d'union permet de spcifier un dbut et une fin de plage.


Exemple :
Dim R As Boolean
R = "D" Like "D" 'Est ce que "D" est gal "D"? => True.

R = "F" Like "f" 'Est ce que "F" est gal "f"? => False.

R = "F" Like "FFF" 'Est ce que "F" est gal "FFF"? => False.

R = "cBBBc" Like "c*c" 'Est ce que "cBBBc" rpond au pattern (avoir un "c" au
dbut, un "c" la fin, et des caractres au milieu? Retourne True.

R = "J" Like "[A-Z]" ' Est ce que "J" est contenu dans les caractres allant de A Z ?
Retourne True.

R = "I" Like "[!A-Z]" ' Est ce que "I" n'est PAS dans les caractres allant de A Z ?
Retourne False.

R = "a4a" Like "a#a" ' Est ce que "a4a" commence et finie par un "a" et un nombre
entre les 2 ?? Retourne True

R = "bM6f" Like "b[L-P]#[!c-e]" ' Est ce que "bM6f" :
- commence par "b"
- a des caractres entre L et P
- un nombre
- se termine par un caractre non compris entre c et e
- retourne True

Option Compare
L'ordre des caractres est dfini par Option Compare et les paramtres rgionaux du
systme sur lequel s'excute le code.

En utilisant Option Compare Binary, la plage [AE] correspond A, B, C, D et E.

Avec Option Compare Text, [AE] correspond A, a, , , B, b, C, c, D, d, E et e. La plage
ne correspond pas ou parce que les caractres accentus viennent aprs les caractres
non accentus dans l'ordre de tri.


Unicode :

Les variables string sont stockes sous la forme de squences de 16 bits (2 octets) non signs
dont les valeurs sont comprises entre 0 et 65 535.
Chaque nombre reprsente un caractre Unicode. Une chane peut contenir jusqu' 2 milliards
de caractres.

Les premiers 128 codes (0127) Unicode correspondent aux lettres et aux symboles du
clavier amricain standard. Ce sont les mmes que ceux dfinis par le jeu de caractres ASCII.
Cours dinitiation Visual Basic.NET par Philippe Lasserre

Les 128 codes suivants (128255) reprsentent les caractres spciaux, tels que les lettres
de l'alphabet latin, les accents, les symboles montaires et les fractions. Les codes restants
sont utiliss pour des symboles, y compris les caractres textuels mondiaux, les signes
diacritiques, ainsi que les symboles mathmatiques et techniques.


Char :

Les variables Char sont stockes sous la forme de nombres 16 bits (2 octets) non signs dont
les valeurs sont comprises entre 0 et 65 535.

Chaque nombre reprsente un seul caractre Unicode. Les conversions entre le type Char et
les types numriques sont impossibles, mais il y a les fonctions AscW et ChrW peuvent tre
utilises...

L'ajout du caractre de type littral C un littral de chane force ce dernier a tre un type
Char. A utiliser surtout si Option Strict (qui force tre strict..) est activ.


Exemple :
Option Strict On
' ...
Dim C As Char
C = "A"C

ToCharArray
Permet de passer une string dans un tableau de Char :
Dim maString As String = "abcdefghijklmnop"
Dim maArray As Char() = maString.ToCharArray

La variable maArray contient prsent un tableau compos d'instances Char, chacune
reprsentant un caractre issu de maString.


Allons plus loin avec les chaines de longueur fixe :

On a vu que les chanes de longueur fixe n'existent pas en VB.NET (compatibilit avec les
autres langages oblige), mais il y a moyen de contourner le problme :

On peut utiliser la Classe de compatibilit VB6 :
(Il faut charger dans les rfrences du projet Microsoft.VisualBasic.Compatibility et
Compatibility Data)
Dim MaChaineFixe As New VB6.FixedLengthString(100)

Pour afficher la chane fixe utilisez MaChaineFixe.Tostring

Mais pour mettre une chane dans cette chane de longueur fixe!! Galre!!!
MaChaineFixe="ghg" n'est pas accept: on ne peut pas mettre une String dans une
chane fixe

MaChaineFixe = CType("hg",
Microsoft.VisualBasic.Compatibility.VB6.FixedLengthString) 'pas accept non plus!!

Enfin ce type de chane fixe ne peut pas tre utilise dans les structures, mais il y a un autre
moyen pour les structures. On verra cela plus loin.

Donc priori, les chanes fixes sont viter.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.6.2 Les Variables Numriques

Une variable numrique peut contenir des donnes numriques.
On a vu qu'une variable numrique peut tre entire :
- Integer (entier)
- Short (entier court)
- Long (Entier long)
- Byte (entier de 0 255)

Mais aussi
- Single (virgule flottante simple prcision)
- Double (virgule flottante double prcision)
- Decimal (virgule fixe haute prcision)

On dclare une variable numrique avec DIM, on peut linitialiser en mme temps :
Dim i As Integer= 3

Si la variable est numrique, il faut la transformer en String avant de lafficher :
Dim I As Integer=12
Label.text = I.ToString

.ToString fait partie des mthodes.

Il y en a d'autres :
.GetType
Retourne le type de la variable
Dim i As Integer
Label1.Text = i.GetType.ToString 'Affiche: System.Int32

.MaxValue .MinValue
Donne le plus grand et le plus petit nombre possible dans le type de la variable.

On verra quon peut utiliser des oprateurs + - * /.
Dim I As Integer=2
Dim J As Integer
J=I+3 J est gal 5 car on affecte J la valeur I+3

On rappelle que le sparateur est le point :
J=1.2 veut dire J=1,2 en bon franais !!

Il existe des fonctions mathmatiques, pour qu'elles soient disponibles il faut dabord
importer lespace de nom Math Import System.Math, on verra plus loin ce que cela signifie.
Dim N As Single
Dim R As Single
R=Abs(N) retourne la valeur absolu
Si N=-1.2 R=1.2
R=Sign(N) retourne le signe
Si N=-1.2 R=-1 (ngatif), retourne 1 si nombre positif

R=Round(N) retourne le nombre entier le plus proche
N=1.7 R=2
N=1.2 R=1
N=1.5 R=2

On peut donner en second paramtre le nombre de digit :
Math.Round(Valeur, 2)donne 2 dcimales aprs la virgule.
R=Floor(N) retourne le plus grand entier gal ou infrieur.
N=1.7 R=1
R=Ceiling(N) retourne le plus petit entier gal ou suprieur
Cours dinitiation Visual Basic.NET par Philippe Lasserre
N=1.2 R=2
R=Max(2,3) retourne le plus grand des 2 nombres.
retourne 3
R=Min(2,3) retourne le plus petit des 2 nombres.
retourne 2
R=Pow(2,3) retourne 2 puissance 3.
retourne 8
R=Sqrt(9) retourne la racine carr.
retourne 3

Il existe aussi les instructions du langage VB comme :
Int et Fix qui suppriment toutes deux la partie fractionnelle et retournent lentier. Si le
nombre est ngatif, Int retourne le premier entier ngatif infrieur ou gal au nombre, alors
que Fix retourne le premier entier ngatif suprieur ou gal au nombre.


Par exemple, Int convertit -8,4 en -9 et Fix convertit-8,4 en -8.
R=Int(8.4) R=8

Bien sur il y a aussi Sin Cos Tan, Sinh Cosh Tanh (pour hyperbolique) Asin Acos Atan
Atan2.


Prenons un exemple :

Imports System.Math
Dim MonAngle, MaSecant As Double
MonAngle = 1.3 ' angle en radians.
MaSecant = 1 / Cos(MonAngle) ' Calcul la scante.

On remarque que les angles sont en radians.

Rappel : 2=360, Angle en radians= (2/360)*Angle en degrs


Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.6.3 Conversion

On a vu qu'on peut afficher les chanes de caractres, par ailleurs, on fait des calculs
avec les variables numriques.

Est-il possible de convertir une variable d'un type un autre ?


Conversion numrique => String :

Quel intrt de convertir ?

On veut afficher un rsultat numrique.
On ne peut afficher que des String (chane de caractres) dans un label ou un TextBox par
exemple.

Aussi, il faut transformer cette valeur numrique en chane avant de lafficher, on le fait avec
la mthode.ToString :
Dim I As Integer = 12 'On dclare une variable I qu'on initialise 12
Label.text = I.ToString

La valeur de I est transforme en String puis affecte la proprit text du label, ce qui affiche
'12'


Conversion String => numrique :

A linverse une chane de caractre peut tre transforme en numrique :


Par exemple, l'utilisateur saisie un nombre dans une boite de saisie (InputBox), mais il tape
des caractres au clavier et c'est cette chane de caractres qui est retourne, il faut la
transformer en numrique :
Dim S as String
Dim i as Integer
S= InputBox ("Test", "Taper un nombre") 'Saisie dans une InputBox d'un nombre par
l'utilisateur.

S contient maintenant une chane de caractres, "45" par exemple :
I=Integer.Parse(S) 'on transforme la chane S en Integer

Bizarre cette syntaxe !! En fait cest le type Integer qui a une mthode (Parse) qui transforme
une chane en entier.

On peut aussi utiliser, et cest plus simple, CType pour convertir nimporte quel type en
nimporte quel type, il suffit de donner cette fonction la variable modifier et le type
obtenir.
I=Ctype(S,Integer)


CType pour toutes les conversions :

Ctype peut aussi servir convertir de la mme manire un single en double, un Short en
Integer....

Il est donc possible de convertir un type de variable en un autre.

Il suffit de donner cette fonction la variable modifier et le type obtenir.
I=Ctype(S,Integer) 'conversion en entier
Cours dinitiation Visual Basic.NET par Philippe Lasserre

CType fait toutes les conversions, mais on peut aussi utiliser des fonctions qui sont
spcifiques au type de la variable de retour.

Le nom de ces fonctions contient le nom du type de la variable de retour.
CBool()
CByte()
CChar()
CDate()
CDbl()
CDec()
CInt()
CLng()
CObj()
CShort()
CSng()
CStr()

Exemple CDbl retourne un 'Double'.
Dim I As Integer=123
Dim D As Double
D=CDbl(I) 'donnera D=123 D est un Double (rel double prcision)

Ces fonctions sont plus rapides car elles sont spcifiques.

Remarque:
Les fonctions CInt et CLng arrondissent les parties dcimales gales 0,5 au nombre pair le
plus proche. Par exemple, 0,5 s'arrondit 0 et 1,5 s'arrondit 2. Bizarre !!


Val et Str existe aussi :

Ouf pour les anciens!!
Ces fonctions permettent aussi la conversion String=>Numrique et Numrique=>String

Val donne la valeur numrique d'une expression String.
Dim i As Integer
i=Val("5") ' i=5

Val s'arrte au premier caractre non numrique.
Val("12er") retourne 12

Val reconnat le point (et pas la virgule)
Dim i As Double
i=Val("5.45") ' donnera i=5,45
i=Val("5,45") ' donnera i=5

Str transforme une valeur numrique en String :
Dim s As String
s=Str(1999) ' s=" 1999"

Noter bien : Str ajoute un espace gauche ou le signe'-' si le nombre est ngatif.

Str ne reconnat que le point comme sparateur dcimal. (Pour utiliser les autres sparateurs
internationaux, il faut utiliser la fonction CStr() ).

Autre :

La Classe System.Convert permet la conversion d'un type de base vers un autre:
Cours dinitiation Visual Basic.NET par Philippe Lasserre
.ToString en fait partie.


Exemple
Pour convertir un Single en Byte (entier 8 bits non sign)
.ToByte

Pour convertir un Byte en Single :
.ToSingle
singleVal = System.Convert.ToSingle(byteVal)

Pour convertir un Byte en Decimal :
.ToDecimal

On a des mthodes pour pratiquement convertir tous les types en tous les types, a
vous de les trouver.

On verra plus loin, la fonction Format utilise pour convertir les valeurs numriques que vous
voulez mettre aux formats dates, heures ou monnaie ou dans d'autres formats dfinis par
l'utilisateur.


IsNumeric :

On utilise la fonction IsNumeric pour dterminer si le contenu d'une variable peut tre valu
comme un nombre.
Exemples:

Dim MyVar As Object
Dim R As Boolean

MyVar = "45"
R = IsNumeric(MyVar) ' R= True.
' ...
MyVar = "678.92"
R = IsNumeric(MyVar) ' R= True.
' ...
MyVar = "45 Kg"
R = IsNumeric(MyVar) ' R= False.

Attention le dernier exemple indique que "45 Kg" n'est pas purement numrique, mais Val("45
Kg") retourne 45 sans dclencher d'erreur car Val transforme les caractres numrique partir
de la gauche, en s'arrtant ds qu'il y a un caractre non numrique.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.6.4 Les tableaux

Ils permettent de regrouper des donnes de mme type.

Les tableaux vous permettent de faire rfrence un ensemble de variables par le mme nom
et d'utiliser un numro, appel index ou indice, pour les distinguer.

Comment dclarer un tableau :
Dim Tableau(3) As Integer 'dclare un tableau de 4 entiers

On remarque que, ds la dclaration du tableau, le nombre d'lments est bien dfini et
restera toujours le mme.

Dim Tableau(3) As Integer entrane la cration des variables 'Integer' suivante :
Tableau (0)
Tableau (1)
Tableau (2)
Tableau (3)

0
0
0
0

Soit 4 lments

Noter que comme c'est un tableau d'entier, juste aprs la cration du tableau les lments
sont initialiss 0.

Le tableau commence toujours par lindice 0
Le nombre d'lments dans le tableau est toujours gale l'indice de dimension + 1
(ou l'indice du dernier lment+1)


Dim a(150) comporte 151 lments (lments d'index 0 150).

Tableau(1)= 12 permet daffecter le nombre 12 au 2eme lment du tableau.

0
12
0
0

S=Tableau(1) permet daffecter la variable S le 2eme lment du tableau.

Un tableau peut avoir plusieurs dimensions :
Dim T(2,2) 3 X 3 lments

Pour un tableau 2 dimensions le premier argument reprsente les lignes, le second les
colonnes.

1,1 1,2 1,3
2,1 2,2 2,3
3,1 3,2 3,3

Il est possible de crer des tableaux 3, 4 ...dimensions :
Dim T(2,2,2) 3X3X3 lments.
Cours dinitiation Visual Basic.NET par Philippe Lasserre

On peut crer des tableaux de tableaux :
Dim T(2),(2) Il a autant d'lment que le tableau T (2,2)

Il est possible de crer des tableaux avec tous les types de variable (y compris les
structures)
Dim Mois(12) As String 'tableau de String

Notez que dans ce cas les lments contiennent Nothing car le tableau contient des String et
quand on dclare une String, elle contient Nothing au dpart.

On peut initialiser un tableau (Donner une valeur aux lments) :
Dim Mois(12) As String
Mois(0)="Janvier"
Mois(1)="Fvrier"
Mois(2)="Mars"

Ou lors de sa dclaration :
Dim Mois() As String ={Janvier,Fvrier,Mars}

On verra dans un des exemples que l'on peut crer un tableau avec la mthode
CreateInstance.

Redim permet de redimensionner un tableau (modifier le nombre d'lments d'un tableau
existant), si on ajoute Preserve les anciennes valeurs seront conserves.

Attention, on ne peut pas modifier le nombre de dimension, ni le type des donnes. Un tableau
2 dimensions de 20 fois 20 string pourra tre redimensionn en tableau de String 30 fois 30,
mais pas en tableau d'entiers ou 3 dimensions.
Dim T(20,20) As String
- ...
Redim Preserve T(30,30)

Il est possible d'crire Dim T( , ) As String
Dim T( , ) As String 'Sans donner les dimensions du tableau: il est dclar mais n'existe pas
car T(1,1)="toto" dclenche une erreur. Il faut avant de l'utiliser crire Redim T(30,30), (sans
remettre As String).

Certaines instructions comme Split redimensionne elle-mme le tableau au nombre d'lment
ncessaire.
Dim Nom() as String
Nom=S.Split(Separateur)

Erase efface le tableau et rcupre lespace.

Comment parcourir un tableau?
Pour parcourir un un tous les lments d'un tableau, on utilise une boucle:


Exemple :
Crer un tableau de 11 lments et mettre 0 dans le premier lment, 1 dans le second, 2
dans le troisime...
Dim T(10) As Integer
Dim i As Integer

For i = 0 To 10
T(i)=i
Next i

Cours dinitiation Visual Basic.NET par Philippe Lasserre
La variable de boucle i est utilise pour parcourir le tableau: on utilise l'lment T( i ) donc
successivement T(1) puis T(2)...et on affecte i donc 1 puis 2 puis 3


Un tableau est un objet

Crons 2 tableaux et examinons les principales mthodes.
Dim a(3) As String
Dim b(3) As String
b=a Copie le tableau a dans b
b=a.copy Est quivalent

Attention: il copie les rfrences (ladresse, lendroit ou se trouve la variable) et
non pas la valeur de cette variable, ce qui fait que si vous modifiez b(3), a(3) sera
aussi modifi.

Car lorsque vous assignez une variable tableau une autre, seul le pointeur (ladresse en
mmoire) est copi.

Pour obtenir une copie indpendante faire :
b=a.clone

Dans ce cas si vous modifi a(2), b(2) ne sera pas modifi.

Par contre a(1)=b(1) n'affecte que l'lment a(1)


La Classe Array

Tous les tableaux viennent de la classe Array; vous pouvez accder aux mthodes et
proprits de System.Array de chaque tableau.

Par exemple, la proprit Rank retourne le nombre de dimension du tableau et la mthode
Sort trie ses lments.


Exemple :
Soit un tableau Mois()

Clear
Array.Clear(Mois,0,2) Efface 2 lments du tableau Mois partir de llment 0

Reverse
Array.Reverse(Mois, 1, 3) inverse les 3 lments partir de llment 1

Copy
Array.Copy(Mois,1,Mois2,1,20) copie 20 lments de Mois vers Mois2 partir du 2eme
lment.

Sort
Array.sort(Mois) Trie le tableau Mois
Malheureusement cette mthode marche sur des tableaux unidimensionnels uniquement.
Au lieu d'utiliser un tableau 2 dimensions (sur lequel la mthode sort ne marche pas, on peut
ruser et crer 2 tableaux et surcharg la mthode sort pour trier les 2 tableaux (un servant de
cl, le second d'items) :

Array.Sort(myKeys, myValues) (Voir un exemple plus bas)

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Equals
Compare 2 tableaux.

Binarysearch
Recherche un lment dans un tableau tri unidimensionnel.(algorithme de comparaison
binaire performant sur tableau tri)


Exemple :
I=Array.BinarySearch(Mois, "Fvrier") retourne I=1 se souvenir le premier lment
est Mois(0)

IndexOf
Recherche un objet spcifi dans un tableau unidimensionnel (tri ou non), retourne l'index de
la premire occurrence.
Dim myIndex As Integer = Array.IndexOf(myArray, myString)

Retourne -1 si l'lment n'est pas trouv.
LastIndexOf fait une recherche partir de la fin.

Ubound
Retourne le plus grand indice disponible pour la dimension indique d'un tableau
Dim Indice, MonTableau(10, 15, 20)
Indice = UBound(MonTableau, 1) ' Retourne 10. (1 indique la premire dimension du
tableau)

GetUpperBound
Mme fonction
Indice = MonTableau.GetUpperBound(0) '(0 pour premire dimension!!) Retourne 10.

Lbound
Existe (plus petit indice) mais est inutile car toujours gal 0.

Length
Retourne un entier qui reprsente le nombre d'lments dans le tableau.

GetValue, SetValue
Permettent de connatre ou de modifier la valeur d'un lment du tableau :
Mois.GetValue(0) est quivalent Mois(0)

Dans un tableau 2 dimensions comment modifier l'lment (0,3) :
myArray.SetValue("fox", 0, 3)


Exemples :

Exemple dutilisation de boucles :

Crer un tableau de 6 lments, mettre dans chaque lment du tableau le carr de son
indice, afficher le contenu du tableau.

Cela montre lintrt dutiliser une boucle pour balayer tous les lments dun tableau.

Premire boucle pour remplir le tableau, seconde boucle pour afficher. (Une boucle For...Next
est ici utilise, on verra cela plus loin.)
Dim arr(5) As Integer
Dim i As Integer
For i = 0 To arr.GetUpperBound(0) GetUpperBound(0) retourne 5
arr(i) = i * i
Cours dinitiation Visual Basic.NET par Philippe Lasserre
ext i

For i = 0 To arr.GetUpperBound(0)
Console.WriteLine("arr(" & i & ") = " & arr(i))
Next i

Faire une boucle allant de 0 au dernier lment du tableau (For i=0 to ..)
Dans chaque lment du tableau mettre le carr de son indice (arr(i)=i*i)

Nouvelle boucle pour afficher les noms des diffrents lments et leur contenu.
(Console.WriteLine() affiche sur la console le nom de l'lment et son contenu)

Le programme gnre la sortie suivante :
arr(0) = 0
arr(1) = 1
arr(2) = 4
arr(3) = 9
arr(4) = 16
arr(5) = 25


Exemple de recherche dans un tableau :
Dans un tableau de String rechercher dans quel lment et quelle position se trouve la string
"MN".
Dim Tableau() As String = {"ABCDEFG", "HIJKLMNOP"}
Dim AChercher As String = "MN"
Dim i As Integer
Dim position As Integer
For i = 0 To Tableau.Length 1
position = Tableau(i).IndexOf(AChercher)
If position >= 0 Then Exit For
Next i


Exemple de tri de 2 tableaux :
On cre un tableau de cl et un tableau des valeurs, chaque cl est li une valeur.

On trie partir du tableau des cl myKeys , le tableau myValues est modifi pour 'suivre' le tri
des cl.

La Sub PrintKeysAndValues affiche les rsultats.
Public Shared Sub Main()
' ****************Cration des tableaux.

Dim myKeys() As String = {"red", "GREEN", "YELLOW", "BLUE", "purple", "black",
"orange"} 'Tableau des cl

Dim myValues() As String = {"strawberries", "PEARS", "LIMES", "BERRIES", "grapes",
"olives", "cantaloupe"} 'tableau des lments

'Affichage du tableau non tri
Console.WriteLine("Tableau non tri:")
PrintKeysAndValues(myKeys, myValues)

' Tri les lments 1 3 puis affichage.
Array.Sort(myKeys, myValues, 1, 3)
Console.WriteLine("Aprs tri d'une partie du tableau:")
PrintKeysAndValues(myKeys, myValues)

Cours dinitiation Visual Basic.NET par Philippe Lasserre
' Tri la totalit du tableau.
Array.Sort(myKeys, myValues)
Console.WriteLine("Aprs tri de la totalit du tableau:")
PrintKeysAndValues(myKeys, myValues)

End Sub 'Fin de Main


' Routine affichant dans la console les cls et valeurs
Public Shared Sub PrintKeysAndValues(ByVal myKeys() As [String], ByVal

myValues() As [String])
Dim i As Integer
For i = 0 To myKeys.Length - 1
Console.WriteLine(" {0,-10}: {1}", myKeys(i), myValues(i))
Next i
Console.WriteLine()

End Sub 'PrintKeysAndValues


Cration de tableau avec CreatInstance
Crons un tableau d'entier (Int32) comprenant 5 lments.
Dim myArray As Array = Array.CreateInstance(GetType(Int32), 5)
Dim i As Integer
For i = myArray.GetLowerBound(0) To myArray.GetUpperBound(0)
myArray.SetValue(i + 1, i)
Next i


Merci Microsoft pour les exemples.

On insiste donc sur le fait d'un tableau est de type 'par rfrence' (et pas ''par Valeur'),
on y reviendra.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.6.5 Les Collections

Une alternative aux tableaux est lusage de Collection.

Fait partie de System.Collections

Une collection fonctionne plutt comme un groupe d'lments dans laquelle il est possible
dajouter ou denlever un lment nimporte quel endroit sans avoir se proccuper de sa
taille ni ou se trouve l'lment.

Le nombre d'lment n'est pas dfini au dpart comme dans un tableau. Dans une collection il
n'y a que les lments que l'on a ajouts.

Les lments sont reprs grce un index ou avec une Cl unique

Les items affiches dans une ListBox donne une ide concrte de ce qu'est une collection.


Exemple simpliste permettant de comprendre la notion de collection :

Soit la collection Col, au dpart elle est vide.

J'ajoute des lment (ou items) cette collection.
Col.Add ("Toto")

Toto

La collection a maintenant 1 lment.

Jajoute 2 nouveaux lments :
Col.Add("Lulu")
Col.Add("Titi")

Toto
Lulu
Titi

La collection a 3 lments maintenant.

Je supprime 1 lment :
Col.Remove(2) enlve l'lment numro 2

Toto
Titi

La collection n'a plus que 2 lments maintenant.


On voit que le nombre d'lment n'est pas connu l'avance, il varie en fonction des lments
ajouts (ou retirs).
Un lment est repr par son indice.

Col.Item(2) contient "Titi" (le second Item de la collection)


Lobjet Collection

'Collection' existait dj en VB6.
Cours dinitiation Visual Basic.NET par Philippe Lasserre

L'objet collection utilise un couple Cl-Valeur, pour chaque lment.


Ici le premier lment pour cl : 69
Pour valeur:'Rhne'

C'est pratique car cela permet de retrouver une valeur partir de la cl.
Pour utiliser une collection d'objets, vous devez premirement crer l'objet MaCollection.
Dim maCollection As New Collection

Ds que cet objet est cr, vous pouvez ajouter (avec Add), enlever ou manipuler des
lments.

On utilise la syntaxe : NomCollection.Add( lment, Cl)
maCollection.Add("Bonjour", "30")
maCollection.Add("Monsieur", "31")
maCollection.Add("Et", "32")
maCollection.Add("Madame", "33")

Il peut y avoir 2 autres paramtres :
maCollection.Add(Element, Cl, Before, After)

Before ou After peuvent tre utiliss pour placer l'lment insrer avant ou aprs un lment
de la collection. Si Before ou After est un nombre c'est l'index des lments qui est utilis, si
c'est une string c'est la cl.

Pour rcuprer un objet de la collection, on peut utiliser
l'index:
Label1.Text = maCollection.Item(2) 'Affiche le second lment: Monsieur

Attention le premier lment est ici l'lment 1 (l'index va de 1 Count); c'est
hrit du VB6!!!

La cl
Label1.Text = maCollection.Item("33") 'Affiche Madame


Liste dobjet : ArrayList

La ArrayList est une collection particulire, on peut y mettre des objets (chanes, nombre)
rien nempche que le premier lment soit un entier, le second une chaneIl n'y a pas de
cl.

Attention le premier lment est ici l'lment 0 (l'index va de 0 count-1), c'est
du .NET!!!

Dim L As New ArrayList() 'On cre une collection ArrayList
Dim L As ArrayList = ArrayList.Repeat("A", 5) 'On cre une ArrayList de 5 lments
contenant chacun "A" (on rpte "A")

Cours dinitiation Visual Basic.NET par Philippe Lasserre
L.Add("Bonjour") 'On ajoute un lment la collections
MsgBox(L(0)) 'On affiche le premier lment

On affiche le premier lment L(0)

On pourra aussi crire L.Item(0) pour pointer le premier lment.
MsgBox(L.Count.ToString) 'On affiche le nombre dlment.

Attention c'est le nombre d'lments. S'il y a 3 lments dans la ArrayList ce sont les lments
d'index 0, 1, 2.
L.Remove("Bonjour") 'On enlve un lment de la liste
L.RemoveAt(0) 'On enlve llment 0 de la liste
L.Sort() 'Trie la collection
L.Clear() 'Efface tous les lments
L.Containts (lment) 'Retourne True si la liste contient lment.

Insert permet dinsrer un index spcifi.
L.Insert( position, Ainserrer)
InsertRange insre une ArrayList dans une Autre ArrayList.

Pour parcourir une collection, 2 mthodes :
- Avec lindex de litem
For i=0 to L.Count-1
A=L.Item(i)
Next i

NB : Comme vu plus haut, on utilise Count pour trouver le nombre d'lment, aussi la boucle
doit balayer de 0 count-1.

- Avec For Each
Dim o As Objet
For Each o in L
A=o
Next


Autres collections :


StringCollection

Ne peut contenir que des chanes (cela devrait aller plus vite)


HashTable

Comporte des couples cl-lment, des paires cl-valeur.

La cl toujours unique permet de retrouver la valeur :
H.Add(Cl,Valeur) Ajoute un lment
H.Item(Cl) Retourne llment correspondant une cl.
H.ContainsKey(Cl) Retourne True si la Cl est dans la table.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Attention le premier lment est ici l'lment 1 (index allant de 1 count)


SortedList

Cest une HashTable mais avec ordonnancement des paires par tri partir de la cl.


Queue

Collection de type FIFO (First In, First Out)
Premier arriv premier servi.

C'est la queue devant un cinma, le premier arriv, prend don billet le premier.
DeQueue supprime et retourne lobjet de dbut de liste
EnQueue ajoute un objet en fin de liste
Peek retourne lobjet de dbut sans le supprimer




Stack

Collection de type pile ( ou stack) LIFO (Last In, First Out)
Dernier entr, premier sorti.

Ce type de stack (pile) est trs utilis en interne par les programmes informatiques : on stocke
dans une stack les adresses de retour des procdures appeles, au retour on rcupre
l'adresse du dessus.

Push insre un objet en haut de la pile
Pop enlve et retourne un objet en haut de la pile

On peut utiliser une pile dans un programme pour grer le dplacement de l'utilisateur dans un
arbre, les lments en cours sont stocks par Push, pour remonter en chemin inverse, on Pop.
Attention le premier lment est ici l'lment 1 (lment d'index 1 count)


Exemple:
Dim MaPile As New Stack()
Dim Str As String

'Ajouter des lments la pile
Cours dinitiation Visual Basic.NET par Philippe Lasserre
MaPile.Push ("A")
MaPile.Push ("B")
MaPile.Push ("C")

'Rcuprer un objet de la pile:
Srt =MaPile.Pop()

Str sera gal "C"

Si la pile est vide et que l'on 'Pop', une exception non gre du type
'System.InvalidOperationException' se produit (une erreur se produit et cela plante!!!).


BitArray

Cre une collection de boolens. La valeur de chaque lment est True ou False.
Creation de BitArray.
Dim myBA As New BitArray(5)
Dim myBA As New BitArray(5, False)
Dim myBA() As Byte = {1, 2, 3, 4, 5}
Dim myBA As New BitArray(myBytes)


Gnralisation de la notion de collection

Certains objets ont une liste de donne, Vb les organise en Collections.
Une collection peut donc faire partie des proprits d'un objet.


Exemple :
On verra plus loin d'un contrle nomm TextBox peut contenir du texte, et bien, ce contrle
une collection nomm .lines qui contient chaque ligne du texte (s'il y en a plusieurs)

Si le texte contient 3 lignes, elles seront dans la collection .lines
Texbox1.lines(0) 'remarquez, ici le premier lment est 0!!!
Textbox1.lines(1)
Textbox1.lines(2)

L'indice des lments va de 0 count-1


Autres exemples :
Les contrles ListBox possde une collection Items dans laquelle est plac tous les lments
contenus dans la liste.

Pour ajouter un lment on utilisera la mthode Add de la collection Items :
ListBox.Items.Add( )

Un tas d'objets possde des collections.

Encore plus : chaque formulaire possde une Collections Controls. Il s'agit d'une collection
qui contient tous les contrles de ce formulaire.

Pourquoi le premier lment est 0 ou 1 ?

Le .NET Framework normalise les collections comme tant des collections de base zro
(ArrayList par exemple). La classe Collections de Visual Basic sert principalement assurer une
compatibilit avec des versions prcdentes et fourni des collections de base 1.
Cours dinitiation Visual Basic.NET par Philippe Lasserre


Exemples sur les collections :

Crer une ArrayList, une queue, ajouter la queue la ArrayList, chercher un lment,
insrer un lment.

Les collections font partie de l'espace de nom Systeme.Collections
Imports System.Collections

'Crer une ArrayList.
Dim myAL As New ArrayList()
myAL.Insert(0, "un")
myAL.Insert(1, "deux")

'Crer une Queue.
Dim myQueue As New Queue()
myQueue.Enqueue("trois")
myQueue.Enqueue("quatre")

'Copies la Queue dans ArrayList l'index 1.
myAL.InsertRange(1, myQueue)

'Chercher "deux" et ajouter "moins de deux" avant.
myAL.Insert(myAL.IndexOf("deux"), "moins de deux")

'Ajouter "!!!" la fin.
myAL.Insert(myAL.Count, "!!!")
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.6.6 Les Structures

Permet de regrouper des donnes de type diffrent:

(En Vb6 il y avait les types dfinis par l'utilisateur, ils sont remplacs par les structures.)

Les structures sont intressantes quand vous voulez utiliser des variables contenant
plusieurs informations de diffrent type.


Exemple :
Vous voulez dfinir une variable contenant une adresse compose d'un numro, de la rue, de
la ville.

Il faut dabord dfinir la structure (au niveau Module ou Class, pas dans une procdure)
Public Structure Adresse
Dim Numero As Integer
Dim Rue As String
Dim Ville As String
End Structure

Puis dans une procdure il faut dclarer la variable :
Dim MonAdresse As Adresse

La variable MonAdresse est dclare comme une adresse, elle contient donc :
- un numro 'stock' dans MonAdresse.Numero
- un nom de rue 'stock' dans MonAdresse.Rue
- un nom de ville 'stock' dans MonAdresse.Ville

On pourra enfin lutiliser :
MonAdresse.Numero=2
MonAdresse.Rue="Grande rue"
MonAdresse.Ville="Lyon"

On peut aussi utiliser le mot cl With pour ne pas avoir rpter le nom de la variable (et cela
va plus vite).
With MonAdresse
.Rue="Grande rue"
.Ville="Lyon"
End With

With est utilisable sur tous les objets.

Il est possible de travailler sur un tableau de structures:
Dim Adresses(99) as Adresse 'Permet de travailler sur un tableau de 100 adresses
Adresses(33).Rue="Place de la mairie"

On peut utiliser une variable dclare par une structure comme paramtre d'une fonction :
Sub AfficheAdresse( ByVal Une Adresse As Adresse)
Imprimer l'adresse
End sub

Pour imprimer l'adresse 33 on crira AfficheAdresse ( Adresse(33))


Attention quand dans une structure il y a un tableau, il faut linitialiser

On veut dfinir une structure dans laquelle il y a 25 donnes DriveNumber.
Cours dinitiation Visual Basic.NET par Philippe Lasserre

On aurait tendance crire :
Public Type DriveInfo
DriveNumber(25) As Integer FAUX
DriveType As String
End Type

En Visual Basic .NET il faut faire :
- Mthode par initialize
Public Structure DriveInfo
Dim DriveNumber() As Short
' Noter que le nombre dlment a disparu.
Dim DriveType As String
maintenant on instance les 25 lments.
Public Sub Initialize()
ReDim DriveNumber(25)
End Sub
End Structure

On voit qu'une structure peut comporter une mthode.
Ici, on a cre une mthode Initialize.

Exemple de routine utilisant la structure.
Function AddDrive(ByRef Number As Short, ByRef DriveLabel As String) As Object
Dim Drives As DriveInfo
Drives.Initialize()
Drives.DriveNumber(0) = 123
Drives.DriveType = "Fixed"
End Function

- Autre manire de faire :
Public Structure DriveInfo
Dim DriveNumber() As Short
Dim DriveType As String
End Structure

Function AddDrive(ByRef Number As Short, ByRef DriveLabel As String) As Object
Dim Drives As DriveInfo
Redim Drives.DriveNumber(25)
Drives.DriveNumber(3)=12
Drives.DriveType = "Fixed"
End Function

Si on utilisait 100 variables Drives, il faudrait 'Redim' le tableau pour chaque variable!!!


Allons plus loin

Une structure hrite de System.ValueType
Les structures sont des types 'valeur'.

Une variable d'un type structure contient directement les donnes de la structure, alors qu'une
variable d'un type classe contient une rfrence aux donnes, ces dernires tant connues
sous le nom d'objet.
Cela a de l'importance: si je cre une variable avec une structure, que je copie cette variable
dans une seconde, le fait de modifier la premire variable ne modifie pas la seconde.


Prenons l'exemple donn par Microsoft :
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Structure Point
Public x, y As Integer
Public Sub New(x As Integer, y As Integer)
Me.x = x
Me.y = y
End Sub
End Structure

On dfinie une structure Point et on dfinie une mthode New permettant de saisir les
valeurs :
Public Sub New est un constructeur.

Pour saisir les valeurs de x et y ont peut utiliser :
Dim a As Point
a.x=10
a.y=10

Ou utiliser le constructeur :
Dim a As New Point(10,10)

En partant de la dclaration ci-dessus, le fragment de code suivant affiche la valeur 10 :
Dim a = new Point(10, 10)
Dim b = a
a.x = 100
Console.WriteLine(b.x) 'b est donc bien diffrent de a

L'assignation de a b cre une copie de la valeur et b n'est donc pas affect par l'assignation
a.x. Si, en revanche, Point avait t dclar comme une classe, la sortie aurait t 100
puisque a et b auraient rfrenc le mme objet.

Enfin, les structures n'tant pas des types 'rfrence', il est impossible que les valeurs d'un
type structure soient null (elles sont gales 0 aprs la cration).

Les structures peuvent contenir plein de choses.

On a vu qu'elles peuvent contenir :
- Des variables de diffrent type.
- Des tableaux.
- Des mthodes : on a vu l'exemple de Initialize et de New.

Mais aussi :
- Des objets.
- Dautres Structures.
- Des procdures.
- Des proprits.


Exemple donn dans l'aide (et modifier par moi) :
Dbutants : A relire peut-tre ultrieurement quand vous saurez utiliser les Classes.

Cet exemple dfinit une structure Employee contenant une procdure CalculBonus et une
proprit Eligible.
Public Structure Employee
Public FirstName As String
Public LastName As String

'Friend members, accessible partout dans le programme.
Friend EmployeeNumber As Integer
Friend WorkPhone As Long
Cours dinitiation Visual Basic.NET par Philippe Lasserre

'Private members, accessible seulement dans la structure.
Private HomePhone As Long
Private Level As Integer
Public Salary As Double
Public Bonus As Double

'Procedure .
Friend Sub CalculateBonus(ByVal Rate As Single)
Bonus = Salary * CDbl(Rate)
End Sub

'Property pour retourner l'ligibilit d'un employ.
Friend ReadOnly Property Eligible() As Boolean
Get
Return Level >= 25
End Get
End Property
End Structure

Utilisons cette structure :
Dim ep As Employee 'Dclaration d'une variable Employee
ep.Salary = 100 'On saisit le salaire
ep.CalculateBonus(20) 'On calcul le bonus
TextBox1.Text = ep.Bonus.ToString 'On affiche le bonus

Cela ressemble aux Classes !! Non?


Porte :
Vous pouvez spcifier l'accessibilit de la structure l'aide des mots cl: Public, Protected,
Friend ou Private ou garder la valeur par dfaut, Public.

Vous pouvez dclarer chaque membre en spcifiant une accessibilit. Si vous utilisez
l'instruction Dim sans mot cl, l'accessibilit prend la valeur par dfaut, Public.
Private Mastructure
Public i As Integer
...
End Structure

En conclusion les structures sont maintenant trs puissantes et peuvent contenir autant de
chose que les modules de Classes, on verra cela plus loin. Mais les structures sont rfrences
par valeur alors que les Classes le sont par rfrence.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.6.7 Les variables par valeur ou par rfrence

Les variables par valeur

Contient rellement une valeur.
Dim L As Long
L= 1456
L occupe 8 octets ncessaires pour coder un long, ici L a une valeur de 1456, donc dans ces 8
octets est cod 1456.
Sont des variables par 'Valeur':
Les Integer, les Long les Short
Les Single, Double, Decimal
Les Booleans, Char, Date
Les Structures
Les numrations

Les variables par rfrence

Elle ne contient pas l'objet mais son adresse en mmoire, sa rfrence.
Dim O As Object
O contient l'adresse de l'objet code sur 4 octets.
Sont des variables par rfrence:
Les Objets
Les Strings
Les tableaux
Les Classes

Affectation :
Posons le problme :
Travaillons sur A et B, 2 variables ayant la mme 'nature'.

A existant dj, faisons :
Dim B=A

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Puis modifions la valeur de A, cela modifie t-il B ?
Si le type de variable est par valeur (valable pour les entiers, les Long.. les structures..),
chaque variable ayant sa valeur, B n'est pas modifi.

L'assignation d'un type valeur une variable cre une copie de la valeur assigne.

Si le type de variable est par rfrence (valable pour les tableaux, les objets, les string...),
chaque variable est dfinie par sa rfrence (son lieu physique); faire A=B entrane que A et B
ont mme rfrence. Si on modifie A, B est modifi car il pointe au mme endroit.

Dans le cas des tableaux, pour obtenir une copie indpendante faire : b=a.clone cela cre une
autre variable tableau qui est une variable 'par rfrence' mais les rfrences seront
diffrentes de celle de a.

Autre diffrence :
La valeur d'un type rfrence peut prendre la valeur nulle, la valeur d'un type valeur ne peut
pas tre gal Nothing ( il est gal 0 quand il vient d'tre cre).


Voyons des exemples:
Mme si on affecte une variable par valeur une autre, les deux variables restent diffrentes:
elles conservent leur propre espace de stockage:
Dim L As Long
Dim P As Long
L=0
L=P 'on affecte P L
P=4 'on modifie P
=> L=0 P=4 Modifier P n'a pas modifi L

Par contre si on affecte une variable par rfrence une autre elle pointe toutes les 2 sur le
mme endroit mmoire: si j'en modifie une, cela modifie l'autre.
'Crons une Class contenant un entier (Exemple relire quand vous aurez tudi les Classes)
Class Class1
Public Value As Integer = 0
End Class

Dim C1 As New Class1()
Dim C2 As Class1 =C1 'on cre C2, on affecte C1 C2
C2.Value = 123 'on modifie C2

=> C1.Value=123 C2.Value=123 Modifier C2 a modifier C1 car elles pointent sur le mme
endroit mmoire.

On se mfiera donc du type.
Cours dinitiation Visual Basic.NET par Philippe Lasserre

Exemple sur les tableaux qui sont 'Par rfrence' :
Dim A(3) As String
A(1) = "a"
Dim B(3) As String
B(1) = "b"
B = A
A(1) = "c"
Label1.Text() = B(1) 'Affiche 'c'

En effet un tableau est 'par rfrence' et le fait de faire A=B donne la mme adresse mmoire
aux 2 tableaux, aussi , modifier l'un modifie l'autre.

B= A.Clone aurait copi le tableau A dans B en conservant 2 tableaux distinct et la dernire
instruction aurait affich 'a'.


Cas particulier : Exemple sur les 'String' qui sont 'Par rfrence' :
Attention, par contre :
Dim A As String
A = "a"
Dim B As String
B = "b"
B = A
A = "c"
Label1.Text() = B 'Affiche 'a'

Bien que cela soit par rfrence, B=A affecte simplement la valeur de A B, si on modifie
ultrieurement A, B n'est pas modifi. (Idem pour clone et copy!!) Pour une string il parait
donc impossible de la dupliquer, elle se comporte comme une variable par valeur!!!

Avez-vous des ides pour expliquer cela?
Par contre une String qui a t cre par Dim et non initialise contient Nothing.

Valeur aprs instanciation :

Apres cration (avant initialisation) une variable par Valeur contient 0,
Dim L As Long 'L contient 0
Par contre une String (par rfrence) qui a t cre par Dim et non initialise contient
Nothing.
Dim O As Object 'O contient Nothing: il ne pointe sur aucun objet.
On peut le tester par If IsNothing( O ) then.. ou If O Is Nothing..
Comparaison :
Une variable par Valeur peut tre compare une autre par "=",
Dim L As Long=12
Dim P As Long=24
If L=P Then..
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Par contre une variable par rfrence peut tre compare une autre par "Is".
Dim O As Object
Dim Q As Object
If O Is Q then..



Il existe une instruction qui permet de voir si une variable est de type Par rfrence

Cet exemple utilise la fonction IsReference pour vrifier si plusieurs variables font rfrence
des types rfrence.
Dim R as Boolean
Dim MyArray(3) As Boolean
Dim MyString As String
Dim MyObject As Object
Dim MyNumber As Integer
R = IsReference(MyArray) ' R= True. Tableau
R = IsReference(MyString) ' R= True. String
R = IsReference(MyObject) ' R= True. Objet
R = IsReference(MyNumber) ' R= False. Entier
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.7 Soyons Strict et Explicit


Option Strict

VB est naturellement trs arrangeant :

Par dfaut il transforme, quand cest possible, et si ncessaire un type de variable en
un autre type.

Si je passe un nombre qui est en double prcision (Double) dans une variable en simple
prcision (Single), VB accepte, au risque de perdre de la prcision (sil y a un trs grand
nombre de chiffre significatif).

Ainsi :
Dim D As Double
Dim S As Single
D=0.123456789
S=D
MessageBox.Show(s) ' affiche 0,1234568 le 9 est perdu car un single 7 chiffres
significatifs.

Cela peut tre ennuyeux si cest des calculs dastronomie et le programmeur ne sen rend pas
forcment compte !!!

Pour viter cela il faut activer lOPTION STRICT ON
Menu Projet > Proprits de Nom de projet.
Page de proprits de Langage VB.
Proprits communes, gnration.
En face de Option Strict, mettre On

Maintenant seules les conversions effectues explicitement seront autorises.
S=D est soulign dans le code pour signaler une conversion interdite.
(Par contre D=S est accept car on passe d'une variable une variable plus prcise)

Il faudra maintenant, pour notre exemple, crire :
S= CType(D,Single) Cela entrane une conversion de la valeur Double en Single

Sil y a perte de prcision, elle se produit quand mme, MAIS le programmeur SAIT quil y a
conversion, il prendra ou pas le risque EN CONNAISSANCE DE CAUSE.

Avec Option Strict le langage VB.Net devient bien moins tolrant :
Ecrire un programme avec Option Strict Off, a passe, mettre Option Strict On un tas
d'instruction coince!!

Mme certains exemples Microsoft!! Car sans s'en rendre compte on passe d'un type de
variable l'autre sans arrt!!

Option Strict Off' permet n'importe quoi. C'est du Basic au mauvais sens du terme.

Option Strict On' oblige une grande rigueur. C'est du VB.Net.








Cours dinitiation Visual Basic.NET par Philippe Lasserre

Option Explicit

Pour la dclaration des variables nous avions dit que toute variable utilise devait tre
dclare.
Par dfaut cest vrai.
Ouvrir Menu Projet > Proprits de Nom de projet.
Page de proprits de Langage VB.
Proprits communes, gnration.
En face de Option Explicit, il y a On

On pourrait (cest fortement dconseill) mettre cette option Off.
Cela ne rend plus obligatoire la dclaration des variables.
MaVariable = 10 sans dclaration pralable est accepte.

Cela prsente certains inconvnients : Si on fait une faute de frappe en tapant le nom dune
variable, VB accepte le nouveau nom et cre une nouvelle variable objet discinct.
Dim MaVariable MaVariable avec un b
MaVariabble = 10 Faute de frappe (bb) Je crois avoir mis 10 dans Mavariable

En fait jai mis 10 dans une nouvelle variable nomme MaVariabble
Mavariable toujours une valeur=0

Donc, cest clair et sans appel : Laisser Option Explicit On. Dans ce cas si vous tapez le nom
d'une variable non dclare, elle est souligne en bleue.


Option Strict et Explicit dans un module

On peut aussi indiquer dans un module les options; ces instructions doivent tre tapes
avant toutes les autres.


Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.8 Les constantes

Comme les variables, elles ont un nom et un type, mais leurs valeurs sont
'constantes'.

On les dclare par le mot Const, on peut les initialiser en mme temps avec =


Exemple :
Const NomFichier = "medical.dic" constante chane de caractres.
Const i As Integer = 1 constante Integer

Intrt des constantes

Elles amliorent la lisibilit.

Si une constante doit tre modifie ultrieurement, il suffit en mode conception, de modifier sa
valeur ce qui modifie sa valeur dans lensemble du code de lapplication.

Amliore la vitesse.

On rappelle que seuls les types primitifs peuvent avoir des constantes (Byte, Boolean,
Shot, Integer, Long, Single, Double, Decimal, Date, Char, String)


Constantes prdfinies

Il existe une liste de constantes prdfinies dans diffrentes Classes.

ControlChars.CrLf Chr$(13)+Chr$(10) sert sauter la ligne dans une chane de
caractres :

Si on affiche "VISUAL" & ControlChars.CrLf & "BASIC"

On obtient lcran :
VISUAL
BASIC

ControlChars.Tab Chr$(9) = caractre de tabulation
ControlChars.NullChar Aucun caractre
ControlChars.Nothing Chane vide
ControlChars.Back

Tapez ControlChars. Et comme dhabitude vous obtiendrez la liste des constantes.


Couleurs

On peut aussi utiliser les couleurs dfinies par VB

System.Drawing.Color.Blue Pour le bleu


Math

Si Import System.Math a t tap, vous aurez :
PI qui contient 3,14
E qui contient la base log naturel

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Touche du clavier

Il est parfois ncessaire de savoir si une touche prcise t tape par l'utilisateur au clavier,
pour cela il faut connatre les touches, mais pas besoin de se souvenir du codes des touches, il
suffit de taper Keys. et la liste des touches s'affiche.

Cliquer sur le nom de la touche recherche et vous obtenez la constante correspondant la
touche :
Keys.Right 'Dsigne le code de la touche '->'


True False

On rappelle que True et False sont des valeurs Boolens faisant partie intgrante de VB.

Pour les anciens de VB6 ne plus utiliser -1 et 0 (D'ailleurs maintenant cest 1 et 0).

Utiliser largement ces constantes fournies par VB, cela amliore la lisibilit et la
maintenance.


Enum

Le bloc Enum permet de crer une liste (une numration) de constantes cres par le
programmeur :
Enum TypeFichier
DOC
RTF
TEXTE
End Enum

Les constantes ainsi cres sont TypeFichier.DOC , TypeFichier.RTF, TypeFichier.TEXTE

Le bloc Enum doit tre dans l'en-tte du module.

C'est bien pratique car en crivant le code, ds que je tape TypeFichier. la liste (DOC RTF
TEXTE) apparat.

Ensuite, on peut utiliser dans le programme les constantes cres.
TypeFichier.DOC par exemple.

Chaque constante de l'numration a une valeur par dfaut.

Par dfaut :
TypeFichier.Doc = 0
TypeFichier.RTF = 1
TypeFichier.TEXTE = 2
..

Parfois le nom utilis dans l'numration est suffisant en soi et on n'utilise pas de valeur.

Dans un programme grant des fichiers, un flag prendra la valeur TypeFichier.DOC pour
indiquer qu'on travaille sur les fichiers .DOC.Peu importe la valeur de la constante, mais
d'autres fois il faut que chaque constante de l'numration possde une valeur particulire.

Je peux imposer une valeur chaque constante de l'numration :
Enum TypeFichier
DOC=15
Cours dinitiation Visual Basic.NET par Philippe Lasserre
RTF=30
TEXTE=40
End Enum

Je peux mme donner plusieurs valeurs avec And et Or condition d'utiliser l'attribut Flags.
<Flags()> Enum TypeFichier
DOC=15
RTF=30
TEXTE=40
TOUS= DOC AND RTF AND TEXTE
End Enum

Les numrations sont des types qui hritent de System.Enum et qui reprsentent
symboliquement un ensemble de valeurs. Par dfaut ses valeurs sont des 'Integer' mais on
peut spcifier d'autres types : Byte, Short, Integer ou Long.

L'exemple suivant dclare une numration dont le type sous-jacent est Long :

Enum Color As Long
Red
Green
Blue
End Enum

Noter que Vb contient un tas de constantes classes avec la manire Enum.


Exemple :
Quand on ferme une MessageBox. (Une fentre qui affiche un message), cela retourne une
valeur qui contient :
- MsgBoxResult.Yes',
- MsgBoxResult.No'
ou
- MsgBoxResult.Cancel'

En fonction du bouton qu'a utilis l'utilisateur pour sortir de la fentre MessageBox (appuie sur
les boutons Oui, Non Cancel).

Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.9 La surcharge

Surcharge

Quand on utilise une mthode avec des paramtres, il y a parfois possibilit d'utiliser, avec la
mme mthode, un nombre diffrent de paramtres ou des paramtres de natures diffrentes,
on appelle cela surcharger la mthode.

Chaque manire d'crire les paramtres s'appelle une signature.


Exemple :
Voici une fentre MessageBox :



Pour ouvrir une fentre MessageBox, il y a 12 signatures, en voici 2 :

- Dans ce premier cas on donne 4 paramtres :
Reponse= MessageBox.show(TexteAAfficher,Titre, TypeBouton etIcone,
BoutonParDfaut)

- Ici 1 seul paramtre :
Reponse= MessageBox.show(TexteAAfficher)

On voit qu'on peut appeler la mthode MessageBox.Show avec un nombre diffrent de
paramtres.

Comme on ne peut pas connatre toutes les signatures, VB nous aide :
Si on tape R= MessageBox.show( VB affiche dans un cadre une signature, de petites flches
permettent de faire dfiler tous les autres signatures :


Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.10 Les Oprateurs

Pour travailler sur les variables on utilise des oprateurs (addition, soustraction...).


Addition : +

Dans le cas de variables numriques.
A=B+C
Si B=2 et C=3 => A=5

On peut crire :
A=A+1

Dans ce cas, on affecte la variable A son ancienne valeur +1, si A=2 au dpart il aura
ensuite pour valeur 3.

A+=1 est quivalent A=A+1
Cela incrmente la variable A.


Soustraction : -

B=C-D

A-=1 est quivalent A=A-1


Multiplication : *

B=C*D


Division : /

On remarque que ce nest pas : qui est l'oprateur de division. (Ce signe sert de
sparateur quand plusieurs instructions sont sur la mme ligne.)

B=C/D


Division entire : \

Si A=10\3 => A=3


Puissance : ^

A=B^3 'A=B*B*B


Modulo

Cest le reste de la division par un nombre :
10 Mod 3 donne 1

Exemple : A est-il multiple de 3 ?
Si A Mod 3 =0, A est un multiple de 3

Cours dinitiation Visual Basic.NET par Philippe Lasserre
If A Mod 3 = 0 then


Concatnation : &

Cest une mise bout bout des chanes de caractres.
Si
A="VISUAL"
B=" "
C="BASIC"

D=A & B & C donne D="VISUAL BASIC"

Le signe + peut aussi tre utilis mais il est plutt rserv aux additions de variables
numriques.

&= permet aussi la concatnation A&=B est quivalent A= A&B


Priorits :

L'ordre des calculs se fait en fonction de la priorit des oprateurs.
Sil y a plusieurs oprateurs ^ a la priorit la plus forte puis * et / puis + et

Pour tre complet, voyons les priorits par ordre dcroissant :
^ lvation la puissance
- ngation unaire
/ et * multiplier et diviser
\ division entire
mod modulo
+ et - addition et soustraction.


Exemple : 2+3^3 donne 29 car VB effectue (3^3)+2 et non pas 125 (2+3)^3

S'il y a plusieurs oprateurs de mme priorit, l'ordre des calculs se fait de gauche
droite.

Pour viter toute faute dinterprtation utiliser des parenthses :

2+(3^3) lve toute ambigut.


Comparaison :

= gal
> suprieur
< infrieur
>= suprieur ou gal
<= infrieur ou gal
<> Diffrent de

Le rsultat dune comparaison est True (Vrai) ou False (Faux)


Exemple :
Dim A As Integer=2
Dim B As Integer=3
Cours dinitiation Visual Basic.NET par Philippe Lasserre
If A=B then...

A tant diffrent de B, A=B prend la valeur False et le programme passe la ligne en dessous
(pas aprs then).

Ici le signe = nindique pas une affectation mais une expression valuer.

Ici aussi on peut combiner les oprateurs et mettre des parenthses :
R= (C<>D)AND (D=2)

Comparaison de chane de caractres :
Les chanes de caractres sont compares en fonction du tri alphabtique.
A<B<C<Y<Z<a<b<cy<z<<
Dim A As String="A"
Dim B As String="Z"
If A<B then

A est bien infrieur B, donc A<B prend la valeur True et le programme saute aprs Then.

La casse (majuscules ou minuscules) est diffrencie.
Si on veut comparer sans tenir compte du fait que cest en majuscule ou minuscule, il faut
dabord transformer les 2 chanes en minuscule par exemple.
On veut comparer A="aaa" et B="AAA"

Normalement A est diffrent de B :
A=B retourne False

Par contre A.ToLower=B.ToLower retourne True (Vraie) car ToLower transforme en minuscule.

En utilisant Option Compare Text en dbut de module, on ne diffrencie plus la casse: "A"
devient gal "a".


Logique : Not And Or ElseOr Xor

SI A et B sont des expressions Boolennes
A And B retourne True si A et B sont vrais
A Or B retourne True si une des 2 est vrai
A Xor B retourne True si une et une seule est vrai
Not A retourne True si A tait faux et vice versa

On entend par expression Boolen le rsultat de l'valuation d'une condition :
A=B retourne True si A=B et False si A diffrent de B.


Exemple :
Si A diffrent de B... peut scrire IF Not(A=B)...
Si A compris entre 2 et 5 peut scrire IF A>=2 And A<=5...

Rentrons dans le dtail :

Les oprateurs And, Or et Xor sont valus comme suit en fonction du type d'oprandes :
Pour le type Boolean :
Une opration And logique est effectue sur les deux oprandes.
Une opration Or logique est effectue sur les deux oprandes.
Une opration Or exclusif logique est effectue sur les deux oprandes.

Pour les types Byte, Short, Integer, Long et tous les types numrs, l'opration
spcifie est ralise sur chaque bit de la reprsentation binaire des deux oprandes :
Cours dinitiation Visual Basic.NET par Philippe Lasserre
And : Le bit de rsultat est 1 si les deux bits sont 1. Sinon, le rsultat est 0.
Or : Le bit de rsultat est 1 si l'un des deux bits est 1. Sinon, le rsultat est 0.
Xor : Le bit de rsultat est 1 si l'un des deux bits est 1 mais pas les deux. Sinon,
le bit de rsultat est 0 (c'est--dire 1 Xor 0 = 1, 1 Xor 1 = 0).

Les oprateurs AndAlso et OrElse sont uniquement dfinis sur le type Boolen, ils
sont plus rapides car ils n'valuent pas la seconde expression si ce n'est pas
ncssaire.


Dplacements de bits : << et >>

Les oprateurs binaires << et >> effectuent des oprations de dplacement de bits. Ces
oprateurs sont dfinis pour les types Byte, Short, Integer et Long.

L'oprateur << dcale gauche les bits du premier oprande du nombre de positions
spcifi. Les bits de poids fort situs en dehors de la plage du type de rsultat sont limins, et
les positions libres par les bits de poids faible sont remplies par des zros.

L'oprateur >> dcale droite les bits du premier oprande du nombre de positions
spcifi. Les bits de poids faible sont limins et, si l'oprande de gauche est positif, les
positions libres par les bits de poids fort sont mises zro, s'il est ngatif, elles sont mises
un. Si l'oprande de gauche est de type Byte, les bits de poids fort disponibles sont remplis
par des zros.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.11 Les Structures de contrle

Elles permettent de grer le droulement du code.

Nous allons tudier :
- If Then
- Select Case
- For Next
- Do Loop
- While End While
- For Each
- Switch
- IIF


If Then

Permet de crer une structure dcisionnelle :
If Condition Then
End if

Si Condition vraie alors

Une instruction ou un bloc dinstructions peut tre excute si une condition est vraie.


Exemple :
If A=B Then MsgBox("A=B")

Si A = B alors on affiche dans une fentre MessageBox A=B

'Noter que tout est sur une seule ligne (Pas besoin de End If),
On aurait pu crire un bloc If..End If:
If A=B then
MsgBox("A=B")
End If

On peut tester une condition fausse et dans ce cas utiliser Not.
If Not A=B Then MsgBox("A diffrent de B")

Si A et B sont diffrent (Not A=B signifie NON gaux) afficher "A diffrent de B".

Il peut y avoir des oprateurs logiques dans la condition :
If A=B And C=D then...


Autre exemple :
If Not IsNumeric(N) then
MsgBox ("R nest pas un nombre")
Exit Sub
End if

Si N nest pas numrique alors afficher dans une boite de dialogue: R nest pas un nombre
puis quitter la procdure (Exit Sub)

Noter bien que comme il y a plusieurs instructions aprs Then on cre un bloc dinstruction de
plusieurs lignes entre Then et End If.

Au lieu de :
Cours dinitiation Visual Basic.NET par Philippe Lasserre
If Condition=True Then
End if

On peut crire :

If Condition Then
End if

Condition tant de toute manire value pour voir si elle est vraie.

On peut aussi utiliser la structure :
Si..Alors..Sinon

If condition then
.. Effectu si condition vraie
..
Else
..Effectu si condition fausse
..
End if

Des structures If Then peuvent tre imbriques :
If..
If..
..
Else
If..
..
End if
End if
End If

Pour bien reprer les diffrents niveaux, utiliser les tabulations et dcaler le If then et son
code au mme niveau.

Pour vrifier sil ny a pas derreur, compter les if, il doit y en avoir autant que des end If. VB
souligne le if si il ny a pas de end if.


Dernire syntaxe :
If Condition1 Then
..
ElseIf condition2 Then
..
ElseIf condition3 Then
..
End if

Si condition1...
Sinon si condition2
Sinon si condition3
Fin Si


Select Case

Crer une structure dcisionnelle permettant dexcuter un grand nombre de blocs de code
diffrents en fonction de la valeur dune expression :

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Select Case expression
Case valeur1
code effectu si expression=valeur1

Case valeur2
code effectu si expression=valeur2

Case valeur3
code effectu si expression=valeur3

..
Case Else
code effectu dans tous les autres cas

End Select

Attention si expression=valeur1 le code entre Case Valeur1 et Case valeur2 (et uniquement
celui l) est effectu, puis lexcution saute aprs End Select.


Exemple dun code affichant le jour de la semaine :

N est un entier contenant le numro dordre du jour (entre 1 et 7)
Select Case N
Case 1
MsgBox "Lundi"

Case 2
MsgBox "Mardi"

Case 3
MsgBox "Mercredi"
..
..
Case Else
MsgBox "Nombre pas entre 1 et 7"
End select

Nous venons dutiliser une expression simple aprs chaque Case mais on peut utiliser des
expressions plus complexes :

Plusieurs clauses d'expression peuvent tre spares par des virgules.
Select Case N
Case 8,9,10
Effectuer le code si N=8 ou N=9 ou N=10

Le mot cl To permet de dfinir les limites d'une plage de valeurs correspondantes pour N.
Select Case N
Case 8 To 20
Effectuer le code si N est dans la plage 8 20

Le mot cl Is associ un oprateur de comparaison (=, <>, <, <=, > ou >=) permet de
spcifier une restriction sur les valeurs correspondantes de lexpression. Si le mot cl Is n'est
pas indiqu, il est automatiquement insr.
Select Case N
Case Is >= 5
Effectuer le code si N suprieur ou gal 5.

Vous pouvez utiliser plusieurs expressions ou plages dans chaque clause Case (spares par
Cours dinitiation Visual Basic.NET par Philippe Lasserre
des virgules). Par exemple, la ligne suivante est valide :
Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

Vous pouvez aussi indiquer des plages et des expressions multiples pour des chanes de
caractres. Dans l'exemple suivant, Case correspond aux chanes qui sont absolument
identiques aaa , aux chanes comprises entre ccc et ddd dans l'ordre alphabtique,
ainsi qu' la valeur de Var :
Case "aaa", "ccc" To "ddd", Var


For Next

Permet de faire des boucles.

Les boucles sont trs utilises pour parcourir une plage de valeur qui permet par exemple de
parcourir tous les lments dun tableau ou pour effectuer de manire itrative un calcul.

Le nombre de boucle va tre dtermin par une variable qui sert de compteur.

Le nombre dexcution est dtermin au dpart de la boucle car le compteur a une valeur de
dpart, une valeur darrt.

Pour variable allant de 'dbut' 'fin'
Boucler

Donne en VB :
For variable=dbut To fin
..
Next variable

Dim i as integer
For i=1 to 10
MsgBox i.toString
Next i

En langage courant : Pour i allant de 1 10, afficher la valeur de i dans une MessageBox.

La variable compteur va prendre successivement les valeurs 1 puis 2 puis 3 jusqu' 10 et
effectuer chaque fois le code qui est entre For et Next.

Si on dcompose :
i=1 Affiche 1 , arriv Next, remonte For, i =2 , affiche 2
i=10, affiche 10 poursuit aprs Next.

Il peut y avoir un pas (Step), le compteur s'incrmente de la valeur du pas chaque boucle.
Dim i as integer
For i=1 to 10 Step 2
MsgBox i.toString
Next i

Affiche 1 puis 3 puis 5 puis 7 puis 9

Attention si la valeur de sortie de boucle est infrieure celle dentre il faut indiquer un pas
ngatif
Dim i as integer
For i=10 to 1 Step -2
MsgBox i.toString
Next
Affiche 10 puis 8 puis 6 puis 4 puis 2
Cours dinitiation Visual Basic.NET par Philippe Lasserre

Bien sur on peut utiliser des expressions calcules :
For i=A to B*10 Step X-2
MsgBox i.toString
Next i

La variable boucle peut tre dclare aprs For, dans ce cas cette variable n'existe que dans la
boucle :
For K As Integer = 1 To 10
...
Next K


Do Loop

Permet aussi de faire des boucles mais sans que le nombre de boucle (ditration) soit
dtermin au dpart.

Cest la condition darrt qui dtermine la sortie de la boucle :
Aprs Do on doit mettre Until (Jusqu ce que) ou While (Tant que)

Do Until condition
Code
Loop

'Boucler jusqu' ce que : condition est une condition de sortie.

Si condition est fausse, effectuer le code, boucler et recommencer le code jusqu ce que
condition soit vraie.

A chaque boucle la condition est value.


Exemple pour chercher un mot dans une liste :

Lire Premier Mot
Do Until MotCherch=MotPoint
Pointer Mot suivant
Loop

On peut aussi utiliser While (Tant que)

Lire Premier mot
Do While MotCherch<>MotPoint
Pointer Mot suivant
Loop

Tant que le mot cherch est diffrent du mot point continuez boucler.

La condition peut tre mise en fin de boucle, cela permet deffectuer au moins une fois le
code. Cela vite aussi davoir dmarrer le processus avant la boucle : dans notre exemple
cela permet dviter de lire le premier mot :

Les mots sont dans un tableau Mot(), premier lment Mot(0)
IndexMot=-1
Do
ndexMot=IndexMot+1
Loop While MotCherch<>Mot(IndexMot)

Cours dinitiation Visual Basic.NET par Philippe Lasserre
Il faudrait en plus boucler jusqu' la fin du tableau et pas plus.


Exemple complet, imposer la saisie dun nombre ngatif lutilisateur :

On utilise InPutBox qui ouvre une fentre et attend une rponse.
Dim Reponse as Single
Do
Reponse=InPutBox( Entrer un nombre ngatif. )
Loop While Reponse>=0

Si le nombre n'est pas ngatif, la boucle fonctionne et la boite InPutBox souvre de nouveau.


While, End While

Permet une boucle qui tourne tant qu'une condition est vraie.
While Condition
...
End While


Exemple: on incrmente un compteur, on sort quand il est gal 20.
Dim Counter As Integer = 0
While Counter < 20 ' Test la valeur du compteur.
Counter += 1 ' Incrmente le compteur.
End While


For Each

Cest une variante de la boucle For mais elle permet de parcourir les objets dune
collection.

Prenons un contrle ListBox il a une collection Items qui contient tous les lments de la
ListBox
ListBox.item(0) contient la premire ligne
ListBox.item(1) contient la seconde ligne
ListBox.item(2)contient la troisime.

Parcourir tous les lments de la ListBox et les mettre dans une variable V scrirait :
Dim V as string
Dim item as objet
For Each item in ListBox.items
V=V+item
Next

La variable de boucle peut tre dclare aprs For.


Switch

Switch est utilis avec des couples d'arguments, si le premier est vrai, le second est
retourn.

Rponse=Switch( Expression1, Reponse1, Expression2, Reponse2)

Si Expression2 est vrai Reponse2 est retourn.
Monnaie= Microsoft.VisualBasic.Switch(Pays = "USA", "Dollar", _
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Pays = "FRANCE", "Euro", Pays = "Angleterre", "Live")

Si Pays="FRANCE", cette expression est vrai, le second objet du couple est retourn.
Retourne Euro


IIf

IIf est utilis avec 3 arguments.
Si le premier argument est vrai, le second est retourn.
Si le premier argument est faux c'est le troisime qui est retourn.
Reponse = IIf( Nombre > 0, "Positif", "Ngatif ou 0")

Comme dans Switch on peut utiliser des procdures comme argument.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.12 Procdures et Paramtres

Revenons sur les procdures et leurs paramtres.

Quand on appelle une procdure (un sous-programme, une routine), le logiciel saute au
sous-programme, il effectue celui-ci puis revient effectuer ce qui est sous lappel.

En VB les procdures sont des Sub ou des Function.

On peut fournir aux procdures des paramtres qui sont envoys la fonction.


Exemple:
Function Carr ( V as Single) as Single
Return V*V
End Function

Cela cre une fonction qui se nomme Carr, on peut lui envoyer un paramtre (elle accepte
un Single)

Cette fonction retourne le carr du paramtre fourni.

Pour l'utiliser :
Dim resultat as Single
resultat= carr(2) 'resultat est alors gal 4

On appelle la fonction carr avec le paramtre 2, elle retourne 4.

Les paramtres peuvent tre des variables :
Dim resultat as Single
Dim valeur as Single=3
resultat= carr(valeur)


Les parenthses

Rappel, mme s'il n'y a pas de paramtre, mettre des () lors de l'appel de procdure.
MaRoutine()


Par Valeur, Par Rfrence

Il y a 2 manires denvoyer des paramtres :
- Par valeur : (By Val) cest la valeur (le contenu de la variable) qui est envoye.
- Par rfrence :(By Ref) cest ladresse (le lieu physique ou se trouve la variable) qui
est envoye. Si la Sub modifie la variable, cette modification sera visible dans la
procdure appelante aprs le retour.


Exemple de procdures :
Sub MaProcedure (ByRef x as Long, ByVal y As Long)
End Sub

Si j'appelle cette procdure partir dune procdure nomm Main() :

Sub Main()
MaProcedure (A, B)
End sub

Cours dinitiation Visual Basic.NET par Philippe Lasserre
C'est l'adresse de A qui est envoye et la valeur contenue dans la variable B qui est
envoy. Elles se retrouvent dans les variables x et y de la procdure MaProcedure. Si
dans cette dernire je modifie x , A est modifi dans la Sub Main (puisque x et A pointe sur le
mme endroit). Si dans Maprocedure je modifie y , B nest pas modifi.

ATTENTION : Par dfaut les paramtres sont transmis PAR VALEUR

Pour la clart du code et pour viter toute ambigut, spcifier ByRef ou ByVal, c'est
plus lisible, plus clair.

Tapez Sub MaProcedure (ByRef x as Long, ByVal x As Long)
Plutt que Sub MaProcedure ( x as Long, x As Long)


Optional

Un paramtre ou argument peut tre Optional, c'est dire facultatif.

Indique que cet argument n'est pas requis lorsque la procdure est appele. Si ce mot cl est
utilis, tous les arguments suivants doivent aussi tre facultatifs et dclars l'aide du mot cl
Optional.

Chaque dclaration d'argument facultative doit indiquer une valeur par dfaut.
Sub MaRoutine (Optional X As Integer=0)


Tableau de paramtres

Il est possible d'envoyer un tableau comme paramtre.


Exemple :
Dim Reponses(10) As Integer
'Appel de la Sub
Affiche( Reponses())
La Sub Affiche dbute par :
Sub Affiche ( R() As Integer )
End Sub


ParamArray

Parfois il faut envoyer des paramtres de mme type mais dont on ne connat pas le nombre,
dans ce cas on utilise ParamAray (Liste de paramtres) :
Function Somme ( ByVal ParamArray Valeurs() as Integer) As Integer
Dim i as Integer
Dim Total as Integer
For i=0 to Valeurs.Length-1
Total += Valeurs(i)
Next i
Return Total
End Sub

Pour appeler cette fonction :
Dim LeTotal As Integer
LeTotal= Somme (2, 5, 6, 8 ,5)

A noter que le paramtre ParamArray doit tre le dernier des paramtres, c'est
Cours dinitiation Visual Basic.NET par Philippe Lasserre
obligatoirement un paramtre ByVal et comme on l'a dit, tous les paramtres sont de mme
type.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.13 Porte des variables

Quand on dclare une variable, jusquo est-elle visible ?


Dans les procdures

Si on dclare une variable dans une procdure, elle est visible uniquement dans cette
procdure, c'est une variable locale :
Sub MaProcedure (ByRef X As Integer)
Dim Y As Integer
...
End sub

Y est dclar en dbut de procdure, on pourra travailler avec Y dans la procdure jusqu' End
Sub. Dans une autre procdure Y ne sera pas visible (l'utilisation de Y dclencherait une
erreur.)

Aprs End Sub Y n'existe plus, son contenu est perdu. Il en est de mme pour X qui est
dclar sur la ligne Sub.

Une autre procdure pourra dclarer et utiliser une variable Y, mais, mme si elle a le mme
nom cela ne sera pas la mme, chaque variable Y est uniquement visible dans sa procdure.

Variable statique :
Si la place de Dim on utilise Static, la variable est dite 'Statique'. A la sortie de la procdure,
la valeur continue d'exister et garde sa valeur, lors des appels suivants de la procdure, on
retrouve la valeur de la variable.


Exemple :
Sub compteur
Dim A as integer
Static B as integer
A +=1
B +=1
End sub

A chaque appel de cette procdure A prend la valeur, 0 puis 1 puis disparat.
B prend les valeurs 0, puis 1, puis 2... (Incrmentation chaque appel)


Dans un bloc dinstruction

Si vous dclar une variable dans un bloc, elle ne sera visible que dans ce bloc :
Do
Dim Compteur A integer
Compteur +=1
...
Loop

La variable Compteur existe uniquement entre Do et Loop


Dans la section dclaration dun Module

Dans la section dclaration d'un module, on utilise la place de Dim :
- Private : dans ce cas la variable est propre au module, elle est visible dans toutes les
procdures du module, pas dans les autres modules.
Cours dinitiation Visual Basic.NET par Philippe Lasserre

- Public : dans ce cas la variable est accessible dans la totalit du programme.
Public A as String
A est accessible partout.


Dans la section dclaration dune fentre, dun formulaire

- Private : indique dans ce cas que la variable est propre au formulaire, elle est visible
dans toutes les procdures du formulaire, pas dans les autres modules ou formulaires.

- Public : indique de mme une variable UNIQUEMENT visible dans le formulaire.
Elle est visible hors du formulaire a condition de la prfixer avec le nom du formulaire.


Exemple :



Dans l'exemple ci-dessus :
MaVariable est visible dans le formulaire, et hors du formulaire condition d'utiliser
NomFormulaire.MaVariable.
MaVariable2 est visible dans le formulaire.
MaVariable3 n'est visible que dans la procdure Button1_Click.


En pratique

Pour se reprer et se souvenir quelle est la porte d'une variable, on utilise une lettre en
dbut du nom de la variable :
g_MaVariable sera public (g comme global).
m_Variable2 sera accessible au niveau du module.

Dans un module standard, on met toutes les variables Public accessibles par tous. Leurs
noms dbutent par g. Ce sont les variables (et constantes) gnrales utilises dans la totalit
de l'application : tat du programme, utilisateur en cours...

Dans chaque formulaire on met dans la section dclarations, les variables du module:
tat du formulaire, variables permettant l'affichage...

Dans chaque procdure les variables locales, compteur de boucle...
Pour les variables locales on peut donc utiliser un mme nom dans diffrentes procdures,
par exemple, on nomme souvent I les variables de boucle dans toutes les procdures.

Par contre il faut viter de donner un mme nom des variables dont la porte
se recoupe.

VB l'accepte et utilise la variable la plus proche, celle du bloc ou du module...mais c'est
dangereux et gnrateur de bugs.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.14 Le Hazard, lalatoire

Comment obtenir un nombre alatoire ?

Rnd() fournit un nombre alatoire entre 0 et 1 (sans jamais attendre 1) :valeur infrieure 1
mais suprieure ou gale zro; ce nombre alatoire est un Single.

En fait,si on fait des Rnd() successifs, le nombre alatoire prcdemment gnr est utilis
pour le calcul du nombre alatoire suivant, ce qui fait que la suite de nombre alatoire est
toujours la mme.

Randomize() initialise le gnrateur de nombres alatoires. Si on ne donne pas d'argument,
Randomize utilise la valeur de l'horloge interne pour initialiser; cette valeur est d au hasard,
aussi le Rnd qui suit va tre d au hasard.

Si on n'utilisait pas Randomize() avant Rnd(), la fonction Rnd() fournirait toujours les mmes
nombres alatoire dans le mme ordre.


En rsum :
En fait Rnd fournit une suite de nombre pseudo alatoire (le suivant tant calcul partir du
prcdent), la suite est toujours la mme, seule le premier change et est initialis par
Randomize qui est bas soit sur l'horloge systme (et qui priori initialise une valeur
toujours diffrente) s'il n'y a pas d'argument soit sur un argument.

Pour obtenir plusieurs fois les mmes sries de nombres, utiliser Randomize avec un
argument numrique puis appelez Rnd() avec un argument ngatif.


Simuler un jeu de lancer de d

Comment obtenir un nombre entier entre un et six au hasard ?
Dim MyValue As Integer
Randomize 'Initialise le gnrateur de nombre alatoire.
MyValue = CInt(Int((6 * Rnd()) + 1)) 'Gnre un nombre alatoire entre 1 et 6.

Rnd() fournissant un nombre alatoire entre 0 et 1, je le multiplie par 6 et j'ajoute 1 pour qu'il
soit entre 1 et 7 sans atteindre 7 (il peut tre entre 1 et 6,999), je prend sa valeur entire: il
est maintenant entre 1 et 6, enfin je le transforme en Integer.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.15 Rcursivit

Une procdure est rcursive si elle peut s'appeler elle mme.


Exemple, calcul de Factorielle

On rappelle que N! (factorielle N)= 1*2*3*...*(N-2)*(N-1)*N

Exemple Factorielle 3 =1*2*3
Dim R As Long
R=Factorielle(3) 'retournera 6


Cette fonction n'est pas fournie par VB, crons une fonction Factorielle SANS rcursivit :
Function Factorielle (ByVal N as Long) As Long
Dim i As Long
Resultat=1
For i= 1 to N
Resultat=i* Resultat
Next i
Return Resultat
end Function

Cela cre une fonction recevant le paramtre N et retournant un long.
La boucle effectue bien 1*2*3...*N-1*N.


Factorielle avec 'Rcursivit' :
Une autre manire de calculer une factorielle est d'utiliser la rcursivit:
VB gre la rcursivit.

Comment faire?
On sait que N!= N * (N-1) * (N-2).... 3 * 2 * 1

On remarque donc que Factorielle N!= N * Factorielle(N-1)
N!= N*(N-1)! , en sachant que 1!=1

Crons la fonction :
Si N=1 la fonction retourne 1 sinon elle retourne N* factorielle(N-1)
Function Factorielle (ByVal N as Long) As Long
If N=1 then
Return 1
Else
Return N* Factorielle(N-1)
End If
end Function

Dans la fonction Factorielle on appelle la fonction Factorielle, c'est bien rcursif.

Pour N=4 :
La fonction 'descend' et appelle chaque fois la factorielle du nombre infrieur.

La fonction Factionnelle est appele 4 fois :
Factorielle (4) appelle Factorielle(3) qui appelle Factorielle(2) qui appelle Factorielle (1)
Puis la fonction remonte en retournant le rsultat de chaque factorielle.

Factorielle (1) retourne 1
Factorielle (2) retourne 2 '2* factorielle (1)
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Factorielle (3) retourne 6 '3*factorielle (2)
Factorielle (4) retourne 24 '4*factorielle (3)

Vb gre cela avec une pile des appels. il met dans une pile les uns aux dessus des autres les
appels, quand il remonte, il dpile de haut en bas (Dernier rentr, premier sortie)

Attention : La pile a une taille maximum, si N est trop grand, on dclenche une
erreur de type StackOverflow.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.19 Le GOTO

Faut-il utiliser le GOTO ?

GoTo permet un saut non conditionnel aller , il saute vers une tiquette :
...
Goto FIN
...
FIN:

FIN: est une tiquette, un mot en dbut de ligne qui dsigne un endroit du code; pour crer
une tiquette, taper en dbut de ligne un mot suggestif de l'endroit, puis ajouter ":".

Le programme saute de la ligne GoTo FIN l'tiquette FIN: puis se poursuit aprs FIN :

Le GoTo est souvent utilis avec une instruction If :
If A=0 Then Goto FIN
..
FIN:

L'utilisation du GoTo est peu lgante et viter; s'il y a plusieurs GoTo le programme devient
vite illisible.

On peut remplacer avantageusement la ligne prcdente par :
If A<>0 Then
..
End if
Cours dinitiation Visual Basic.NET par Philippe Lasserre
1.20 Les Classes, les Objets

Rsumons un peu la notion de Classe, d'objet, de surcharge, de classe statique.


Classes

Nous avons vu quon utilise des objets.

Il existe des 'types dobjet'qui dfinissent les caractristiques communes des objets. Ces
types se nomment les Classes.


Exemple :
La Classe System.Windows.Forms contient les 'Forms' et les 'Control'

On rappelle que cest ces classes que lon utilise comme moule pour instancer (crer) un
objet.
Dim B As New Form cre un formulaire partir de la Classe Form (Fentre).

B hrite de toutes les caractristiques de la Classe Form.


Essayons de comprendre

Pour utiliser un objet en VB, il faut.

Que la DLL correspondante soit charge dans le projet. (La DLL c'est un fichier
excutable '.dll' qui contient le code ncessaire). En VB.NET on appelle cela la 'Rfrence'.


Exemple de DLL:
System.dll

Que l'espace de nom soit import: une DDL contient des Classes d'objet. Pour utiliser une
Classe il faut l'inclure dans le programme donc il faut l'importer partir de la DLL. On va par
exemple importer l'espace de nom 'System.Windows.Forms' (contenue dans System.dll et qui
contient les Classes 'Form' et 'control') :
Import System.Windows.Forms

On peut maintenant utiliser les Classes contenues dans cet espace de nom et crer
un objet. Par exemple on va crer une fentre avec la Classe Form contenue dans
System.Windows.Forms.
Dim Form1 As Form

Form1 est donc un objet formulaire qui hrite de tous les membres (Proprits, mthodes) de
la Classe Form, on peut donc utiliser une mthode de cet objet :
Form1.Show()

Ou une proprit :
Form1.BackColor=RED

Les Classes les plus courantes sont dj charges et disponible, ce qui simplifie un
peu les choses.

Voyons les dtails des choses.


Les diffrentes Classes :
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Il existe 3 types de Classes :

Les Classes spcifiques :
Celles que lon cre de toute pice dans les modules de Classe. (On verra cela plus loin)
En VB, on peut crer une classe, ses proprits, mthodes

Les Classes prdfinies du Framework :
Ces classes de bases sont regroupes en bibliothques sous la dnomination Espace de
noms et font partie :
Du Framework

Du Common Language Runtime.

Il existe ainsi de manire gnrale des classes :
- pour les formulaires Windows (WindowsForms),
- pour le Web (WebForms),
- pour laccs aux donnes,
- les rseaux,
- la scurit....

Quand on cre un nouveau projet, les Classes le plus souvent utilises sont
automatiquement charges dans le projet.

Voir l'onglet "Explorateur d'objet

Sont disposition lors de la cration d'un nouveau projet :
Quelques classes du Framework:
- System,
- System.data,
- System.drawing,
- System.Windows.forms

Ce dernier contient les Controls

Le Common Language Runtime (CLR).
Comme ces Classes sont charges au dpart cela permet demble de crer des
feuilles, des contrles..(qui sont dans les WindowsForms et les Controls).

Les Classes fournies par des tiers :

On peut ajouter des rfrences (DLL) permettant d'ajouter des classes nouvelles, cela permet
d'ajouter de nouvelles fonctionnalits VB: pilote de base de donnes


Imports

Certains espaces de noms ne sont pas chargs, lespace de noms Math nest pas charg par
exemple. (Bien que la rfrence, la dll qui se nomme System soit prsente dans le projet.)

Si je veux utiliser Round pour arrondir un nombre il faut dabord importer lespace de nom
Math :

Pour cela il faut taper en haut de la fentre (au dessus de public Class) :
Imports System.Math

Ensuite, est accept :
Label1.Text = (Round(1.2)).ToString qui affiche 1.

Si lImport na pas t fait, System.Math.Round(1.2) est accept aussi.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Noter bien que comme Math fait partie de System, la rfrence (la DLL correspondante) est
dj charge.


Autre exemple: si on veut utiliser les fichiers, il faut importer System.IO.


Porte de lespace de noms

Si un seul espace de noms est spcifi (Import System), tous les membres nom unique de
cet espace de noms sont prsents. Si un espace de noms et le nom d'un lment de l'espace
de noms sont spcifis (Import System.Math), seuls les membres de cet lment sont
disponibles sans qualification.

Exemple :

Import System

Permet d'utiliser System.ArgumentException mais pas Systeme.Math.round

Pour utiliser Round il faut Importer System.Math


Proprit ambigu

Certaines proprits sont communes plusieurs classes, il peut y a avoir ambigut et il faut
utiliser dans ce cas la syntaxe complte.

Cela semble le cas pour left qui est une proprit de Microsoft.VisualBasic.Strings mais aussi
une proprit des contrles.

MonControle.left=250 est accept
Chaine= left(C,2) pose des problmes.

Pour lever l'ambigut il faut crire Microsoft.VisualBasic.left(C,i) par exemple quand on utilise
left pour manipuler des chanes. (C'est ce que j'ai compris!!)

Chaine= Microsoft.VisualBasic.left(C,2) est accept.


Alias

Parfois pour simplifier l'criture ou pour viter des ambiguts on peut utiliser des Alias :
Imports STR= Microsoft.VisualBasic.Strings importe l'espace de nom String mais
le dsigne sous le nom de STR (STR est un Alias).

STR est utilis ensuite :
Chaine=STR.left(C,i)


Rfrences

Pour qu'une classe soit utilise, il faut que le composant correspondant (la DLL) soit charge,
on a vu que par dfaut quelques composants du framework (System.dll..) et le CLR
(mscorlib.dll) tait chargs.

Dans Explorateur de solutions double-cliquer la rubrique rfrences pour voir les DLL
(rfrences dj charges).
Cours dinitiation Visual Basic.NET par Philippe Lasserre


Si vous souhaitez utiliser un autre composant dans votre application et qu'il n'est pas charg, il
faut ajouter la rfrence de ce composant. Dans la fentre de l'explorateur de solutions,
cliquez le bouton droit de la souris puis cliquez sur 'Ajouter une rfrence'.

La bote de dialogue 'Ajouter une rfrence de Visual Studio .NET' propose trois options :
.NET - Rpertorie tous les composants .NET Framework pouvant tre rfrencs.
(Certains sont dj charg comme System...) et les composants extrieurs.

COM - Rpertorie tous les composants COM pouvant tre rfrencs.

Projets - Rpertorie tous les composants rutilisables crs dans des projets locaux.


Exemple :
Pour avoir la compatibilit VB6 par exemple charger Microsoft.VisualBasic. Compatibility et
Microsoft.VisualBasic. Compatibility.Data, vous aurez ensuite accs cet espace de nom.

En rsum :
Les rfrences (correspondent aux DLL) permettent de charger des composants, des
Classes du Framework ou d'autres classes.

L'instruction 'Imports' permet d'importer des espaces de nom venant de ses
rfrences.

Cela donne accs dans le programme des classes appartenant a ces espaces de
noms. on pourra instancer des objets grce ces Classes ou utiliser des mthodes.

Noter que dans les Classes, il existe une structure arborescente :
La premier Classe (en haut) est System.
Dessous il y a entre autres System.WindowsForms
Dessous System.WindowsForms.Controls
Enfin System.WindowsForms.BackColor par exemple.


Remarque sur les objets et leurs mthodes

Hritage:
Les classes hritent des membres (proprits, mthodes) dont elles sont issues:


Exemple :
Un contrle Button hrite des membres de System.Windows.Forms. (les proprits Name, Left,
Right, Visible, Enabled.. par exemple.)

Lobjet lui-mme a des membres (proprits et mthodes) :
Elles sont accessibles directement :
Exemple pour .Trim de la chane A
Cours dinitiation Visual Basic.NET par Philippe Lasserre
A.Trim(" ")

A tant une String, la mthode .trim relative au String est utilisable.
On appelle cela une mthode d'instance car elle travaille sur une instance d'un objet.

Dautres sont accessibles uniquement par les mthodes de la classe :
La Classe de leur nature, de leur type.
Dans la classe 'String' jutilise la mthode Compare pour comparer 2 chanes.
c=String.Compare(a,b)

La Classe de lopration effectuer
Dans la Classe Math jutilise la mthode Abs (Valeur absolue)
c=Math.Abs(-12)

On appelle cela une mthode partage car on l'utilise directement partir d'une classe.


Langage Visual Basic

Dans VB.Net il y a donc possibilit de travailler avec :
Les Classes, leurs proprits, leurs mthodes. Les Forms, Controls, les classes des
variables (String, Int32..) sont disponibles par dfaut.

Les instructions VB du Common Langage Runtime disponible par dfaut.

Les instructions de la bibliothque de compatibilit VB6. il faut dans ce cas importer
Microsoft.VisualBasic. Compatibility et Microsoft.VisualBasic. Compatibility.Data

En effet, par dfaut, par soucis de faciliter les migrations de VB6 vers VB.NET, VB.NET contient
toutes les fonctions venant de VBA.


Exemple :
Pour la manipulation des nombres :
- 'Int' fait partie du CLR,
- 'Round' fait partie de la classe Math,
- 'Randomize' et 'Rnd' font partie de la bibliothque de compatibilit.

Parfois certaines fonctions font double emploi et ont des quivalents dans les 2 ou 3
catgories.

Les Classes sont souvent plus riches avec multiples surcharges et, si j'ai bien compris, comme
le CLR, sont communes tous les langages utilisant le Framework .Net. Si vous voulez passer
au C#, les classes sont les mmes.

Par contre, les instructions devant de la compatibilit VB6 sont propres VB.NET. Seront-elles
conserves dans les futures versions de VB.NET?


Classe Statique

Certaines Classe sont dites Statiques car elles existent d'embl et on peut travailler dessus
sans que l'on ait besoin de les instancer.


Exemple :
La Classe Directory (rpertoire) :
Directory.GetCurrentDirectory 'est utilisable directement pour obtenir le rpertoire
courant.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Par contre avec une Classe non statique il faut instancer l'objet que l'on va utiliser.

Pour la classe DirectoryInfo (information sur le rpertoire), on doit instancer avant usage
un DirectoryInfo particulier:
Dim D As DirectoryInfo
D= New DirectoryInfo( MonDossier)

C'est un peu thorique, mais on verra au fur et mesure des exemples pratiques de cela.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Exemples de petites routines

E 1.1 Exemples : Petites routines

On prendra des exemples de routines trs simples ne contenant que du code :
- Avec les strings
- Avec les nombres


Avec les strings

Vous avez une chane de caractres, comment afficher, le premier caractre puis les
2 premiers, puis 3 ?

Dans un formulaire (une fentre), il y a un TextBox1( zone de texte) (avec sa proprit
Multiline=True)
Dim C As String = "DUBONET"
Dim Tx As String
Dim i As Integer
For i = 1 To Len(C)
Tx += Microsoft.VisualBasic.Left(C, i) + ControlChars.CrLf
Next i
TextBox1.Text = Tx

Mettre ce code dans Form_Load puis lancer le programme.
Affiche:
D
DU
DUB
DUBO
DUBON
DUBONE
DUBONET

On remarque que Tx est une string permettant de stocker temporairement la string afficher,
a chaque boucle on ajoute la nouvelle string (Tx += est quivalent Tx=Tx+..) et un
caractre de retour la ligne.

Left fait partie de l'espace de nom Microsoft.VisualBasic.


Avec les nombres

Somme de N entiers.
Calculer par exemple pour Nombre=20 la Somme=1+2+3+4...+18+19+20
Dim Somme As Integer 'Variable somme
Dim Nombre As Integer=20
Dim i As Integer 'Variable de boucle

For i=0 To Nombre
Somme += Nombre
Next i

On rappelle que Somme += Nombre est quivalent Somme =Somme+ Nombre

Afficher les tables de multiplication.
On fait 2 boucles :
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Celle avec i (qui dcide de la table: table des 1, des 2)
On affiche 'table des' puis valeur de i

Celle avec j (allant de 1 10 pour chaque table)
Pour chaque ligne, on affiche la valeur de i puis ' X ' puis la valeur de j puis ' = ' puis la valeur
de i fois j.

ControlChars.Crlf permet un saut la ligne

A chaque fois que l'on a quelque chose afficher, on l'ajoute la variable String T
A la fin on affecte T la proprit text d'un TextBox pour rendre visible les tables.
Dim i As Integer
Dim j As Integer
Dim T As String

For i = 1 To 10
T += ControlChars.CrLf
T += "Table des " & i & ControlChars.CrLf
For j = 1 To 10
T += i.ToString & " X " & j.ToString & "=" & i * j & ControlChars.CrLf
Next j
Next i
TextBox1.Text = T

Affiche :
Table des 1
1 X 1 =1
1 X 2 =2
...
Cours dinitiation Visual Basic.NET par Philippe Lasserre
E 1.2 Exemples : Petits programmes de maths

On prendra des exemples de routines mathmatiques simples :
Calcul de l'hypotnuse d'un triangle rectangle
Calcul de factorielle (avec ou sans rcursivit)
Un nombre est-il premier?


Calcul de lhypotnuse dun triangle rectangle

On cre pour cela une fonction, on envoie 2 paramtres de type Single, les 2 cots du triangle,
la fonction retourne l'hypotnuse.
Function Hypotenuse (ByVal Side1 As Single, ByVal Side2 As Single) As Single
Return Sqrt((Side1 ^ 2) + (Side2 ^ 2))
End Function

On rappelle que le carr de l'Hypotnuse est gal la somme des carres des 2 autres cots.

Factorielle

On rappelle que N! (factorielle N)= 1*2*3*...*(N-2)*(N-1)*N


Exemple :
Factorielle 3 =1*2*3
Dim R As Long
R=Factorielle(3) 'retournera 6

Cette fonction n'est pas fournie par VB, crons une fonction Factorielle :
Function Factorielle (ByVal N as Long) As Long
Dim i As Long
Resultat=1
For i= 1 to N
Resultat=i* Resultat
Next i
Return Resultat
end Function

Cela cre une fonction recevant le paramtre N et retournant un long.
Une boucle effectue bien 1*2*3...*N-1*N.


Factorielle avec Rcursivit :

Une autre manire de calculer une factorielle est d'utiliser la rcursivit :
Une procdure est rcursive si elle peut s'appeler elle mme.

VB gre la rcursivit.

Comment faire pour les factorielles ?
On sait que Factorielle N= N * Factorielle(N-1)
N!= N*(N-1)! en sachant que 1!=1

Crons la fonction :
Function Factorielle (ByVal N as Long) As Long
If N=1 then
Return 1
Else
Return N* Factorielle(N-1)
Cours dinitiation Visual Basic.NET par Philippe Lasserre
End If
end Function

Dans la fonction Factorielle on appelle la fonction Factorielle, c'est bien rcursif.

Pour N=4, la fonction Factionnelle est appele 4 fois : Factorielle (4) puis Factorielle(3) puis
Factorielle(2) puis Factorielle (1)

Factorielle (1) retourne 1
Factorielle (2)retourne 2 '2*factorielle(1)
Factorielle (3)retourne 6 '3*factorielle(2)
Factorielle (4) retourne 24 '4*factorielle(3)

Vb gre cela avec une pile des appels. il met dans une pile les uns aux dessus des autres les
appels, quand il remonte, il dpile de haut en bas (Dernier rentr, premier sortie)

Attention : La pile a une taille maximum, si N est trop grand, on dclenche une
erreur de type StackOverflow.


Un nombre est-il premier ?

Un nombre premier est seulement divisible par 1 et lui-mme.

Pour voir si N est entier on regardera successivement si ce nombre est divisible par 2 puis 3
puis 4... Jusqua N-1

Un nombre est divisible par un autre si la division donne un entier.

Comment voir si un nombre est entier ? Pour ma part, j'utilise la mthode suivante, A est
entier si A = Int(A).
Dim IsPremier As Boolean
Dim N As Double=59
Dim I As Double
I=2: IsPremier=True
Do
If N/I= Int(N/I) then
IsPremier=False
else
i += 1
and if
Loop While IsPremier=True And I<N

Pour 59 IsPremier sera gal True.

On peut amliorer la routine en remarquant :
Si un nombre n'est pas premier il admet 2 diviseurs dont un est infrieur racine N.

On peut donc :
- Vrifier que le nombre n'est pas pair puis
- Vrifier s'il est divisible par les nombres allant de 3...jusqu' racine de N en ne tenant
compte que des nombres impairs.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
E 1.3 Exemples : Programme de Tri et de Recherche

On a parfois besoin de trier par ordre alphabtique un tableau de string.
Il existe maintenant des mthodes de tri 'automatique' entirement gres par VB
grce la mthode 'sort'.

Il existe aussi des routines de tri entirement crite en VB, elles deviennent inutile
mais c'est didactique de voir comment elle fonctionnent.

Parfois il faut chercher dans un tableau un lment; la aussi on peut crire les
routines ou utiliser les mthodes VB


Tri avec la mthode SORT

Pour un tableau unidimensionnel.
Dim Animals(2) As String
Animals(0) = "lion"
Animals(1) = "girafe"
Animals(2) = "loup"
Array.Sort(Animals)

Et le tableau est tri!!!

On rappelle que l'on ne peut pas trier un tableau multidimensionnel, mais il y a des ruses.
(Voir rubrique : tableau)

Les Collections peuvent tre tries automatiquement aussi.

Enfin si la proprit Sorted d'une ListBox est True, la liste est trie automatiquement quand
on la charge.


Routine de Tri

Pour trier un tableau de chanes de caractres, il faut comparer 2 chanes contigus, si la
premire est suprieure (c'est dire aprs l'autre sur le plan alphabtique) on inverse les 2
chanes, sinon on n'inverse pas. Puis on recommence sur 2 autres chanes en balayant le
tableau jusqu' ce qu'il soit tri.

Tout l'art des routines de tri est de faire le moins de comparaisons possible pour trier le plus
vite possible.

Voyons une des routines les plus rapides, le Bubble Sort (ou tri bulle); on le nomme ainsi
car l'lment plus grand remonte progressivement au fur et mesure jusqu' la fin du tableau
comme une bulle.

Une boucle externe allant de 1 la fin du tableau balaye le tableau N fois, une seconde boucle
interne balaye aussi le tableau et compare 2 lment contigus et les inverse si ncessaire. La
boucle interne fait remonter 1 lment vers la fin du tableau, la boucle externe le fait N fois
pour remonter tous les lments.

Dim i, j , N As Integer 'Variable de boucle i, j ; N= nombre d'lments-1
Dim Temp As String
N = 4 'tableau de 5 lments.
Dim T(N) As String 'lment de 0 4
For i = 0 To N-1
For j = 0 To N-1
If T(j)>T(j+1) then
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Temp = T(j): T(j)=T(j+1):T(j+1) = Temp
End if
Next j
Next i

Remarque : pour inverser le contenue de 2 variables, on doit crire
Temp=T(j): T(j)=T(j+1):T(j+1)=Temp (L'instruction qui faisait cela en VB6 et qui se nommait
Swap n'existe plus)

Cette routine tri bien le tableau mais n'est pas optimise : il n'est pas ncessaire que la
boucle interne tourne de 0 N-1 chaque fois car aprs une boucle ,le dernier lment est
sa place.

Pour i=0 la boucle interne tourne jusqu' N-1, pour i=1 jusqu' N-2...

Cela donne :
Dim i, j , N As Integer 'Variable de boucle i, j ; N= nombre d'lments-1
Dim Temp As String
N=4 'tableau de 5 lments.
Dim T(N) As String 'lment de 0 4
For i=0 To N-1
For j=0 To N-i-1
If T(j)>T(j+1) then
Temp=T(j): T(j)=T(j+1):T(j+1)=Temp
End if
Next j
Next i

Il existe d'autres mthodes encore plus rapides (Mthode de Shell et Shell-Metzner).

Recherche dans une liste

On a une liste de string, on veut chercher ou (en quelle position) se trouve une string.

Pour une liste non trie, on n'a pas d'autres choix que de comparer la string cherche
chaque lment du tableau, on utilisera donc une boucle :
N=4 'tableau de 5 lments.
Dim T(N) As String 'lment de 0 4
T(0) = "vert"
T(1) = "bleu"
T(2) = "rouge"
T(3) = "jaune"
T(4) = "blanc"
Dim i As Integer 'Variable de boucle
Dim AChercher As String = "rouge" 'String chercher
For i=0 To N
If T(i)=AChercher then
Exit For
End if
Next i

'i contient 2

Pour une liste trie (suite ordonne), on peut utiliser la mthode de recherche
dichotomique : On compare l'lment recherch l'lment du milieu du tableau, cela
permet de savoir dans quelle moiti se situe l'lment recherch.

De nouveau on compare l'lment recherch l'lment du milieu de la bonne
moiti...jusqu' trouver. Pour cela on utilise les variables Inf et Sup qui sont les bornes
Cours dinitiation Visual Basic.NET par Philippe Lasserre
infrieure et suprieure de la zone de recherche et la variable Milieu.
On compare l'lment recherch l'lment du tableau d'indice milieu, si ils sont gaux on a
trouv, on sort, si ils sont diffrent on modifie Inf et Sup pour pointer la bonne plage puis on
donne Milieu la valeur du milieu de la nouvelle plage et on recommence.
Dim N As Integer
Dim T(N) As String 'lment de 0 4
Dim Inf, Sup, Milieu As Integer '
Dim Reponse As Integer 'contient le numero de l'lment
'Ou -1 si lment non trouv
Dim i As Integer 'Variable de boucle
Dim AChercher As String= "c" 'String chercher

N=4 'tableau de 5 lments.
T(0)="a"
T(1)="b"
T(2)="c"
T(3)="d"
T(4)="e"
Inf=0: Sup=N
Do
if inf>Sup then Reponse=-1: Exit Do
Milieu= INT((Inf+Sup)/2)
If Achercher=T(Milieu) then Reponse=Milieu:Exit Do
If Achercher<T(Milieu) then Sup=Milieu-1
If Achercher>T(Milieu) then Inf=Milieu+1
Loop

'Reponse =2

La recherche dichotomique est rapide car il y a moins de comparaisons.

Mais comme d'habitude VB.Net possde des proprits permettant de rechercher
dans un tableau tri ou non et cela sans avoir crire de routine.

Binarysearch recherche un lment dans un tableau tri unidimensionnel. (Algorithme de
comparaison binaire performant sur tableau tri, probablement une recherche dichotomique)


Exemple :
I=Array.BinarySearch(Mois, "Fvrier")

IndexOf
Recherche un objet spcifi dans un tableau unidimensionnel (tri ou non), retourne l'index de
la premire occurrence.
Dim myIndex As Integer = Array.IndexOf(myArray, myString)

Retourne -1 si l'lment n'est pas trouv.
LastIndexOf fait une recherche partir de la fin.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
E 1.4 Exemples : Petits calculs financiers

Cot daugmentation de la vie

Si un objet de 100 augmente de 3% par an, combien cotera-t-il dans 10 ans.
Dim Prix As Decimal
Dim Taux As Decimal
Dim Periode As Integer=10
Dim i As Integer
For i= 1 to Periode
Prix=Prix+(Prix*3/100)
Next i

On peut remplacer les 3 dernires lignes par:
Prix=Prix*(1+Taux/100)^Periode

Noter que l'on utilise des variables de type dcimales, c'est une bonne habitude pour faire des
calculs financiers (pas d'erreurs d'arrondis).


Remboursement dun prt

Quel est le remboursement mensuel d'un prt d'une somme S durant une dure D (en anne)
un taux annuel T ?
R=S x T / 1-(1+T)^-D (ici avec T en % mensuel et D en mois
Dim R, S , D, T As Decimal
S=5000 '5000
D=15 'Sur 15 ans
T=4 '4% par an
T=T/12/100 'Taux au mois
D=D*12 'Dure en mois
R=S*T/(1-(T+1)^(-D)) 'Formule connue par tout bon comptable!!

Si on voulait afficher le rsultat dans un label (on verra cela plus loin)
Label1.text= R.ToString("C")

Ici le rsultat est transform en chane de caractres (grce ToString) au format montaire
("C"), on obtient '36,98' que l'on met dans le label pour l'afficher.

Ultrieurement on verra un exemple plus complet utilisant les fonctions financires de VB.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Linterface Utilisateur

3.1 Linterface Utilisateur

Elle correspond aux fentres et contrles que voit l'utilisateur.

On a vu que le dveloppeur dessine cette interface en mode conception (Design) dans l'IDE.

Rappel :
Comment crer une fentre ?
Menu Projet, Ajouter un formulaire Windows, cliquer sur WindowsForm, une fentre
Form1 apparat. On a bien cre une fentre avec la classe WindowsForms.Form (En fait on a
cre une Classe 'Form1').

Comment aj outer un bouton ?
Cliquer sur Boite Outils gauche , bouton WindowsForms, puis bouton Button,cliquer
dans Form1, dplacer le curseur sans lcher le bouton, puis lcher le bouton : un bouton
apparat.



Comment aj outer un label ?
Un label est un contrle qui permet dafficher un texte.
Comme pour le bouton cliquer sur Boite Outils gauche, bouton WindowsForms, bouton
Label et mettre un contrle label sur la fentre.

On obtient dans la fentre principale :



Modifier les proprits de l'obj et.
Il suffit ensuite de modifier les proprits de l'objet point (celui qui est entour de petit
carrs) pour lui donner laspect dsir. Les proprits sont accessibles dans la fentre de
Cours dinitiation Visual Basic.NET par Philippe Lasserre
proprits de droite.



Dans le code des procdures les proprits des objets sont aussi accessibles.
Button1.Text="OK" permet par exemple de modifier la proprit Text d'un bouton.

Noter que pour modifier la taille des objets, on peut le faire trs facilement la souris en
cliquant sur les petits carr entourant l'objet et en tirant les bords (On peut interdire les
modifications de taille et de position des contrles par le menu Format puis verrouiller les
contrles une fois que leurs tailles et positions est bien dfinies.).


Tous les objets ont des proprits communes

Celles hrites de la Classe Control' quil faut connatre:

Name : il sagit du nom de lobjet tel quil est gr par lapplication.

Par dfaut, VB baptise tous les objets que vous crez de noms gnriques, comme Form1,
Form2, Form3 pour les fentres, List1, List2 pour les listes...
Accessible en mode conception uniquement.

Il est vivement conseill, avant toute autre chose, de rebaptiser les objets que
vous venez de crer afin de donner des noms plus vocateurs.

Le bouton sur lequel est crit OK sera nomm BoutonOK.
La liste qui affiche les utilisateurs sera nomme ListUtilisateurs.

Il est conseill de dbuter le nom de lobjet par un mot voquant sa nature :
BoutonOk ou BtOk ou ButtonOk, btnOk cest comme vous voulez.

Microsoft conseille :
- Btn pour les Boutons
- Lst pour les ListBox
- Chk pour les CheckBox
- Cbo pour les combos
- Dlg pour les DialogBox
- Frm pour les Form
- Lbl pour les labels
Cours dinitiation Visual Basic.NET par Philippe Lasserre
- Txt pour les Textbox
- Tb pour les Toolsbar
- Rb pour les radiobutton
- Mm pour les menus
- Tmr pour les timers


Text : il sagit du texte qui est associ lobjet.
Dans le cas dune fentre cest le texte qui apparat dans la barre de titre en haut.
Pour un TextBox ou un Label cest videment le texte qui est affich.
On peut modifier cette proprit en mode conception ou dans le code :


Exemple : Avec du code comment faire pour que le bouton ButtonOk porte linscription Ok
ButtonOk.Text= "Ok"


Enabled : accessible
Indique si un contrle peut rpondre une interaction utilisateur.

La proprit Enabled permet l'activation ou la dsactivation des contrles au moment de
l'excution. Vous pouvez dsactiver les contrles ne s'appliquant pas l'tat actuel de
l'application. Vous pouvez galement dsactiver un contrle pour interdire son utilisation. Par
exemple, un bouton peut tre dsactiv pour empcher l'utilisateur de cliquer dessus. Si un
contrle est dsactiv, il ne peut pas tre slectionn. Un contrle dsactiv est gnralement
gris.

Exemple : dsactiver le ButtonOk
ButtonOk.Enabled=False


Visible :
Indique si un contrle est visible ou non.
ButtonOk.Visible=False fait disparatre le bouton.

Attention pour rendre visible une fentre on utilisa la mthode .Show.


Font :
Permet le choix de la police de caractres affiche dans lobjet.


BackColor ForeColor :
Couleur du fond, Couleur de lavant plan
Pour un bouton Forecolor correspond au cadre et aux caractres.
ButtonOk.ForeColor= System.Drawing.Color.Blue


Tag :
Permet de stocker une valeur ou un texte li l'objet. Chaque objet a un Tag qui peut contenir
du texte.
On l'utilise souvent comme un Flag li l'objet.

Par exemple: une liste peut contenir la liste des CD ou des DVD ou des K7, quand je charge la
liste des CD, je rajoute List1.Tag="CD" cela permet ultrieurement de voir ce qu'il y a dans la
liste.


Il y a bien d'autres proprits.
Cours dinitiation Visual Basic.NET par Philippe Lasserre


Evnements lis aux objets

On a vu que les objets de l'interface utilisateur ont des procdures dclenches par les
vnements de cet objet.


2 exemples :
- Quand l'utilisateur clique sur un bouton Ok, la procdure ButtonOk_Click s'effectue.
- Quand l'tat (coch ou non coch) d'une case cocher nomme CouleurRouge change,
la procdure CouleurRouge.CheckedChanged est active.

La syntaxe complte de la procdure est:
Private Sub CouleurRougeCheckedChanges (ByVal sender As System.Objet, ByVal e
As System.EventArgs) Handles CouleurRouge.CheckedChanged

End Sub

Dtaillons :
La procdure vnement est prive (Private).

Aprs le nom Sub il y a un nom de procdure (CouleurRougeCheckedChanges)
Handles indique quel objet et vnement dclench la procdure. (On verra qu'il peut y en
avoir plusieurs.)

A noter que Sender contient le contrle ayant dclench l'vnement et e l'vnement
correspondant.
sender.Name contient par exemple le nom du contrle ayant dclench l'vnement.

On voit que quand on cre un objet, ses procdures vnements sont
automatiquement cres.

On se rend compte que dans une procdure vnement on peut modifier (en mode conception)
ou lire (en mode Run) quel objet et quel vnement a dclench la procdure. On peut mme
indiquer plusieurs objets lis cette procdure.

Certains vnements sont communs tous les contrles :
- Click
- DoubleClick
- GotFocus
- LostFocus
- KeyUp
- KeyPress
- KeyDown

Il y a toujours des mthodes Changed dclenches par un changement d'tat :
CheckedChanged pour une case cocher, TextChanged pour un contrle texte.

Pour ne pas alourdir les exemples, nous crivons souvent une version simplifie de
l'en-tte de la procdure.


En rsum :

Le programmeur dessine les fentres et contrles.
Il peut modifier les proprits des objets dessins :
- Par la fentre de proprits (en mode conception).
- Par du code (des instructions) dans les procdures.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
3.2 Les Forms

Elles correspondent aux fentres ou 'formulaires'.


Crer une fentre en mode conception :

Menu Projet, Ajouter un formulaire Windows, cliquer sur WindowsForm, une fentre
Form1 apparat. On a bien cre une fentre avec la classe WindowsForms.
Toute linterface se trouve sur des fentres.

En VB.net on parle de formulaire.




Proprits

Bien sur, la fentre possde des proprits qui peuvent tre modifies en mode design dans la
fentre 'Proprits' droite ou par du code:

Name : Nom du formulaire.
Donner un nom explicite, par exemple FrmDemarrage

Ds quune fentre est cre on modifie immdiatement ses proprits en mode conception
pour lui donner laspect que lon dsire.

Text : Cest le texte qui apparatra dans la barre de titre en haut.
Text peut tre modifi par le code : Form1.text= "Fentre"

Icon : proprit qui permet dassocier la Form un fichier icne. Cette icne saffiche dans la
barre de titre, tout en haut gauche. Si la Form est la Form par dfaut du projet, cest
galement cette icne qui symbolisera votre application dans Windows.


Comment crer une icne ?

Dans l'IDE de VB.
Menu Fichier>Nouveau>Fichier cliquez sur Icon, Vb ouvre une fentre Icon1 (dans l'diteur
d'images de Visual Studio.Net) Cela permet de crer ou modifier une icne
(Fichier>Ouvrir>Fichier pour modifier).

Comment enregistrer ? Click droit dans l'onglet 'Icon1' ouvre un menu contextuel permettant
d'enregistrer votre Icne.

WindowState :
Donne ltat de la fentre : Plein cran (FormWindowState.Maximized), normale
(FormWindowState.Normal), dans la barre de tache (FormWindowState.Minimized).


Cours dinitiation Visual Basic.NET par Philippe Lasserre
Exemple : mettre une fentre en plein cran avec du code.
me.WindowState =FormWindowState.Maximized

(Quand on tape Me.WindowsState= Vb donne la liste, l'numration)

ControlBox
Si cette proprit comme valeur False, les boutons de contrle situs droite de la barre de
la fentre napparaissent pas.

MaximizeBox
Si cette proprit comme valeur False, le boutons de contrle Plein cran situs droite de
la barre de la fentre napparat pas.

MinimizeBox
Si cette proprit comme valeur False, le boutons de contrle Minimize situs droite de la
barre de la fentre napparat pas.

FormBorderStyle
Permet de choisir le type des bords de la fentre : sans bord (None), bord simple
(FixedSingle) ne permettant pas lutilisateur de modifier la taille de la fentre, bord
permettant la modification de la taille de la fentre (Sizable)


Exemple :
Me.FormBorderStyle =FormBorderStyle.Sizable

StartPosition :
Permet de choisir la position de la fentre lors de son ouverture.
Fentre au centre de lcran ? la position qui existait lors de la conception... ?
Me.StartPosition =FormStartPosition.CenterScreen

MinSize et MaxSize
Donne les dimensions minimums et maximums que l'on peut utiliser pour redimensionner une
fentre.

Opacity
Allant de 0% 100%, permet de crer un formulaire plus ou moins transparent.


Exemple:
Me.FormBorderStyle= Sizable
Me.ControlBox=False

Donne la fentre :




Ouvrir une fentre

On vient de dessiner une Form1 et une Form2 c'est donc les Class 'Form1 et 'Form2' (les
moules) que l'on a dessin.

Si dans une routine de la Form1 on veut ouvrir une seconde fentre de type Form2, il
Cours dinitiation Visual Basic.NET par Philippe Lasserre
faut :
Crer un Objet fentre (formulaire) avec le moule Form2 :
Dim f As New Form2()

La nouvelle instance f de la Class 'form2' est un objet fentre.
Pour la faire apparatre j'utilise la mthode :.ShowDialog.
f.ShowDialog()

La fentre f est modale car on a utilis ShowDialog : quand elle est ouverte, on ne peut
pas aller dans une autre fentre de l'application avant de sortir de celle l. (A titre d'exemple
les fentres MessageBox sont toujours Modales).

Utiliser .show pour ouvrir une feuille non modale.

Attention : une fentre est un objet et est 'visible' suivant les rgles habituelles des
objets.

Si on instance une fentre partir d'une procdure, elle sera visible dans cette procdure. Si
elle est 'Public' et instance dans un module standard, elle sera visible partout.


Evnements

Au cours de l'excution:
Quand la feuille est charge la procdure Form1_Load() est active.
On pourra donc y mettre le code initialisant la feuille.

Form1_Activated() est excut ensuite car la feuille deviendra active.

Form1.GotFocus() est enfin excut puisque la fentre prend le focus.

Form1.Enter () est excut lorsque l'utilisateur entre dans la fentre.

Ds qu'une proprit change de valeur un vnement 'PropritChanged' se dclenche :
- Form1.BackColorChanged se dclenche par exemple quand la couleur du fond
change.
- Form1.Resized se dclenche quand on modifie la taille de la fentre. (Cest intressant
pour interdire certaines dimensions)

Form1.Leave survient dans il y a perte du focus.
Bien sur il existe aussi Form1_Desactivate quand la fentre perd le focus et n'est plus active.

Form1.Closing se produit pendant la fermeture de la fentre (on peut annuler cette
fermeture en donnant la variable Cancel la valeur True)

Form1.Closed se produit lorsque la fentre est ferme.

Il y en a beaucoup d'autres comme par exemple les vnements qui surviennent quand on
utilise la souris (MouveUp, MouseDown, MouseMove) ou le clavier (KeyUp, KeyDown,
KeyPress) sur la fentre, Left Right, Size, Position pour positionner la fentre ou dfinir sa
taille


Mthodes

On a dj vu que pour faire apparatre une fentre il faut utiliser .ShowDialog (pour qu'elle soit
modale) ou .Show (pour non modale).
Me.Close ferme le formulaire.
Me.Activate l'active s'il est visible
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Me.Hide rend la fentre invisible.

System.Windows.Forms.Form

On se rend compte que quand on dessine une fentre Form2 par exemple, VB cre une
nouvelle classe 'Class Form2'
Public Class Form2
End Class

Elle hrite de System.Windows.Forms.Form, on voit bien dans le code :
Inherits Systeme.Windows.Forms.Form



Elle contient :
- du code gnr automatiquement par le concepteur Windows Forms (on peut le
voir en cliquant sur le petit '+') et qui cre la fentre et ses contrles.
- les procdures lies aux vnements.

Quand on tape Dim f As New Form2(), on cre une instance de la Class Form2.


Formulaire davant plan

Pour dfinir au moment de la conception un formulaire en tant que formulaire
d'avant-plan d'une application :
- Dans la fentre Proprits, attribuez la proprit TopMost la valeur true.


Pour dfinir par code un formulaire en tant que formulaire d'avant-plan d'une
application :
- Dans une procdure, attribuez la proprit TopMost la valeur true.
Me.TopMost = True
Cours dinitiation Visual Basic.NET par Philippe Lasserre
3.3 Les Boutons

Ils sont omniprsents dans les 'formulaires'.

Crer un bouton :
Cliquer sur Boite Outils gauche , bouton Windows Forms, puis bouton Button,cliquer dans
Form1, dplacer le curseur sans lcher le bouton, puis lcher le bouton : un bouton apparat.


Modifier ses proprits :
Name est utilis pour lui donner un nom explicite (BoutonOk BoutonCancel)

FlatStyle donne un aspect au bouton (Flat, standard, System)



Text contient le texte afficher sur le bouton. ForeColor correspond la couleur de ce texte
(BackColor tant la couleur du fond)

Si on y inclut un & la lettre qui suit sera soulign et sert de raccourci clavier. &Ok donne
sur le bouton Ok.

TextAlign permet de positionner le texte dans le bouton.
Image contient le nom de limage afficher sur le bouton (si on veut afficher une image, on le
fait en mode Design; noter que quand on distribue l'application, il n'y a pas besoin de fournir le
fichier contenant l'image avec lapplication). (AlignImage permet de positionner limage sur le
bouton.)


On peut aussi puiser une image dans une ImageList grce la proprit ImageList et
ImageIndex, on peut ainsi changer dimage.

La proprit BackGroundImage permet de mettre une image de fond.
Exemple :
button1.Text="Ok" affiche 'Ok' dans le bouton.

Utiliser les vnements :
Lvnement principalement utilis est Click() : quand lutilisateur clique sur le bouton la
procdure est traite.
Private Sub Button_Click(..)
End Sub

Cette procdure contient le code qui doit tre excut lorsque l'utilisateur clique sur le bouton.
Le bouton peut tre slectionn grce un clic de souris, la touche ENTRE ou la BARRE
D'espacement si le bouton a le focus.

Crer un bouton Ok ou Cancel :
Parfois il faut permettre aux utilisateurs de slectionner un bouton en appuyant sur la touche
Cours dinitiation Visual Basic.NET par Philippe Lasserre
ENTRE mme si le bouton n'a pas le focus.


Exemple : Il y a sur la fentre un bouton "Ok" qui doit tre enfonc quand l'utilisateur tape
'Enter' au clavier, c'est le bouton qui 'valide' le questionnaire ( et qui le ferme souvent).

Comment faire?
Dfinissez la proprit AcceptButton de la Form en lui donnant le nom du bouton.
Cela permet au formulaire d'avoir le comportement d'une bote de dialogue.

Cration d'un bouton par code :
L'exemple suivant cre un Button nomm Button1 sur lequel on voit "Ok", on modifie certaines
de ses proprits et l'ajoute Form.
Private Sub InitializeMonButton()
Dim button1 As New Button1()
button1.Text="Ok"
' Ajouter le bouton la Form
Controls.Add(button1)
End Sub

Il faut par code crer aussi les vnements lis ce bouton: dans ce cas il faut dclarer le
bouton plutt avec la syntaxe contenant WithEvents et en haut du module.
Private WithEvents Button1 As Button

Puis crire la sub vnement.
Sub OnClique ( sender As Objet, EvArg As EventArgs) Handles Button1
End Sub

Ainsi VB sait que pour un vnement sur le Button1, il faut dclencher la Sub OnClique.
(On reviendra sur cela)

Couleur transparente dans les images des boutons:
On a vu qu'on pouvait mettre une image dans un bouton, il faut pour cela donner la
proprit Image le nom du fichier contenant l'image, ceci en mode Design.
Mais l'image est souvent dans un carr et on voudrait ne pas voir le fond (rendre la couleur du
fond transparente)

Voici limage , je voudrais ne pas afficher le 'jaune' afin de voir ce qu'il y a derrire et
donner l'aspect suivant

Dans Visual Basic 6.0, la proprit MaskColor tait utilise pour dfinir une couleur qui devait
devenir transparente, permettant ainsi l'affichage d'une image d'arrire plan.

Dans Visual Basic .NET, il n'existe pas d'quivalent direct de la proprit MaskColor!!!

Cependant, on peut ruser et dfinir la transparence :
Dans le " Code gnr par le Concepteur Windows Form " aprs la dfinition du bouton ou
dans Form_Load ajouter:
Dim g As New System.Drawing.Bitmap(Button1.Image)
g.MakeTransparent(System.Drawing.Color.Yellow)
Button1.Image = g

On rcupre le Bitmap de l'image du bouton, on indique que le jaune doit tre transparent, on
remet le BitMap.

Bien sur il y a intrt choisir une couleur (toujours la mme) qui tranche pour les fonds de
dessin et ne pas l'utiliser dans le dessin lui mme.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
3.4 Les TextBox

Les contrles permettant de saisir du texte sont :
Les TextBox
Les RichTexteBox


Les contrles TextBox

Contrle qui contient du texte qui peut tre modifi par l'utilisateur du programme.
C'est la proprit Text qui contient le texte qui a t tap par l'utilisateur.

Exemple trs simple : Comment demander son nom l'utilisateur ?
Il faut crer un label dont la proprit Text contient "Tapez votre nom:", suivi d'un TextBox
nomm txtNom avec une proprit Text="" (Ce qui fait que la TextBox est vide), enfin un
bouton nomm btOk dont la proprit Text="Ok".

Cela donne :

Tapez votre nom: Ok

txtNom.Select() dans Form_Load donne le focus la TextBox
Une fois que l'utilisateur a tap son nom, il clique sur le bouton 'Ok'.

Dans la Sub btOk_Click il y a:
Dim Nom As String
Nom= txtNom.Text

La variable Nom contient bien maintenant le nom de l'utilisateur.


Un TextBox correspond un mini diteur de texte. (Mais sans enrichissement: sans gras, ni
italique) La police de caractres affectant la totalit du texte peut simplement tre modifie
par la proprit Font. La couleur du texte peut tre modifie par ForeColor, mais la totalit
du texte aura la mme couleur.



La proprit .text permet aussi de modifier le texte visible dans le contrle.
TextBox1.text="Bonjour" Affiche Bonjour dans le contrle.

Parmi les multiples proprits de ce contrle, signalons :
Multiline : autorise ou non lcriture sur plusieurs lignes.
Scrollbars : fait figurer une barre de dfilement horizontale ou verticale (ou les deux).
PaswordChar : crypte le texte entr sous forme dtoiles.
MaxLength : limite le nombre de caractres quil est possible de saisir.
TextBox1.MaxLength= 3 'limite la saisie 3 caractres.
TextBox1.MaxLength= 0 'ne limite pas la saisie.
TextLength : donne la longueur du texte

En mode MultiLine la collection Lines contient dans chacun de ses lments une des lignes
affiches dans le contrle :
TexBox1.Lines(0) contient la premire ligne
TexBox1.Lines(1) la seconde...

Les TextBox contiennent une mthode Undo, annulation de la dernire modification.
La proprit CanUndo du TextBox doit tre True.
Cours dinitiation Visual Basic.NET par Philippe Lasserre

Ensuite pour modifier:
If textBox1.CanUndo = True Then
textBox1.Undo()

' Vider le buffer Undo.
textBox1.ClearUndo()
End If

Ajouter au texte :
On peut ajouter du texte au texte dj prsent dans le TextBox
textBox2.AppendText(MonText)

C'est quivalent textBox2.Text=textBox2.Text+MonText

Evnements lis aux TextBox :
- KeyDown survient quand on appuie sur la touche.
- KeyPress quand la touche est enfonce.
- KeyUp quand on relche la touche.

Ils surviennent dans cet ordre.
KeyPress permet de rcuprer la touche tape dans e.KeyChar.
KeyDown et KeyUp permettent aussi de voir si MAJ ALT CTRL ont t presss.

On peut rcuprer la touche press (dans e.KeyChar), mais impossible d'en modifier la valeur
(e.KeyChar est en lecture seule par exemple)

Comment rcuprer la totalit du texte qui est dans le TextBox ?
T= textBox1.Text

Comment mettre les lignes saisies par l'utilisateur dans un tableau ?
Dim tempArray() as String
tempArray = textBox1.Lines 'On utilise la collection Lines

Comment rcuprer la premire ligne ?
T= textBox1.Lines(0)

Si une partie du texte est slectionne par l'utilisateur, on peut la rcuprer par :
T= TexBox1.SelectedText

Pour slectionner une portion de texte on utilise
TextBox1.SelectionStart=3 'position de dpart
TextBox1.SelectionLength=4 'nombre de caractre slectionn

On peut aussi crire :
TextBox1.Select(3,4)
puis
TexBox1.SelectedText="toto" 'remplace la slection par 'toto'

Comment positionner le curseur aprs le troisime caractre ?
En donnant la proprit SelectionStart la valeur 3
TextBox1.SelectionStart=3

SelectionLength doit avoir la valeur 0

Comment interdire la frappe de certains caractres dans une TextBox?


Exemple :
Cours dinitiation Visual Basic.NET par Philippe Lasserre
Ne permettre de saisir que des chiffres.
Pour cela il faut utiliser l'vnement KeyPress du textBox qui retourne un objet e de type
KeyPressEventArgs. e.KeyChar contient le caractre press, mais il est en lecture seule!! on ne
peut le modifier. Pour annuler la frappe (dans notre exemple si le caractre n'est pas un
chiffre) il faut faire e.handled=True.
IsNumeric permet de tester si le caractre est numrique.

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If IsNumeric(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub

Compter combien de fois on a tap certains caractres?
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Select Case e.KeyChar

' Compte les backspaces.
Case ControlChars.Back
Nombrebackspace = Nombrebackspace + 1

' Compte les ENTER.
Case ControlChars.Lf
Nombrereturn = Nombrereturn + 1

' Compte les ESC.
Case Convert.ToChar(27)
NombreEsc = NombreEsc + 1

' Compte les autres.
Case Else
keyPressCount = keyPressCount + 1
End Select
End Sub

Petite parenthse:
Pour comparer les caractres il y a 2 mthodes:
if e.KeyChar=Convert.ToChar(27) then
ou
if AscW(e.Keychar)=27 then

Diffrentes manires de rcuprer ce qui a t tap :

On a vu que TextBox.text contient la totalit du texte; si on l'utilise dans l'vnement
TextBox1_TextChanged, on rcupre le nouveau texte ds que l'utilisateur tap quelque
chose.

TextBox1_KeyPress() et TextBox1_KeyUp() permettent de rcuprer le caractre qui t
tap.

Y a t-il un moyen de modifier le caractre tap ? Les proprits de e comme e.KeyChar
(dans KeyPress) ou e.KeyCode, e.KeyData e.KeyValue dans les vnements KeyPress et
KeyDown sont en lecture seule!!!

Une solution est de modifier directement le texte :
Cours dinitiation Visual Basic.NET par Philippe Lasserre

Exemple :
Si l'utilisateur tape ',' afficher '.' la place.
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim pos As Integer
pos = TextBox1.SelectionStart 'on mmorise la position du curseur
If e.KeyChar = "," Then
e.Handled = True 'on ne valide pas le caractre ',' qu n'apparatra pas.
TextBox1.Text = TextBox1.Text.Insert(pos, ".") 'on insre un '.'
TextBox1.SelectionStart = pos + 1 'on avance le curseur d'un caractre
End If
End Sub

Autre solution?


Le contrle RichTextBox

Si vous tes dbutant, passez un rubrique suivante, vous reviendrez plus tard la gestion du
code RTF.

Rich Text veut dire 'Texte enrichi'.

Le contrle RichTextBox permet d'afficher, d'entrer et de manipuler du texte mis en forme. Il
effectue les mmes tches que le contrle TextBox, mais il peut galement afficher des
polices, des couleurs et des liens, charger du texte et des images incorpores partir d'un
fichier, ainsi que rechercher des caractres spcifiques.

Le contrle RichTextBox a les possibilits dun traitement de texte comme Word.



Qu'est ce que RTF ?
Le format du texte que lon peut mettre dans une RichTextBox est le format RTF (Rich Text
Format = Format de Texte Enrichi)

Explication : un texte peu tre enregistr en brut (sans enrichissements) en RTF (Utilisable
dans la plupart des traitements de texte), au format Word (.doc)

Pour utiliser les fonctionnalits du RichTextBox il faut utiliser la proprit .Rtf.
Quand jaffecte un texte la proprit .Text il est affich tel quel, sans tenir compte de
lenrichissement.

Quand jaffecte un texte la proprit .Rtf du contrle pour lafficher, s'il contient des
enrichissements au format RTF, lenrichissement est affich.

Les bases du codage RTF
Le texte doit dbuter par '{' et se terminer par '}', il peut aussi dbuter par "{\rtf1\ansi "
Ensuite les enrichissements seffectuent par des balises qui indiquent le dbut et la fin de
lattribut, une balise commence par le caractre '\' :
Entre \b et \b0 le texte sera en gras (Bold)

Cours dinitiation Visual Basic.NET par Philippe Lasserre

Exemple :
Ajoute le texte "Ce texte est en gras." un contrle RichTextBox existant.
RichTextBox1.Rtf = "{\rtf1\ansi Ce texte est en \b gras\b0.}"

Voici les principaux attributs :
\b \b0 ce qui est entre les 2 balises est en gras
\i \i0 ce qui est entre les 2 balises est en italique
\par fin paragraphe (passe la ligne)
\f font \f1 .. \f0 font numro 1 entre les 2 balises
\plain ramne les caractres par dfaut
\tab caractre de tabulation
\fs taille de caractre \fs28 = taille 28

Mettre un espace aprs la balise.

Comment afficher un texte enrichir ?
RichTextBox1.RTF= T 'T tant le texte enrichi

Mettre un texte en couleurs, utiliser plusieurs polices :
Mettre la table des couleurs en dbut de texte :
{ \colortbl \red0\green0\blue0;\red255\green0\blue0;\red0\green255\blue0;}

Aprs Colortbl (Color Table) chaque couleur est code avec les quantits de rouge vert et bleu.
Les couleurs sont repres par leur ordre: couleur 0 puis 1 puis 2... et spares par un ';'

Dans notre exemple couleur 0=noir; couleur 1=rouge; couleur 2=vert

Pour changer la couleur dans le texte on utilise \cf puis le numro de la couleur :
\cf1 toto \cf0 } toto est affich en rouge.

Pour modifier les polices de caractre, le procd est similaire avec une Font Table :
{\fonttbl
{\fo\froman Symbol;}
{\f1\fswiss Arial;}
}
Pour passer en Arial \f1 ..\f0

Exemple complet :
"{\rtf1\ansi
{ \colortbl
\red0\green0\blue0;
\red255\green0\blue0;
\red0\green255\blue0;}
{\fonttbl
{\fo\froman Symbol;}
{\f1\fswiss Arial;}
}
Ce qui suit est en \f1 \cf1 \i Arial Rouge Italique \f0 \cf0 \i0
}

Cela donne :



Cours dinitiation Visual Basic.NET par Philippe Lasserre
Nb : Si vous copier coller lexemple pour lessayer, enlever les sauts la ligne.

Comment modifier laspect du texte qui a t slectionn ?
On nest plus dans le cas ou on affiche demble la totalit du texte, mais dans le cas ou
lutilisateur veut modifier son texte qui est dj dans le contrle.


Exemple :
Lutilisateur slectionne une portion du texte dans le contrle puis clique sur une bouton
nomm Rouge pour mettre la slection en rouge.

Dans BoutonRouge_Click() crire :
RichTextBox1.SelectionColor = System.Drawing.Color.Red

De mme pour modifier la police, la hauteur de la police, laspect gras ou non :
RichTextBox1.SelectionFont = New Font("Tahoma", 12, FontStyle.Bold)

Enfin le texte peut tre enregistr dans un fichier :
richTextBox1.SaveFile(FileName, RichTextBoxStreamType.RichText)

Si on remplace .RichText par .PlainText cest le texte brut et non le texte enrichi qui est
enregistr.
Pour lire un fichier il faut employer .LoadFile avec la mme syntaxe.

Comment faire une recherche dans le texte?
La fonction Find permet de rechercher une chane de caractres dans le texte :
richTextBox1.Find(searchText, searchStart, searchEnd, RichTextBoxFinds.MatchCase)

La mthode retourne l'emplacement d'index du premier caractre du texte recherch et met
en surbrillance ce dernier, sinon, elle retourne la valeur -1.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
3.5 Les labels

Il y a 2 sortes de Label :
- Les Label
- Les LinkLabel


Les Label :

On en a dj utilis pour afficher du texte non modifiable par l'utilisateur.

Les contrles Label sont gnralement utiliss pour fournir un texte descriptif un
contrle. Vous pouvez par exemple utiliser un contrle Label pour ajouter un texte descriptif
un contrle TextBox.

Ceci a pour but d'informer l'utilisateur du type de donnes attendu dans le contrle.


Exemple hyper simple :

Donner votre nom:

La lgende qui s'affiche dans l'tiquette est contenue dans la proprit Text du label1.

Pour modifier le texte du label par du code :
Label1.Text="Donner votre Prnom"

La proprit Alignement vous permet de dfinir l'alignement du texte dans l'tiquette (centr,
droite, gauche), BorderStyle permet de mettre une bordure (un tour) ou non..

Il est galement possible dy afficher une image avec la proprit .Image

Remarquez que la mise jour de l'affichage du Label (comme les autres contrles d'ailleurs)
est effectue en fin de Sub:

Si on crit :
Dim i As Integer
For i = 0 To 100
Label1.Text = i.ToString
Next i

La variable i prend les valeurs 1 100, mais l'affichage rien ne se passe pendant la boucle,
VB affiche uniquement 100 la fin.

Si on dsire voir les chiffres dfiler avec affichage de 0 puis 1 puis 2..., il faut rafrachir
l'affichage chaque boucle avec la mthode Refresh() :

Dim i As Integer
For i = 0 To 100
Label1.Text = i.ToString: Label1.Refresh()
Next i


Les LinkLabel :

Permettent de crer un lien sur un label.

Text Indique le texte qui apparat.

Cours dinitiation Visual Basic.NET par Philippe Lasserre
LinkArea dfini la zone de texte qui agira comme un lien, dans la fentre de proprit taper
11 ;4 (on verra que cest plus simple que de le faire par code)
Les 4 caractres partir du 11me seront le lien, ils seront souligns.

Ne pas oublier comme toujours que le premier caractre est le caractre 0.

Lvnement LinkClicked est dclench quand lutilisateur clique sur le lien. Dans cette
procdure on peut permettre le saut vers un site Internet ou toute autre action.


Exemple :
LinkLabel1.text= "Visitez le site LDF"
LinkLabel1.LinkArea = New System.Windows.Forms.LinkArea(11, 4)
Pourquoi faire simple !!

Cela affiche :


Si lutilisateur clique sur le mot site, la procdure suivante est dclenche :
Private Sub LinkLabel1.LinkClicked

Il est possible de modifie la couleur du lien pour indiquer qu'il a t utilis :

Si VisitedLinkColor contient une couleur e.visited=True modifie la couleur.
(e est l'lment qui a envoyer l'vnement, j'en modifie la proprit Visited.)

On peut y inclure une action quelconque, en particulier un saut vers un site Web :
System.diagnostics.Process.Start(" http://plasserre.developpez.com/ ")
'correspond au code qui ouvre un browser Internet (Internet Explorer ou Netscape) et
qui charge la page dont l'adresse est indique.

La collection Links permet dafficher plusieurs liens dans un mme texte, mais cela devient vite
trs compliqu.
Cours dinitiation Visual Basic.NET par Philippe Lasserre
3.6 Les Cases cocher

Il y a 2 sortes de case cocher :
- Les CheckBox
- Les RadioButton

Les " cases cocher " (CheckBox) : Elles sont carres, et indpendantes les unes des
autres, si l'utilisateur coche une case , cela n'a pas d'influence sur les autres cases du
formulaire, qu'elles soient regroupes dans un cadre pour faire plus joli ou non.

Les " boutons radio " (RadioButton) : Ils sont ronds et font toujours partie dun
groupe (Ils sont dans une fentre ou dessins dans un objet GroupBox). Ce groupe est
indispensable, car au sein dun groupe de RadioButton, un seul bouton peut tre coch
la fois : si lutilisateur en coche un, les autres se dcochent.



Il faut regrouper les radios boutons dans des 'GroupBox' par exemple pour rendre les
groupes indpendants :



Ici si je clique sur le bouton 'OUI' droite, cela dcoche 'NON' mais n'a pas d'influence sur le
cadre Format.

La proprit Text, bien sur, permet dafficher le libell cot du bouton, on peut aussi mettre
une image avec la proprit Image. CheckAlign permet de mettre la case cocher droite ou
gauche du texte, TextAlign permet d'aligner le texte.


Exemple pour le bouton en haut droite :
RadioButton3.Text = "OUI"
RadioButton3.TextAlign = MiddleCenter 'Middle=hauteur, center = horizontale
RadioButton3.CheckAlign = MiddleRight

La proprit la plus intressante de ces cases est celle qui nous permet de savoir si elle est
coche ou non. Cette proprit sappelle Checked. Sa valeur change de False True si la case
est coche.
RadioButton.Checked = True 'Coche le bouton
If RadioButton.Checked = True Then ' Teste si le bouton est coch.
End If

La procdure RadioButton.CheckedChange() permet dintercepter le changement dtat
dun bouton.

Pour le CheckButton TreeState permet de dfinir 3 tats au lieu de 2 (coch, indtermin =
gris, non coch)

CheckedState indique un des 3 tats (alors que Checked nen indique que deux.)

Appearance peut aussi donner une apparence de bouton la case cocher. Il est enfonc
Cours dinitiation Visual Basic.NET par Philippe Lasserre
ou pas en fonction de la valeur de Checked.



Ici les 2 boutons ont une Appearance = Button, celui du haut n'est pas coch, l'autre est coch
(enfonc).