Telechargé par maha haddad

cours-VB-V21-22

publicité
Environnement de
Développement graphique
Visual Basic.NET
Maher Kouraichi
Sommaire
◼
◼
◼
◼
◼
◼
◼
◼
◼
Introduction
Notion d’objet
Présentation de Visual Basic
Syntaxe de base
Contrôles et Propriétés
Evénements et Méthodes
Fonctions prédéfinies
Fonctions et Procédures utilisateur
Transmission des paramètres
Sommaire
◼
◼
◼
◼
◼
◼
◼
Types de données utilisateur
Manipulation des Dates
Les boîtes de message et la fonction InputBox
Formatage de données (Fonction Format)
Contrôles avancés (menus et menus
contextuels – les grilles)
Gestion des erreur (L’objet Err)
Accès aux bases de données
GÉNÉRALITÉS
Deux mondes de
programmation:
•
Temps
•
Orienté objet
Procédural
ou
Structuré
•
•
•
•
on manipule des
objets: ensembles
groupés de variables
et de méthodes
Généralement la
programmation est
évènementielle
le sujet est
prépondérant:
Voiture.calculVitesse()
on définit des fonctions
s'appelant
mutuellement.
Une fonction principal
orchestre l’exécution
du programme (main)
travaille sur l'action ou
le verbe:
calculVitesse(voiture)
Evolution
Notion d’objet
Objet:Super-variable(groupe de variables de différents types)
Les variables sont désignées par un nom = Propriétés
Exemple 1 : l’objet Voiture
Propriétés: couleur, marque, modèle,
carburant, puissance fiscale, vitesse
Maxi, prix….
Syntaxe :
objet propriété
Voiture1.couleur = rouge
Voiture1.marque = ‘’Peugeot’’
p = Voiture1.puissanceFiscale

Notion d’objet
Exemple 2 : l’objet Etudiant
Propriétés: nom, classe, adresse, situation familiale,
âge, taille, budget, situation/justice….
utilisation :
Etudiant1.âge = 23
Etudiant1.Budget = Etudiant1.Budget + 100
n = Etudiant1.nom
Notion d’objet
Méthodes = fonctions de l’objet
Exemple : Voiture
Accélérer, ralentir, avancer, reculer, s’arrêter….
Syntaxe : objet Méthode()
Voiture1.accélérer()
Voiture1.reculer(10 m)
Voiture1.changerCouleur(bleu)
Voiture1.couleur = bleu

Notion d’objet
Exemple 2 : Méthode de l’objet : Etudiant
Réussir, Redoubler, Tricher, s’absenter,
préparerExamen, AugmenterBudget….
Syntaxe : objet Méthode()
Etudiant1.Réussir()
Etudiant1.Sabsenter(2)
Etudiant1.AugmenterBudget(100)
Etudiant1.Budget = Etudiant1.Budget + 100

Présentation de visual basic
Explorateur
de solution
Formulaire
(Base de
l’application)
Toolbox :Boite à
outils
(Ctrl+Alt+x)
Properties
window (F4)
Familiarisation avec les
propriétés d’un contrôle
Sélectionner le formulaire « Form1 » et explorer ses
propriétés. Modifier les attributs suivants afin de voir leurs
effets:
• Name
• Backcolor
• Background Image
• Cursor
• Opacity
• Text
Exploration de quelques outils
Placez les contrôles suivants et essayer de voir les utilisations et les propriétés de chacun:
• Button
• TextBox
• Label
• ComboBox
• listBox
• DateTimePicker
• CheckBox
• RadioButton
Exploration de quelques outils
Maintenant exécuter cette application
VB.net en appuyant sur le triangle vert et
vérifier les différentes utilités
1ère Application:
Procédure évènementielle
Évènement
C’est un message qui provient:
❑ D’une action de l’utilisateur sur
l’interface
Cliquer sur un bouton
Bouger le curseur de la souris
Cliquer sur la souris
Enfoncer une touche du clavier …
❑ D’une action intrinsèque du système
Premier chargement d’une
fenêtre
Déclenchement d’évènements
cycliques (Timer)
C’est une méthode
associée a un
contrôle.
Exécution
d’une liste
d’instructions
•
Fermer fenêtre
•
Afficher un
message
•
…..
1ère Application:
Procédure évènementielle
Maintenant on va voir comment programmer en VB.
Faire un nouveau projet ou modifier l’ancien afin d’obtenir cette interface:
En cliquant
sur le
bouton,
l’interface
devient:
1ère Application:
Procédure évènementielle
Pour pouvoir passer à l’interface de programmation, cliquer 2 fois sur un contrôle:
Interface de
programmation
ComboBox
contenant
les outils de
l’application
Évènement en
cours
Classe en cours de programmation
1ère Application:
Procédure évènementielle
liaison entre une procédure
et un événement ?
Procédure Non
évènementielle
Private Sub Calcul()
instructions
End Sub
-*- sender: est un paramètre en
entrée (par valeur) qui désigne
l'objet qui a déclenché l'événement.
-*- e: représente un paramètre en
entrée (par valeur) qui spécifie les
conditions de l'événement.
Procédure
évènementielle
Private Sub Calcul(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles Button1.Click, Button2.Click
instructions
End Sub
NOTION DE BASE
Syntaxe de base: Les
variables
Noms de variables:
1-Pas de longueur maximale
2-Commence par un caractère: 12xy
3-Pas d’espace: date_de_naissance date de naissance
4-Pas de sensibilité à la casse (toto=Toto=ToTO)
Syntaxe de base: Les
variables
Déclaration:
• En VB la déclaration des variables n’est pas obligatoire tant que
l’option Explicit n’est pas activée: Option Explicit On
Private
Dim
Nom_variable As Type_variable
Public
Portée des Variables:
1-Niveau Procédure : Dim NomVariable As Type
2-Niveau Form : Dim NomVariable as Type
3-Niveau Projet (module) : Public NomVariable As Type
Exemple: Dim i As integer, Public b As boolen
Syntaxe de base: Les types
Type
Plage des valeurs
Taille
conversion
Short
-32 768 à 32 767
2 octets
CShort
Integer
- 2 147 483 648 à 2 147 483 647
4 octets
CInt
Long
-9 223 372 036 854 775 808 à
-9 223 372 036 854 775 807 à
8 octets
CLng
Single
-3,4028235E+38 à -1,401298E-45 pour les valeurs négatives
1,401298E-45 à 3,4028235E+38 pour les valeurs positives
4 octets
CSng
Double
-1,7976931348623157E+308 à -4,94065645841246544 E-324
pour les valeurs négatives
-4,94065645841246544E-324 à -1,7976931348623157E+308
pour les valeurs positives
8 octets
Decimal
+/- 79 228 162 514 264 337 593 543 950 335 sans chiffre
décimal
+/- 7,922 816 251 426 433 759 354 395 033 5
avec 28 positions à droite de la virgule
12 octets
CDbl
CDec
Syntaxe de base: Les types
Byte
Entiers non-signés de 0 à 255
1 octets
CByte
Boolean
True / False
2 octets
CBool
10 octets + (2 * nbr.
caractères de la
chaîne)
String
de 0 à environ 230 caractères
CStr
char
0 à 65 535 (non signés).
2 octets
CChar
Date
01/01/1 à 31/12/9999
8 octets
CDate
Object
référence à un objet
4 octets
+ objet
-
Syntaxe de base: les
tableaux et les matrices
◼
Variables indicées (Tableaux): Déclaration obligatoire!!
1- Taille connue à l’avance : Dim MonTableau(n) As Integer : n
représente l’indice de la dernière case
Dim MonTableau(11) As Integer (indices : de 0 à 11 => 12 éléments)
2- Déclaration avec Initialisation:
Dim A={1,5,9,12}
Dim A() as integer ={1,5,9}
Dim Mois () as string ={"janvier", "février"}
27
Syntaxe de base: les
tableaux
◼
Pour parcourir un tableau il suffit
d’utiliser une structure répétitive.
For i =0 to 3
MsgBox("A( " & i & " )= " & A(i))
Next
On peut utiliser la méthode length pour récupérer le nombre de
cases du tableau.
Exemple:
For i =0 to 3
‘For i =0 to A.length-1
MsgBox(" A( " & i & " )= " & A(i))
Next
28
les tableaux et les matrices
Tableau dynamique qui change de taille :
Dim MonTableau( ) As Integer
Taille fixée ultérieurement :
Redim MonTableau(10)
Préserver les valeurs existantes :
Redim Preserve MonTableau(11)
Les Matrices (mêmes règles que les tableaux!) Dim
Mat(2,3) As Integer
Dim m1(1,2) as integer {{1,2,3},{5,6,7}}
29
Syntaxe de base:
les Opérateurs
◼
Opérateurs arithmétiques
Opérateurs numérique : + - * /
Opérateurs booléens :
And Or Xor Not
Opérateur caractère :
& (concaténation)
\ : Division entière
^ : puissance
Mod : reste de la division entière
Syntaxe de base:
les Opérateurs
Opérateurs de concaténation
L'opérateur & permet de concaténer (réunir) deux
chaînes. L'opérateur + peut être aussi utilisé pour
concaténer deux chaines de caractères.
◼ Exemple :
MsgBox "le périmètre est de " & Circonference & « mètres"
◼
Notez que la variable concaténée « Circonference »
est une valeur numérique et qu'il y a une conversion
implicite vers le type String.
Syntaxe de base:
les Opérateurs
Opérateurs logiques
◼
Opérateur And, Or, Xor, Not
◼
Opérateur d’affectation et de test d’égalité
=
Il peut quand meme il y avoir des ambiguïtés dans certains cas:
Sub OperateurEgal()
Dim Var1 As Integer, Var2 As Integer, Var3 As Integer
Var1 = 10
Var3 = Var2 = Var1
End Sub
ce code ne veut pas dire:
« mettre var2 et var3 à 10 »
MAIS
« mettre dans var3, le résultat
de l’expression var2 = var1 »
Syntaxe de base: les
structures conditionnelles
◼
L’alternative
(si…..sinon…..)
If (Conditions) Then
Liste d’instructions
End If
If (Conditions) Then
Liste d’instructions
Else
Liste d’instructions
End If
If (Conditions) Then
Liste d’instructions
Elseif (Conditions) Then
Liste d’instructions
Elseif (Conditions) Then
Liste d’instructions
Else
Liste d’instructions
End If
Exercice
◼
◼
Avec quelle structure de
IF peut on traiter des
RadioButton, afficher le
resultat.
Avec quelle structure de
IF peut on traiter des
CheckBox, afficher le
resultat.
Syntaxe de base : les
structures conditionnelles
◼
Select case :
Select case x
case 0
instructions
case 1 to 6
instructions
case 7,9,15
instructions
case IS>17
instructions
case else
instructions
End Select
Syntaxe de base: Les
boucles
◼
La boucle For
For x = a to b Step c
Liste d’instructions
Next x
Exemple :
For i = 1 to 10
s=s+i
Next i
◼
Fin prématurée (Exit For)
For i = 1 to 10
If t(i) = c then
Trouvé = true
Exit For
End if
Next i
Syntaxe de base: Les
boucles
◼
La boucle For… Each … Next
C’est une extension de la boucle For ... To … Next.
For Each Elément In Ensemble
‘Ensemble est le plus souvent un tableau.
Instructions
[Exit For]
Next [Elément]
Exemple :
Dim TabHasard() As Integer = {3, 4, 5, 1}
Dim Cellule As Integer
For Each Cellule In TabHasard
MsgBox(Cellule) ’Affiche le contenu du tableau TabHasard
Next Cellule
Syntaxe de base: Les
boucles
◼
Les Boucles (test avant exécution)
While (Condition de continuité) Do While (condition de continuité)
Liste d’instructions
End while
instructions
Loop
Do Until (condition d’arrêt)
instructions
Loop
Syntaxe de base (complément)
◼
Les Boucles (test apès exécution)
Do
instructions
Loop While (condition de continuité)
Do
instructions
Loop Until (condition d’arrêt)
Exemple→
Exemple
Dim mot as string
Dim i as interger=1
Do
mot= inputBox("Donner votre mot de passe" )
i=i+1
If i=3 then
Exit do
End If
Loop Until (mot= motdepasse)
Exercice
◼
Application sur les tableaux
et les boucles:
Construire une application qui permet de saisir le
nom, prénom et les notes d’un étudiant.
Le nombre de notes à introduire est inconnu à priori:
Vous devrez travailler avec un tableau dynamique.
Comme résultat, afficher la moyenne de l’étudiant
Vous utiliserez des InputBox pour faire entrer les
données et les MsgBox pour l’affichage. Voici la
syntaxe.
Dim saisie As String
Saisie = InputBox("je suis un INPUTBOX...,
Ecrivez votre donnée")
MsgBox("je suis un
MSGBOX...")
42
Correction
Conversion string → integer
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Label3.Text = ""
Label3.Text = TextBox1.Text + TextBox2.Text
End Sub
Conversion string → integer
??!??
Conversion string → integer
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Label3.Text = ""
Label3.Text = Val(TextBox1.Text) + CInt(TextBox2.Text)
End Sub
Et si…
Que serait
le resultat?
ooops
Le problème est
dans maman? Pkoi
pas papa??!
Isnumeric…
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Label3.Text = ""
If (IsNumeric(TextBox1.Text) And IsNumeric(TextBox2.Text)) Then
Label3.Text = Val(TextBox1.Text) + CInt(TextBox2.Text)
Else
MsgBox("vérifiez votre saisie")
End If
End Sub
Cours VB.NET
GESTION DES ERREURS
Gestion des erreurs
◼
◼
Différentes erreurs peuvent
survenir lors de l’exécution du
code.
Si pas de gestion de l’erreur,
l’interruption de l’exécution
survient.
Le programme
continu à fonctionner
Exécution
du code
Le programme
plante
Les erreurs de syntaxe
◼
◼
◼
Sont reconnus par le compilateur
Empêchent le programme de passer à l’exécution
Exemple:




◼
Utilisation d'un mauvais nom de variable
Erreur dans la portée d'une variable.
Erreur dans le passage de paramètres
Erreur dans la conception de l'algorithme.
Ces erreurs ne sont pas concernées par la gestion.
Les erreurs d'exécution
◼
◼
Surviennent en mode « Run » ou lors de
l'utilisation de l'exécutable: Une instruction ne
peut pas être effectuée.
En cours de test, s'il y a une exception (erreur), le
logiciel s'arrête, l'instruction qui a planté apparaît en
jaune et VB donne une explication.
◼
Soit une erreur de conception :




◼
ouvrir un fichier qui n'existe pas,
division par zéro,
utiliser un index d'élément de tableau supérieur au
nombre d'élément,
envoyer un mauvais paramètre à une fonction.
Soit une erreur d’utilisation :

On demande de taper un chiffre, l’utilisateur tape une
lettre ou rien puis valide.
Exemple
◼
Calculer 10 / un entire saisi…
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim s As String
Dim x As Integer
s = InputBox("donner un entier non nul")
If IsNumeric(s) Then
x = CInt(s)
If (x <> 0) Then
MsgBox( 10 / x)
Else
MsgBox("vous avez donné 0", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Erreur")
End If
Else
MsgBox("vous avez donné un texte",MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, Erreur"
End If
MsgBox(“Aurevoir")
End Sub
Comment éviter les erreurs?
◼
Capter les erreurs avec Try Catch Finally : Essayer
l'instruction (Try), si une erreur se produit Intercepter
l'erreur (Catch) puis poursuivre (après Finally)
Try
'Instruction susceptible de provoquer
une erreur.
Catch
'Traitement de l'erreur
Finally
'Code toujours exécuté
End Try
◼
Mais plusieurs type d’erreurs peuvent survenir…
comment distinguer l’une de l’autre????
Gestion des erreurs : Try …
catch … Finally …End Try
◼
Il est possible d'utiliser Catch pour récupérer l'objet
'Exception' qui est généré par l'erreur.
Catch ex As Exception
◼
L’objet Exception à des propriétés:


.Message qui contient le descriptif de l'erreur.
.Source qui contient l'objet qui a provoqué l'erreur....
Et alors!! En
quoi ça
aide???
◼
◼
ex.Message contient donc le message de l'erreur.
Cet objet généraliste Exception a aussi des classes dérivées:





◼
StackOverFlowException : problem in recursive call
FileNotFoundException: problem in file path or existance
EndOfStreamException : reading is attempted past the end of a stream
FileLoadException: file can’t be loaded
PathTooLongException : path is too long
Enfin une exception peut provenir de l'espace System:




argumentExceptions;
ArithmeticException:
DivideByZeroException
InvalidCastException
Gestion des erreurs:
Exemple
s = InputBox("donner un entier non nul")
Try
x = CInt(s)
MsgBox(10 \ x)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Erreur")
Finally
MsgBox(“Au revoir")
End Try
Personalisation des messages
s = InputBox("donner un entier non nul")
Try
x = CInt(s)
MsgBox(10 \ x)
Catch ex As DivideByZeroException
MsgBox("Division par zero", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Erreur")
Catch ex As InvalidCastException
MsgBox("Problème de conversion", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Erreur
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Erreur")
Finally
MsgBox(“Au revoir")
End Try
LES PROCEDURES ET
FUNCTION EN VB.NET
Les procédures en VB.net
◼
◼
◼
Nous pouvons simplifier la programmation des
tâches en divisant les programmes en plusieurs
éléments logiques de plus petite taille.
Les procédures utilisées dans un programme
peuvent être reprises dans d'autres programmes,
moyennant peu ou pas de modifications.
Visual Basic comporte plusieurs types de
procédures :

Les procédures Sub ne renvoient pas de valeur.
1.
2.

Procédures générales
Procédures évènementielles
Les procédures Function renvoient une valeur.
64
Fonction et procédure
Fonction
Retour de function
vers programme
appelant
Paramètres d’entrée
Procédure
Paramètres d’entrée
Procédures Sub : générales
[Private|Public] Sub Nom_proc (liste des arguments)
Instructions
[Exit Sub]
End Sub
◼
◼
Une procédure générale indique à l'application la façon de mener à
bien une tâche particulière. Une fois qu'une procédure générale est
définie, elle doit être invoquée spécifiquement par l'application.
Ces procédures ne renvoient pas de valeurs à la procédure
appelante. Une procédure Sub est un bloc de code qui est exécuté
en réponse à un appel de procédure par une autre.
Exemple :
Dim resul as string
Sub affiche()
lblRes.Text= result
End Sub
66
Procédures Sub
◼
L’appel de la procédure en utilisant:

call :
call affiche()
en écrivant uniquement le nom de la procédure
◼
Affiche()
◼

◼
Chaque fois que la procédure est appelée, les codes
compris entre Sub et End Sub sont exécutées.
Par défaut, les procédures Sub sont des procédures Public dans
tous les modules, ce qui signifie qu'elles peuvent être appelées à
partir de n'importe quel endroit de l'application.
Exemple :
private Sub resultat()
affiche () ‘ou bien call affiche()
67
End Sub
◼
Procédure d'événement
Private
Sub
NomCtrl_Event(sender
As
Object,
e
As
EventArgs)
Handles
.
NomCtrl Event
Instructions
[Exit Sub]
End Sub
◼
◼
Elle reste inactive jusqu'au moment où elle est appelée
pour réagir à des événements
L’ événement est provoqué par:


◼
l'utilisateur: button.click, txtbox.textchanged, SelectedIndexChanged
ou déclenché par le système: MyBase.Load, Timer1.Tick…
On dit que les procédures d'événement sont attachées aux
feuilles et aux contrôles.
68
Bonnes pratiques
◼
Utiliser les procédures de code fournies par Visual Basic, car
elles incluent automatiquement le nom correct des
procédures.
69
Bonnes pratiques
◼
◼
Définir la propriété Name des contrôles
avant de commencer à écrire les
procédures d'événement qui leur sont
associées.
Si on modifie le nom d'un contrôle après lui
avoir associé une procédure, on devra
également modifier le nom de la
procédure afin qu'elle corresponde au
nouveau nom du contrôle.
Principaux Événements
Click :Se produit lorsque l’utilisateur appuie puis relâche le bouton
gauche de la souris (ou entrée si le contrôle a le focus)
Private Sub Bt_Click (ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Bt.Click
◼
DblClick : Se produit lorsque l’utilisateur réalise un double click
Private Sub Lb_DoubleClick(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Lb.DoubleClick
◼
TextChange : Se produit lorsque le text d’une zone de texte change
◼
KeyPress : Se produit lorsque l’utilisateur appuis et relâche une
touche du clavier
◼
71
Procédures Fonction :
[Private|Public] Function Nom_Fonction (arguments) [As type]
Instructions
Return valeur ‘ ou Nom_Fonction = valeur
End Function
◼
La valeur qui doit être retournée par la fonction doit être:


◼
◼
affectée au nom de la fonction
ou utiliser l’instruction Return.
La déclaration de la fonction se termine par les mots réservés ”End function”.
Il est possible de quitter prématurément une fonction en inscrivant simplement
l’instruction Exit Function.
Private Function factoriel(ByRef N As Integer) As Integer
Dim f = 1, i As Integer
For i = 1 To N
f = f * i
Next
Return f
End Function
72
Procédures Fonction :
◼
L’appel à une fonction peut se faire par:


Directement dans une affectation
Affichage
x = factoriel(5)
MsgBox(factoriel(5))
73
Exemple
Ecrire une fonction qui permet le calcul de l'hypoténuse d'un triangle
rectangle à partir des deux autres côtés :
Function Hypotenuse(A As Integer, B As Integer)
Hypotenuse = Math.Sqrt(A ^ 2 + B ^ 2)
End Function
◼
L’appel se fera:

Label1.text = Hypotenuse(CInt(Text1.Text), CInt(Text2.Text))

strX = Hypotenuse(longueur, largeur)
74
Les arguments des procédures et fonctions
◼
◼
◼
Lors de déclaration de la procédure, vous
devez spécifier la liste des paramètres qui
seront attendus.
Cette liste est située entre les parenthèses
de la déclaration de la procédure.
Pour passer une variable comme paramètre
à une procédure, il y a deux possibilités:
◼
◼
Le passage par valeur : ByVal
Le passage par référence : ByRef
75
Précautions
◼
◼
◼
Le passage par valeur est l’option
par défaut .
Il faut indiquer pour chaque paramètre
son type de passage.
Private Sub test(ByRef x As Integer, ByRef y As Integer)
Si on ne met pas
ByRef, “y”
passera ByVal
Passage des arguments Par valeur : ByVal
Quand un argument est passé par valeur, seule une copie de la
variable est passée à la procédure. Si celle-ci modifie la valeur, le
changement affecte uniquement la copie et non la variable
proprement dite. Utiliser le mot clé ByVal pour indiquer qu'un
argument est passé par valeur ou ne rien écrire….
Par exemple : private Sub Somme (ByVal a as Integer, b as Integer )
◼
a=a+b
End Sub
◼
Private Sub BtSomme_Click (sender As Object, e As EventArgs)
Handles BtSomme.Click
Dim x As Integer = 10
Dim y As Integer = 20
Somme(x, y)
Label1.Text = x ‘x=10
Label2.Text = y ‘y=20
End Sub
77
Limites du ByVal?
◼
◼
Ecrire une procedure permute qui
permet de permute deux entiers qui lui
sont passes en parameter…
Utiliser cette procedure dans une
procedure évènementielle Btn_Click
pour afficher les valeurs des variables
passes en paramètres…
Passage par valeur 1
Btn_Click
X
10
y
20
Private Sub permuter(A As Integer, B As Integer)
Dim aux As Integer
aux = A
A = B
B = aux
MsgBox("A = " & A & "B = " & B)
End Sub
Private Sub Btn_Click(sender As Object, e As EventArgs) Handles Btn.Click
Dim x = 10, y As Integer = 20
permuter(x, y)
MsgBox("x = " & x & "y = " & y)
End Sub
Passage par valeur 2
Btn_Click
Permuter
X
A
10
10
y
B
20
20
AUX
Passage par valeur 3
Permuter
Btn_Click
AUX
X
A
10
10
y
B
20
20
Passage par valeur 4
Btn_Click
Permuter
X
A
AUX
10
20
10
y
B
20
10
Passage par valeur 5
Btn_Click
Permuter
X
10
A
AUX
20
10
y
B
20
10
Pas de
changement
!!!
Passage par reférence
Passage par reference 1
Private Sub permuter(ByRef A As Integer, ByRef B As Integer)
Dim aux As Integer
aux = A
A = B
B = aux
MsgBox("A = " & A & "B = " & B)
End Sub
Btn_Click
Permuter
AUX
X
10
A
y
20
B
Passage par reference 2
Permuter
AUX
X
20
A
y
10
B
10
Passage par reference 3
Btn_Click
Permuter
AUX
X
20
A
y
10
B
10
Passage par reference 4
Btn_Click
Permuter
X
AUX
10
10
y
20
Passage d'arguments par référence :ByRef
◼
◼
◼
Quand on fait passer des arguments par référence ByRef
la procédure peut accéder à la variable proprement dite au niveau de
l'emplacement de son adresse mémoire.
La valeur de la variable peut ainsi être modifiée de manière
permanente par la procédure à laquelle elle est passée.
Exercice:


Ecrire une procédure som_prod qui permet de calculer la somme et le
produit de deux entiers qui lui sont passés en paramètre. La procédure
n’affiche rien…
faire l’affichage dans une procédure évènementielle qui fera appel à
som_prod.
89
Exercice 1
◼
◼
◼
Ecrire une fonction « IsPaire » recevant un entier et retourne 1 si
l’entier est pair et -1 sinon.
Ecrire une procédure « Saisie » dans laquelle on saisit un entier
dans une zone texte Txtsaise et qui appelle la fonction « IsPaire »
et affiche dans un messageBox « le nombre est pair » ou le
« nombre est impair » suivant le cas.
La procédure évènementielle test s’exécute lorsqu’on clique sur le
bouton bttest et qui appelle la procédure Saisie
90
Exercice 2
◼
◼
◼
Ecrire une fonction « RemplirTab » qui permet de remplir un tableau
T (donné en argument) par des entiers saisis par l’utilisateur(en
utilisant des inputBox), la saisie s’arrête avec 0 qui ne sera pas
ajouté au tableau. La fonction retourne la taille du tableau.
Ecrire une procédure Min_Max qui cherche le max et le min d’un
tableau passé en paramètre sans l’afficher.
Ecrire une procédure traitement dans laquelle s’exécutent les
traitements suivant :




Déclaration d’un tableau TAB dynamique d’entiers
Remplissage de TAB en faisant appel à la fonction RemplirTab
Afficher la taille du tableau dans un label « LbAffiche »
Afficher le max et le min de TAB dans un msgbox
91
Exercice 3
◼
Ecrire une procédure qui détermine les
nombres parfaits qui existent entre et
2 et 10000. l’affichage sera dans un
MsgBox.
NB: un nombre parfait est un nombre dont la somme
de ses diviseurs (sauf lui-même) est égale à lui-même
92
Exercice 4
◼
◼
◼
◼
Ecrire une procédure qui permet remplir un tableau T de taille n
avec des notes positives.
Ecrire une procédure qui permet de calculer la moyenne de ses
notes sans l’afficher.
Ecrire une procédure « Recherche » qui recherche une valeur X
passé en paramètre dans le tableau T. si X se trouve plusieurs fois
elle retourne sa première position sinon -1.
Ecrire une procédure générale « Saisie » dans laquelle s’exécutent
les traitement suivants:





◼
Déclaration d’un tableau Tab dynamique,
Saisir la taille du tableau avec 1<=taille<=20,
Remplir le tableau en utilisant la procédure nécessaire,
Afficher la moyenne en utilisant un MsgBox,
Saisir une valeur a et afficher dans un MsgBox la position de a dans Tab
Comment voir le résultat de votre travail proposer une solution.
93
INTERACTION AVEC
L’UTILISATEUR
Les MsgBox
MsgBox - Instruction ou fonction ?
Cette instruction très utilisée dans Visual Basic permet de poser une
question à l' utilisateur au travers d' une boîte de dialogue.
Syntaxe:
Variable = MsgBox("Message", Type, "Titre de la fenêtre")
Variable : Variable de type Entier(Integer) recevant la valeur du bouton
Message : Prompt :Chaîne de caractères affichée comme message dans la
boîte de dialogue
Type : Expression numérique qui contrôle les boutons et les icônes à afficher.
Titre : Expression chaîne affichée dans la barre de titre de la boîte de
dialogue.
MsgBox (type)
◼
Les constantes pour les boutons
Constante VB
valeur
Affichage
MsgboxStyle.OKOnly
0
le bouton OK uniquement
MsgboxStyle.OKCancel
1
les boutons Ok et Annuler
MsgboxStyle.CancelRetryIgnore
2
les boutons Abandonner,
Répéter et Ignorer
MsgboxStyle.YesNoCancel
3
les boutons Oui, Non et Annuler
MsgboxStyle.YesNo
4
les boutons Oui et Non
MsgboxStyle.RetryCancel
5
les boutons Répéter et Annuler
MsgBox (type)
◼
Les constantes pour les icônes
Constante VB
valeur
Affichage
MsgboxStyle.Critical
16
l'icône erreur critique
MsgboxStyle.Question
32
l'icône question
MsgboxStyle.Exclamation
48
l'icône message d'avertissement
MsgboxStyle.Information
64
l'icône message d’information
MsgBox ("Erreur fatale, division par 0", MsgboxStyle.Critical)
MsgBox (type)
◼
Les constantes pour le bouton par défaut
Constante
valeur
Description
MsgboxStyle.DefaultButton1
10
Le 1er bouton est le bouton
par défaut
MsgboxStyle.DefaultButton2
256
Le 2ème bouton est le bouton
par défaut
MsgboxStyle.DefaultButton3
512
Le 3ème bouton est le bouton
par défaut
MsgBox
Exemple
x = MsgBox("Echec de connexion!", MsgboxStyle.DefaultButton2 +
MsgboxStyle.AbortRetryIgnore or MsgboxStyle.Information, "titre")
MsgBox (constantes renvoyées)
◼
Les constantes renvoyées par MsgBox
Constante
valeur
Description
MsgBoxResult.Ok
1
OK
MsgBoxResult.Cancel
2
Annuler
MsgBoxResult.Abort
3
Abandonner
MsgBoxResult.Retry
4
Réessayer
MsgBoxResult.Ignore
5
Ignorer
MsgBoxResult.Yes
6
Oui
MsgBoxResult.No
7
Non
La fonction : InputBox
◼
Syntaxe
InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])
ch = ""
ch = InputBox("Quel est votre age", "Age S.V.P", "20 ans")
Exemple
Voici un exemple au sein de lequel l’utilisateur
est invité à spécifier s’il désire terminer un processus
quelconque ou s’il désire continuer à l’aide de la
boîte de dialogue ci-contre.
◼
◼
Si l’utilisateur appuie sur le bouton Oui, le script s’arrête à l’aide de
l’instruction Exit Do vue précédemment.
103
Cours VB.NET
LES CHAINES DE
CARATÈRES: STRING
Les chaines de caractères
◼
◼
◼
◼
◼
Le type 'String' peut contenir une 'chaîne de caractères'
(alphanumérique) comme du texte.
La longueur de la chaîne n'est pas fixe et une String peut avoir un
nombre de caractère allant de 0 jusqu'à environ 2 milliards de
caractères.
Le Type 'Char' contient un seul caractère. On utilise souvent des
tableaux de 'Char'.
Char et String contiennent en interne le code des caractères au
format Unicode (dans la variable, chaque caractère est codé sur 2
octets) et pas de l'ASCII ou de l'ANSI..(ancien codage ou chaque
caractère était codé sur un octet).
Les premiers caractères ont le même code Unicode et Ascii
La table UNICODE
https://unicode-table.com/en/
UNICODE = Tous les
caractères possibles
Les methods de la classe
string
◼
◼
Le type System.String ou
String (Chaîne de
caractères) est une Classe
du Framework, qui a des
méthodes.
Pour ces méthodes, le
premier caractère est à la
position 0.
Méthodes de string
◼
.Trim : Permet de supprimer des
caractères en début et fin de chaîne.
s=" Bonjour “
s=s.Trim(" ") 'donne
s="Bonjour"
◼
.Length : Taille d'une chaîne en
nombre de caractère.
Dim s As String= "VB"
MsgBox(s.Length.ToString)
◼
.Insert : Insère une chaîne dans une
autre.
Dim s As String=
"VisualBasic"
s= s.Insert(6," " )
'Donne s= "Visual Basic"
◼
.Remove : Enlève des caractères à
une certaine position dans une chaîne.
Dim s As String =
"VisualBasic"
s = s.Remove(2, 7) 'Donne
s= "Viic"
'Affiche 2
Méthodes de string
◼
.Replace : Remplace dans
une chaîne de départ, toutes
les occurrences d'une chaîne
par une autre.
◼
.Contains : Permet de savoir
si une chaîne apparaît dans
une autre. Retourne True ou
False.
Dim s As String=
"Visual_Basic"
s= s.Replace("_"," " )
'Donne s= "Visual Basic"
Dim a As String=
"Visual_Basic"
Dim trouve As Boolean
trouve = a.Contains(
« al")
Méthodes de string
◼
.Split : Découpe en plusieurs sous
chaînes une chaîne de départ par rapport
à un séparateur et les place dans un
tableau de string. Par défaut le
séparateur est l’espace “ "
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"
◼
.Join : Concatène tous les éléments d'un
tableau et peut ajouter des séparateurs.
q = String.Join(" ", nom)
.Substring : Extrait une partie d'une
chaîne. Le premier paramètre indique la
position de départ; le second, le nombre
de caractères à extraire.
Dim a As String=
"Informatique"
MessageBox.show(a.Substring(
2,3)) 'Affiche for
◼
Donne
Philippe Jean Toto
.substring
◼
Exercice

comment obtenir les 4 caractères de
droite d’une chaine.
Dim a As String= "Informatique"
MessageBox.show(a.Substring(A.Length-4)) 'Affiche
ique

comment obtenir les 3 caractères de
gauche d’une chaine.
Dim a As String= "Informatique"
MessageBox.show(a.Substring(0, 3))
'Affiche inf
Méthodes de string
◼
.Chars : Une chaîne peut être perçue
comme un tableau de caractères
(instances Char) ; on peut extraire un
caractère particulier en faisant
référence à l'index de ce caractère par
l'intermédiaire de la propriété Chars.
◼
.StartsWith() et EndsWith() :
Permettent de tester si une string
commence ou se termine par une
string, retourne True ou False.
◼
.ToString : convertit n’importe quel
information vers string
Dim maString As String = "ABCDE"
Dim monChar As Char
monChar = maString.Chars(3)
' monChar = "D"
‘Tester si la String s commence par "abc" et se
termine par "xyz":
If s.StartsWith ("abc") And s.EndsWith
("xyz") Then
…..
End if
Dim I As Integer=12
Label.Text = I.ToString
Comparaison de chaines
◼
On peut comparer 2 String avec les opérateurs '=',
'>', '<' :
Dim s1 As String = "ABCD"
Dim s2 As String = "XYZ"
If (s1 > s2) Then
MsgBox(s1 & ">" & s2)
Else
MsgBox(s2 & ">" & s1)
End If
◼
◼
Les caractères sont classés dans un ordre
croissant (l'ordre de leur code unicode).
l'ordre de certains caractères particuliers:
" " +,-./ 0123456789 :;ABCDEF abcdef èéê
Les instructions 'Visual Basic'
◼
◼
◼
◼
◼
Elles sont anciennes (avant .NET) et font partie
intégrante de VisualBasic;
Sont parfois plus simples, mais ne fonctionnent pas
comme des Objets mais plutôt comme des
instructions.
Elles font double emploi avec les méthodes de la
classe String.
Elles ne sont pas toujours cohérentes avec le reste
et cela peut induire en erreur.
Attention : le premier caractère est en position 1
dans les instructions VB
Position d’une chaine dans une autre
◼
◼
◼
InStr : Retourne un entier spécifiant la
position de début de la première
chaîne à l'intérieur d'une autre à partir
de la position indiquée.

Si la chaîne n'est pas trouvée,
retourne 0.
Asc : Retourne le code de caractère
du caractère.

entre 0 et 255 pour le le jeu de
caractères codés sur un octet

entre -32 768 et 32 767 pour le jeu
de caractères codés sur deux
octets
AscW : AscW retourne le code
Unicode du caractère entré. Il peut être
compris entre 0 et 65 535.
n=InStr(1,"aaaaRaa","R")
'retourne 5
x=Asc("A") 'retourne 65
x=AscW("A") 'retourne 65
Exercice 1
◼
◼
Ecrire une procédure qui demande à l’utilisateur de saisir
2 chaines de caractères de taille 10 maximum. Afficher
un message d’erreur à chaque fois qu'une chaine saisie
par l’utilisateur dépasse la taille autorisée.
Vérifier si ces deux chaines sont identiques, si non,
vérifier si la chaine la plus petite existe dans la plus
grande à l’aide de fonction InStr, si elle existe, alors
afficher la position trouvée.
117
Cours VB.NET
PROGRAMMATION DES
CONTÔLES
C’est quoi et pourquoi?
◼
◼
C’est le fait de programmer de toute pièce l’interface… (sans
passer par la phase de design)
Ça sert à faire des niveaux, programmer de grandes
applications etc…
Déclaration d’un contrôle
avec New
◼
◼
◼
◼
Les contrôles (Button, TextBox, PictureBox…) sont
des objets et donc des instances de classes.
On peut donc declarer un contrôle presque comme
on declare une variable.
On doit prendre en compte que c’est un objet et a
des propriétés et des methods.
Pour declarer un composant, on utilize new
Dim BtnTest As New Button
'un bouton est un objet par référence
Si on fait « Dim BtnTest As Button » on crée une référence vide, mais pas d'objet
Button.
Modification des propriétés
du contrôle
◼
Avant d’être placé sur le Form, un contrôle est
paramétré : on lui donne l’allure finale qu’il doit
avoir.
BtnTest.Location = New System.Drawing.Point(56, 144)
BtnTest.Name = "BtnTest"
BtnTest.Size = New System.Drawing.Size(104, 24)
BtnTest.TabIndex = 0
BtnTest.Text = "Test"
◼
◼
Dans quel procédure seront mis ces
instructions?
Mais en exécutant, le bouton n’existe
pas!!!
Affichage du contrôle
◼
◼
◼
Les instructions devront être mises dans une procédure qui
sera exécutée au démarrage de la form…
ce sera la procédure qui correspond à l’évènement
chargement de la form (Form_Load)
On devra aussi ajouter le composant à l’ensemble des
contrôle de fenètre
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
BtnTest.Location = New System.Drawing.Point(56, 144)
BtnTest.Name = "BtnTest"
BtnTest.Size = New System.Drawing.Size(104, 24)
BtnTest.TabIndex = 0
BtnTest.Text = "Test"
Me.Controls.Add(BtnTest) 'ajoute le composant à la
‘fenêtre
End Sub
Ajouter des évènements au
contrôle
◼
◼
◼
◼
le bouton ne commence à exister qu’au
moment du démarrage de l’application.
Lorsque la fenêtre est chargée, le bouton
existe mais il ne gère aucun évènement.
Pour lui attribuer un évènement, Il faut
inscrire le bouton dans une méthode de
gestion d'évènements.
Donc, VB.NET doit savoir quelle
procédure doit être déclenchée quand un
évènement survient sur l’objet créé.
◼
I.
II.
Pour écrire une procédure évènementielle liée à un
contrôle (bouton) dynamiquement ajouté, il faut:
Écrire une procédure contenant les instruction à
faire en cas d’évènement et contenant les
paramètres Sender et e.
Lier cette procédure avec le contrôle et
l’évènement en question.
Ecrire une procédure ayant les
paramètres Sender et e
◼
Elle contient les instructions à exécuter si l’évènement
survient :
Private Sub BouttonClique(sender As Object, e As EventArgs)
Msgbox("je suis un nouveau bouton")
End Sub
◼
Mais cette procedure n’est pas evenementielle,


Pas de handles, donc pas de liaison à aucun evennement
Ce sera une procedure ayant les parametres d’evènement mais sans
l’evènement
Lier la procédure avec le
contrôle et l’évènement
Pour cela on utilisera l’instruction AddHandler qui
sera écrite comme suit:
◼
AddHandler BtnTest.Click, AddressOf BouttonClique
•
•
AddHandler permet d’affecter une procédure à un
évènement.
AdressOf permet de désigner la procédure à utiliser
en cas d’évènement.
Code complet
Public Class FrmTest
Dim BtnTest As New Button
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
‘Attribution des paramètres du bouton
BtnTest.Location = New System.Drawing.Point(56, 144)
BtnTest.Name = "BtnTest"
BtnTest.Size = New System.Drawing.Size(104, 24)
BtnTest.TabIndex = 0
BtnTest.Text = "Test“
‘Ajout du contrôle aux contrôles de la fenètre (apparition sur la form)
Me.Controls.Add(BtnTest)
‘Inscription de la liaison entre évènement sur le contrôle et procedure à exécuter
AddHandler BtnTest.Click, AddressOf BouttonClique
End Sub
‘procédure à exécuter en cas d’évènement
Private Sub BouttonClique(ByVal sender As Object, ByVal e As EventArgs)
MsgBox("Je suis un nouveau bouton")
End Sub
End Class
Remarques
◼
◼
◼
◼
◼
le mot clé « Handles » permet d'associer un événement à une
procédure au moment de la conception.
le mot clé « Addhandler » permet d'associer un événement à
une procédure au moment de l'exécution.
L’instanciation d’un nouvel objet (déclaration du contrôle)
est faite en dehors de toute procédure pour que l’objet soit
vu par tous les sous programmes (objet global).
Le paramétrage ainsi que l’attribution des évènements
(les instructions AddHandler faisant les correspondances des
différents évènements aux différents objets) se font dans la
procédure Form_Load pour que ce soit exécuté au
démarrage de l’application.
Une procédure attribuée à un évènement d’un objet peut
être réattribué à un autre objet et/ou un autre évènement.
Utilisation des paramètres
« sender » et « e »
◼
◼
On veut placer dynamiquement deux
boutons, BtnTest1 et BtnTest2, sur
l’interface et leurs associer la même
procedure évènementielle.
Dans la procedure faire le test si c’est
BtnTest1 que l’utilisateur a appuyé, afficher
que c’est le premier. Si c’est BtnTest2 dire
que c’est le deuxième…
Public Class Form1
Dim BtnTest1, BtnTest2 As New Button
'un bouton est un objet par référence
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
BtnTest1.Location = New System.Drawing.Point(56, 120)
BtnTest1.Name = "BtnTest1"
BtnTest1.Size = New System.Drawing.Size(104, 24)
BtnTest1.TabIndex = 0
BtnTest1.Text = "Test1"
Me.Controls.Add(BtnTest1)
BtnTest2.Location = New System.Drawing.Point(56, 144)
BtnTest2.Name = "BtnTest2"
BtnTest2.Size = New System.Drawing.Size(104, 24)
BtnTest2.TabIndex = 1
BtnTest2.Text = "Test2"
Me.Controls.Add(BtnTest2) 'ajoute le composant à la fenètre
AddHandler BtnTest1.Click, AddressOf BoutonClique
AddHandler BtnTest2.Click, AddressOf BoutonClique
End Sub
Private Sub BoutonClique(sender As Object, e As EventArgs)
If (sender.name = BtnTest1.Name) Then
MsgBox("Bouton I appuyé", MsgBoxStyle.Information, "Bouton apuyé")
Else
MsgBox("Bouton II appuyé", MsgBoxStyle.Information, "Bouton
apuyé")
End If
End Sub
End Class
Private Sub BouttonClique(sender As Object,e As EventArgs)
If sender Is BtnTest1 Then
MsgBox("Je suis le premier bouton")
ElseIf sender Is BtnTest2 Then
MsgBox("Je suis le deuxième bouton")
End If
End Sub
le paramètre « e »
pour un textbox, les évènements suivant sont relatifs à la touche
appuyée :
◼
KeyDown : survient quand on appuie sur la touche.
◼
KeyPress : quand la touche est enfoncée.
◼
KeyUp : quand on relâche la touche.
Ces évènements surviennent dans cet ordre.
◼
KeyPress permet de récupérer la touche tapée dans
e.KeyChar (le code unicode mais pas les touches de fonction
de direction comme CTRL,F1, F2, flèche haut...).
◼
KeyDown et KeyUp permettent de voir ce qui a été tapé
physiquement, le code clavier (dans e.KeyCode) et aussi si
MAJ ALT CTRL ont été pressés (dans e.Shift, e.Alt..)
Exemple
Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles
TextBox1.KeyUp
If e.Shift And e.KeyCode = Keys.A Then
MsgBox("La lettre 'A' a été tapée")
End If
End Sub
Déclaration d’un tableau de
contrôle
Public Class FrmTest
Dim TabBouton(5) As Button
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i As Integer
For i = 0 To 5
TabBouton(i) = New Button
TabBouton(i).Location = New System.Drawing.Point(56, 50 + 30 * i)
TabBouton(i).Name = "TabBouton" & i
TabBouton(i).Size = New System.Drawing.Size(104, 24)
TabBouton(i).TabIndex = i
TabBouton(i).Text = i
Me.Controls.Add(TabBouton(i))
AddHandler TabBouton(i).Click, AddressOf BouttonClique
Next
End Sub
Private Sub BouttonClique(sender As Object, e As EventArgs)
MsgBox("Je suis le bouton Num " & sender.tabindex)
End Sub
End Class
Exemple matrice de boutons
Dim l, c As Integer
Dim TabBouton(,) As Button
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i As Integer
l = CInt(InputBox("donner nbr ligne"))
c = CInt(InputBox("donner nbr colonne"))
ReDim TabBouton(l, c)
For i = 0 To l
For j = 0 To c
TabBouton(i, j) = New Button
TabBouton(i, j).Location = New System.Drawing.Point(50+31 * j, 50 + 31 * i)
TabBouton(i, j).Name = "TabBouton" & i & j
TabBouton(i, j).Size = New System.Drawing.Size(30, 30)
TabBouton(i, j).Text = i * c + j
Me.Controls.Add(TabBouton(i, j))
AddHandler TabBouton(i, j).Click, AddressOf BouttonClique
Next
Next
End Sub
Private Sub BouttonClique(sender As Object, e As EventArgs)
MsgBox("Je suis le bouton Num " & sender.name)
End Sub
Cours VB.NET
GESTION DES FICHIERS
TEXTE
Utiliser les "Stream" du
Framework
◼
◼
◼
Le Stream (flux, torrent, courant) est une notion générale,
c'est donc un flux de données provenant ou allant vers un
fichier, un port, une connexion TCP/IP...
Ici on utilise un Stream pour lire ou écrire dans un fichier.
L'accès est séquentiel: les données sont traitées du début à
la fin du fichier.
Différents types de stream
◼
Stream en sortie: pour écrire dans un fichier

◼
Stream en entrée: pour lire à partir d’un
fichier

◼
◼
StreamWriter
StreamReader
Ce sont des classes, pour pouvoir les
utiliser, il faut en instancier des objets…
Utiliser new pour le faire
Pour écrire dans un fichier
texte
◼
Pour ouvrir un fichier en mode écriture, Il faut
instancier un objet de la classe StreamWriter.
Dim SW As New StreamWriter ("MonFichier.txt") ' crée le fichier ou,
si existe déja, écrase
MonFichier.txt
Programme
VB.NET
SW
Dim SW As New StreamWriter("MonFichier.txt")
Création d’un
nouveau fichier.
Si le fichier existe
déjà, il sera
écrasé
Ajouter sur un fichier
◼
Pour ne pas écraser mais ajouter à la fin du
fichier (concatener):
Dim SW As New StreamWriter ("MonFichier.txt",
True)
' crée ou si
‘existe ajoute
MonFichier.txt
Programme
VB.NET
SW
ceci est un texte
déja existant
dans un fichier,
le curseur vient
juste après
Dim SW As New StreamWriter("MonFichier.txt", True)
Write
◼
Puis on écrit avec la méthode Write
MonFichier.txt
Bonjour
Programme
VB.NET
SW
SW.Write("Bonjour ")
WriteLine
◼
On peut aussi écrire avec la méthode
WriteLine qui ajoute un saut de ligne.
MonFichier.txt
Bonjour Monsieur
Programme
VB.NET
SW
SW.WriteLine("Monsieur")
Write et WriteLine
SW.Write("Bonjour ")
SW.WriteLine("Monsieur")
‘écrit bonjour sur la première ligne
‘écrit Monsieur à la dernière position du
'curseur puis revient à la ligne
Close
◼
Enfin on ferme avec Close. Rupture
du lien entre programme et fichier
SW.Close()
MonFichier.txt
Bonjour Monsieur
Programme
VB.NET
SW
SW.close()
Ouvrir un fichier texte en
Lecture
◼
Pour ouvrir un fichier en mode
Lecture, Il faut instancier un objet de
la classe StreamReader.
Position du curseur
Caractère de fin de ligne
MonFichier.txt
Programme
VB.NET
SR
cette ligne est à lire.
s'il n'y a pas de retour à
la ligne, tous les
caractères seront
considérés comme sur la
même ligne.
Dim SR As New StreamReader("MonFichier.txt")
Lire à partir d’un fichier texte
◼
On peut lire par ligne avec ReadLine (une ligne)
ReadLine, Ne lit
pas le caractère
de retour à la
ligne
Dim ligne As String
ligne = SR.ReadLine
MonFichier.txt
Programme
VB.NET
SR
cette ligne est à lire.
s'il n'y a pas de retour à
la ligne, tous les
caractères seront
considérés comme sur la
même ligne.
Dim ligne As String
ligne = SR.ReadLine
Readline
Lire la totalité du fichier
◼
Pour lire ligne par ligne jusqu’à la fin, utiliser
SR.EndOfStream qui retourne TRUE quand c’est
la fin, FALSE sinon.
Dim ligne As String
Do
ligne = SR.ReadLine
TextBox2.Text += ligne & vbCrLf
Loop While (Not SR.EndOfStream)
MsgBox("fin fichier")
Lire à partir d’un fichier texte
◼
On peut lire en bloc avec ReadToEnd (de la position courante
jusqu'à la fin).
TextBox2.Text = SR.ReadToEnd
MonFichier.txt
Programme
VB.NET
SR
cette ligne est à lire.
s'il n'y a pas de retour à
la ligne, tous les
caractères seront
considérés comme sur la
même ligne.
Dim ligne As String
ligne = SR.ReadTo End
Fermeture du fichier
◼
Fermer le fichier avec la méthode
close
SR.Close()
MonFichier.txt
Programme
VB.NET
SR
SR.close()
cette ligne est à lire.
s'il n'y a pas de retour à
la ligne, tous les
caractères seront
considérés comme sur la
même ligne.
Téléchargement