Vous êtes sur la page 1sur 1092

Cours VB.

NET

par Philippe Lasserre


Date de publication : Dernire mise jour : 02/08/2009

Il s'agit d'un cours de Visual Basic.Net de Microsoft complet, pour dbutants (pas de pr requis) ou programmeurs voulant passer la version .net . Autres contributions du mme auteur: Pour voir et tlcharger LDF: logiciel de compta en Shareware, cliquer ici. Tlcharger un dictionnaire mdical gratuit pour Word. philippe@lasserrelyon.fr Chapitre rcent V-E-4 Regex, Expressions rgulires.

Cours VB.NET par Philippe Lasserre

I - Introduction............................................................................................................................................................23 II - Que trouver dans ce cours ?............................................................................................................................... 24 II-A - Qu'allons-nous tudier ?............................................................................................................................. 24 II-B - Quel plan de cours suivrons-nous ?........................................................................................................... 24 II-C - Quels logiciels utiliser ?.............................................................................................................................. 24 II-D - Quelle configuration est ncessaire ?........................................................................................................ 26 II-E - propos de l'auteur................................................................................................................................... 26 III - Principe et structure des programmes................................................................................................................27 III-A - Les 'Objets'.................................................................................................................................................27 III-A-1 - Dans la vie courante......................................................................................................................... 27 III-A-2 - Et dans Visual Basic.net................................................................................................................... 31 III-B - Programmation vnementielle : le premier programme...........................................................................35 III-B-1 - Principes de la programmation VB................................................................................................... 35 III-B-2 - Exemple : le premier programme......................................................................................................35 III-B-3 - En pratique, que fait le programmeur ?............................................................................................ 36 III-B-3-a - Il dessine l'interface utilisateur..................................................................................................36 III-B-3-b - Il va crire le code correspondant aux vnements.................................................................37 III-C - Les instructions, les procdures : les 'Sub', les 'Function'.........................................................................38 III-C-1 - Les instructions................................................................................................................................. 38 III-C-2 - Les procdures..................................................................................................................................40 III-C-3 - Procdures lies aux vnements....................................................................................................41 III-C-4 - Procdures non lies........................................................................................................................ 43 III-C-5 - Procdures Sub.................................................................................................................................44 III-C-6 - Procdures 'Function'........................................................................................................................ 45 III-C-7 - Module standard................................................................................................................................46 III-C-8 - Private Public.................................................................................................................................... 46 III-C-9 - Remarques........................................................................................................................................ 47 III-C-10 - Lexique anglais=>Franais..............................................................................................................47 III-D - Les modules...............................................................................................................................................48 III-D-1 - Qu'est ce qu'un module ?................................................................................................................. 48 III-D-2 - Comment crer un module standard................................................................................................ 50 III-D-3 - Lexique anglais=>Franais................................................................................................................51 III-E - Notion de programmation 'procdurale' et de programmation 'objet'........................................................ 51 IV - Environnement de dveloppement : les EDI/IDE............................................................................................... 52 IV-A - IDE Visual Studio 2008 (Microsoft)........................................................................................................... 52 IV-A-1 - Interface 'Windows Forms'................................................................................................................ 54 IV-A-2 - Interface WPF................................................................................................................................... 64 IV-A-3 - Vb propose des aides.......................................................................................................................66 IV-B - IDE SharpDevelop (alternative gratuite) MJ version 2.1.........................................................................70 IV-B-1 - O le trouver ? Comment l'installer ?............................................................................................... 70 IV-B-2 - Fentre Projet................................................................................................................................... 72 IV-B-3 - Dans un nouveau projet, crer une fentre......................................................................................74 IV-B-4 - Ajouter des contrles au formulaire..................................................................................................76 IV-B-5 - Modifier les proprits d'un contrle ou du formulaire......................................................................76 IV-B-6 - Voir les procdures........................................................................................................................... 77 IV-B-7 - Voir tous les composants d'un projet................................................................................................78 IV-B-8 - Remarque relative aux fentres de l'IDE..........................................................................................78 IV-B-9 - Tester son logiciel............................................................................................................................. 78 IV-B-10 - Fichiers, Chemins des sources.......................................................................................................78 IV-B-11 - Proprits du projet.........................................................................................................................79 IV-B-12 - #Develop propose des AIDES........................................................................................................ 80 IV-B-13 - Erreur de compilation......................................................................................................................80 IV-B-14 - Erreur d'excution : Exceptions...................................................................................................... 81 IV-B-15 - Dbogage........................................................................................................................................ 81 IV-B-16 - Conclusion.......................................................................................................................................82 IV-B-17 - J'ai besoin d'aide.............................................................................................................................83 V - Langage Visual Basic.......................................................................................................................................... 85 V-A - Introduction................................................................................................................................................. 85
-2Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-A-1 - Les Classes du framework................................................................................................................ 85 V-A-2 - Les instructions de Microsoft.VisualBasic..........................................................................................86 V-A-3 - Saisir, Afficher.................................................................................................................................... 86 V-B - Les 'Algorithmes'.........................................................................................................................................88 V-B-1 - Pour crire un programme.................................................................................................................88 V-B-2 - Dfinition de l'algorithme....................................................................................................................89 V-B-3 - Principes gnraux............................................................................................................................ 90 V-B-3-a - Squences................................................................................................................................. 90 V-B-3-b - Les variables, leur 'Type'...........................................................................................................91 V-B-3-c - Les constantes...........................................................................................................................92 V-B-3-d - Affectation (ou Assignation).......................................................................................................93 V-B-3-e - Boolens.................................................................................................................................... 94 V-B-3-f - Les choix : Si..Alors....................................................................................................................94 V-B-3-g - Les choix : Dcider entre.......................................................................................................... 97 V-B-3-h - Les rptitions : Pour...Rpter................................................................................................. 98 V-B-3-i - Les rptitions : Tant que......................................................................................................... 100 V-B-3-j - Logique : Et, Ou, Non...............................................................................................................101 V-B-3-k - Les Sauts.................................................................................................................................101 V-B-3-l - Programmation structure........................................................................................................ 102 V-B-3-m - Structuration : 'Sous-programme' ou 'procdure'................................................................... 102 V-B-3-n - Tableaux...................................................................................................................................104 V-B-3-o - Notion de 'Collection'...............................................................................................................106 V-B-3-p - Notion de Pile et de Queue.................................................................................................... 107 V-B-3-q - Liste Chane.......................................................................................................................... 108 V-B-3-r - Notion de Cl........................................................................................................................... 108 V-B-3-s - Notion de Hachage..................................................................................................................108 V-B-3-t - Erreur d'excution : Notion de 'Scurisation' du code..............................................................110 V-B-3-u - Flag et variables d'tat............................................................................................................ 111 V-B-3-v - Compilation, interprtation....................................................................................................... 111 V-B-4 - Quelques algorithmes...................................................................................................................... 112 V-B-4-a - Recherche dans un tableau.................................................................................................... 112 V-B-4-b - Tri de tableau.......................................................................................................................... 113 V-B-5 - Lexique anglais=>Franais.............................................................................................................. 115 V-C - L'affectation...............................................................................................................................................115 V-D - Les variables : gnralits........................................................................................................................117 V-D-1 - Nom des variables........................................................................................................................... 118 V-D-2 - Dclaration, initialisation.................................................................................................................. 119 V-D-3 - En pratique : Exemple..................................................................................................................... 119 V-D-4 - Les diffrents types de variables.....................................................................................................120 V-D-5 - Les Boolean..................................................................................................................................... 121 V-D-6 - Variable entire................................................................................................................................ 121 V-D-7 - Variable avec virgule........................................................................................................................122 V-D-8 - String, Char......................................................................................................................................124 V-D-9 - Annexe 1 : Place occupe en mmoire.......................................................................................... 124 V-D-10 - Annexe 2 : Type primitif................................................................................................................. 125 V-D-11 - Annexe 3 : Choix des noms de variables...................................................................................... 125 V-E - Variables 'String' et 'Char'.........................................................................................................................126 V-E-1 - Variables 'String'...............................................................................................................................126 V-E-1-a - System.String est une Classe du Framework......................................................................... 127 V-E-1-b - On peut aussi utiliser les instructions 'Visual Basic'................................................................135 V-E-1-c - Un exemple..............................................................................................................................140 V-E-1-d - Comparaison de caractres (Option Compare)...................................................................... 140 V-E-1-e - Unicode....................................................................................................................................142 V-E-2 - Variables 'Char'................................................................................................................................ 143 V-E-3 - Et les Chanes de longueur fixe...................................................................................................... 145 V-E-4 - Regex, expressions rgulires.........................................................................................................146 V-E-4-a - Principe du regex.................................................................................................................... 146 V-E-4-b - Caractres pour modle regex................................................................................................147
-3Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-E-4-c - Exemples................................................................................................................................. 148 V-E-4-d - Divers utilisations de Regex....................................................................................................148 V-F - Variables Numriques............................................................................................................................... 150 V-F-1 - La Classe Math du Framework peut tre utilise............................................................................ 152 V-F-2 - Les instructions du langage VisualBasic..........................................................................................154 V-F-3 - Dpassement de capacit, 'Non Nombre'........................................................................................154 V-G - Conversion, sparateur dcimal.............................................................................................................. 155 V-G-1 - Conversion numrique vers String.................................................................................................. 155 V-G-2 - Conversion String vers numrique.................................................................................................. 155 V-G-3 - Tous les modes de conversion........................................................................................................156 V-G-4 - Pour rsumer et faire trs simple, retenir....................................................................................... 159 V-G-5 - Conversion Explicite et Implicite......................................................................................................160 V-G-6 - Conversion restrictive...................................................................................................................... 160 V-G-7 - Sparateur dcimal : le point, la virgule, Culture............................................................................ 160 V-G-8 - IsNumeric......................................................................................................................................... 162 V-G-9 - Lexique anglais=>Franais.............................................................................................................. 162 V-H - Les 'Tableaux'........................................................................................................................................... 162 V-H-1 - Un tableau est un objet de type Array............................................................................................ 167 V-H-2 - Fonction avances sur les tableaux................................................................................................ 171 V-H-3 - Exemple courant d'utilisation des tableaux......................................................................................173 V-I - Les 'Collections'......................................................................................................................................... 175 V-I-1 - Exemple simpliste..............................................................................................................................175 V-I-2 - Classification des collections.............................................................................................................176 V-I-3 - ArrayList.............................................................................................................................................177 V-I-4 - List (Of)..............................................................................................................................................180 V-I-5 - HashTable.......................................................................................................................................... 182 V-I-6 - Dictionnary (Of)................................................................................................................................. 184 V-I-7 - SortedList...........................................................................................................................................185 V-I-8 - Queue................................................................................................................................................ 186 V-I-9 - Stack.................................................................................................................................................. 187 V-I-10 - Les LinkedList (Of).......................................................................................................................... 188 V-I-11 - HashSet (Of).................................................................................................................................... 190 V-I-12 - BitArray............................................................................................................................................ 192 V-I-13 - StringCollection................................................................................................................................192 V-I-14 - Autres...............................................................................................................................................193 V-I-15 - Gnralisation de la notion de collection........................................................................................ 193 V-I-16 - Pourquoi le premier lment est-il 0 ou 1 ?....................................................................................194 V-I-17 - Exemples sur les collections........................................................................................................... 194 V-I-18 - Lexique anglais=>Franais..............................................................................................................195 V-J - Les 'Structures'.......................................................................................................................................... 195 V-J-1 - Tableau dans une structure.............................................................................................................. 196 V-J-2 - Allons plus loin................................................................................................................................. 198 V-J-2-a - Les structures sont des types 'valeur'......................................................................................198 V-J-2-b - Les structures peuvent contenir plein de choses.................................................................... 199 V-J-2-c - Porte....................................................................................................................................... 200 V-K - Type valeur ou rfrence......................................................................................................................... 201 V-K-1 - La variable 'par Valeur'.................................................................................................................... 201 V-K-2 - La variable 'par Rfrence'.............................................................................................................. 201 V-K-3 - Influence sur l''Affectation'................................................................................................................201 V-K-4 - Copie d'objet By Ref: exemple des Tableaux.................................................................................. 202 V-K-5 - Le cas particulier des 'String'...........................................................................................................203 V-K-6 - Dclaration avec New ?................................................................................................................... 204 V-K-7 - Valeur aprs dclaration.................................................................................................................. 204 V-K-8 - Comparaison.................................................................................................................................... 205 V-K-9 - IsReference...................................................................................................................................... 205 V-L - Variable 'Object' et autre...........................................................................................................................206 V-L-1 - Le Type 'Object'................................................................................................................................206 V-L-1-a - Comment utiliser les proprits d'un objet ?........................................................................... 207
-4Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-L-1-b - Comparaison d'objets.............................................................................................................. 208 V-L-1-c - Nothing..................................................................................................................................... 208 V-L-2 - Les variables d'autres types.............................................................................................................209 V-L-3 - Utilisez donc des variables le plus types possible......................................................................... 209 V-L-4 - Attention quand on met un objet dans une variable objet............................................................... 209 V-M - Variable Boolenne.................................................................................................................................. 210 V-M-1 - Introduction...................................................................................................................................... 210 V-M-2 - Les boolens................................................................................................................................... 210 V-M-3 - Les conditions..................................................................................................................................211 V-M-4 - Les oprateurs logiques.................................................................................................................. 212 V-N - Soyons strict et explicite (et Compare et Infer ?).....................................................................................214 V-N-1 - Notion de conversion Explicite et Implicite...................................................................................... 214 V-N-2 - Comment modifier une option ?...................................................................................................... 214 V-N-3 - Option Strict..................................................................................................................................... 215 V-N-3-a - Conversions implicites.............................................................................................................215 V-N-3-b - Conversions String-numrique................................................................................................ 216 V-N-3-c - Liaisons tardives...................................................................................................................... 217 V-N-3-d - VB rapide ?..............................................................................................................................217 V-N-4 - Option Explicit.................................................................................................................................. 217 V-N-5 - Option strict et Explicit dans un module..........................................................................................218 V-N-6 - Option Compare...............................................................................................................................218 V-N-7 - Option Infer...................................................................................................................................... 219 V-O - Les constantes, les numrations........................................................................................................... 220 V-O-1 - Constantes....................................................................................................................................... 220 V-O-1-a - Intrts des constantes ?........................................................................................................ 220 V-O-1-b - Constantes prdfinies dans le langage.................................................................................221 V-O-1-c - True False............................................................................................................................... 222 V-O-2 - numration.....................................................................................................................................222 V-O-3 - Gnralisation de la notion d'numration...................................................................................... 226 V-O-3-a - ControlChars........................................................................................................................... 226 V-O-3-b - Couleurs.................................................................................................................................. 226 V-O-3-c - Math.........................................................................................................................................227 V-O-3-d - Touche du clavier dans le Framework.................................................................................... 227 V-O-3-e - Autre un exemple....................................................................................................................227 V-P - Les oprateurs..........................................................................................................................................227 V-P-1 - Addition : +....................................................................................................................................... 228 V-P-2 - Soustraction : -................................................................................................................................. 228 V-P-3 - Multiplication : *................................................................................................................................ 228 V-P-4 - Division : /......................................................................................................................................... 228 V-P-5 - Division entire: \............................................................................................................................. 229 V-P-6 - Puissance : ^.................................................................................................................................... 229 V-P-7 - Modulo : Mod................................................................................................................................... 229 V-P-8 - Concatnation : &.............................................................................................................................229 V-P-9 - Priorits............................................................................................................................................ 230 V-P-10 - Comparaison.................................................................................................................................. 230 V-P-11 - Logique : Not And Or ElseOr Xor.................................................................................................. 232 V-P-11-a - Si A et B sont des expressions boolennes..........................................................................232 V-P-11-b - Si A et B sont des nombres (Integer par exemple)............................................................... 232 V-P-11-c - Les oprateurs And, Or et Xor sont valus en fonction du type des oprandes.................. 233 V-P-11-c-i - Pour le type Boolean......................................................................................................233 V-P-11-c-ii - Pour les types Byte, Short, Integer, Long et tous les types numrs.......................... 233 V-P-12 - Dplacement de bits...................................................................................................................... 233 V-P-13 - Remarque 1 : Allons plus loin avec / et \.......................................................................................234 V-P-14 - Remarque 2 : Division par zro..................................................................................................... 234 V-Q - Les structures de contrle : Choix et boucles......................................................................................... 235 V-Q-1 - If Then..............................................................................................................................................235 V-Q-2 - Select Case..................................................................................................................................... 238 V-Q-3 - For Next........................................................................................................................................... 241
-5Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-Q-4 - Do Loop........................................................................................................................................... 243 V-Q-5 - While End While.............................................................................................................................. 245 V-Q-6 - For Each.......................................................................................................................................... 246 V-Q-7 - Switch...............................................................................................................................................247 V-Q-8 - IIF..................................................................................................................................................... 247 V-R - Les procdures et leurs paramtres........................................................................................................ 247 V-R-1 - Les parenthses.............................................................................................................................. 249 V-R-2 - Par Valeur, Par Rfrence...............................................................................................................249 V-R-3 - Par Dfaut, que se passe-t-il ?........................................................................................................251 V-R-4 - Optional............................................................................................................................................ 251 V-R-5 - Tableau de paramtres.................................................................................................................... 251 V-R-6 - ParamArray...................................................................................................................................... 252 V-R-7 - Porte des procdures.................................................................................................................... 252 V-R-8 - Nommage.........................................................................................................................................253 V-S - Porte des variables.................................................................................................................................253 V-S-1 - Dans les procdures........................................................................................................................ 253 V-S-2 - Dans un bloc d'instructions..............................................................................................................254 V-S-3 - Dans la section dclaration d'un Module.........................................................................................255 V-S-4 - Dans la section dclaration d'une fentre, d'un formulaire.............................................................. 256 V-S-5 - En pratique.......................................................................................................................................257 V-S-6 - En gnral........................................................................................................................................257 V-T - Les nombres alatoires............................................................................................................................ 258 V-T-1 - Avec la classe 'Random' du Framework..........................................................................................258 V-T-2 - Avec les instructions Rnd() et Randomize() de Visual Basic.Net.................................................... 259 V-T-3 - En cryptographie avec le Framework.............................................................................................. 260 V-T-4 - Un peu de thorie (creusons).......................................................................................................... 260 V-U - La 'Rcursivit'......................................................................................................................................... 262 V-U-1 - Rgles fondamentales d'une fonction rcursive.............................................................................. 264 V-U-2 - Exemple 1 : Inversion de chanes................................................................................................... 266 V-U-3 - Exemple 2 : Calcul de 'Factorielle'.................................................................................................. 266 V-U-4 - Exemple 3 : Calcul d'une expression avec parenthses multiples.................................................. 268 V-U-5 - Exemple 4 : PGCD.......................................................................................................................... 268 V-U-6 - Exemple 5 : Tri rcursif....................................................................................................................269 V-U-7 - Exemple 6 : Parcours de rpertoires et de sous rpertoires........................................................... 270 V-U-8 - Exemple 7 : valuation d'un nombre crit en chiffres romains........................................................271 V-U-9 - Exemple 8 : Suite de Fibonacci.......................................................................................................272 V-U-10 - Exemple 9 : Fractales.................................................................................................................... 274 V-U-11 - Autre............................................................................................................................................... 277 V-V - Faut-il oublier le GoTo ?........................................................................................................................... 277 V-V-1 - Le 'Goto'........................................................................................................................................... 277 V-V-2 - Pourquoi viter le 'GoTo'..................................................................................................................278 V-V-3 - Quand utiliser le 'GoTo'....................................................................................................................279 V-W - Les bases binaires, hexadcimales, l'algbre de Boole..........................................................................280 V-W-1 - Introduction......................................................................................................................................281 V-W-2 - Notions thoriques.......................................................................................................................... 282 V-W-3 - Pratique en Visual Basic.................................................................................................................299 V-W-4 - Viewer hexadcimal........................................................................................................................ 308 V-W-5 - diteur hexadcimal........................................................................................................................309 V-X - Les gnriques......................................................................................................................................... 309 V-X-1 - Dfinition...........................................................................................................................................309 V-X-2 - Intrts des gnriques ?................................................................................................................ 311 V-X-3 - Usage des gnriques..................................................................................................................... 311 V-Y - Link............................................................................................................................................................312 V-Y-1 - Dfinition, mise en place..................................................................................................................312 V-Y-2 - Principe d'une requte Link............................................................................................................. 313 V-Y-3 - Link et les tableaux d'Integers......................................................................................................... 314 V-Y-4 - Link et les chanes de caractres....................................................................................................315 V-Y-5 - Link et les mots d'une chane de caractres...................................................................................316
-6Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-Y-6 - Link pour rechercher la diffrence entre deux listes de noms......................................................... 317 V-Y-7 - Inference de Type et type anonyme................................................................................................ 317 V-Z - Les 'rgions', la compilation conditionnelle, les 'Attributs'........................................................................ 318 V-Z-1 - Les Rgions..................................................................................................................................... 318 V-Z-2 - La Compilation conditionnelle.......................................................................................................... 319 V-Z-3 - Les Attributs..................................................................................................................................... 320 V-AA - Traiter les erreurs...................................................................................................................................321 V-AA-1 - Les erreurs de syntaxe..................................................................................................................321 V-AA-2 - Les erreurs d'excution................................................................................................................. 323 V-AA-3 - Les erreurs de logique.................................................................................................................. 327 V-AA-4 - Les Tests........................................................................................................................................328 V-AB - Travailler sur les dates, les heures, sur le temps.................................................................................. 328 V-AB-1 - Dfinir une date, une heure.......................................................................................................... 329 V-AB-2 - Afficher une date, une heure.........................................................................................................330 V-AB-3 - Variable "temps".............................................................................................................................331 V-AB-4 - Add, Substrat................................................................................................................................. 331 V-AB-5 - AddDay, AddMouths, AddHours, AddSeconds, AddMiliseconds...................................................332 V-AB-6 - Year, Mouth, Day, Hour, Minute, Seconde, Millisecond.................................................................332 V-AB-7 - DayOfWeek.................................................................................................................................... 332 V-AB-8 - Now, ToDay, TimeOfDay................................................................................................................332 V-AB-9 - Ticks............................................................................................................................................... 333 V-AB-10 - Anne bissextile ?........................................................................................................................333 V-AB-11 - Comparaison de DateTime.......................................................................................................... 333 V-AB-12 - Calcul de la diffrence entre deux dates.....................................................................................333 V-AB-13 - Comment saisir rapidement une date dans un programme ?..................................................... 334 V-AB-14 - Fuseau horaire.............................................................................................................................334 V-AB-15 - Les Timers................................................................................................................................... 336 V-AB-16 - Perdre du temps.......................................................................................................................... 337 V-AB-17 - Chronomtrer............................................................................................................................... 338 V-AB-18 - Exemple: Horloge numrique...................................................................................................... 338 V-AC - Lire et crire dans les fichiers (squentiels ou alatoires).................................................................... 338 V-AC-1 - Gnralits et rappels................................................................................................................... 339 V-AC-2 - Classe FileInfo et File, Stream du Framework..............................................................................340 V-AC-3 - Classe My.Computer.FileSystem................................................................................................... 343 V-AC-4 - Utiliser les "Stream" du Framework.............................................................................................. 344 V-AC-5 - Utiliser "FileOpen" du VisualBasic.................................................................................................346 V-AC-5-a - Fichier squentiel en VB.......................................................................................................349 V-AC-5-b - Fichier accs alatoire en VB........................................................................................... 350 V-AC-5-c - Fichier binaire en VB............................................................................................................ 352 V-AC-6 - Utilisation du Contrle RichTextBox.............................................................................................. 353 V-AC-7 - Lire ou crire des octets ou du XML.............................................................................................353 V-AC-8 - Bote de dialogue pour choix de fichier........................................................................................ 353 V-AC-9 - Stream et fichier alatoire avec structure..................................................................................... 354 V-AD - Travailler sur les rpertoires.................................................................................................................. 360 V-AD-1 - Classe DirectoryInfo et la Classe Directory du Framework...........................................................360 V-AD-2 - Classe Path................................................................................................................................... 364 V-AD-3 - Classe DriveInfo............................................................................................................................ 365 V-AD-4 - Classe Environment.......................................................................................................................365 V-AD-5 - Classe My.Computer.FileSystem en VS 2005...............................................................................366 V-AD-6 - Les mthodes de l'espace Visual Basic........................................................................................367 V-AD-7 - Bote de dialogue 'Choix de rpertoire' en VB2005 ?................................................................... 369 V-AD-8 - Parcours de rpertoires et de sous rpertoires.............................................................................369 V-AD-9 - Fichiers et rpertoires avec Link................................................................................................... 370 V-AE - Afficher correctement du texte............................................................................................................... 370 V-AE-1 - Remarque sur la mise jour de l'affichage...................................................................................371 V-AE-2 - Afficher du texte.............................................................................................................................371 V-AE-2-a - ToString................................................................................................................................. 371 V-AE-2-b - Str() de Microsoft.VisualBasic est toujours accept..............................................................374
-7Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-AE-2-c - String.Format du Framework.................................................................................................374 V-AE-3 - CultureInfo......................................................................................................................................375 V-AF - Mthode d'extension, Lamba expression, Type Nullable....................................................................... 376 V-AG - L'espace de nom 'My'............................................................................................................................ 378 V-AG-1 - My.Application................................................................................................................................379 V-AG-2 - My.Computer................................................................................................................................. 379 V-AG-3 - My.User..........................................................................................................................................382 V-AG-4 - My.Ressources.............................................................................................................................. 382 V-AG-5 - My.Setting...................................................................................................................................... 383 V-AG-6 - My.Forms....................................................................................................................................... 383 VI - Classes............................................................................................................................................................. 384 VI-A - Espace de noms, Classes, Objet............................................................................................................ 384 VI-A-1 - Classes............................................................................................................................................384 VI-A-2 - Essayons de comprendre............................................................................................................... 384 VI-A-2-a - Dtails en VB 2003......................................................................................................................385 VI-A-2-a-i - Les Rfrences.................................................................................................................... 385 VI-A-2-a-ii - Importation d'espace de noms............................................................................................ 386 VI-A-2-b - Dtails en VB 2005 et VB 2008.................................................................................................. 387 VI-A-2-b-i - Les Rfrences.................................................................................................................... 387 VI-A-2-b-ii - Importation d'espace de noms............................................................................................ 388 VI-A-2-b-iii - Porte de l'espace de noms............................................................................................... 389 VI-A-2-b-iiii - Proprit ambigu.............................................................................................................. 389 VI-A-2-b-iiiii - Alias................................................................................................................................... 390 VI-A-2-b-iiiiii - Hritage............................................................................................................................ 390 VI-A-2-b-iiiiiii - Membre d'instance et membre partag...........................................................................391 VI-A-2-b-iiiiiiii - Classes statiques ou non............................................................................................... 391 VI-B - Les diffrentes Classes, le Framework................................................................................................... 392 VI-B-1 - Les diffrentes 'Classes'................................................................................................................. 392 VI-B-1-a - Les classes du Framework fournies par Microsoft avec VB.................................................. 392 VI-B-1-b - Les classes fournies par des tiers......................................................................................... 393 VI-B-1-c - Les Classes crites par le programmeur............................................................................... 393 VI-B-2 - Dans Visual Basic.Net.................................................................................................................... 393 VI-B-3 - Lors de la cration d'un nouveau projet......................................................................................... 394 VI-B-4 - Framework 1, 2, 3, 3.5................................................................................................................... 395 VI-C - Le CLR.................................................................................................................................................... 396 VI-D - Procdures vnement, surcharge de mthode..................................................................................... 396 VI-D-1 - vnement et procdure vnement..............................................................................................396 VI-4-2 - Surcharge de Mthode....................................................................................................................397 VI-E - L'criture 'Compact'................................................................................................................................. 398 VI-F - Notion de flux ou 'Stream'....................................................................................................................... 400 VII - Exemples de code, Exercices......................................................................................................................... 403 VII-A - Petites routines sur les chanes de caractres...................................................................................... 403 VII-A-1 - Une string 'Nom' contient un nom, mettre si ncessaire la premire lettre en majuscule.............. 403 VII-A-2 - Comment voir si un caractre est une voyelle.............................................................................. 403 VII-A-3 - Comment liminer une combinaison bien prcise de caractres en dbut de chane................... 403 VII-A-4 - Vous avez une chane de caractres : comment afficher le premier caractre, puis les 2 premiers, puis 3... ?.......................................................................................................................................................404 VII-A-5 - Vous avez deux chanes de caractres : comment savoir si la seconde est un anagramme de la premire ?......................................................................................................................................................405 VII-A-6 - Compter combien de fois un mot apparat dans un texte..............................................................405 VII-B - Petits programmes de mathmatiques...................................................................................................406 VII-B-1 - Calcul de l'hypotnuse d'un triangle rectangle.............................................................................. 406 VII-B-2 - Somme de N entiers......................................................................................................................406 VII-B-3 - Afficher les tables de multiplications..............................................................................................407 VII-B-4 - Trouver la valeur la plus leve d'un tableau d'entiers..................................................................408 VII-B-5 - Factorielle....................................................................................................................................... 408 VII-B-6 - Factorielle avec 'Rcursivit'..........................................................................................................409 VII-B-7 - Un nombre est-il premier ?............................................................................................................ 409
-8Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

VII-B-8 - Dcomposition en nombre premier................................................................................................411 VII-B-9 - Diviseurs d'un nombre................................................................................................................... 412 VII-C - Travail sur les tableaux et collections (tri, recherche, insertion, effacement d'lments)....................... 412 VII-C-1 - Utiliser les Tableaux.......................................................................................................................412 VII-C-1-a - Trier un tableau..................................................................................................................... 412 VII-C-1-b - Rechercher un lment dans un tableau..............................................................................414 VII-C-1-c - Effacer, insrer un lment dans un tableau........................................................................ 416 VII-C-2 - Utiliser les Collections....................................................................................................................418 VII-C-2-a - Trier une collection................................................................................................................ 418 VII-C-2-b - Rechercher un lment dans une collection.........................................................................419 VII-C-2-c - Effacer, insrer un lment dans une collection................................................................... 419 VII-C-3 - Diffrences tableau/collection........................................................................................................ 419 VII-C-4 - Utilisation particulire des tableaux............................................................................................... 420 VII-D - Calculs financiers simples...................................................................................................................... 423 VII-D-1 - Conversion Francs=>Euros........................................................................................................... 423 VII-D-2 - Cot d'augmentation de la vie.......................................................................................................423 VII-D-3 - Remboursement d'un prt............................................................................................................. 424 VII-E - Contrle des connaissances.................................................................................................................. 424 VII-E-1 - Exercices sur les variables............................................................................................................ 425 VII-E-2 - Exercices sur les Strings et Char.................................................................................................. 427 VII-E-3 - Exercices sur les nombres.............................................................................................................429 VII-E-4 - Exercices nombres-String.............................................................................................................. 430 VII-E-5 - Exercices sur les boucles.............................................................................................................. 432 VII-E-6 - Exercice sur les structures et tableaux..........................................................................................435 VII-E-7 - Exercice sur les collections............................................................................................................437 VII-E-8 - Exercices sur les fonctions et paramtres.....................................................................................439 VIII - Interface utilisateur en Windows Forms......................................................................................................... 441 VIII-A - Diffrentes interfaces utilisateur............................................................................................................ 441 VIII-A-1 - La console.....................................................................................................................................442 VIII-B - Interface utilisateur Windows Forms et 'control'.................................................................................... 443 VIII-B-1 - En pratique, comment crer l'interface utilisateur ?......................................................................443 VIII-B-2 - La Classe 'Control'........................................................................................................................ 445 VIII-B-3 - vnements lis aux objets avec reprsentation visuelle............................................................ 449 VIII-B-4 - En rsum.....................................................................................................................................451 VIII-C - Les fentres ou 'Formulaires'................................................................................................................ 451 VIII-C-1 - Crer une fentre en mode conception........................................................................................451 VIII-C-2 - Proprits...................................................................................................................................... 452 VIII-C-3 - Ouvrir un formulaire...................................................................................................................... 456 VIII-C-4 - Fermer un formulaire.................................................................................................................... 457 VIII-C-5 - Proprits...................................................................................................................................... 457 VIII-C-6 - vnements.................................................................................................................................. 458 VIII-C-7 - Mthodes.......................................................................................................................................460 VIII-C-8 - Form et code gnr par vb.........................................................................................................460 VIII-C-9 - Formulaire d'avant plan................................................................................................................ 463 VIII-D - Les 'Boutons'......................................................................................................................................... 463 VIII-D-1 - Crer un bouton............................................................................................................................463 VIII-D-2 - Modifier ses proprits................................................................................................................. 463 VIII-D-3 - Utiliser les vnements.................................................................................................................465 VIII-D-4 - Crer un bouton Ok ou Cancel.................................................................................................... 466 VIII-D-5 - Couleur transparente dans les images des boutons.................................................................... 466 VIII-D-6 - Utilisation avance : Crer de magnifiques boutons partir de VB2005..................................... 467 VIII-D-7 - Utilisation avance : Cration d'un bouton par code.................................................................... 468 VIII-E - Les 'TextBox'.......................................................................................................................................... 468 VIII-E-1 - Les contrles TextBox...................................................................................................................469 VIII-E-2 - Le contrle RichTextBox............................................................................................................... 475 VIII-E-3 - Le contrle MaskedTextBox (VB Framework 2)........................................................................... 478 VIII-F - Les 'Labels'............................................................................................................................................ 479 VIII-F-1 - Les labels...................................................................................................................................... 479
-9Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

VIII-F-2 - Les LinkLabel................................................................................................................................ 481 VIII-G - Les cases cocher...............................................................................................................................482 VIII-H - Les 'Listes'............................................................................................................................................. 484 VIII-H-1 - Les 'ListBox'.................................................................................................................................. 484 VIII-H-1-a - Pour ajouter ou supprimer des lments dans un contrle ListBox.....................................484 VIII-H-1-b - Vider la ListBox.................................................................................................................... 485 VIII-H-1-c - Ajouter l'lment "poisson"................................................................................................... 485 VIII-H-1-d - Charger dans une ListBox1 les nombres de 1 100.......................................................... 485 VIII-H-1-e - Comment enlever des lments ?....................................................................................... 485 VIII-H-1-f - Comment lire l'lment 3 ?................................................................................................... 485 VIII-H-1-g - Comment rechercher l'lment qui contient une chane de caractres ?............................ 486 VIII-H-1-h - Comment slectionner un lment par code ?.................................................................... 486 VIII-H-1-i - L'utilisateur double-clique sur l'un des lments, comment rcuprer son numro ?............486 VIII-H-1-j - Et la multi slection, quels lments ont t slectionns ?................................................. 486 VIII-H-1-k - On peut 'charger' une ListBox automatiquement avec un tableau en utilisant Datasource............................................................................................................................................... 486 VIII-H-1-l - Comment 'charger' une ListBox automatiquement partir d'un fichier texte.........................487 VIII-H-1-m - Comment connatre l'index de l'lment que l'on vient d'ajouter (et le slectionner) ?........487 VIII-H-1-n - Comment affecter chaque lment de la liste un numro, une cl ?................................ 488 VIII-H-1-o - Comment, partir des coordonnes de la souris, connatre l'lment de la liste qui est survol ?...................................................................................................................................................489 VIII-H-2 - Les CheckedListBox..................................................................................................................... 489 VIII-H-3 - Les ComboBox............................................................................................................................. 490 VIII-H-4 - Le Contrle ListView..................................................................................................................... 491 VIII-H-4-a - Liste avec sous lments.....................................................................................................491 VIII-H-4-b - Liste d'icnes........................................................................................................................494 VIII-H-5 - Le Contrle DomainUpDown........................................................................................................ 495 VIII-H-6 - Le Contrle TreeView................................................................................................................... 496 VIII-H-7 - Annexe : Afficher des images dans un ListView.......................................................................... 499 VIII-I - Fentres toutes prtes (MessageBox...).................................................................................................499 VIII-I-1 - MessageBox du Framework 2 (VB 2005)...................................................................................... 500 VIII-I-2 - MsgBox du Visual Basic.................................................................................................................503 VIII-I-3 - InputBox..........................................................................................................................................505 VIII-I-4 - OpenFileDialog............................................................................................................................... 506 VIII-I-5 - SaveFileDialog................................................................................................................................507 VIII-J - Regroupement de contrles 'Groupe de contrles'................................................................................508 VIII-J-1 - GroupBox et Panel........................................................................................................................ 508 VIII-J-2 - PictureBox......................................................................................................................................509 VIII-J-3 - TabControl......................................................................................................................................509 VIII-J-4 - SplitContainer.................................................................................................................................509 VIII-J-5 - LayoutPanel................................................................................................................................... 510 VIII-J-6 - Comment remplacer les groupes de contrles de VB6 qui n'existent plus en VB.Net?.................511 VIII-J-6-a - vnement commun............................................................................................................. 511 VIII-J-6-b - Comment travailler sur plusieurs contrles ?........................................................................512 VIII-K - Dimensions, position des contrles....................................................................................................... 514 VIII-K-1 - Unit de mesure............................................................................................................................514 VIII-K-2 - Position initiale dans l'cran d'un formulaire.................................................................................515 VIII-K-3 - Taille et position d'un formulaire ou d'un contrle.........................................................................515 VIII-K-4 - Redimensionnement de fentre par l'utilisateur............................................................................517 VIII-K-5 - Dplacement................................................................................................................................. 518 VIII-K-6 - Coordonnes souris...................................................................................................................... 518 VIII-K-7 - Anchor........................................................................................................................................... 519 VIII-K-8 - Dock.............................................................................................................................................. 519 VIII-K-9 - Spliter............................................................................................................................................ 520 VIII-L - Main Menu, ContextMenu......................................................................................................................520 VIII-L-1 - MainMenu en Vb 2003.................................................................................................................. 520 VIII-L-2 - Menu Contextuel Vb 2003.............................................................................................................521 VIII-L-3 - MenuStrip de Vb 2005.................................................................................................................. 522
- 10 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

VIII-L-4 - ContextMenuStrip de Vb 2005...................................................................................................... 522 VIII-M - Avoir le Focus....................................................................................................................................... 522 VIII-M-1 - Comment donner le focus une fentre ?.................................................................................. 523 VIII-M-2 - Comment donner le focus un contrle ?...................................................................................523 VIII-M-3 - Prise ou perte du focus................................................................................................................524 VIII-M-4 - La touche TAB pour passer d'un contrle l'autre...................................................................... 525 VIII-M-5 - Raccourcis clavier.........................................................................................................................526 VIII-N - Barre de boutons, barre de status........................................................................................................ 527 VIII-N-1 - La barre de boutons : ToolBar en VB 2003..................................................................................527 VIII-N-2 - Contrle StatusBar en VB 2003................................................................................................... 529 VIII-N-3 - ToolStrip en VB 2005....................................................................................................................529 VIII-N-4 - StatuStrip en VB 2005.................................................................................................................. 532 VIII-O - Les images............................................................................................................................................ 532 VIII-O-1 - Le contrle 'PictureBox'................................................................................................................ 532 VIII-O-2 - La proprit 'Image' des contrles............................................................................................... 534 VIII-O-3 - Le contrle ImageList................................................................................................................... 535 VIII-P - Couleurs et Font.................................................................................................................................... 537 VIII-P-1 - Les couleurs..................................................................................................................................537 VIII-P-1-a - Gnralits............................................................................................................................537 VIII-P-1-b - Enumration Color................................................................................................................537 VIII-P-1-c - Rouge, vert, bleu.................................................................................................................. 538 VIII-P-1-d - Couleurs 'System'................................................................................................................. 540 VIII-P-1-e - Couleur dans les objets........................................................................................................540 VIII-P-1-f - Choix d'une couleur par l'utilisateur...................................................................................... 541 VIII-P-2 - Police de caractres (ou Font)..................................................................................................... 542 VIII-Q - Grille ou Grid......................................................................................................................................... 544 VIII-Q-1 - Contrle 'MsFlexGrid' de VB6...................................................................................................... 545 VIII-Q-2 - Contrles Freeware tlcharger, c'est du '.Net'.........................................................................546 VIII-Q-2-a - 'LameGrid'en franais +++++............................................................................................... 546 VIII-Q-2-b - Autre..................................................................................................................................... 547 VIII-Q-3 - Contrle 'DataGrid' de VB 2003................................................................................................... 548 VIII-Q-3-a - Aspect du contrle 'DataGrid'.............................................................................................. 548 VIII-Q-3-b - Comment amliorer la rapidit de l'affichage ?....................................................................550 VIII-Q-4 - Contrle 'DataGridView' de VB 2005........................................................................................... 550 VIII-Q-5 - Annexe : Code permettant de simuler la saisie dans un MsFlexGrid...........................................556 VIII-R - ProgressBar........................................................................................................................................... 558 VIII-R-1 - ProgressBar de VB 2003..............................................................................................................558 VIII-R-2 - ProgressBar de VB 2005..............................................................................................................559 VIII-S - Crer des contrles par code................................................................................................................559 VIII-S-1 - Crer par code des contrles....................................................................................................... 559 VIII-S-2 - Ajouter des vnements............................................................................................................... 560 VIII-S-3 - Menu par code.............................................................................................................................. 563 IX - Programmation procdurale............................................................................................................................. 564 IX-A - La programmation procdurale............................................................................................................... 564 IX-A-1 - Comment crer un module standard, une Sub ?............................................................................565 IX-A-2 - Exemple d'utilisation de procdures et de modules....................................................................... 565 IX-B - Exemple : Calcul de l'IMC....................................................................................................................... 567 IX-B-1 - Qu'est-ce que l'IMC ?......................................................................................................................567 IX-B-2 - Quel est le cahier des charges du programme ?........................................................................... 568 IX-B-3 - Cration de l'interface..................................................................................................................... 568 IX-B-4 - Structuration.................................................................................................................................... 573 IX-C - Exemple : Conversion Francs/Euros....................................................................................................... 575 IX-D - Exemple : Calcul d'un prt (les fonctions financires de VB)................................................................. 578 IX-E - Ordre des instructions dans un module : rsum................................................................................... 580 X - Faire un vrai programme Windows Forms : ce qu'il faut savoir........................................................................ 583 X-A - Dmarrer, arrter un programme : Sub Main(), fentre Splash............................................................... 583 X-A-1 - Dmarrer par un formulaire............................................................................................................. 584 X-A-2 - Dmarrer par Sub Main().................................................................................................................584
- 11 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

X-A-3 - Fentre Splash.................................................................................................................................587 X-A-4 - Comment arrter le programme ?................................................................................................... 590 X-A-5 - Fin de programme : Attention !........................................................................................................ 590 X-B - Ouvrir plusieurs formulaires......................................................................................................................591 X-B-1 - Crer un formulaire en VB 2003..................................................................................................... 591 X-B-2 - Crer un formulaire en VB 2005..................................................................................................... 592 X-B-3 - Formulaire modal ou non modal......................................................................................................593 X-B-4 - Dnomination des formulaires aprs leur cration.......................................................................... 594 X-B-5 - Autres remarques sur les formulaires..............................................................................................597 X-B-5-a - Un formulaire est un objet : On peut ajouter des mthodes et des membres un formulaire................................................................................................................................................. 597 X-B-5-b - Exemple plus complet : Afficher un formulaire........................................................................598 X-B-5-c - Rcupration d'informations par DialogResult........................................................................ 598 X-B-5-d - Bouton par dfaut....................................................................................................................599 X-C - Faire communiquer les formulaires..........................................................................................................599 X-C-1 - Comment, partir du premier formulaire, consulter un objet du second formulaire ?..................... 600 X-C-1-a - En VB 2003 2005 2008 si on instancie le formulaire..............................................................600 X-C-1-a-i - Premire solution............................................................................................................. 600 X-C-1-a-ii - Seconde solution.............................................................................................................601 X-C-1-a-iii - Troisime solution.......................................................................................................... 602 X-C-1-a-iv - Quatrime solution......................................................................................................... 603 X-C-1-b - En VB 2005, sans instanciation de formulaire........................................................................ 604 X-C-2 - Comment, partir du formulaire 'secondaire', connatre le formulaire 'propritaire' ?..................... 604 X-C-3 - Les formulaires ouverts partir de VB 2005...................................................................................605 X-D - Crer une fentre 'multi documents'........................................................................................................ 606 X-D-1 - Comprendre les programmes MDI.................................................................................................. 606 X-D-2 - En VB 2003..................................................................................................................................... 607 X-D-2-a - Cration de la fentre conteneur parent................................................................................. 607 X-D-2-b - Cration des fentres filles..................................................................................................... 608 X-D-2-c - Comment connatre la fentre fille active ?.............................................................................609 X-D-2-d - Comment avoir accs aux objets de la fentre fille partir du conteneur ?........................... 609 X-D-2-e - Comment parcourir toutes les fentres filles ?........................................................................609 X-D-2-f - Comment fermer toutes le fentres enfants ?..........................................................................610 X-D-2-g - Comment avoir accs aux objets du conteneur partir de la fentre fille ?........................... 610 X-D-2-h - Comment une routine du module conteneur appelle une routine dans la fentre fille active ?..................................................................................................................................................... 610 X-D-2-i - Agencement des fentres filles................................................................................................ 611 X-D-3 - En VB 2005 2008............................................................................................................................ 611 X-E - Modifier le curseur, grer la souris...........................................................................................................614 X-E-1 - Apparence du curseur......................................................................................................................614 X-E-2 - Curseur sur un contrle................................................................................................................... 615 X-E-3 - La souris...........................................................................................................................................615 X-E-4 - Exemples..........................................................................................................................................616 X-F - Lancer une autre application, afficher une page Web..............................................................................616 X-F-1 - L'ancienne mthode VisualBasic toujours valable : Shell................................................................ 617 X-F-2 - On peut utiliser la Classe 'Process' du Framework......................................................................... 617 X-G - Dessiner....................................................................................................................................................619 X-G-1 - Sur quoi dessiner ?..........................................................................................................................619 X-G-2 - Comment dessiner ?........................................................................................................................621 X-G-3 - Travailler sur un Objet Image..........................................................................................................625 X-G-4 - Comment voir un Graphics ?...........................................................................................................626 X-G-4-a - Paint dclench par Resize.................................................................................................... 626 X-G-5 - Un exemple : Afficher un texte en 3D............................................................................................. 627 X-G-6 - Espace de noms..............................................................................................................................627 X-G-7 - Programme simple de dessin..........................................................................................................627 X-H - Imprimer....................................................................................................................................................631 X-H-1 - Avec PrintDocument........................................................................................................................ 632 X-H-1-a - Imprimer 'Hello' avec le composant 'PrintDocument'.............................................................. 632
- 12 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

X-H-1-a-i - Imprimer un dessin.......................................................................................................... 633 X-H-1-a-ii - Afficher un Message Box indiquant 'Fin d'impression'.................................................... 633 X-H-1-b - Mme programme : Imprimer 'Hello' mais avec la Classe PrintDocument..............................634 X-H-1-b-i - Comment choisir l'imprimante ?.......................................................................................635 X-H-1-b-ii - Comment modifier la page imprimer ?........................................................................ 636 X-H-1-c - Prvisualisation de la page imprimer ?................................................................................ 636 X-H-1-d - Construction d'une application d'impression complexe...........................................................637 X-H-1-e - Proprits du 'PrintDocument'.................................................................................................639 X-H-1-f - Imprime le formulaire en cours................................................................................................ 639 X-H-1-g - Imprime un contrle DataGrid.................................................................................................640 X-H-2 - Imprimer comme en VB6 avec un objet 'Printer'............................................................................. 640 X-I - Faire une aide pour l'utilisateur................................................................................................................. 641 X-I-1 - Gnralises sur les 4 sortes d'aide.................................................................................................641 X-I-2 - Les fichiers d'aide..............................................................................................................................642 X-I-3 - Utilisation des fichiers d'aide............................................................................................................. 642 X-I-3-a - Appel direct............................................................................................................................... 642 X-I-3-b - Appel par F1............................................................................................................................. 643 X-I-3-c - Utilisation du bouton d'aide.......................................................................................................644 X-I-3-d - Utilisation des info bulles.......................................................................................................... 645 X-I-3-e - Utilisation d'ErrorProvider......................................................................................................... 646 X-J - Appeler une API........................................................................................................................................ 647 X-J-1 - Appel d'une fonction dans une API..................................................................................................647 X-J-2 - Les API Windows............................................................................................................................. 648 X-J-3 - Autre exemple classique.................................................................................................................. 650 X-K - Faire du glisser dplacer (Drag & Drop).................................................................................................. 653 X-K-1 - Exemple N 1 (simple).....................................................................................................................653 X-K-2 - Exemple N 2 (plus complexe)........................................................................................................ 654 X-L - Utiliser le 'Registre'................................................................................................................................... 656 X-M - Utiliser le 'Presse papier'......................................................................................................................... 660 X-M-1 - En VB 2003 (Framework 1)............................................................................................................ 660 X-M-1-a - Mettre dans le presse papier..................................................................................................660 X-M-1-b - Rcuprer du presse papier................................................................................................... 660 X-M-1-c - Exemple...................................................................................................................................661 X-M-1-d - Alternative............................................................................................................................... 662 X-M-2 - My.Computer.Clipboard partir de VB 2005.................................................................................. 662 X-M-3 - TextBox et couper-coller..................................................................................................................662 X-N - Paramtres de configuration (App.ini, registre, App.config).....................................................................663 X-N-1 - Les Fichiers......................................................................................................................................664 X-N-2 - Fichiers .INI...................................................................................................................................... 664 X-N-3 - Registre............................................................................................................................................ 668 X-N-4 - Fichier de configuration App.Config File de VB2003 (Framework 1).............................................. 669 X-N-5 - Configuration par paramtres Settings de VB2005 (Framework 2).................................................670 X-N-6 - Liaison proprits-Settings de VB2005 (PropertyBinding)...............................................................673 X-O - Utiliser les 'Ressources'........................................................................................................................... 675 X-O-1 - Intrt des ressources ?.................................................................................................................. 675 X-O-2 - Les types de ressources ?.............................................................................................................. 675 X-O-3 - Voir les ressources.......................................................................................................................... 676 X-O-4 - Ajouter des ressources....................................................................................................................676 X-O-5 - O se trouvent les ressources........................................................................................................ 677 X-O-6 - Modifier une ressource.................................................................................................................... 678 X-O-7 - Utiliser une ressource dans le programme..................................................................................... 678 X-O-8 - Ressources localises..................................................................................................................... 678 X-O-9 - Ressources lies ou incorpores.................................................................................................... 679 X-O-10 - Comment cela marche ?............................................................................................................... 680 X-P - O mettre les programmes et les donnes..............................................................................................680 X-P-1 - Il faut sparer les donnes des programmes !!!.............................................................................. 680 X-P-2 - Scurit............................................................................................................................................ 680 X-P-3 - Quels rpertoires utiliser ?............................................................................................................... 681
- 13 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

X-P-4 - Obtenir le rpertoire de l'excutable et des donnes...................................................................... 684 X-P-5 - Droits d'accs des utilisateurs dans Vista : l'UAC........................................................................... 685 X-Q - Choisir une icne, utiliser la barre de tches - Crer un raccourci, lancer au dmarrage....................... 685 X-Q-1 - Icne de l'application....................................................................................................................... 685 X-Q-2 - Bouton dans la barre des tches.................................................................................................... 686 X-Q-3 - Icne dans la barre de processus : NotifyIcon................................................................................686 X-Q-4 - Crer un raccourci sur le bureau.................................................................................................... 688 X-Q-5 - Lancer le programme au dmarrage de Windows.......................................................................... 689 X-Q-6 - Interdire de dmarrer le programme dans une plage horaire......................................................... 689 X-R - Multithreads.............................................................................................................................................. 690 X-R-1 - Un Thread, c'est quoi ?................................................................................................................... 690 X-R-2 - Comment ajouter un Thread d'arrire plan ?...................................................................................690 X-R-3 - tat d'avancement........................................................................................................................... 692 X-R-4 - Arrter le thread en cours............................................................................................................... 693 X-R-5 - Rsultat retourn par le thread d'arrire plan..................................................................................693 XI - Interface utilisateur en WPF............................................................................................................................. 695 XI-A - Dfinition : WPF, XAML, SilverLight........................................................................................................ 695 XI-B - Crer une interface WPF avec Expression Blend...................................................................................696 XI-B-1 - Ouvrir Expression Blend................................................................................................................. 696 XI-B-2 - crire du code VB...........................................................................................................................700 XI-B-3 - Passer l'interface dans VB..............................................................................................................701 XI-C - Crer une interface WPF avec Visual Studio......................................................................................... 702 XI-D - Le XAML..................................................................................................................................................705 XI-D-1 - Dfinition du XAML......................................................................................................................... 705 XI-D-2 - Balisage...........................................................................................................................................705 XI-D-3 - Case, espace, tabulation................................................................................................................ 706 XI-D-4 - Attribut, Proprit............................................................................................................................ 706 XI-D-5 - lment racine................................................................................................................................ 707 XI-D-6 - Code 'Behind', vnements............................................................................................................ 709 XI-D-7 - Extension de balisage.....................................................................................................................710 XI-D-8 - Espace de noms............................................................................................................................. 712 XI-D-9 - Remarque importante..................................................................................................................... 713 XI-E - Grands Principes..................................................................................................................................... 713 XI-E-1 - La Classe 'Controls'........................................................................................................................ 713 XI-E-1-a - Crer un contrle....................................................................................................................713 XI-E-1-b - Particularits des contrles WPF........................................................................................... 716 XI-E-1-c - vnements............................................................................................................................ 716 XI-E-1-d - Principaux contrles............................................................................................................... 717 XI-E-2 - Les applications WPF..................................................................................................................... 718 XI-E-3 - Les formulaires WPF...................................................................................................................... 720 XI-E-4 - Positionnement, dimensions des contrles.....................................................................................726 XI-E-4-a - Hirarchie des contrles.........................................................................................................726 XI-E-4-b - Position et dimensions d'un contrle......................................................................................728 XI-E-5 - Aspect des contrles.......................................................................................................................732 XI-E-5-a - Proprits des contrles.........................................................................................................732 XI-E-5-b - Contrle contenant des contrles...........................................................................................734 XI-E-5-c - Aspect visuel des contrles : Template visuel........................................................................ 735 XI-E-5-d - Modification du Bitmap d'un contrle..................................................................................... 736 XI-E-6 - Remplissage de surface................................................................................................................. 736 XI-E-6-a - SolidColorBrush...................................................................................................................... 737 XI-E-6-b - LinearGradientBrush...............................................................................................................737 XI-E-6-c - RadialGradientBrush...............................................................................................................739 XI-E-6-d - ImageBrush.............................................................................................................................741 XI-E-6-e - Autre....................................................................................................................................... 742 XI-E-7 - Ressources......................................................................................................................................742 XI-E-7-a - Ressources 'internes'..............................................................................................................742 XI-E-7-a-i - Ressources 'simples'.......................................................................................................742 XI-E-7-a-ii - Les Styles.......................................................................................................................745
- 14 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

XI-E-7-a-iii - Les modles de Contrle : Control Template'............................................................... 746 XI-E-7-a-iv - Les modles de Donnes : Data Template................................................................... 747 XI-E-7-b - Les fichiers de ressources externes.......................................................................................748 XI-E-8 - Les liaisons de donnes ou Binding...............................................................................................750 XI-E-8-a - Principes du Binding...............................................................................................................750 XI-E-8-b - Liaison entre contrles........................................................................................................... 751 XI-E-8-c - Liaison Collection-ListBox et Tableau-ListBox........................................................................ 753 XI-E-8-d - Liaison avec une collection d'objets.......................................................................................753 XI-E-8-e - Liaison avec une base de donnes....................................................................................... 757 XI-F - Les diffrents contrles............................................................................................................................761 XI-F-1 - Les Conteneurs............................................................................................................................... 761 XI-F-1-a - Les Grid.................................................................................................................................. 762 XI-F-1-b - Les StackPanel....................................................................................................................... 764 XI-F-1-c - Les WrapPanel........................................................................................................................766 XI-F-1-d - Les DockPanel........................................................................................................................766 XI-F-1-e - Les Canvas.............................................................................................................................767 XI-F-2 - Les Boutons et RepeatButton......................................................................................................... 768 XI-F-2-a - Les 'Button'............................................................................................................................. 768 XI-F-2-b - RepeatButton.......................................................................................................................... 772 XI-F-3 - Les contrles contenant du texte....................................................................................................772 XI-F-3-a - Les Labels.............................................................................................................................. 773 XI-F-3-b - Les TextBlock..........................................................................................................................773 XI-F-3-c - Les TextBox............................................................................................................................ 775 XI-F-3-d - Les RichTextBox..................................................................................................................... 777 XI-F-3-e - Les PasswordBox................................................................................................................... 780 XI-F-4 - Les cases cocher et RadioButton................................................................................................780 XI-F-4-a - Case cocher........................................................................................................................ 780 XI-F-4-b - RadioButton............................................................................................................................ 781 XI-F-5 - Les Listes........................................................................................................................................ 782 XI-F-6 - Les botes de dialogue....................................................................................................................785 XI-F-6-a - MessageBox........................................................................................................................... 785 XI-F-6-b - InputBox.................................................................................................................................. 787 XI-F-6-c - PrintDialog...............................................................................................................................788 XI-F-6-d - OpenFileDialog....................................................................................................................... 789 XI-F-6-e - SaveFileDialog........................................................................................................................ 790 XI-F-6-f - FolderBrowserDialog................................................................................................................790 XI-F-7 - Les DataGrid................................................................................................................................... 791 XI-F-7-a - Le DataGrid des WindowsForms............................................................................................791 XI-F-7-b - Le DataGrid WPF................................................................................................................... 792 XII - Dbogage.........................................................................................................................................................794 XII-A - Dbogage (rechercher les 'Bugs').......................................................................................................... 794 XII-A-1 - Suspendre l'excution.................................................................................................................... 794 XII-A-2 - Dbogage pas pas..................................................................................................................... 795 XII-A-2-a - Comment voir rapidement la valeur des proprits ou de variables ?.................................. 797 XII-A-2-b - Modification du code source................................................................................................. 798 XII-A-2-c - Sortie des informations de dbogage....................................................................................799 XII-A-2-c-i - Objet Console.................................................................................................................799 XII-A-2-c-ii - Objet Debug.................................................................................................................. 799 XII-A-2-c-iii - Trace............................................................................................................................. 800 XII-A-2-c-iv - Mode 'Trace', 'Release', 'Debug'.................................................................................. 801 XII-B - Comprendre les 'Messages d'erreur'......................................................................................................801 XII-B-1 - Instance d'objet.............................................................................................................................. 802 XII-B-2 - Membre absent.............................................................................................................................. 802 XII-B-3 - Type Attendu.................................................................................................................................. 803 XII-B-4 - Identificateur attendu......................................................................................................................803 XIII - Comprendre le fonctionnement de VB........................................................................................................... 804 XIII-A - Comprendre le FrameWork, la compilation, le garbage collector, le code manag, le code IL et binaire................................................................................................................................................................. 804
- 15 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

XIII-A-1 - Le Framework.NET....................................................................................................................... 804 XIII-A-2 - Inconvnients ?............................................................................................................................. 804 XIII-A-3 - Intrts ?........................................................................................................................................805 XIII-A-4 - Revoyons en dtails le contenu du Framework............................................................................805 XIII-A-5 - Framework 1, 2, 3, 3.5................................................................................................................. 806 XIII-A-6 - Code manag................................................................................................................................807 XIII-A-7 - Garbage Collector......................................................................................................................... 807 XIII-A-8 - Compilation....................................................................................................................................807 XIII-A-9 - Comment voir le code source, le code IL, le code excutable ?.................................................. 808 XIII-A-10 - Installation du Framework........................................................................................................... 810 XIII-B - Comprendre le code cre par VB......................................................................................................... 811 XIII-B-1 - Code gnr automatiquement lors de la cration d'un formulaire ou d'un contrle.................... 811 XIII-B-2 - Substitution de procdures vnement........................................................................................ 817 XIII-C - Les dlgus, les vnements..............................................................................................................818 XIII-C-1 - Dfinition....................................................................................................................................... 818 XIII-C-2 - Cration d'un dlgu avec 'Delegate'......................................................................................... 818 XIII-C-3 - Dlgu et appel asynchrone.......................................................................................................821 XIII-C-4 - Dlgu et vnement..................................................................................................................822 XIV - Diffuser le programme....................................................................................................................................825 XIV-A - Assembly............................................................................................................................................... 825 XIV-A-1 - Assembly : dfinition, composition................................................................................................825 XIV-A-2 - Les proprits de l'assembly........................................................................................................ 826 XIV-A-3 - Le manifeste................................................................................................................................. 827 XIV-B - Distribuer l'application........................................................................................................................... 829 XIV-B-1 - Introduction................................................................................................................................... 829 XIV-B-2 - Avant de 'Publier'..........................................................................................................................830 XIV-B-3 - Comment installer simplement un programme chez l'utilisateur ?............................................... 831 XIV-B-4 - Crer un programme d'installation classique en VB 2003 (de type Windows Installer)................ 831 XIV-B-5 - Crer un programme d'installation 'ClickOnce' en VB 2005.........................................................833 XIV-B-6 - Autres installateurs:...................................................................................................................... 843 XIV-C - Exemples de petites applications par Microsoft................................................................................... 843 XV - Programmation Objet : cration de classes et de composants...................................................................... 844 XV-A - Programmation oriente objet, Proprits des Classes (Rappel).......................................................... 844 XV-A-1 - Interface et Implmentation........................................................................................................... 844 XV-A-2 - Encapsulation.................................................................................................................................844 XV-A-3 - Hritage..........................................................................................................................................845 XV-A-4 - Polymorphisme.............................................................................................................................. 845 XV-A-5 - Constructeur, destructeur...............................................................................................................846 XV-A-6 - Accesseur, mutateur...................................................................................................................... 846 XV-A-7 - Dclaration, instanciation...............................................................................................................846 XV-A-8 - Proprits, Mthodes.....................................................................................................................847 XV-A-9 - Les Classes : elles sont 'By Ref'................................................................................................... 847 XV-A-9-a - Cration de variable objet.....................................................................................................847 XV-A-9-b - Affectation..............................................................................................................................848 XV-A-9-c - Comparaison......................................................................................................................... 849 XV-A-10 - Nommage.....................................................................................................................................849 XV-B - Crer une Classe................................................................................................................................... 849 XV-B-1 - Cration de Classe........................................................................................................................ 849 XV-B-1-a - Revenons une nouvelle fois sur la notion de Classe et d'Objet............................................849 XV-B-1-b - Crer une Classe.................................................................................................................. 851 XV-B-1-c - Ajouter des variables dans une classe................................................................................. 851 XV-B-1-d - Ajouter des proprits grce 'Property'............................................................................. 853 XV-B-1-e - Mthode.................................................................................................................................854 XV-B-1-f - Rcapitulatif Property, mthodes........................................................................................... 855 XV-B-1-g - Constructeur.......................................................................................................................... 855 XV-B-1-h - Destructeur............................................................................................................................ 856 XV-B-1-i - Surcharge............................................................................................................................... 857 XV-B-1-j - vnement..............................................................................................................................858
- 16 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

XV-B-1-k - Exception............................................................................................................................... 859 XV-B-1-l - Les Classes partielles............................................................................................................ 859 XV-B-1-m - Mthode partielles................................................................................................................ 860 XV-B-2 - Classe suite et astuces................................................................................................................. 861 XV-B-2-a - Me, My, MyClass, MyBase....................................................................................................861 XV-B-2-b - Proprit par dfaut.............................................................................................................. 862 XV-B-2-c - Mthode de Classe avec Shared..........................................................................................863 XV-B-2-d - Cration d'un compteur d'instances......................................................................................864 XV-B-2-e - Cration d'un identifiant unique d'instance........................................................................... 864 XV-B-2-f - Singleton.................................................................................................................................865 XV-B-2-g - Surcharge d'oprateur...........................................................................................................866 XV-C - Crer un composant (Bibliothque de Classe et de Contrles)............................................................ 868 XV-C-1 - Crer une Bibliothque de classes............................................................................................... 868 XV-C-1-a - Namespace........................................................................................................................... 869 XV-C-1-b - Utilisation du composant.......................................................................................................869 XV-C-2 - Crer un 'contrle utilisateur' partir d'un contrle existant en le modifiant................................. 869 XV-C-3 - Crer un 'contrle utilisateur' contenant un ou plusieurs contrles pilots....................................871 XV-D - Les interfaces.........................................................................................................................................873 XV-D-1 - Dfinition : Interface et implmentation......................................................................................... 873 XV-D-2 - Les interfaces prsentes dans les classes du Framework........................................................... 874 XV-D-3 - Les interfaces cres par le programmeur................................................................................... 875 XV-E - L'hritage................................................................................................................................................ 877 XV-E-1 - Dfinition de l'hritage................................................................................................................... 877 XV-E-2 - Membres de la classe drive...................................................................................................... 878 XV-E-2-a - Redfinition de membres (Overrides)................................................................................... 878 XV-E-2-b - Surcharge de membres (Overloads).....................................................................................879 XV-E-2-c - Cacher un membre de la classe de base (Shadows)........................................................... 880 XV-E-2-d - Classe abstraite.................................................................................................................... 880 XV-E-3 - MyBase.......................................................................................................................................... 881 XV-E-4 - Constructeur dans une classe fille................................................................................................ 881 XV-E-5 - Hritage successif : exemple.........................................................................................................881 XV-E-6 - Cration de classes partir de classes du Framework................................................................ 882 XV-E-7 - Cration de composants et hritage............................................................................................. 882 XV-F - Les espaces de noms, porte des classes et membres (friend protected public private)...................... 883 XV-F-1 - Intrts des espaces de noms (NameSpace)............................................................................... 883 XV-F-2 - Pour crer une classe dans un espace de noms..........................................................................884 XV-F-3 - Porte des Classes, procdures, membres.................................................................................. 884 XV-G - Composition et groupe d'objets : Tableau, collection d'objets, Classe contenant un groupe d'objets 885 .... XV-G-1 - Un Objet dans un autre : Composition d'objets............................................................................ 885 XV-G-2 - Groupe d'objets............................................................................................................................. 886 XV-G-2-a - Comment utiliser un tableau ou une collection d'objets 'Salari'.......................................... 886 XV-G-2-b - Utiliser Une Classe contenant des Salaris......................................................................... 887 XV-G-2-b-i - Crer une Classe contenant une ArrayList................................................................... 887 XV-G-2-b-ii - Crer une Classe hritant de la Classe ArrayList........................................................ 889 XV-G-2-b-iii - Crer une Classe hritant de la Classe CollectionBase..............................................889 XV-G-2-b-iv - Crer une Classe contenant une Classe gnrique....................................................890 XV-G-2-b-v - Conclusion.................................................................................................................... 891 XV-H - Conservation (sauvegarde) d'objet, srialisation................................................................................... 891 XV-H-1 - La Srialisation.............................................................................................................................. 891 XV-H-2 - Exemple 1 : Srialisation binaire................................................................................................... 892 XV-H-3 - Srialisation................................................................................................................................... 892 XV-H-4 - Dserialisation............................................................................................................................... 893 XV-H-5 - Exemple 2 : Srialisation XML...................................................................................................... 893 XV-H-6 - Exemple 3 : Srialisation d'une collection..................................................................................... 894 XV-H-7 - Exemple 4 : Srialisation d'un tableau.......................................................................................... 895 XV-H-8 - Exemple 5 : Srialisation d'une collection gnrique.................................................................... 896 XV-I - Surcharge.................................................................................................................................................897 XV-I-1 - Surcharge en VB 2003................................................................................................................... 898
- 17 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

XV-I-2 - Surcharge en VB 2005 : nouveauts..............................................................................................899 XV-J - Structure de programme : programmation trois couches.................................................................... 900 XV-J-1 - Introduction..................................................................................................................................... 900 XV-J-2 - Architecture n-tiers......................................................................................................................... 901 XV-J-3 - Architecture 3 tiers......................................................................................................................... 902 XV-J-4 - Exemple 1 : Ma bibliothque (en crivant du code)...................................................................... 902 XV-J-4-a - Couche mtier....................................................................................................................... 903 XV-J-4-b - Couche d'accs aux donnes............................................................................................... 905 XV-J-4-c - Couche de prsentation : interface graphique.......................................................................906 XV-J-5 - Exemple 2 : Bibliothque (avec Binding et gnration automatique de l'IU)..................................908 XV-J-5-a - Couche mtier....................................................................................................................... 908 XV-J-5-b - Cration de la source de donnes........................................................................................ 909 XV-J-5-c - Gnration automatique de l'interface utilisateur...................................................................910 XV-J-5-d - Cration du Binding............................................................................................................... 911 XV-K - Utilisation de Patron (motif de conception, Design Pattern).................................................................. 912 XV-K-1 - Singleton........................................................................................................................................ 912 XV-K-2 - Itrateur..........................................................................................................................................913 XV-L - Link dans les Classes............................................................................................................................ 914 XVI - Un peu de thorie pour en dduire de bonnes pratiques..............................................................................917 XVI-A - Diverses sortes de programmation....................................................................................................... 917 XVI-A-1 - Programmation imprative............................................................................................................917 XVI-A-2 - Programmation structure............................................................................................................ 919 XVI-A-3 - Langage fonctionnelle...................................................................................................................920 XVI-A-4 - Programmation procdurale......................................................................................................... 920 XVI-A-5 - Programmation dfensive............................................................................................................. 921 XVI-A-6 - Programmation scurise............................................................................................................. 922 XVI-A-6-a - Conception........................................................................................................................... 922 XVI-A-6-b - Ralisation............................................................................................................................922 XVI-A-6-c - Excution.............................................................................................................................. 922 XVI-A-7 - Programmation vnementielle.................................................................................................... 923 XVI-A-8 - Programmation Objet....................................................................................................................925 XVI-B - Programmation 'procdurale' ou 'objet' ?.............................................................................................. 925 XVI-B-1 - L'approche procdurale................................................................................................................ 925 XVI-B-2 - Approche Objet............................................................................................................................. 927 XVI-B-3 - Conclusion.................................................................................................................................... 930 XVI-C - Programmation 'procdurale' : faire de bonnes procdures................................................................. 930 XVI-C-1 - Approche procdurale, analyse 'descendante' ou 'ascendante'...................................................931 XVI-C-2 - Pourquoi utiliser des procdures ?...............................................................................................932 XVI-C-3 - La 'cohsion' de la procdure doit tre importante...................................................................... 933 XVI-C-4 - Le 'couplage' entre procdures doit tre modr.........................................................................934 XVI-C-5 - Squelette d'un programme........................................................................................................... 934 XVI-C-6 - Les paramtres.............................................................................................................................935 XVI-C-7 - Utiliser une 'Sub' ou une 'Function' ?........................................................................................... 937 XVI-C-8 - Programmation dfensive.............................................................................................................938 XVI-D - Programmation 'objet' : faire de bonnes Classes................................................................................. 939 XVI-D-1 - Rappel...........................................................................................................................................940 XVI-D-2 - Pourquoi utiliser 'Classe' et 'Objet' ?............................................................................................ 940 XVI-D-3 - Identifier les objets....................................................................................................................... 941 XVI-D-4 - Faire un 'couplage' modr..........................................................................................................942 XVI-D-5 - Conserver une bonne abstraction et une bonne cohrence........................................................ 942 XVI-D-6 - Crer des mthodes par paires................................................................................................... 942 XVI-D-7 - L'encapsulation doit tre bonne................................................................................................... 943 XVI-D-8 - Initialisez les donnes dans le constructeur d'une Classe...........................................................943 XVI-D-9 - Problmes lis l'hritage........................................................................................................... 943 XVI-E - Faire du bon 'code'............................................................................................................................... 944 XVI-E-1 - Bonnes variables.......................................................................................................................... 944 XVI-E-1-a - Utilisez Option Strict=On et Option Explicit=On...................................................................944 XVI-E-1-b - Donnez chaque variable un seul rle............................................................................... 945
- 18 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

XVI-E-1-c - vitez les variables avec des significations non videntes.................................................. 945 XVI-E-1-d - Initialisez les variables ds leur dclaration.........................................................................945 XVI-E-1-e - Utilisez le principe de proximit........................................................................................... 946 XVI-E-1-f - Travaillez sur des variables qui restent actives le moins de temps possible........................ 947 XVI-E-1-g - Si vous codez la valeur d'une variable en 'dur', utilisez plutt des constantes.....................948 XVI-E-1-h - Groupez les instructions lies.............................................................................................. 948 XVI-E-1-i - Rduisez la porte des variables (problme des variables globales)................................... 949 XVI-E-1-j - Les Boolens sont des Boolens......................................................................................... 951 XVI-E-1-k - Utiliser les variables Date pour stocker les dates................................................................ 951 XVI-E-2 - Rgles de bonne programmation................................................................................................. 952 XVI-E-2-a - Sparer l'interface utilisateur et l'applicatif...........................................................................952 XVI-E-2-b - Utiliser le typage fort............................................................................................................ 953 XVI-E-2-c - Forcer la dclaration des variables et les conversions explicites.........................................953 XVI-E-2-d - Utiliser des constantes ou des numrations...................................................................... 953 XVI-E-2-e - Vrifier la validit des donnes que reoit une Sub une Function ou une Classe................954 XVI-E-2-f - Se mfier du passage de paramtres 'par valeur' ou par 'rfrence'....................................954 XVI-E-2-g - Structurez le code, vitez les Goto......................................................................................954 XVI-E-2-h - Ne faire aucune confiance l'utilisateur du logiciel............................................................. 954 XVI-E-2-i - Rendre le code lisible par tous............................................................................................. 955 XVI-E-3 - Rendre le code lisible : commentaires, noms de variables.......................................................... 955 XVI-E-3-a - Ajoutez des commentaires...................................................................................................955 XVI-E-3-b - Choisissez les noms de procdures et de variables avec soin........................................... 956 XVI-E-3-c - claircir, arer le code......................................................................................................... 958 XVII - Les bases de donnes..................................................................................................................................960 XVII-A - Notions sur les bases de donnes...................................................................................................... 960 XVII-A-1 - Gnralits...................................................................................................................................960 XVII-A-2 - Tables...........................................................................................................................................961 XVII-A-3 - Exemple....................................................................................................................................... 961 XVII-A-4 - Type de colonne.......................................................................................................................... 962 XVII-A-5 - Cl primaire................................................................................................................................. 962 XVII-A-6 - Index............................................................................................................................................ 962 XVII-A-7 - Relations entre les tables : diffrents types de relations............................................................. 963 XVII-A-7-a - 1 N (relation un plusieurs)............................................................................................ 963 XVII-A-7-b - 1 1....................................................................................................................................964 XVII-A-7-c - N M.................................................................................................................................. 964 XVII-A-7-d - Relation N M avec N fixe et petit.................................................................................... 965 XVII-A-8 - Contraintes...................................................................................................................................966 XVII-A-9 - Serveur de fichier, Client serveur................................................................................................ 966 XVII-A-10 - Oprations sur les enregistrements...........................................................................................966 XVII-B - Gnralits sur ADO.NET.................................................................................................................... 967 XVII-B-1 - Gnralits...................................................................................................................................967 XVII-B-2 - Les Managed Providers...............................................................................................................967 XVII-B-3 - Les Objets ADO.NET.................................................................................................................. 968 XVII-B-4 - Le DataReader............................................................................................................................ 969 XVII-B-5 - Le DataSet...................................................................................................................................969 XVII-C - Syntaxe SQL........................................................................................................................................ 970 XVII-C-1 - Gnralits...................................................................................................................................970 XVII-C-2 - Les commandes SQL..................................................................................................................971 XVII-C-3 - SELECT : Interrogation................................................................................................................971 XVII-C-4 - Tri des enregistrements...............................................................................................................973 XVII-C-5 - Statistiques.................................................................................................................................. 974 XVII-C-6 - Extraction de donnes sur plusieurs tables................................................................................ 974 XVII-C-7 - Ajout, suppression, modification d'enregistrement...................................................................... 975 XVII-C-8 - Ajout de table.............................................................................................................................. 976 XVII-D - Lire rapidement en lecture seule : le DataReader............................................................................... 976 XVII-D-1 - Gnralits...................................................................................................................................977 XVII-D-2 - Exemple de DataReader avec une base Access........................................................................977 XVII-D-3 - Comment compter ?.................................................................................................................... 979
- 19 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

XVII-D-3-a - L'objet Connection.............................................................................................................. 979 XVII-D-3-b - L'objet Command................................................................................................................ 980 XVII-D-3-c - L'objet DataReader............................................................................................................. 980 XVII-D-3-d - Exceptions...........................................................................................................................981 XVII-E - Travailler sur un groupe de donnes : le DataSet............................................................................... 981 XVII-E-1 - Gnralits...................................................................................................................................981 XVII-E-2 - Utilisation du DataSet, du DataView : en pratique...................................................................... 983 XVII-E-3 - Remplir un DataGrid ou une ListBox avec un DataSet...............................................................989 XVII-E-4 - tudions en dtail un DataSet.....................................................................................................989 XVII-F - Liaison DataGrid, ListBox et base de donnes : le "DataBinding"....................................................... 990 XVII-F-1 - Remplir une ListBox avec une colonne d'une table d'une BD.....................................................991 XVII-F-2 - Remplir un DataGrid avec une base de donnes via un DataSet...............................................994 XVII-F-3 - Remplir un contrle avec une source de donnes avec le moins de code possible(VB 2005 2008)..............................................................................................................................................................996 XVII-F-3-a - Cration de la source de donnes......................................................................................997 XVII-F-3-b - Liaison source de donnes-Grid avec du code.................................................................1000 XVII-F-3-c - Gnration automatique de l'interface utilisateur.............................................................. 1001 XVII-F-3-d - Binding et TextBox............................................................................................................ 1002 XVII-G - Crer une BD, ajouter une table une base de donnes................................................................ 1003 XVII-G-1 - Crer une base de donnes..................................................................................................... 1003 XVII-G-2 - Ajouter une table une BD existante....................................................................................... 1005 XVII-H - LINQ et les bases de donnes..........................................................................................................1006 XVIII - Optimisation en vitesse.............................................................................................................................. 1015 XVIII-A - Comparaison VB6 VB.Net.................................................................................................................1015 XVIII-A-1 - Comment VB.NET 2003 est situ en comparaison avec les autres langages de programmation ?..........................................................................................................................................1015 XVIII-A-2 - VB.NET (2003 ou 2005) est-il plus rapide que VB6 ?..............................................................1015 XVIII-B - Chronomtrer le code....................................................................................................................... 1018 XVIII-B-1 - Pour chronomtrer une vnement long..................................................................................1018 XVIII-B-2 - Crer un compteur pour les temps trs courts (Framework 1, VB2003).................................. 1019 XVIII-B-3 - Crer un compteur pour les temps trs courts (Framework 2, VB2005).................................. 1021 XVIII-C - Comment acclrer une application VB.net ?.................................................................................. 1021 XVIII-C-1 - Utilisation des nouvelles fonctionnalits................................................................................... 1021 XVIII-C-2 - Choix des variables.................................................................................................................. 1022 XVIII-C-3 - Tableau..................................................................................................................................... 1022 XVIII-C-4 - Collections................................................................................................................................ 1024 XVIII-C-5 - viter la dclaration de variables 'Objet' et les liaisons tardives, les variables non types.......1024 XVIII-C-6 - Utiliser les bonnes 'Options'..................................................................................................... 1025 XVIII-C-7 - Pour les fichiers, utiliser System.IO......................................................................................... 1025 XVIII-C-8 - If Then ou Select Case ?......................................................................................................... 1025 XVIII-C-9 - Utiliser les bonnes 'Oprations'................................................................................................ 1026 XVIII-C-10 - Utiliser : With End With.......................................................................................................... 1028 XVIII-C-11 - Optimiser les boucles............................................................................................................. 1028 XVIII-C-12 - Appel de procdure................................................................................................................ 1030 XVIII-C-13 - Usage de threads................................................................................................................... 1031 XVIII-C-14 - Comment acclrer quand on utilise des 'String' ?................................................................ 1031 XVIII-C-15 - Comment acclrer l'affichage ?............................................................................................ 1032 XVIII-C-16 - Utiliser les tableaux en mmoire plutt que la lecture de fichiers sur disque......................... 1033 XVIII-C-17 - Ce qui n'influence pas la rapidit du code............................................................................. 1033 XVIII-C-18 - Compilation DLL..................................................................................................................... 1033 XVIII-C-19 - En conclusion......................................................................................................................... 1033 XIX - Et pour plus tard.......................................................................................................................................... 1034 XX - Bonnes adresses, bibliographie du site........................................................................................................ 1035 XX-A - Mes livres............................................................................................................................................. 1035 XX-B - VB 2003 sur le Net.............................................................................................................................. 1035 XX-C - VB 2005............................................................................................................................................... 1036 XX-D - VB 2008............................................................................................................................................... 1037 XX-E - VS 2010 : Le futur................................................................................................................................1038
- 20 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

XX-F - Sites ddis au Visual Basic................................................................................................................1038 XX-G - Convertisseur C# -> VB.......................................................................................................................1038 XX-H - SQL...................................................................................................................................................... 1039 XX-I - Glossaire................................................................................................................................................ 1039 XXI - Annexes........................................................................................................................................................1040 XXI-A - Le codage de caractres ASCII ANSI UNICODE et UTF...................................................................1040 XXI-A-1 - Codage sur 7 bits : ASCII.......................................................................................................... 1040 XXI-A-2 - Codage sur 8 bits....................................................................................................................... 1040 XXI-A-3 - Codage sur 16 bits ou plus : Unicode........................................................................................ 1042 XXI-A-4 - Reprsentation graphique des caractres : Glyphe, Font, Police.............................................. 1045 XXI-A-5 - Sur le Web..................................................................................................................................1046 XXI-A-6 - En VB..........................................................................................................................................1047 XXI-B - Nommage des objets visuels, variables et objets...............................................................................1047 XXI-C - Couleurs disponibles dans VB............................................................................................................1052 XXI-D - Format de fichier texte : le RTF..........................................................................................................1053 XXI-E - Format XML.........................................................................................................................................1055 XXI-F - Migration VB6=>VB.NET 2003............................................................................................................1060 XXI-F-1 - Les objets....................................................................................................................................1061 XXI-F-1-a - Les Classes du Framework............................................................................................... 1061 XXI-F-1-b - Les formulaires ou fentres............................................................................................... 1061 XXI-F-1-c - Les Contrles..................................................................................................................... 1062 XXI-F-1-d - Les Variables...................................................................................................................... 1063 XXI-F-1-e - Les Tableaux...................................................................................................................... 1064 XXI-F-1-f - Les Collections.................................................................................................................... 1064 XXI-F-1-g - Les Structures.................................................................................................................... 1064 XXI-F-1-h - Les Fonctions et Sub......................................................................................................... 1065 XXI-F-1-i - Dans le code....................................................................................................................... 1065 XXI-F-1-j - Gestion des erreurs.............................................................................................................1065 XXI-F-1-k - Les graphiques................................................................................................................... 1066 XXI-F-1-l - Les bases de donnes........................................................................................................ 1066 XXI-F-1-m - Les Classes....................................................................................................................... 1066 XXI-F-1-n - GOSUB et ON GOSUB n'existent plus..............................................................................1066 XXI-F-1-o - Les Timers..........................................................................................................................1067 XXI-F-1-p - Conversion VB6 vers VB.NET........................................................................................... 1067 XXI-G - VB.NET 2005 : nouveauts 2005....................................................................................................... 1068 XXI-G-1 - Le matriel..................................................................................................................................1068 XXI-G-2 - L'IDE........................................................................................................................................... 1068 XXI-G-2-a - On peut crer des fentres toutes faites, avec les contrles............................................ 1068 XXI-G-2-b - Edit and Continue.............................................................................................................. 1068 XXI-G-2-c - Il y a des exemples de code............................................................................................. 1069 XXI-G-2-d - Il est propos des solutions pour corriger les erreurs de code..........................................1069 XXI-G-2-e - Le Projet Designer.............................................................................................................1070 XXI-G-2-e-i - Exemple de ressource................................................................................................1070 XXI-G-2-e-ii - Exemple de paramtre.............................................................................................. 1071 XXI-G-2-f - Alignement de controles..................................................................................................... 1071 XXI-G-2-g - Le dplacement des contrles ou l'accs aux principales tches est amlior................. 1072 XXI-G-2-h - Renommer un nom : modification automatique................................................................. 1072 XXI-G-2-i - Commentaire en XML......................................................................................................... 1072 XXI-G-3 - Les nouveaux Objets................................................................................................................. 1073 XXI-G-4 - Les instances de Forms.............................................................................................................1073 XXI-G-5 - Les nouveaux Contrles............................................................................................................ 1073 XXI-G-5-a - DataGridView..................................................................................................................... 1073 XXI-G-5-b - MaskedTextBox..................................................................................................................1074 XXI-G-5-c - SoundPlayer.......................................................................................................................1075 XXI-G-5-d - SplitContainer.....................................................................................................................1075 XXI-G-5-e - ListView.............................................................................................................................. 1076 XXI-G-5-f - WebBrowser........................................................................................................................1076 XXI-G-5-g - LayoutPanel....................................................................................................................... 1076
- 21 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

XXI-G-5-h - MenuStrip...........................................................................................................................1077 XXI-G-5-i - ToolStrip.............................................................................................................................. 1077 XXI-G-5-j - StatuStrip.............................................................................................................................1077 XXI-G-5-k - ProgessBar.........................................................................................................................1077 XXI-G-6 - Les nouvelles 'Variables'............................................................................................................ 1078 XXI-G-7 - Les nouvelles 'Collections'......................................................................................................... 1078 XXI-G-8 - Dans le Code : Les nouvelles instructions.................................................................................1078 XXI-G-9 - Les nouveauts dans les Classes............................................................................................. 1079 XXI-H - Nouveauts 2008 et Framework 3..................................................................................................... 1081

- 22 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

I - Introduction
Il s'agit d'un cours de Visual Basic.Net de Microsoft, pour dbutants (pas de pr requis) ou de programmeur voulant passer la version .net . Le cours est bas sur VB 2003 (Framework 1), VB 2005 (Framework 2), VB 2008 (Framework 3.5). 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 techniques et traitent d'emble de problmes complexes, ils sont ncessaires mais pas pour le dbutant. J'explique 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: Windows Forms et WPF mais pas ASP Web).J'encourage par ce cours sans prtention, dvelopper ses propres programmes.

Soyez un utilisateur actif :


Retournez les bugs et erreurs et mme les fautes d'orthographe. Mon site serait-il parfait ? J'en doute !! Merci de vos critiques. Adressez-moi vos ides, du code original, des infos mettre sur le site. Ou simplement indiquez-moi que vous avez lu mon cours, cela fait toujours plaisir et m'incite poursuivre.

Merci developpez.com, ses membres qui m'ont aid ( Guillaume en particulier) ceux qui m'envoient un petit mot, et ceux qui me donnent un coup de main.

Cours constamment remis jour : voir la date de la version en dbut d'article.

Questions l'auteur: Je ne peux pas rpondre toutes les questions particulires et spcifiques car je n'ai pas d'exprience pousse dans tous les aspects de VB, et les questions sont trs nombreuses, aussi je vous conseille d'utiliser les forums developpez.com

- 23 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

II - Que trouver dans ce cours ? II-A - Qu'allons-nous tudier ?


Ce cours est un cours de Visual Basic.Net dvelopp par Microsoft. Nous tudierons principalement: LES APPLICATIONS WINDOWS. (les WindowsForms) et les WPF.

Les applications WindowsForms et WPF sont des programmes directement excutables qui utilisent des fentres: des programmes de traitement de texte, d'image, de musique, des jeux, de petits utilitaires, des logiciels mtiers (mdicaux)... Nous laisserons de ct les applications 'Web' (en ASP qui utilisent les WebForms) et qui permettent de crer des sites Internet, les applications 'console'.. Les versions tudies sont VB 2003 (Framework 1.1) , VB 2005 (Framework 2) , VB 2008 (Framework 3.5)

II-B - Quel plan de cours suivrons-nous ?


Nous tudierons donc comment crer une application Windows: Nous tudierons la notion d'objet, d'vnement, d'instruction, procdure et module.(Section III) Nous tudierons l'IDE ou interface de dveloppement (Section IV). Nous tudierons le langage Visual Basic (Section V). Nous verrons les Classes VB (Section VI). Nous utiliserons 'contrles' WindowsForms pour crer l'interface utilisateur (Section VII). Nous dcouvrirons la manire de crer une application Windows Forms.(Section IX) Nous utiliserons les WPF pour crer l'interface utilisateur (Section XI). Nous apprendrons faire de la programmation Objet et crer une classe (Section XIII.) Nous verrons comment utiliser les bases de donnes. (Section XV.)

II-C - Quels logiciels utiliser ?


AVANT, il y avait Visual Basic.Net 2003 de Microsoft.

- 24 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Il fonctionnait avec le Framework 1.1

Depuis 2005 il y a Visual Basic 2005 de Microsoft et le Framework 2.0. Ce produit .Net est maintenant mature, l'environnement de dveloppement est magique, les quelques points noirs de la version 2003 ont t corrigs.

Depuis 2008 il y a Visual Basic 2008 de Microsoft et le Framework 3.5 qui permet d'utiliser les WPF.

Visual Basic fait partie de VisualStudio (payant) mais il existe aussi la version Visual Basic Express version allge mais trs bien et GRATUITE, en franais. Ce cours utilise Visual Studio.Net 2003 Visual Basic 2005 et 2008 Express. Si vous dbutez, installez et utiliser sans hsitation Visual Basic Express 2008 GRATUIT Charger sur ce lien VB Express 2008 (http://www.microsoft.com/express/download/)

Autre gratuit: SharpEditor venant du monde du libre.

SharpEditor Voici le site,SharpDevelop le configurer pour qu'il marche en VB (il supporte VB et C#).

- 25 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

II-D - Quelle configuration est ncessaire ?


Pour dvelopper avec Visual Studio 2003 2005 VB 2005: il faut Windows XP ou 2000 ou Vista avec au minimum 1 Mo de mmoire vive. Un grand cran (vu le nombre de fentres) est conseill. Les excutables fonctionnent sous Windows 98(A vrifier pour VB 2005 et 2008), XP, 2000 Vista.

II-E - propos de l'auteur


LASSERRE Philippe est mdecin gnraliste exerant en groupe dans le Rhne ( Toussieu), il dveloppe des logiciels depuis des annes..: Il n'est pas informaticien.

Il a travaill avec des ordinateurs: ZX81, New-Brain, Ti-99, TO7, Vic20, Oric, Apple II, puis PC avec l'aide de Bill. Il a utilis le Basic Microsoft, le QuickBasic le Visual Basic de Microsoft de la version 1 la version VB6 et VB.Net, a fait un peu d'assembleur Z80 il y a longtemps. Il a fait partie de MEDITRA, association de mdecins informatiss du Rhne pionnire en la matire l'poque, il a t co-fondateur d'un club d'informatique local (Microzon) o on programmait dur!!. Ensuite il a crit des logiciels, pour cela outre le cot technique informatique , il a beaucoup travaill sur le dossier mdical informatis, les plans de soins. Plein d'ides et de projets, un seul problme: il n'y a que 24h dans une journe.

Il est l'Auteur de: CREEMED, Il y a quelques annes.. C'tait un utilitaire pour Medigest Dos.

MEDIWIN distribu par Polytel , logiciel de gestion complte de cabinet mdical dont il est le co-auteur. Logiciel agr Sesam-Vitale, trs complet, innovant, incluant les notions de "dossier vivant", "procdures de soins" (contenu mdical valid par des thses), travaillant avec la base de mdicament BCB de Rsip, contenant le dictionnaire de la SFMG.

LDF logiciel de comptabilit en ShareWare.Tlcharger Ici. Vous pouvez envoyer un mail Mr LASSERRE l'adresse: lasserre.philippe@wanadoo.fr

- 26 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

III - Principe et structure des programmes III-A - Les 'Objets'

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

Voir la vido : au format 'Flash'> ou au format 'Avi' en Visual Basic 2005. La vido (identique celle du chapitre sur les Classes) contient: 1)Objets, Classes. 2)Rfrences, espaces de noms ( visionner plus tard).

III-A-1 - Dans la vie courante


Mon gteau est un objet, cet objet existe.

Pour crer un gteau, j'utilise un 'moule gteau', ce moule les caractristiques du gteau (forme, hauteur..), mais je ne peux pas manger le moule!! Le moule se nomme la Classe. Le gteau est l'objet cr. Avec le moule, je cre un ou plusieurs gteaux.

De manire gnrale, une classe est une reprsentation abstraite de quelque chose. Tandis qu'un objet est un exemple utilisable de ce que reprsente la classe. Autre exemple: Ma voiture est un objet, cet objet existe, on peut l'utiliser.

Ma voiture fait partie de "Les voitures", du type, du genre "Les voitures". "Les voitures" c'est une classe (Class) qui a ses caractristiques : "Les voitures" ont une couleur, un moteur.., elles roulent en transportant des passagers...

- 27 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

mais je ne peux pas utiliser "Les voitures", la Classe; pour me dplacer, il faut avoir un objet "voiture". Avec la Classe je vais crer des Objets. Pour fabriquer ma voiture, je prends les caractristiques de la class "Les voitures" (c'est comme un moule) et je fabrique une voiture, je la nomme 'MaVoiture'.
Dim MaVoiture As New Lesvoitures

MaVoiture est maintenant un nouvel objet de type 'Les voitures'.

Class --> Objet Type 'Les voitures'--> Objet 'Mavoiture' Un Objet est cr selon un 'modle' qu'on appelle une Classe. On dit aussi qu'il faut instancier un objet partir de la Classe. 'Mavoiture' est une instance de la classe 'Les voitures'. (On dit aussi une 'occurrence' de la classe) Remarque: Avec la mme classe on peut instancier plusieurs Objets.

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

Syntaxe : Objet.Proprit (Il y a un point entre les 2 mots) Pour modifier la couleur et avoir une voiture verte on crit :
MaVoiture.couleur= "Vert"

- 28 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Et la voiture devient verte !! MaVoiture.Phares.Avant indique les phares avant de la voiture. MaVoiture.Phares.Avant.Allum indique l'tat des phares (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 j'appelle la mthode 'Roule'. MaVoiture.Roule Syntaxe : Objet.Mthode (Il y a un point entre les 2 mots) Si c'est possible pour cette mthode je peux indiquer quelle vitesse la voiture doit rouler : MaVoiture.Roule(100) 'j'ai ajout un paramtre. Le paramtre est un renseignement envoy avec la mthode. Il est possible parfois d'indiquer en plus si la voiture doit rouler en marche avant ou en marche arrire. MaVoiture.Roule(10, Arriere) Il y a donc 2 manires d'appeler la mthode Roule : avec 1 ou 2 paramtres, on dit que la mthode est surcharge; chaque manire d'appeler la mthode s'appelle 'signature'. Premire signature: MaVoiture.Roule(100) Seconde signature: MaVoiture.Roule(10, Arriere)

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 se dclenche automatiquement.

Interface et implmentation:

- 29 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Ce que je vois de l'objet, c'est son interface exemple: la mthode Roule fait partie de l'interface d'une voiture. Par contre ce qui fait rouler physiquement la voiture se nomme implmentation, c'est le moteur, ce n'est ni visible ni accessible. Si je cre une voiture je vais faire l'implmentation, je vais fabriquer le moteur, mais si je suis simplement utilisateur de l'objet voiture, je vais me contenter d'utiliser l'interface.

Visibilit: Quand un objet est cr, il est visible et utilisable, uniquement dans la zone o il a t dfini.

Relation entre Objets: Hritage: Une Classe (un moule) peut hriter d'une autre classe (d'un autre moule). La classe Voiture hrite de la classe Vhicule, cela veut dire qu'une voiture est un vhicule; la classe voiture aurait les proprits de la classe Vhicule. Contenant-contenu: On peut crer une Classe qui contient des Objets, une classe qui se compose d'objets. on parle de composition. L'objet Voiture contient 4 objets Roue. On dit que l'objet encapsule le contenu. Collections: Les collections sont des groupes d'objets semblables qui peuvent tre numrs. Un parc automobile contient X Voitures; chaque voiture a un numro d'item: ParcVoiture.item(1) pour la premire Voiture ParcVoiture.item(2) pour la seconde Voiture

Espace de noms: Un espace de nom regroupe des objets qui appartiennent au mme 'domaine'. Cela sert a diffrencier des objet qui ont mme nom mais ne font pas partie du mme domaine: Si je parle de 'Porte' ce terme n'a pas la mme signification si je suis dans l'espace de nom 'Composant lectronique'(on y trouve des portes logiques) ou l'espace de nom 'Maison'.

Tous cela c'est simpliste, mais voila, vous avez compris ce qu'est un objet !

- 30 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

III-A-2 - Et dans Visual Basic.net


Une application Windows se compose de fentres (nommes 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, liste, image, case cocher..) ... Il faut un moule pour faire un objet. Le moule c'est une Classe. Le moule va servir crer un objet,on dit une instance. On peut crer, instancier une multitude d'objets 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 j'ai dessin. Autre exemple :

- 31 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim B As New Button

Crer un bouton nomm 'B' avec les attributs habituels des boutons (Class Button) Troisime exemple: Comment crer une variable nomme 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) Si F est une fentre, F.BackColor indique la couleur de fond de la fentre. S'il 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 En fait une proprit c'est une sorte de variable. Comment modifier cette proprit?
Bouton.BackColor=Color.Red

'modifie la couleur de fond du bouton

Autre exemple: La proprit Visible: si elle a la valeur True (Vraie) l'objet est visible; si elle est False l'objet n'est pas visible.
Bouton.Visible=False

'fait disparatre le bouton

- 32 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

=Ici il y a un bouton invisible!! oui, oui!!

Les objets ont des mthodes parfois. Une mthode agit sur l'objet ou fait agir l'objet. Prenons un exemple simplifi. Les Listes ( liste droulante) ont des lignes (Items) et une mthode Clear qui permet de les vider. Si je veux vider toutes les lignes d'une liste nomme Liste1, je fais:
Liste1.Items.Clear()

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.

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 listBox),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.

Relation : Hritage: Une Classe (un moule) peut hriter d'une autre classe (d'un autre moule). La classe Button hrite de la classe Control, cela veut dire qu'un bouton est un contrle.

- 33 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Si je cre un bouton, il aura les caractristiques de la classe Button mais aussi de la classe Control.

Contenant-contenu: Une Classe peut contenir d'autres classes. Je peux dcider d'un Objet Rectangle va contenir 4 Objets Point

Collections: Les collections sont des groupes d'objets semblables qui peuvent tre numrs. Une fentre Windows (on dit un 'formulaire' contient une collection nomme 'Controls' composes de tous les objets (boutons, List, texte) contenus dans la fentre:

maFenetre.Controls.item(1)

contient par exemple le premier bouton

maFenetre.Controls.item(2)

contient par exemple une list.

En rsum : En Visual Basic.net tout est objet. Les Classes sont des types d'objet. Pour crer (instancier) un objet partir d'une Classe, il faut utiliser les mots cl Dim ..As New:
Dim Objet As New Class

Un objet a :

Des proprits. Des mthodes. Des vnements.

Attention, par abus de langage, on emploie parfois indiffremment les mots 'Classe' et 'Objet', mais il est prfrable de ne pas confondre le modle et l'objet lui-mme.

Lexique anglais=>Franais: New = Nouveau.

- 34 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

III-B - Programmation vnementielle : le premier programme 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.

Voir la vido au format 'Flash':

ou au format AVI

en Visual Basic 2005

III-B-1 - Principes de la programmation VB


Le programmeur va dessiner l'interface utilisateur (fentre, bouton, liste..), il va ensuite uniquement crire les actions effectuer quand certains vnements se produisent sur cette interface. C'est Visual Basic qui va entirement s'occuper de la gestion des vnements.

III-B-2 - Exemple : le premier programme


Il affiche 'Bonjour' quand on clique sur un bouton. Ce n'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? L'utilisateur final, celui qui utilise le logiciel, voit une fentre avec un bouton, S'il appuie sur ce bouton il voit s'afficher " 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 d' afficher Bonjour . Le fait de dterminer la procdure appeler ou de raliser l'appel est entirement pris en charge par VB.

- 35 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

III-B-3 - En pratique, que fait le programmeur ?

Voir la vido : au format 'Flash'> ou au format 'Avi' en Visual Basic 2005. Le programmeur est en mode 'conception' (ou mode Design): Il crit le programme :

III-B-3-a - Il dessine l'interface utilisateur


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

Il ouvre un projet : 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 Form1, dplace le curseur sans lcher le bouton, puis lche le bouton de la souris : le dessin d'un bouton apparat. Pour l'exemple,Il ajoute un label.

- 36 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Un label est un contrle qui permet d'afficher 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.

III-B-3-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 s'ouvre 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 vnement en rapport avec l'vnement 'On a cliqu sur le bouton1'. Quand le programme fonctionne, quand l'utilisateur du logiciel clique sur le bouton1, le code situ entre Private Sub Button1Click et End Sub est effectu. Une procdure est un ensemble de lignes 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 nomme '.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?


- 37 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Il est possible de tester immdiatement le programme en mode dbogage, sans quitter l'environnement de dveloppement: Utiliser le menu 'Dboguer' puis 'Dmarrer' qui lance l'excution 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. En mode excution : L'utilisateur voit bien une fentre avec un bouton, s'il clique dessus, Bonjour s'affiche. 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'instructions Visual Basic, se nomme le code source.

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 fentre ou pour chaque contrle, gnre une liste d'vnements, (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, d'crire le code qui doit tre effectu lorsque cet vnement survient. Comme nous l'avons vu le code sert agir sur l'interface (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 .

III-C - Les instructions, les procdures : les 'Sub', les 'Function'


Qu'est ce qu'une instruction , une procdure? Quelle diffrence entre les procdures lies aux vnements? non lies?: Les 'Sub', les 'Functions'.

III-C-1 - Les instructions


Une instruction est le texte permettant d'effectuer une opration, une dclaration, une dfinition.
- 38 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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"

Si une ligne est trs longue, on peut passer la ligne grce ' _' (caractre 'Espace' puis caractre"_" puis immdiatement aprs, passage la ligne) :
Dim B As String = "Bonjour monsieur ": C= _ "le professeur"

est quivalent :
Dim B As String = "Bonjour monsieur ": C= "le professeur"

Quand un programme tourne, les instructions sont effectues ligne aprs ligne.
1 2 3 4 5 Dim B As String B="Bonjour" Dim A As Integer A= 3 A= A + 1

La ligne 1 est excute puis la ligne 2 puis la 3, la 4... Bien que l'on puisse avoir des numros de ligne, ils ne sont plus utiliss actuellement et non visibles:
Dim B As String B="Bonjour" Dim A As Integer A= 3

- 39 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre A= A + 1

Pour mettre des commentaires dans un programme, on le fait prcder de ' .


'Ceci est un commentaire, ce n'est pas une instruction.

Le commentaire ne sera pas excut.

Il peut aussi, partir de VB 2005 , y avoir des commentaires en XML, ils sont dans ce cas prcds de ''' (3').

III-C-2 - Les procdures


Une procdure est un ensemble d'instructions, de lignes de code, un groupement d'instructions bien dfinies effectuant une tache prcise. Les procdures sont bien dlimites: Il y en a de 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

- 40 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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.

Vous avez vu que l'on peut dessiner l'interface, une fentre Form1 par exemple. En mode conception, aprs avoir dessin l'interface, 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.

III-C-3 - Procdures lies aux vnements


Si on double clique sur le fond d'une 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 "'<===En VB 2003 uniquement Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles MyBase.Load

- 41 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre 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

Dtaillons: On voit 3 parties:


Public Class Form1 End Class

Ce n'est pas une procdure mais la dfinition de la fentre. La fentre fait partie des Windows.Forms.Form.. Ces lignes sont gnres automatiquement par VB. En VB 2003,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 VII-C sur les formulaires explique en dtails le code gnr par VB, mais c'est un peu complexe pour les dbutants pour le moment!!) En VB 2005 et 2008 cette partie gnre par VB n'est pas visible directement. Il faut comprendre qu' un formulaire (fentre) et aux contrles qui sont dans ce formulaire correspond du code gnr par Vb. Ce code (sur lequel vous n'intervenez habituellement pas ) permet de crer le formulaire et les contrles.

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

Il y a bien d'autres procdures lies la fentre : Drouler la liste box en haut gauche de la fentre de code, cliquer sur (Form1 events), si vous droulez 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.
- 42 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Private Sub End Sub

Button1_Click

C'est la procdure lie au bouton et qui contient le code effectuer quand l'utilisateur clique sur le bouton. C'est l que l'on crit le code qui doit s'effectuer lorsque l'utilisateur 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 appui du bouton gauche de la souris. MouseUp 'se dclenche si relchement du bouton gauche 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.

III-C-4 - Procdures non lies


Parfois on a besoin de code qui fait une tche particulire, qui est utilis plusieurs endroits et qui n'est pas lie un vnement. On cre dans ce cas une procdure indpendante des vnements. 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 j'ai besoin de calculer la surface d'un cercle partir de son rayon et de l'afficher 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 d'appeler la procdure qui effectue le calcul et affiche le rsultat puis revient effectuer le code situ aprs l'appel. Comment appeler une procdure? avec:
Call NomdeProcedure()

- 43 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

ou par
NomdeProcedure()

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

III-C-5 - 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 qu'il existe une procdure qui reoit comme paramtre une variable de type Single (Rel simple prcision) contenant le Rayon. Ajouter le code :
Label.text =(3.14*Rayon*Rayon).ToString

Que fait cette ligne ? Elle fait le calcul: '3.14*Rayon*Rayon' ('*' signifie multiplier), on transforme le rsultat en chane de caractres (grce '.ToString') que l'on 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)

- 44 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Label.text =(3.14*Rayon*Rayon).ToString End sub

Comment appeler cette Sub? N'importe quelle procdure pourra appeler la Sub AfficheSurfaceCercle en envoyant la valeur du rayon afin d'afficher la surface du cercle dans un label. Exemple d'appel pour un rayon de 12 :
AfficheSurfaceCercle(12)

Affiche dans le label: 452.16

III-C-6 - Procdures 'Function'


Parfois on a besoin que la procdure retourne un rsultat, un seul, 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 Function

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

N'importe 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)

- 45 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On appelle la fonction SurfaceCercle en envoyant le paramtre '12', ce qui fait qu' 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 (un nombre en simple prcision). 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 Function

Ici on utilise le nom de la fonction pour retourner le rsultat, avec un signe '='. Utilisez plutt la mthode Return.

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).

III-C-7 - Module standard


La Sub AfficheSurfaceCercle affiche le rsultat dans le formulaire o elle est situe. Par contre la fonction SurfaceCercle est d'intrt gnral, n'importe quelle procdure doit pouvoir l'appeler, de plus elle n'intervient pas sur les contrles des formulaires et n'est donc pas lie aux formulaires. On la placera donc dans un module standard qui est un module du programme qui ne contient que du code. (Pas d'interface utilisateur) Pour crer un module standard Menu Projet>Ajouter un module. Y mettre les procdures.

III-C-8 - Private Public


Avant le mot Sub ou Function on peut ajouter : Private indiquant que la procdure est accessible uniquement dans le module. C'est donc une procdure prive.
- 46 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Les procdures lies aux vnements d'une feuille sont prives par dfaut. Public indiquant que la procdure est accessible partir de toute l'application. S'il n'y a rien devant Sub la procdure est publique

Exemple:
Private Function SurfaceCercle( Rayon as Single) Return 3.14*Rayon*Rayon End Function

III-C-9 - Remarques
Pour sortir d'une 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 ()

Nommage: Quand vous crez une procdure utilisez "la casse Pascal" pour crer les noms de routine: la premire lettre de chaque mot est une majuscule (C'est donc une convention).
Sub CalculTotal()

III-C-10 - Lexique anglais=>Franais


Call = Appel. Return= Retour. Private= Priv. Show= spectacle, exposition. To show= montrer.

- 47 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

III-D - Les modules III-D-1 - 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 de formulaire. Les modules standards. Les modules de 'Classe'.

Comment se prsentent-ils?

Un programme Visual Basic comporte donc :


Les 'Modules de Formulaires': contenant: Le dessin des fentres de l'interface utilisateur (ou formulaire)contenant les contrles (boutons, listes, zones de texte, cases cocher)

- 48 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Le code qui comprend : Les procdures lies aux vnements de la feuille (Button_Click..). Les procdures indpendantes des vnements. Ce sont des Sub() ou des Function(). Exemple:
Class Form1 'Nom du Formulaire

Inherits System.Windows.Forms Public A as String .... Private Button1_Click 'Procdure lie un vnement .. End Sub

Sub MaRoutine ... End Sub

'Procdure indpendante

Les modules standards. Ils servent de stockage de procdures. Procdures "d'intrt gnral". Ces procdures sont des Sub() ou des Function() qui peuvent tre appeles partir de n'importe 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. Exemple:
Module Module1 Public A as String .... Sub MaRoutine .... End Sub 'Procdure indpendante 'Nom du Module

End Class

les modules de Classe Ils ont vocation fabriquer des objets, on verra cela plus loin (Chapitre sur la programmation objet). Exemple:

End Module

- 49 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Class MaClasse Public A as String .... End Class

'Nom de la Classe

On remarque que les Class, formulaires, Modules, Sub, Functions sont dlimits par: Une ligne de dbut comportant le type et le nom du module. Une ligne de fin contenant End et le Type. Exemple:
Module Module1 ... End Module 'Nom du Module

Sub MaRoutine .... End Sub

'Procdure

III-D-2 - Comment crer un module standard


Faire Menu Projet puis Ajouter un module. Donner un nom au module. C'est Module1.vb par dfaut.
Module Module1 ... End Module 'Nom du Module

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

Remarque Les Sub, Functions et Modules sont utiliss dans un type de programmation dit 'procdurale' o on dcoupe le code. Il existe un autre type de programmation dit 'Objet' ou on cre et on utilise des Objets; on verra cela plus tard.

- 50 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

III-D-3 - Lexique anglais=>Franais


Return = Retour.

III-E - Notion de programmation 'procdurale' et de programmation 'objet' Il y a deux manires de travailler en VB.NET:
En programmation 'Procdurale': Chaque problme est dcompos en 'Fonctions'(Les Subs et Fonctions). La programmation structure dcoupe les problmes en fonctions (Sub et Function). Ce dcoupage s'il est systmatiquement employ aboutit la programmation fonctionnelle qui consiste en un embotement de fonctions que l'on peut voir comme des botes noires que l'on peut imbriquer les unes dans les autres. Chaque fonction contient du code VB qui permet d'effectuer le travail dvolu la fonction. Ces fonctions sont stockes dans des modules standards (ou dans les modules de formulaire). Dans une application en programmation 'procdurale' il y a habituellement: Des modules de formulaires. Des modules standard contenant des Sub et Function. NB: j'utilisais, dans la prcdente version du cours, le terme de programmation 'fonctionnelle' pour une programmation utilisant des Sub et Fonction; dans Wikipedia la programmation fonctionnelle c'est autre chose aussi je parle maintenant de programmation 'procdurale'.. En programmation 'Objet': On le verra cela plus tard: on cre ses propres objets dans des modules de Classe, on utilise les membres (Proprits et mthodes) de ces objets pour programmer. Dans une application en programmation 'Objet' il y a habituellement: Des modules de formulaires. Des modules de classe permettent de crer des Objets. Grce aux Classes (qui contiennent le code), on cre des objets. Ensuite on utilise les proprits et mthodes des objets. De toute faon, dans les 2 cas, que se soit dans des Sub ou des Classes, on utilise du code Visual Basic. La mode est la programmation Objet!!

- 51 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

IV - Environnement de dveloppement : les EDI/IDE IV-A - IDE Visual Studio 2008 (Microsoft)
C'est l'Integrated Development Environment (IDE): Environnement de dveloppement intgr de Visual Basic Express 2008 de Microsoft. Il permet de dessiner l'interface (les fentres, les boutons, List, Image...) et d'crire le code VB. Chez nous, on peut aussi dire EDI (Environnement de Dveloppement Intgr). L'IDE de Visual Basic 2008 est identique celle de VB 2005, bien meilleur que celle de VB 2003 et l'Edition Express' (version lgre par rapport Visual Studio) est GRATUITE. Donc pas d'hsitation, chargez et utilisez VB Express 2008. Charger sur ce lien VB Express 2008 Pour la version franaise, dans le cadre bleu 'Visual Basic Edition Express' drouler la liste et choisir 'French' puis 'Download'.

Vous pouvez voir une vido sur l'IDE 2005 (c'est la mme que pour la version 2008).

Voir la vido : au format 'Flash'> ou au format 'Avi' en Visual Basic 2005. (En flash, il y a un arrt au milieu: patientez. En Avi ne pas tenir compte des avertissements qui dclarent que le fichier n'est pas valide).

Fentre Projet. Quand on lance VB.net 2008, on ouvre l'IDE dans laquelle la fentre centrale charge la page du centre de dveloppement Visual Basic de MSDN (site Microsoft); il faut tre connect internet.

En cliquant sur le bouton 'flche verte' en haut droite, on affiche la Page de dmarrage "Start Page" qui permet d'ouvrir un projet existant Ouvrir (Recent Projects ou Open dans la version anglaise) ou de crer un nouveau projet:Crer (Create dans la version anglaise).

- 52 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On constate que les diverses fentres sont accessibles par des onglets. L'IDE de VB 2008 diffre peu de celui de VB 2005. Pour crer un nouveau projet Visual Basic, il faut choisir 'Crer' gauche ou passer par le menu 'Fichier' puis 'Nouveau' puis 'Projet' . La fentre suivante s'ouvre:

- 53 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On a le choix partir de VB 2008 de crer l'interface utilisateur: En Windowsforms (bas sur GDI+), interface habituelle, bien connue ou en WPF interface vectorielle labore n'existant pas avant VB 2008.

IV-A-1 - Interface 'Windows Forms'


Choisir l'icne 'Application Windows forms', puis donner un nom au projet, enfin valider sur 'Ok'. (Le chemin de l'emplacement du projet n'est pas modifiable ici, il est par dfaut ' C:\Documents and Settings\Nom Utilisateur\Mes documents\Visual Studio 2008\ Projects\MonProjet') On remarque qu'on aurait pu choisir 'Application WPF', on y reviendra. Dans un nouveau projet, crer ou ajouter une fentre 'WinForm': Pour ajouter une fentre (un formulaire) Menu Project, Ajouter un formulaire Windows ( 'Add a WindowsForms' en version anglaise ):

Cliquer sur Windows Form, une fentre (un formulaire) Form2 vide apparat (Form1 tait le nom du premier formulaire). Il y a des fentres toutes faites pour acclrer le travail (les templates) comme les 'Ecran de dmarrage' les 'Formulaire Explorateur'...

Designer: 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..

- 54 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On peut passer en mode 'Multidocument Mdi' (comme en VB6) au lieu du mode 'Onglet': (Passer par le menu 'Outils' puis 'Options..' puis bouton 'Multidocument (Mdi)').

On obtient un mode multidocument avec plusieurs fentres.

- 55 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple en mode Mdi montrant les 3 types de module.

- 56 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

A noter que si on utilise le menu 'Projet' puis 'Ajouter..' cela permet d'ajouter un formulaire, un module standard, un module de Classe.

Voir les procdures: L'onglet Form1.vb donne accs aux procdures lies Form1.

- 57 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On peut 'tapez' du code dans les procdures. La liste droulante de gauche donne la liste des objets, celle de droite, les vnements correspondants cet objet. 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. Ici on voit la procdure Button1_Click lie au Button1 de la fentre de Design.

Ajouter des contrles au formulaire 'Winform' Ajouter un bouton par exemple: Cliquer sur Boite outils (Toolbox) gauche, les contrles apparaissent tous ou classs par ordre alphabtique.

- 58 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Cliquer sur 'Button' dans la boite outils, cliquer dans la Form, dplacer le curseur sans lcher le bouton, puis lcher: Un bouton apparat.

Modifier les proprits d'un contrle ou du formulaire. Quand un formulaire ou un contrle est slectionn dans la fentre Design, ses proprits sont accessibles dans la fentre de 'Proprits' (Properties) droite en bas: Ici ce sont les proprits du contrle 'Button1' qui sont visibles (Text, Location..) on peut modifier directement les valeurs.

- 59 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

En bas de la fentre proprits, il y a une explication succincte de la proprit slectionne (Si elle n'apparat pas , click droit sur la proprit puis dans le menu 'Description'). Exemple: Si au niveau de la ligne 'Text' des proprits du bouton, j'efface 'Button1' et que je tape 'Ok', dans le designer, le texte crit sur le bouton deviendra 'OK'.

Le dplacement des contrles ou l'accs aux principales tches est facile: La croix gauche permet de dplacer le contrle, la petite flche droite permet d'ouvrir un menu qui donne accs aux tches les plus frquentes.

L'alignement automatique des contrles: Si on modifie la taille ou l'emplacement d'un contrle, VB signale par un trait bleu que le contrle modifi et le contrle voisin sont aligns:

- 60 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Renommer un nom: modification automatique. On nomme cela 'Refactoring': Cliquer sur une variable, puis bouton droit, dans le menu cliquer sur 'Renommer'. Modifier le nom de la variable, valider. Dans toute la Classe la variable est renomme.

Voir tous les composants d'un projet: Pour cela il faut utiliser la fentre Explorateur de solutions en haut droite, elle permet de voir et d'avoir accs au contenu du projet (Pour voir tous les fichiers, il faut cliquer sur le deuxime bouton en haut) : gridview est le nom du programme.

MyProjet: double-cliquer dessus, vous ouvrirez la fentre 'proprits du projet'. Rfrences qui contient les dll charges. Pour atteindre les rfrences, on peut aussi passer par le menu 'Projet' puis 'Proprits' ou double cliquer sur 'MyProjet' puis choisir l'onglet 'Rfrences. Form1.vb est un formulaire (une fentre).Les formulaires, modules de classe ou standard sont tous des '.vb' Il suffit de double-cliquer dessus pour les ouvrir.

Si on ouvre la sous-liste de Form1.vb (en cliquant sur le '+'), on voit: Form1.Designer.vb (qui montre le code qui cre le formulaire, on n'a pas y toucher). Form1.resx (le fichier de ressources).

Il suffit de cliquer sur la ligne Form1 dans l'explorateur de solution pour voir apparatre la Form1 dans la fentre principale. Si on clique sur un espace de noms dans la liste Rfrences, cela montre l'arborescence des Classes.

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').
- 61 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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

Si on tape la touche F10 (excution pas pas), la ligne 'Label1.Text=i.ToString' est traite et la position courante passe la ligne en dessous. En mode Debug, on peut modifier une ligne et poursuivre le programme qui tiendra compte de la modification (Sauf pour les dclarations). On parle d''Edit and continue'.

La sauvegarde du projet se fait comme dans tous les logiciels en cliquant sur l'icne du paquet de disquettes. On peut compiler le programme pour crer un excutable par le menu Gnrer ('Build'). Le code prsent dans l'IDE est le code source, aprs compilation le fichier excutable contient du code excutable.

Projet. Dans la terminologie VB, un projet est une application en cours de dveloppement. Une 'solution' (Team Project)regroupe un ou plusieurs projets (C'est un groupe de projets). Il n'y en a pas dans la version express. En VB express on parle donc uniquement de projet, en fait ,VB cre aussi une solution de mme nom.

Fichiers, Chemins des sources. Si vous regardez dans ' C:\Documents and Settings\Nom Utilisateur\Mes documents\Visual Studio 2008\ Projects \MonProjet')les fichiers correspondant un projet VB: MonProjet.sln est le fichier solution. MonProjet.psess est le fichier de performance (pas toujours prsent). MonProjet.suo est le fichier de User solution. Dessous existe un rpertoire nomm aussi MonProjet qui contient: MonProjet.vbProj le fichier de projet. Form1.vb contient un formulaire et ses procdures. MyClasse.vb contient par exemple des classes. Form1.Designer.vb contient le code qui crer la fentre et les contrles.

- 62 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Il a encore les sous rpertoires \Bin, il y a aussi un rpertoire Obj et un rpertoire \MyProjet Si on compile le projet l'excutable est dans un sous rpertoire \Bin,

Proprits du projet: Toutes les proprits de l'application peuvent tre modifies dans le 'Projet Designer' (Proprits du projet), pour l'atteindre, il faut double-cliquer sur 'My Project' dans l'explorateur de solution:

Une autre manire d'ouvrir le 'Projet Designer' est de passer par les menus 'Projet' puis 'Proprits de..' On retrouve dans le projet designer:

Le nom de l'application, son icne, la fentre de dmarrage, celle de fin. (Application) Les Option Strict, Explicit compare et la nouvelle Option Infer.(Compiler). Les rfrences (dll lies au projet).
- 63 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Les paramtres (valeurs lies l'application). Les ressources (texte, images, sons utilises dans le programme). La signature et la scurit. Les Extension My (nouveaut 2008). Les paramtres relatifs la publication (distribution et installation).

IV-A-2 - Interface WPF


Plutt que de travailler avec les Windows Forms (formulaire habituel utilisant GDI+); en VB 2008 on peut utiliser un mode graphique vectoriel extrmement performant pour dessiner les formulaires et contrles: pour cela on utilise les WFP (Windows Presentation Foundation). Pour cela: menu 'Fichier', 'Nouveau', 'Projet'.

On choisit 'Application WPF', on se retrouve dans un nouvel environnement:

- 64 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Les formulaires et contrles sont diffrents de ceux des Windows Forms, ainsi que les proprits des objets graphiques. Il y a le 'designer' en haut qui permet de dessiner l'interface que verra l'utilisateur. Le designer gnre un fichier XAML en bas qui dcrit en XML l'interface. Dans la version Express, on peut dessiner des interfaces simples, les interfaces extrmement labore (dgrad de couleur, animation...) peuvent tre crites en code XAML ou en utilisant un programme extrieur payant (Expression Blend). Voir le chapitre sir les WPF. Si on double-Clique sur un bouton, par exemple, on se retrouve dans la procdure vnement correspondante:

On se rend compte que les vnements l aussi ne sont pas les mmes que pour les WindowsForm.

Il y a aussi d'autres modifications comme dans les proprits du projet:

- 65 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Voir le chapitre sur les WPF.

IV-A-3 - Vb propose des aides


Quand on tape du code, VB affiche, des aides: Ds que je tape une lettre VB propose dans une liste des mots. Exemple, je tape 'd', il affiche 'Dim', 'Dir'..., de plus si je me mets sur un des mots, il ouvre une petite fentre d'explication sur le mot avec sa syntaxe.

VB permet de choisir dans une liste une des proprits d'un objet. Exemple: Je tape le nom d'un label nomm label1 puis je tape un point, cela me donne la liste des proprits du label.

- 66 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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.

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 AppActivate AppDomain

VB fournit des exemples de code. Les Extraits (Snippets, bride, morceau de code) permettent d'insrer du code tout fait. Dans le code d'une procdure, le click droit de la souris ouvre un menu.

- 67 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Cliquer sur 'Insrer un extrait' (Insert Snipper). Puis par menu successif vous obtiendrez le code que vous cherchez.

Vb propose des solutions pour corriger les erreurs de code: Si je veux afficher une valeur numrique (avec option Strict=On), il y a erreur, VB me propose la correction:

Il existe une abondante documentation:

Sur le Net: Msdn Framework 3.5 (http://msdn.microsoft.com/fr-fr/library/aa139616.aspx) Dans l'IDE, 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. Enfin il est toujours possible de rechercher des informations par le menu '?'

Erreur dans l'criture du code. 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.

- 68 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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. Vb propose des solutions pour corriger les erreurs de code. (Voir plus haut)

Mode dbogage (mode BREAK): Une fois lance l'excution (F5), puis stoppe (par Ctrl +Alt +Pause ou sur un point d'arrt), on peut: Voir la valeur d'une proprit d'un objet en le pointant 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 (Run To Cursor), voir la dfinition, la dclaration de ce qui est sous le curseur (Atteinte la dfinition:Go To Definition)...

Il y a un chapitre sur le dbogage pour apprendre trouver les erreurs de code.

- 69 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On peut grce au menu 'Affichage' on peut avoir accs plein de choses :

IV-B - IDE SharpDevelop (alternative gratuite) MJ version 2.1


C'est l'IDE (Integrated Development Environment): Environnement de dveloppement intgr GRATUIT, en OpenSource, alternative VisualStudio.

Depuis sa version 2 #develop est un trs bon produit et n'a rien envier Visual Studio. #Develop sera toujours gratuit. 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).

IV-B-1 - O le trouver ? Comment l'installer ?


Exemple de tlchargement SharpDevelop2 framework 2:

- 70 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Respecter l'ordre d'installation.


1 Tlcharger et installer le FrameWork. (Imprativement en premier). Installer Microsoft .NET version 2 package. C'est le Framework (la couche logiciel entre l'application et le systme), il est tlchargeable sur le Net sur le site Microsoft. Tlcharger le FrameWork puis l'installer. (Gratuit) Attention, changer la langue (French) avant le tlchargement.

Tlcharger et installer le SDK 2. C'est le Kit de Dveloppement Microsoft .NET Framework: SDK du Framework 2. En bas de la page prcdente ou par le lien suivant: Tlcharger le SDK (Gratuit) Attention, changer la langue (French). Tlcharger et installez SharpDevelop 2.1 (beta3 le 2/2/2007) Tlcharger SharpDevelop 2.1 (Gratuit) L'installer en excutant le fichier 'SharpDevelop_2.1.0.2201_Setup.exe'. Il est maintenant possible d'installer le Framework 3.5 et d'installer SharpDevelop 3. Configurer SharpDevelop Lancer Sharpdevelop 2.1

- 71 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Aller dans le menu 'Outils' - 'Options' La langue de l'utilisateur est 'French', si cela n'est pas le cas, modifier la langue.

Dans 'Style visuel' : Choisir VBNET dans la liste. 'Codage' : diter les en-ttes standard: VB.Net 'Codage' : Modle de code: extension '.vb 'Editeur de texte' : Surlignement, VB.net dans la liste de gauche. Le Framework, le SDK et #develop suffisent pour faire des programmes.

Lien Site SharpDevelop

IV-B-2 - Fentre Projet


Lancer SharpDevelop:

Au lancement de l'application, on peut :


Ouvrir une solution existante: Bouton 'Ouvrir une solution' (ou cliquer sur le nom d'un projet rcent en haut) Crer un nouveau projet (une nouvelle solution) .

Si l'on veut rajouter des fichiers notre projet faire : 'Fichier'-'Ouvrir'-'Fichier' et catgorie VB Dtaillons la cration d'un nouveau projet. Bouton 'Nouvelle solution' ou Menu 'fichier'-'Nouveau'-'Solution'

- 72 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.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++ du ILAsm un setup. 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' apparat. Si, comme dans notre exemple, on a tap 'Prog2', #develop cre une 'solution' nomme 'SolutionProg2'(ensemble, groupe de projets) contenant un projet (Prog2) contenant un formulaire nomm 'MainForm' L'cran principal se prsente ainsi:

- 73 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Au centre, sont visible les crans du code et des formulaires ; on peut changer d'cran grce aux onglets du haut. Ici on voit 'MainForm'. A gauche, les onglets du bas donnent accs au projet en cours (les solutions, projets, formulaires, autres fichiers: ressources, assembly..) ou aux outils : Table ascii, Presse papier et surtout (si on a un formulaire au centre et non du code) aux objets (bouton, texteBox, ListBox...) A droite, en bas, les classes et surtout la fentre de Proprits (Name, Text..) de l'objet slectionn au centre. En bas les fentres de 'sortie' (affichage de la console) liste des 'erreurs' des 'taches', dfinitions', 'Rsultat des recherches'..

IV-B-3 - Dans un nouveau projet, crer une fentre


Pour ajouter une fentre (un formulaire) ouvrir le gestionnaire de projet et solution (Onglets en bas gauche), il donne le nom de la solution (solutionprog2) et du projet (prog2 ici) Cliquer avec le bouton droit sur prog2 puis dans les menus sur 'Ajouter', 'Nouveau fichier'. Cela ouvre la fentre 'Nouveau fichier'.

- 74 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dans la fentre qui s'ouvre, gauche, choisir 'VB' puis 'Application Windows' , droite 'Formulaire' , taper un nom de formulaire (Form1 par exemple)puis 'Crer' , une fentre 'Form1' apparat. La premire fentre qui s'ouvre automatiquement quand on cre un projet se nomme 'MainForm'. La zone de travail se trouve au centre de l'cran: On voit les onglets MainForm, Form1.vb pour chaque formulaire (fentre)

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.

- 75 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

IV-B-4 - Ajouter des contrles au formulaire


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 :

IV-B-5 - Modifier les proprits d'un 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:(Si elles ne sont pas visibles, cliquer sur l'onglet 'Proprits' en bas ).
- 76 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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.)

IV-B-6 - Voir les procdures


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

La combo droutante de droite donne la liste des objets. Si on en choisit un, le pointeur va sur les procdures lies cet objet. Malheureusement, contrairement Visual Studio, la combo de gauche ne contient que les formulaires et pas les objets. Par exemple, on aura MainForm, mais pas Label1... Du coup la recherche se fait directement dans la combo de droite et c'est forcment beaucoup moins clair ds qu'il y a beaucoup de contrles sur un formulaire... 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 (ButtonClick par exemple),double-cliquez sur le bouton pour la crer.

- 77 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Pour crer les autres procdures vnements, utiliser le bouton qui est sur la fentre des proprits droite, il fait apparatre la liste des vnements, double-cliquant sur un vnement cela permet d'ouvrir la fentre de code et de crer les procdures.

IV-B-7 - Voir tous les composants d'un projet


Pour cela il faut utiliser La fentre Projet gauche (Si elles ne sont pas visibles, cliquer sur l'onglet 'Proprits' en bas), elles permettent de voir et d'avoir accs au contenu du projet: le gestionnaire de projet et solution donne le nom de la solution (solutionprog2) et du projet (prog2 ici) Cliquer sur les '+' pour dvelopper: vous verrez apparatre les formulaires, les modules.. et: Rfrences qui contient les espaces de nom. Assembly: info ncessaire pour gnrer le projet..

IV-B-8 - Remarque relative aux fentres de l'IDE


Pour faire apparatre une fentre qui a disparu (fentre projet par exemple) utiliser 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.

IV-B-9 - Tester son logiciel


On peut compiler le projet avec le premier bouton ci-dessous. Crer le projet avec le second. Lancer l'excution avec le bouton flche verte (dbogueur actif), le point d'exclamation lance l'excution sans dbogage, le rond droite (qui devient rouge pendant l'excution) sert terminer l'excution. La liste droutante permet de choisir la configuration des fentres de l'IDE: Dfaut: c'est les fentres habituelles prcdemment dcrites. Dbogage: ouvre les fentres: variables locales, points d'arrt, modules chargs.. Texte simple: uniquement les fentres centrales. Editer: ouvre la fentre Edit Layout? La sauvegarde du projet se fait comme dans tous les logiciels en cliquant sur l'icne du paquet de disquettes.

IV-B-10 - Fichiers, Chemins des sources


Avant, en #develop 1: .prjx est le fichier de projet. .cmbw est le fichier solution.

- 78 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Avec Sharpdevelop 2 c'est comme en VB: les solutions sont maintenant des fichiers .sln .vb sont tous les fichiers Visual Basic (Feuille module...) 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\Realese. Si vous avez plusieurs versions du framework sur votre machine (version 1.0, version 1.1 voire version 2.0 Bta), 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.

IV-B-11 - Proprits du projet


Menu 'Projet', 'Option du projet' permet l'accs aux proprits du projet en cours. Le quatrime onglet (Compiler) est le plus intressant:

On peut: Compiler le programme en mode 'Debug' ou 'Release'.


- 79 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Forcer le programmeur travailler en Option Strict= On ( empcher les conversions automatiques). Option Explicit=On (Forcer la dclaration des variables). Choisir le Framework avec lequel on travaille (1 ou 2, pas le trois encore). ... Dans l'onglet Import, on peut importer des espaces de noms.

IV-B-12 - #Develop propose des AIDES


La fentre d'aide droite donne accs des 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 l'aide (partie en haut droite de l'cran) , et donc galement l'intellisense, 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.

IV-B-13 - Erreur de compilation


Si on fait une faute dans le code, elle est dtecte lorsque l'on lance l'excution. Ici on a tap 'Texte' la place de 'Text'. La ligne en cause est souligne en rouge et la fentre des erreurs situe en bas s'ouvre, elle indique et dcrit l'erreur:.

- 80 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

L'aide dynamique droite propose des liens en rapport avec le contexte.

IV-B-14 - Erreur d'excution : Exceptions


Si il y a une erreur d'excution (division par zro par exemple), l'excution s'arrte et la fentre d'exception s'ouvre:

On peut choisir d'arrter le programme, de continuer, d'ignorer.

IV-B-15 - Dbogage
Le debogueur est maintenant intgr dans la version 2. Une fois l'excution lance, on peut: Suspendre l'excution par ALT+CTRL+B , reprendre par F6 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 et une ligne rouge. Quand le code est excut, il s'arrte sur cette ligne).

(Recliquer sur le rond pour l'enlever). Ajouter des marques pages. On peut ajouter des marques pages, en cliquant (quand on est sur la ligne marquer) sur le petit carr bleu de la barre d'outils: Ensuite, on peut se dplacer de marque en marque avec les 2 boutons qui suivent. En mode 'Run', si on clique sur l'onglet 'Points d'arrt' droite, on voit la liste des points d'arrt et des marques; on peut rendre inactif tous les points d'arrt (3eme bouton) ou un seul en le dcochant dans la liste.

- 81 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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

En plus en mode Run , la fentre 'Variables locales' situe en bas affiche la valeur de toutes les variables de la procdure. (Y compris 'e' et 'sender' qui sont les paramtres de la Sub) Enfin droite on peut voir les modules chargs et les threads. Excution pas pas: 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. On peut aussi utiliser les boutons : Attention, il n'est pas possible de modifier les fichiers sources partir du moment o vous avez dmarr le dbogage. Fonctions prsentes dans #develop 1 mais pour l'instant absente dans #develop 2: C++ NProf Wix NAnt, gnrateur de MessageBox. Crer un installateur (en anglais).

IV-B-16 - Conclusion
Programme permettant de faire du VB.net gratuitement (rapport qualit/prix infiniment lev). CONCLUSION D'UN UTILISATEUR:
- 82 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

SharpDevelop est un IDE agrable utiliser, pour le dveloppement des programmes .NET, en mode WYSIWYG. Il est possible d'atteindre 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 SharpDevelop possde. En plus vous pouvez rcuprer le code source et pouvez donc modifier loisir l'IDE. Bien sur, pour les dbutants, il manque les assistants de Visual Studio (Crystal report, ADO .NET, ). Le problme avec les assistants est qu'une fois qu'on pratique un peu, ils deviennent vite un gne, et souvent, il faut repasser derrire eux, pour enlever le superflu de code qu'ils ont crit (souvent ils n'optimisent 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 d'expression rgulire.

Il fournit les logiciels :


NDoc : permet de faire des fichiers d'aide 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 .

IV-B-17 - J'ai besoin d'aide


Comment crer facilement un installateur (SetUp) avec #develop? Certains utilisateurs utilisent Inno Setup. Comment utiliser NDoc NUnits? Comment utiliser simplement des ressources? Comment utiliser des bases de donnes? Qui utilise le menu 'Outils' et ses diffrentes options? Merci Fabrice SAGE pour son aide. Merci Hubert WENNEKES, CNRS Institut de Biologie de Lille pour son aide. Remarque pour les forts: On peut s'tonner qu'il n'y aie pas Handles Button1.Click la fin de la ligne suivante (comme dans VB 2005)
Sub Button1Click(ByVal sender As Object, ByVal e As EventArgs) End Sub

- 83 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

En fait si on va voir dans InitializeComponent, il y a un AddHandler aprs la description du bouton.


Private Sub InitializeComponent() ... AddHandler Me.button1.Click, AddressOf Me.Button1Click

- 84 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V - Langage Visual Basic V-A - Introduction

Nous allons tudier : Le langage Visual Basic.Net qui est utilis dans les procdures.

Comme nous l'avons vu, le langage Visual Basic sert


Agir sur l'interface (Afficher un texte, ouvrir une fentre, remplir une liste, un tableau, poser une question). Exemple afficher 'Bonjour" dans un label:
Label1.Text="Bonjour"

Effectuer des calculs, des affectations en utilisant des variables. Exemple: Mettre dans la variable B la valeur de A+1
B=A+1

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

Travailler en boucle pour effectuer une tache rptitive. Exemple faire 100 fois..
For I=0 To 100... Next I

Tout le travail du programmeur est l. Dans VB.Net nous avons notre disposition 2 sortes de choses:

V-A-1 - Les Classes du framework


Le Framework (un framework est un ensemble de Classes) en est sa version 3.5. VB les utilise. Les classes du Framework permettront de crer des objets de toutes sortes: objet chane de caractres, objet image, objet fichier.... On travaille sur ses objets en utilisant leurs proprits, leurs mthodes. Il existe des milliers de 'Classes': les plus utilises sont les classes String (permettant de travailler sur des chanes de caractres), Math (permettant d'utiliser des fonctions mathmatiques), Forms (permettant l'usage de formulaire, de fentre et donnant accs aux contrles: bouton, case cocher, liste..) Elles sont communes tous les langages utilisant le FrameWork (VB, C#, C....) Ces Classes ont de multiples mthodes (rappel de la syntaxe: Classe.Methode).

- 85 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple d'utilisation de la Class TextBox (contrle contenant du texte) et de sa mthode Text:


TextBox1.Text="Hello"

'Affiche "Hello" dans le Textbox.

Parfois la Classe n'est pas charge par dfaut au dmarrage de VB, il faut dans ce cas 'l'importer' en haut du module. Si par exemple, je veux utiliser les proprits de la classe Math, il faut crire en haut du module:
Imports System.Math

V-A-2 - Les instructions de Microsoft.VisualBasic


Vb permet d'utiliser des instructions Visual Basic; seul VB peut les utiliser et de lui seul (pas C#). Il s'agit d'instructions, de mots cl qui ont une syntaxe similaire au basic mais qui sont du VB.Net. Exemple:
A = Mid(MaString, 1, 3)

'Mid retourne une partie de la chane de caractres. Il y a aussi 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 et mulent les fonctions VB6 qui ont disparues de VB.Net. Ce sont des fonctions VB6 qu'on ajoute VB.net par soucis de compatibilit, mais ce n'est pas du VB.Net. Il faut les oublier!! L'outils d'import automatique de VB6 vers VB.Net en met beaucoup dans le code. Il faut mon avis viter de les utiliser car ce n'est pas vraiment du VB. Ce cours 'pur' VB.Net n'en contient pas. Pour le moment cela peut paratre un peu compliqu, mais ne vous inquitez pas, cela va devenir clair.

V-A-3 - Saisir, Afficher


Dans l'tude du langage VB, on s'occupe du code, on ne s'occupe pas de l'interface (les fentres, les boutons, l'affichage du texte...), mais parfois, on a besoin, pour faire fonctionner des exemples, de saisir des valeurs, de les afficher: Saisir une valeur, pour cela on utilise une InputBox, c'est une boite qui s'ouvre, l'utilisateur y tape un texte puis il clique sur 'ok'; on retrouve ce qu'il a tap dans la variable Rponse.

Rponse= InputBox()

- 86 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Afficher des rsultats, pour le moment on affichera du texte de la manire suivante:

dans une fentre, dans des TextBox:


TextBox1.Text="TextBox1"

ou un label:
Label1.Text="Rsultat"

ou sur la console:
Consol.Out.WriteLine ("Rsultat")

ou dans une Boite de message:


MsgBox("Bonjour")

- 87 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-B - Les 'Algorithmes'


Ici nous allons tudiez les principes gnraux de la programmation, ils sont valables pour tous les langages de programmation. Ici il faut simplement comprendre le principe de ce qui est expliqu.

V-B-1 - Pour crire un programme 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 professionnels (MERISE, JACKSON..), nous utiliserons plutt l'analyse procdurale: 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 nouvelles fonctions un niveau plus bas. Cela s'appelle la 'Conception structure descendante'. La 'Conception ascendante' existe aussi: en assemblant des fonctions prexistantes, on rsout le problme: attention, il faut que les fonctions prexistantes soient cohrentes. (Pour le moment on ne fait pas de programmation objet) 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 faut 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

- 88 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Pour i allant de 1 10 Ecrire (i*7) Fin Pour

Codage. Traduction du pseudo code en Visual Basic, en respectant la syntaxe du VB.


Sub MultiplicationPar7 Dim i As Integer For i=1 to 10 Call Affiche(i*7) next i.

Fin

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

End Sub

Pour des programmes complexes, il existe d'autres mthodes.

V-B-2 - Dfinition de l'algorithme Un problme est traitable par informatique si :


on peut parfaitement dfinir les donnes (entres) et les rsultats (sorties), on peut dcomposer le passage de ces donnes vers ces rsultats en une suite d'oprations lmentaires excutables.

L'algorithme dtaille, en pseudo code, le fonctionnement de ce passage et en dcrit la logique. L'algorithme est une succession de tests, dcisions et actions dans le but de dcrire le comportement d'une entit (objet, programme, personne). Dfinition du Dicodunet. On crit bien 'algorithme' et non 'algorythme'. Etudions cette logique valable pour tous les langages de programmation (ceux qui sont des langages impratifs):

Pour reprsenter n'importe quel algorithme, il faut disposer des trois possibilits suivantes:
la squence qui indique que les oprations doivent tre excutes les unes aprs les autres.

le choix qui indique quelles instructions doivent tre excutes en fonction de circonstances.

- 89 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

la rptition qui indique que des instructions doivent tre excutes plusieurs fois.

Exemple d'algorithme principalement compos d'une rptition:


Pour i allant de 1 10 Ecrire (i*7) Fin Pour

Voyons cela en dtails:

V-B-3 - Principes gnraux


Le langage algorithmique et son pseudo-code ne sont pas vraiment standardiss, chacun crit le pseudo--code sa manire, aussi vous verrez des notations diffrentes dans les divers cours d'algorithme. Cela n'a pas d'importance car un programme en pseudo-code ne sera jamais excut sur une machine. L'intrt de d'tude des algorithmes est didactique: elle permet de comprendre la logique d'un programme totalement indpendamment du langage: ce qui suit est valable en C++, Delphi, Java, Visual Basic, Assembleur... Comme on est dans un cours de VisualBasic, je donnerais pour chaque notion le pseudo-code mais aussi l'quivalent en Visual Basic.

V-B-3-a - Squences
Au sein d'un programme, la structure est gnralement squentielle.

On fait de la programmation imprative, on travaille sur le modle de la machine de Turing, avec une mmoire centrale et des instructions qui modifient son tat grce des assignations successives. Le code est fait d'une succession de lignes (ou instructions) qui seront lues et traites les unes aprs les autres.

- 90 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Instruction 1 Instruction 2 Instruction 3 .. Quand le programme s'excute, il le fait de haut en bas, Instruction 1 sera excut puis instruction 2 puis instruction 3... En VB on peut mettre plusieurs instructions sur la mme ligne spares par ":" Instruction1 : Instruction2

V-B-3-b - Les variables, leur 'Type'


Elles contiennent les informations les donnes ncessaires au droulement du programme (C'est le mme sens qu'en mathmatique, la diffrence qu'en informatique une variable ne contient qu'une valeur). 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: Un type indique: -La nature de l'information (un chiffre? du texte?) - Les valeurs que peut prendre la variable (un entier, un rel..). - Les oprations possibles (addition, concatnation..) Exemple: le Type 'Entier' (Integer en VB) peut contenir une valeur entire, positive ou ngative, les oprations possibles sont l'addition, la soustraction, la multiplication...Ainsi si je cre une variable de type Entier, je sais que je ne pourrais y mettre qu'un entier et que je pourrais faire une addition avec; je ne pourrais pas y mettre de caractres.

Les types disponibles sont: Type numrique: 'Entier', 'rel'.. (Integer, Single en VB) Exemple d'un entier: 123 Type alphanumrique: 'Caractre' (Char en VB) contient 1 caractre Exemple d'un caractre: 'a' (avec des guillemets) 'Chane de caractres',(String en VB), contient plusieurs caractres. Exemple: 'toto' (avec des guillemets) Boolen (Boolean en VB) ne peut contenir que 'Vrai' ou 'Faux' Objet. (Object en VB) Montaire (Dcimal en VB)
- 91 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Date (Date en VB) A partir des types prcdents on peut crer des types complexes (ou structurs): -Les Tableaux (Array) qui contiennent plusieurs lments. -Les Collections qui contiennent plusieurs lments aussi.

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

on remarque qu'il ne faut pas confondre 1 qui est une valeur numrique( sans guillemets) et "1" qui est le caractre '1' (avec des guillemets).

Utilisation des variables: Les variables numriques serviront faire des calculs: Les variables alphanumriques (String et Char du VB) serviront entre autres manipuler et afficher du texte:

Comment afficher les rsultats de calcul? On apprendra transformer des variables numriques en variables alphanumriques.

Pour utiliser une variable, il faut qu'elle existe, il faut donc la crer, on dit il faut la dclarer: Dans un algorithme: 'Variable A en Numrique' 'cre une variable nomme A et de Type Numrique. En VB: 'Dim A As Integer' 'cre une variable nomme A et de Type Integer.

On peut aussi initialiser une variable c'est dire dfinir sa valeur initiale. Pour cela on peut utiliser un littral: c'est une donne utilise directement. X <- 2 veut dire: donner la variable X la valeur 2 ( 2 est une littral).

V-B-3-c - Les constantes


Comme une variable, une Constante a un Nom (identifiant) et un Type. Elle contient une valeur: un nombre, une chane de caractres.. Son contenu ne peut pas tre modifi. Exemple :'Constante A en Numrique =12' En VB: 'Const A As Integer =12'
- 92 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On la dclare et on l'initialise en mme temps. Ensuite on ne peut pas modifier sa valeur, on ne peut que la lire. Les constantes sont utilises dans les programmes pour conserver des valeurs fixes qui n'ont pas changer. Si j'ai un programme d'astronomie, je crerais une constante contenant la vitesse de la lumire pour faire mes calculs (elle a peut de chance de changer!!).

V-B-3-d - 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 ( 2 est une littral) Z <- X veut dire: donner la variable Z la valeur de la variable X . Z <- X+1 veut dire: donner la variable Z la valeur de la variable X laquelle on ajoute 1 (Z prendra la valeur 2+1 =3). 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 le signe '=' utiliser en VB est ambige et n'a donc pas le mme sens qu'en mathmatique. Exemple Visual Basic: A=B

Attention ce n'est pas une galit mais une affectation. L'affectation ne marche que si le type de variable est le mme: Variable A en Numrique Variable B en Numrique B<-12 A<-B 'fonctionne car B contient 12, on met 12 dans A

Variable A en Numrique Variable B en Alphanumrique

- 93 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

B<-'toto' A<-B 'ne fonctionne pas car on tente de mettre le contenu de B qui est alphanumrique dans une variable numrique.

L'affectation sert effectuer des calculs: Variable A en Numrique A<-3+4-2 'L'expression droite est value et son rsultat est affect la variable A. Ici les + - sont des oprateurs; il y en a d'autres: * (multiplier) / (diviser)....

V-B-3-e - Boolens
On a parfois besoin de savoir si une assertion est vraie ou Fausse.(True ou False) Pour stocker une information de ce type, on utilise une variable de type boolen. Une variable de ce type ne peut contenir que True ou False. Le terme boolen vient de "l'algbre de Boole", cette algbre ne travaille que sur les valeurs 1 ou 0 (True ou False) Soit B une variable boolenne: On peut crire B<-True (B=True en VB) On peut aussi tester cette variable: Si B=False alors (If B=False Then.. en VB) L'expression aprs 'Si' est value, si elle est vraie 'alors' se produit.

Autre exemple: Si C=2 alors.. (If C=2 Then ..en VB) L'expression C=2 est value, si C est effectivement gal 2, C=2 est valu et prend la valeur True; dans ce cas le programme se poursuit aprs Then. si C est diffrent de 2, C=2 est valu et prend la valeur False; dans ce cas le programme ne se poursuit pas aprs Then.

V-B-3-f - Les choix : Si..Alors


Le programme doit pouvoir choisir parmi deux ou plusieurs possibilits en fonction d'une condition :

- 94 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Si Condition Alors Action 1 Sinon Action 2 Fin Si

Si Condition est vraie Action 1 est effectue, sinon Action 2 est effectu. Parfois il n'y 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 effectue si la Condition 1 est remplie et la Condition 2 n'est pas remplie. En VB cela correspond l'instruction IF THEN

- 95 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

If Condition 1 Then Action 1 Else Action 2 End If

Remarque sur les conditions Une condition contient 2 valeurs et un oprateur: Si C>2 Alors est correcte. Si B=3 Alors est correcte. Si 2<B<7 Alors est incorrecte car il y a 2 oprateurs, il faut dans ce cas utiliser plusieurs conditions et des oprateurs logiques: Si B>2 Et B<7 Alors est correct (If B>2 And B<7 Then en Visual Basic) La condition est value: Exemple : Soit l'expression Si C>2 Alors , elle sera value; si C contient 3, C>2 est vrifi donc Vrai. Exemple: Trouver le plus grand nombre entre x et y et le mettre dans max
Variable x en Numerique Variable y en Numerique Variable max en Numerique Si x>y Alors max<-x Sinon Max<-y Fin Si

En VB
Dim x As Integer Dim y As Integer DIm max As Integer if x>y Then max=x Else max=y

- 96 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

End if

V-B-3-g - Les choix : Dcider entre


Il est parfois ncessaire d'effectuer un choix parmi plusieurs solutions :

Dcider Entre Quand Condition 1 Alors 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 n'est pas remplie, on teste la condition 2.. Si aucune condition n'est 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

- 97 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre .. 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...

V-B-3-h - Les rptitions : Pour...Rpter


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 effectue, puis I prend la valeur 1, Action est effectue, 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.
- 98 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Intrts? 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. Une instruction Sortir permet de sortir prmaturment de la boucle. En VB
For i=0 To N .. Next i

L'instruction Exit For permet de sortir prmaturment de la boucle. On peut aussi boucler en parcourant tous les lments d'une collection. (Une collection est une liste d'objets, 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 lment In list

Next - 99 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-B-3-i - Les rptitions : Tant que


Permet de faire une boucle sans connatre le nombre d'itrations l'avance.

Tant Que Condition Action Fin Tant Que

L'action qui est dans la boucle doit modifier la condition afin qu' un moment 'Tant que' ne soit pas vrifi et que l'on 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 : Do Action Loop Until Condition

Une instruction Exit Do permet de sortir prmaturment de la boucle.

- 100 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-B-3-j - Logique : Et, Ou, Non


Une condition contient 2 valeurs et un oprateur: Si C>2 Alors.. est correcte. Si B=3 Alors est correcte. Si 2<B<7 Alors est incorrecte car il y a 2 oprateurs, il faut dans ce cas utiliser plusieurs conditions et des oprateurs logiques: Si B>2 Et B<7 Alors est correct (If B>2 And B<7 Then en Visual Basic) La condition est value: Exemple : Soit l'expression Si C>2 Alors , elle sera value; si C contient 3, C>2 est vrifi donc Vrai. ET: On a vu Si B>2 Et B<7 Alors Il existe aussi: OU: Si B>2 Ou B<7 Alors Et NON: Si NON(B>2) Alors est quivalent Si B<=2 Alors En VB on utilise les termes AND OR NOT.

V-B-3-k - Les Sauts


Un saut dans le code correspond 'Aller '. Cela permet de 'sauter' vers un label (une tiquette= un endroit du code). Exemple:
Variable A en Numrique Variable B en Numrique Variable C en Numrique B<-12 A<-B Aller Poursuivre

- 101 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre C=11 tiquette Poursuivre A<-A+1

Le programme saute de 'Aller Poursuivre' 'tiquette Poursuivre', il n'excute pas C=11. En VB on utilise GoTo pour faire le saut, pour crer une tiquette, on lui donne un nom et on ajoute ':'..
MonEtiquette: GoTo monetiquette

V-B-3-l - Programmation structure


Avant on crivait:
Variable A en Numrique Variable B en Numrique Variable C en Numrique B<-12 A<-B Si A=B Aller Poursuivre1 C<-1 tiquette Poursuivre1 Si A<>B Aller Poursuivre2 C<-2 tiquette Poursuivre2

On faisait des sauts dans tous les sens!! Code illisible, non structur. Maintenant on structure et on n'utilise pas de 'Aller '.
Variable A en Numrique Variable B en Numrique Variable C en Numrique B<-12 A<-B Si A=B Alors C<-1 Sinon C<-2 Fin Si

V-B-3-m - Structuration : '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 l'appel.
- 102 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dans un algorithme, une procdure commence par le mot Proc et se termine par End Proc.

Le programme effectuera les instructions 1, 2, 3, 10, 11, 4, 5. Une opration complexe peut tre dcoupe en plusieurs procdures ou sous-programmes plus petits et plus simples qui seront appels. Chaque procdure rsout un problme. Et VB les sous-programmes (ou procdures) sont des Sub ou des Function. Pour appeler une procdure on utilise Call NomProcedure() ou NomProcedure() On peut fournir aux procdures des paramtres, ce sont des variables qui seront transmises 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 d'envoyer des paramtres : - Par valeur : (By Val)c'est la valeur, le contenu de la variable qui est envoy. - Par rfrence :(By Ref) c'est l'adresse (le lieu physique o se trouve la variable) qui est envoye. 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() .. Return Valeur End Function - 103 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

As Integer

'MaFonction qui retourne un entier

Cours VB.NET par Philippe Lasserre

Pour appeler la fonction: ValeurRetourne=MaFonction() Donc ValeurRetourne est aussi un entier Exemple de fonction: crer une fonction qui retourne le plus petit nombre:
Fonction Minimum (x en Numerique, y en Numrique) en numrique Si x<y Alors Retourner x Sinon Retourner y Fin Si Fin Fonction

Pour l'utiliser:
Variable Min en Numerique Min<-Minimum (5,7) 'Appelle la fonction en donnant les 2 paramtres 5 et 7.

Min contient maintenant 5 En Vb


Function Minimum(x As Integer, y As Integer) As Integer If x<y Then Return x Else Return y End If End Function

Pour l'utiliser:
Dim Min As Integer Min= Minimum (5,7)

La fonction rsout un problme et plus prcisment partir de donnes, calcule et fournit un rsultat.

V-B-3-n - 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.
- 104 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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. On remarque que le premier lment est l'lment d'index 0 (ZERO). L'lment d'index 1 se nomme A[1] et contient la valeur 12. Quand on cre un tableau, il a un nombre d'lments bien dfini: 4 dans notre exemple d'index 0 3. Pour donner une valeur 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
Dim A(4) As Integer 'on dclare le tableau A(2)=4 x = A(2)

Pour parcourir tous les lments d'un tableau on utilise une boucle: Exemple: afficher tous les lments du tableau tab qui contient n lments.
dbut

fin

Pour i allant de 0 n-1 Rpter crire(tab[i]) Fin Rpter

En VB:
For i=0 to n-1 Affiche ( tab(i)) Next i 'routine d'affichage

Il existe des tableaux multidimensionnels avec plusieurs index:


- 105 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Voyons les index de chaque lment: B(0,0) B(1,0) B(1,2) B(0,1) B(1,1) B(2,1) B(0,2) B(1,2) B(2,2)

B[1,0] dsigne l'lment de la seconde ligne, premire colonne. Voyons par exemple, le contenu de chaque lment: 3 18 12 Ici B[1,0] =18 En VB on utilise des parenthses: B(1,0) =18 12 4 2 0 5 8

V-B-3-o - Notion de 'Collection'


Une collection permet de stocker plusieurs variables ou objets, chaque lment tant repr par un index ou indice. Mais la collection n'a pas de nombre d'lments prcis au dpart, elle ne contient que les lments qu'on y ajoute. Soit la collection Col, au dpart elle est vide. J'ajoute des lments (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.

- 106 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On voit que le nombre d'lments 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

Il existe des collections avec des cls permettant de retrouver la valeur d'un lment rapidement.

V-B-3-p - Notion de Pile et de Queue


Une Pile (ou stack) est une collection de type LIFO (Last In, First Out). Dernier entr, premier sortie. 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.

Une 'Queue' est une collection de type FIFO (First In, First Out). Premier arriv premier servi. C'est la queue devant un cinma, le premier arriv, prend son billet le premier. Les lments stocks dans Queue sont insrs une extrmit; les lments extrait le sont l'autre extremit.

Le nombre d'lment de la queue est gr automatiquement. Gnralement on a les possibilits suivantes:


- 107 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

DeQueue supprime et retourne l'objet de dbut de liste EnQueue ajoute un objet en fin de liste Peek retourne l'objet de dbut sans le supprimer

V-B-3-q - Liste Chane


Une liste chane est une liste d'lments non classe. Dans chaque enregistrement il y a, outre le contenu de l'enregistrement, la localisation, l'adresse, l'index de l'enregistrement prcdent et de l'enregistrement suivant.

Ainsi on peut parcourir la liste en allant d'enregistrement en enregistrement. il existe des algorithmes pour ajouter ou supprimer un enregistrement. La liste peut tre ouverte ou ferme (le dernier enregistrement bouclant sur le premier).

V-B-3-r - Notion de Cl
Quand on classe une srie importante de donnes, on peut utiliser la notion de cl/Valeur (Key/Value). Ici on utilise comme cl le numro du dpartement et comme valeur, le nom du dpartement.

Si on a la cl, on peut retrouver la valeur correspondante. Autre exemple: La cl peut tre le nom, prnom.

V-B-3-s - Notion de Hachage


Une fonction de hachage est une fonction qui fait subir une succession de traitements une donne fournie en entre pour en produire une empreinte servant identifier la donne initiale. Donne d'entre=> Fonction de hachage => Empreinte.

- 108 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Le rsultat d'une fonction de hachage peut tre appel selon le contexte empreinte, somme de contrle (dans le cas de la CRC), rsum, condens, condensat ou encore empreinte cryptographique (dans le cadre de la cryptographique). On l'appelait aussi autrefois aussi signature. Les fonctions de hachage sont utiles en cryptographie o elles sont utilises pour chiffrer une donne initiale. Mot de passe: "GftUi6h77"=> Fonction de hachage => Empreinte: "4587213399545684246847" C'est l'empreinte qui va tre enregistre. Quant l'utilisateur rentre le mot de passe, on le 'hache" et on compare l'empreinte du mot de passe tap par l'utilisateur avec l'empreinte enregistre pour voir si le mot tap est bon. Ainsi a aucun moment le mot de passe est en clair.

Ces fonctions de hachage sont aussi trs utilises pour accder rapidement une donne contenue dans un grand nombre de donnes. Ceci grce aux tables de hachage (ou hash tables en anglais). Un exemple classique et simpliste de fonction de hachage est la fonction modulo n : Si on dispose d'un grand nombre de donnes, mettre dans un tableau de n cases, on pourra ranger l'lment numro i dans la case i modulo n. Ainsi, pour aller chercher notre donne, nous n'avons plus besoin de parcourir tous les lments jusqu' trouver l'lment i : Il suffit de parcourir les lments contenus dans la case i modulo n. Si les donnes initiales taient rparties uniformment, le temps de recherche en moyenne est divis par n. En pratique, on utilise des fonctions de hachage bien plus complexes. Le hachage est un nombre qui permet la localisation des lments dans une table.

Exemple: Nous avons une srie de noms et adresses, nous voulons rapidement trouver l'adresse correspondant un nom sans avoir faire une boucle qui compare le nom cherch avec chaque lment du tableau pour le trouver. Pour chaque nom la fonction de hachage, va crer un numro (empreinte).

On cre des enregistrements indexs par le dit numro (empreinte), chaque enregistrement contenant l'adresse.

- 109 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Si maintenant on cherche un nom, on calcul son empreinte, ce qui nous donne l'index de l'enregistrement que l'on trouve rapidement.

Si la fonction de hachage est uniforme, cela veut dire que pour des entres diffrentes, il n'y a jamais la mme empreinte. Ce qui est la plupart du temps impossible. Deux noms peuvent donc donner la mme empreinte parfois (on parle de collision). Dans ce cas, on range les enregistrements ayant la mme empreinte les uns la suite des autres (sous forme de liste chane). Si le premier enregistrement n'est pas le bon, on regarde le suivant.

V-B-3-t - Erreur d'excution : Notion de 'Scurisation' du code


Des instructions doivent protger certaines parties du code afin d'viter d'effectuer des oprations incohrentes. Si l'utilisateur entre 2 nombres X et Y et qu'une instruction excute Z<=X/Y , alors que Y=0 ,la division par 0 n'existant, le logiciel 'plante': Il s'arrte et donne un code d'erreur( du genre 'Erreur division par 0 interdite') Il s'agit d'une 'Erreur d'excution'. En VB on dit 'lever une exception'. Il appartient au programmeur, une fois l'algorithme crit, de le scuriser: Des instructions doivent protger certaines parties du code afin d'viter d'effectuer des oprations incohrentes. On ajoute donc un choix: si Y est diffrent de 0 alors on effectue la division.
Si Y<>0 Alors Z<=X/Y Sinon ... Fin Si

- 110 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-B-3-u - Flag et variables d'tat


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. On peut gnraliser cette notion en parlant de variable d'tat. Une variable d'tat sert dcrire l'tat du programme. Exemple: fileIsOpen est une variable indiquant si un fichier est ouvert ou ferm.

V-B-3-v - Compilation, interprtation


Le texte que vous crivez pour construire une programme est le code source. Tout langage doit obligatoirement tre traduit en langage machine (le langage du processeur) pour que ce programme soit excutable. Il existe deux stratgies de traduction:. -le programme traduit les instructions au fur et mesure qu'elles se prsentent ( la vole)au cours de l'excution. Cela s'appelle l'interprtation. -le programme commence par traduire l'ensemble du programme (programme source) en langage machine, constituant ainsi un deuxime programme (un deuxime fichier) distinct physiquement et logiquement du premier,

- 111 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

c'est le fichier excutable. Cela s'appelle la compilation. Ensuite, pour excuter le programme, on excute l'excutable, ce second programme. Les premiers langages Basic taient interprts. Un langage interprt tait plus maniable: on excutait directement son code au fur et mesure qu'on le tapait, sans passer chaque fois par l'tape supplmentaire de la compilation. Un programme compil s'excute beaucoup plus rapidement qu'un programme interprt : le gain est couramment d'un facteur 10, voire 20 ou plus Le VB.Net est un langage compil. Le code source est dans des fichiers '.vb' et l'excutable est un '.exe'. On verra que dans l'environnement de dveloppement vb prsente les avantages d'un langage interprt (excution pas pas, modification du source en cours de dbogage...) On peut aussi crer une excutable autonome. Les choses sont plus complexes car en vb , entre le source et l'excutable il y a un code 'intermdiaire'.

V-B-4 - Quelques algorithmes V-B-4-a - Recherche dans un tableau


Soit un tableau A() de 4 lments: 3 12 4 0 Je veux parcourir le tableau pour savoir s'il contient le chiffre '4'. Il faut faire une itration afin de balayer le tableau: la variable dite de boucle ( I ) va prendre successivement les valeurs: 0 ,1 ,2 ,3. (Attention: dans un tableau de 4 lments, l'index des lments est 0,1,2,3)
Pour I variant de 0 3 Rpter .. FinRpter

Dans la boucle il faut tester si la valeur de l'lment du tableau est bien la valeur cherche.
Pour I variant de 0 3 Rpter Si A(I)= 4 Alors.. FinRpter

Si on a trouv la bonne valeur, on met un flag (drapeau) Vrai.


flagTrouv<-Faux Pour I variant de 0 3 Rpter Si A(I)= 4 Alors flagTrouv<-Vrai - 112 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

FinRpter

Ainsi si aprs la boucle flagTrouv= Vrai, cela veut dire que le chiffre 4 est dans le tableau. En VB
flagTrouve=False For I=0 To 4 If A(I)=4 Then flagTrouve=True Next I

V-B-4-b - Tri de tableau


Pour trier un tableau de chanes de caractres (des prnoms par exemple), il faut comparer 2 chanes contigus, si la premire est suprieure (c'est dire aprs l'autre sur le plan alphabtique: "Bruno" est suprieur "Alice"))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. Tableau non tri: Bruno Alice Agathe On compare les lignes 1 et 2, on inverse Alice Bruno Agathe On compare les lignes 2 et 3, on inverse Alice Agathe Bruno Le tableau n'tant pas encore tri, on recommence: On compare les lignes 1 et 2, on inverse Alice Agathe Bruno On compare les lignes 2 et 3, on n'inverse pas. Le tableau est tri. Tout l'art des routines de tri est de faire le moins de comparaisons possibles pour trier le plus vite possible.

- 113 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On a utilis ici le Bubble Sort (ou tri bulle); on le nomme ainsi car l'lment plus grand remonte progressivement au fur et mesure jusqu'au dbut du tableau comme une bulle. ("Agathe" est pass de la troisime la seconde puis la premire position). Une boucle externe allant de 1 la fin du tableau balaye le tableau N fois ( La boucle varie de 0 N-1), une seconde boucle interne balaye aussi le tableau et compare 2 lments contigus (les lments d'index j et j+1)et les inverse si ncessaire. La boucle interne fait remonter 1 lment vers le dbut du tableau, la boucle externe le fait N fois pour remonter tous les lments.
Pour i allant de 0 N-1 Pour j allant de 0 N-1 Si T(j)>T(j+1) Alors Temp<-T(j) T(j)<-T(j+1) T(j+1)<-Temp Fin Si Fin Pour Fin Pour

En Visual Basic:
Dim i, j , N Dim Temp N=4 As Integer 'Variable de boucle i, j ; N= nombre d'lments-1

As String

'tableau de 5 lments. 'lment de 0 4

Dim T(N) As String For i=0 To N-1 For j=0 To N-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

Remarque: pour inverser le contenu 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) Cet algorithme de tri peut tre optimis, on verra cela plus loin. Les algorithmes s'occupent aussi de dcrire la manire de rechercher des donnes dans des tableaux, de compresser des donnes... Nous verrons cela au fur et mesure.

- 114 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-B-5 - Lexique anglais=>Franais


If = Si. Then= Alors Step=Pas Do (To)= faire While= tant que Until= Jusqu' ce que. Loop= boucle

V-C - L'affectation

C'est l'instruction la plus utilise en programmation. On peut aussi utiliser le terme 'Assignation' la place de l'affectation. 'Variable = Expression' est une affectation, c'est le signe '=' qui indique l'affectation. L'affectation 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 (B n'est pas modifi). Si ncessaire l'expression droite du signe = est value, calcule avant d'tre affecte la variable de gauche.

- 115 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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

L'affectation permet donc de faire des calculs : Si nombrdHeure=100 et tauxHoraire=8 paye= nombredHeure * tauxhoraire paye prend la valeur 800 (notez que '*' , l'toile veut dire : multiplication.) 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 que 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.

Ecriture compacte: A=A+1 peut s'crire de manire plus compacte : A += 1 A=A*2 peut s'crire de manire plus compacte : A *= 2 A=A&"Lulu" pour une variable chane de caractre peut s'crire de manire plus compacte : A &= "Lulu"

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

- 116 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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 A 1 1 2 2 B 2 2 2 1 C 0 1 1 1

Dpart C=A A=B B=C Voila, on a bien permut.

V-D - Les variables : gnralits

C'est le mme sens qu'en mathmatique. Une variable sert stocker un nombre, du texte (chane de caractres), une date, un objet.. Une variable a un nom et un type qui indique ce que l'on peut y mettre.
- 117 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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

myString="TOTO" Si age est une autre variable de type numrique, je peux y stocker un nombre (45,2 par exemple). age=45,2

V-D-1 - Nom des variables


On peut utiliser dans les noms de variable des majuscules ou des minuscules mais pour VB il n'y 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 n'est pas un nom valide Nom2 l'est. 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 tre une variable String.
- 118 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

De mme % force les Integer, & les long.. Cette notation est moins utilise et non recommande. Voir en annexe, en bas de page des recommandations supplmentaires.

Majuscules ++++: On conseille, quand le nom d'une variable est compos de plusieurs mots, de mettre la premire lettre de chaque mot en majuscule, sauf pour le premier mot. Exemple: nom_Utilisateur

V-D-2 - Dclaration, initialisation


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 nomme 'a' de type Entier

Avant la ligne, a n'existait pas, aprs le DIM, a existe et contient 0. L'instruction Dim cre la variable et lui alloue un espace de stockage. 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

Rien n'empche d'utiliser une expression, une fonction pour initialiser.


Dim a As Integer = CalculMaVariable(4,3)

Ici pour initialiser la variable, on appelle une fonction CalculMaVariable qui retourne une valeur pour a. Il est toujours prfrable d'initialiser rapidement une variable. On peut dclarer plusieurs variables en mme temps; il faut les sparer par des virgules:
Dim a, b, c As Integer 'a, b et c sont maintenant des variables de type integer.

V-D-3 - En pratique : Exemple


Les variables aprs avoir t dclares, vont servir stocker des donnes, effectuer des calculs, on peut afficher ensuite leur valeur.
- 119 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple simpliste d'utilisation de variables:


Dim varA As Integer Dim varB As Integer Dim total As Integer varA=3 varB=2 total=varA + varB 'Cration d'une variable varA 'Cration d'une variable varB 'Cration d'une variable total 'Mettre '3' dans a 'Mettre '2' dans b 'Mettre dans la variable 'total' la valeur de varA et de varB 'Afficher le total dans un label

LabelTotal.Text= total.ToString

Un label est une zone permettant d'afficher du texte, pour afficher dans un label il faut transformer la variable total qui est un entier en chane de caractres ( l'aide de ToString) puis mettre la string dans le texte du 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 (ou String), pas les variables numriques. On fait des calculs avec les variables numriques. Il faudra donc parfois convertir le contenu d'une variable d'un type dans un autre type ( convertir une variable numrique en String pour l'afficher par exemple ou convertir une variable String en numrique pour faire un calcul). On apprendra cela plus loin. L'exemple simpliste juste au-dessus le montre: il faut convertir total qui est un entier en string pour l'afficher. Concernant les variables numriques: 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)

V-D-4 - Les diffrents types de variables


En Visual Basic:

- 120 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Boolean Byte Short Integer Long Single Double Decimal Char String DateTime Object Structure

Nom :

UInteger ULong UShort et SByte

Contient : Contient une valeur Boolenne (logique): True ou False. Contient les nombres entiers de 0 255 (sans signe) Entier sur 16 bits (-32768 32768) Entier sur 32 bits (-2147483648 2147483647) Entier sur 64 bits (-9223372036854775808 9223372036854775807) Nombre rel en virgule flottante (-1,401298 *10^-45 1,401298 10^45) Nombre rel en virgule flottante double prcision. (..puissance 324) Nombre rel en virgule fixe grande prcision sur 16 octets. 1 caractre alphanumrique Chane de caractre de longueur variable (jusqu'a 2 milliards de caractres) Date plus heure Peut contenir tous les types de variables mais aussi des contrles, des fentres.. Ensemble de diffrentes variables dfinies par l'utilisateur. Depuis la version 2005 il y a aussi les Unsigned ( non sign: pas de valeur ngative): Entier cod sur 32 bits pouvant prendre les valeurs 0 4 294 967 295. Entier cod sur 64 bits :0 18 446 744 073 709 551 615 Entier sur 16 bits 0 65 535. Byte mais sign. Cod sur 1 octet, valeur de -128 127

V-D-5 - Les Boolean


Contient une valeur Boolenne : True ou False (Vrai ou Faux pour les sous dous en anglais!). Exemple:
Dim myBoolean As Boolean myBoolean = True

V-D-6 - Variable entire


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

- 121 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Pour une variable entire il n'y a pas de possibilit de virgule!! attention, une division de 2 entiers donne un entier. Pour le mathmaticien, les Integer correspondent aux nombres entiers naturels: Entiers positif ou ngatif et 0 (..-3 -2 -1 0 1 2 3...), mais avec une limite. Attention, les variables numriques en informatique 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 et les 'Unsigned': UInteger, ULong, UShort). 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', utilisez plutt les Integer (qui sont cods sur 32 bits aussi), c'est plus rapide, que les short. On utilise largement les 'Integer' comme variable de boucle, Flag, l ou il y a besoin d'entier...(Les calculs sur les rels en virgule flottante sont beaucoup plus lent.) 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.

V-D-7 - Variable avec virgule


Un rel peut avoir une partie fractionnaire: 1,454 est un rel. Pour le mathmaticien, les Single, Double.. correspondent aux nombres rels ou fractionnaires: mais avec des limites ( sur le prcision et le fait qu'il ne sont pas infinis). 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. (-1,79769313486231570E+308 -4,94065645841246544E-324 pour les valeurs ngatives et entre 4,94065645841246544E-324 1,79769313486231570E+308 pour les valeurs positives) et et

Decimal Nombre rel en virgule fixe grande prcision sur 16 octets: Avec une chelle 0 (aucune dcimale), la plus grande valeur possible correspond +/-79 228 162 514 264 337 593 543 950 335. Avec 28 dcimales, la plus grande valeur correspond +/-7,9228162514264337593543950335 Les variables en virgule flottante ou notation scientifique: (Single, Double) La variable peut tre positive ou ngative.

- 122 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Le 'Double' est, bien sur, plus prcis et peut atteindre des nombres plus grand que le 'Single'. Le 'Single' comporte 7 chiffres significatifs maximum. Le 'Double' comporte 18 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 entire) et eee l'exposant (puissance de 10). En fait, en notation scientifique (en codage interne) un chiffre prcde toujours la virgule: 1,234568E+008. 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. Si on dpasse cette valeur VB le signale en dclenchant une erreur. 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 d'arrondi.

Le type en Virgule fixe.

- 123 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Le type 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. Pour les variables de boucle, les index, on utilise habituellement des Integers.

V-D-8 - String, Char


Le type 'String' peut contenir une 'chane de caractres' (alphanumrique) comme du texte. La longueur de la chane n'est pas fixe et une String peut avoir un nombre de caractre allant de 0 jusqu' environ 2 milliards de caractres. Les chanes de longueur fixe n'existent 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 65 66 32

"a" "b" ""

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

Pour passer la ligne, on utilise les codes 13 puis 10. Il y a une constante toute faite pour cela: ControlChars.CrLf.

V-D-9 - Annexe 1 : Place occupe en mmoire


Les types de variable ont un nom en VisualBasic et un nom dans le Framework. Exemple: Integer et System.Int32 sont quivalents pour designer le type 'entier', Integer est le type VB, System.Int32 est le type 'NET' correspondant. On peut utiliser l'un ou l'autre. Exemple de place occupe par une variable (et le nom de sa Classe dans NET).

- 124 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Boolean Byte Short Integer Long Single Double Decimal Date Char Objet String

Type VB

Place occupe 2 octets 1 octet 2 octets 4 octets 8 octets 4 octets 8 octets 16 octets 8 octets 2 octets 4 octets dpend de la chane

Type NET correspondant System.Boolean System.Byte System.Int16 System.Int32 System.Int64 System.Single System.Double System.Decimal System.DateTime System.Char System.Objet System.String

La mthode GetType permet de savoir de quel type, de quelle Classe est une variable.
Dim x As String MessageBox.Show(x.GetType.ToString) 'Affiche: Systeme.String

Prend le type de x, le transforme en String, l'affiche dans une MessageBox.

V-D-10 - Annexe 2 : Type primitif


Mise part Objet, Structure, Class tous les autres types sont dit 'Primitif'( Byte, Boolean, Short, 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.

V-D-11 - 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). Le nom des variables boolennes doit 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.

- 125 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-E - Variables 'String' et 'Char' V-E-1 - Variables 'String'


Il faut dclarer une variable avant de l'utiliser, pour cela on utilise l'instruction Dim.
Dim STR As String

Dclare une variable nomme STR et qui peut contenir une chane de caractre. Cette variable peut tre utilise pour contenir 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 ou on peut afficher du texte) par exemple :
Label.text = STR

Cela affiche 'TOTO' dans le label. Remarquons que pour dfinir une chane de caractres il faut utiliser des " " : Ce qui est entre " et " est la chane de caractres. On parle de chane littrale: (une reprsentation textuelle d'une valeur particulire) Aprs avoir t cre, une String contient 'Nothing' c'est dire rien (mme 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 la valeur Nothing qui signifie qu'elle ne pointe sur rien.
str= "" str= "TOTO" 'str contient "" : chane vide de longueur 0 '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:

- 126 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim A As String= "Visual" Dim B As String= "Basic" Label.text = "A+B" Label.text = A+B affiche btement la chane A+B

affiche "VisualBasic" 'on affiche les variables.

Notez enfin que " ", l'espace est un caractre part entire. Si je veux inclure un caractre " dans la chane il faut le doubler pour qu'il ne soit pas considrer comme caractre de fin de chane:
A=" Bonjour ""Monsieur"" " 'Cela affiche : Bonjour "Monsieur"

On peut initialiser la variable en mme temps qu'on la dclare.


Dim Chaine 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'

On utilise GetType pour connatre le type d'une variable.


x.GetType.ToString y.GetType.ToString z.GetType.ToString

donne
System.String System.String System.String

Ce qui prouve que les 3 variables sont bien des Strings.

V-E-1-a - System.String est une Classe du Framework


Le type System.String ou String (Chane de caractres) est une Classe qui a des mthodes. Pas besoin de connatre toutes les mthodes, il suffit de dclarer la String par 'Dim rponse As String') de taper rponse puis "." et vous voyez apparatre toutes les proprits et mthodes :

- 127 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Voyons par exemple la mthode .ToUpper Elle retourne la chane de caractre en majuscules.
str=str.ToUpper()

Si str contenait "abc" il contiendra "ABC" .ToLower transforme par contre la chane en minuscule. Quel intrt ? Exemple: Je dois comparer 2 String pour savoir si elles sont gales, la premire a t saisie par l'utilisateur et je ne sais pas si l'utilisateur 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) 'b est un tableau de Char contenant les caractres supprimer.

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.)

Pour enlever les espaces avant et aprs la chane (Cas le plus frquent) :

- 128 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

s=" Bonjour " s=s.Trim(" ") 'donne s="Bonjour"

Attention avec Option Strict= On, s=s.Trim(" ") n'est pas accept (car la chane de caractre" "n'est pas caste en char). Il faut crire s=s.Trim(" "c) ou s=s.Trim(CChar(" ")). Il existe aussi TrimStart et TrimEnd pour agir seulement sur le dbut ou la fin de la chane.

Length Length : Taille d'une chane en nombre de caractre. Afficher la taille de la chane VB
Dim s As String= "VB" 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 fait la mme chose mais est dconseill, on rserve '+' pour l'addition de numriques).

Insert : Insre une chane dans une autre.


Dim s As String= "VisualBasic" s= s.Insert(6," " ) 'Donne s= "Visual Basic"

Noter: le premier caractre a la position 0.

Remove : Enlve des caractres une certaine position dans une chane.
Dim s As String= "VisualBasic" s= s.Remove(2,7 ) 'Donne s= "Viic"

- 129 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Replace : Remplace dans une chane de dpart, toutes les occurrences d'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 ladate= "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. En Framework 2, on peut utiliser plusieurs sparateurs diffrend:
nom=s.Split( New Char() {" "c, ","c, "."c }) 'ici on a 3 sparateurs: l'espace, la virgule et le point.

- 130 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

le c aprs chaque sparateur veut dire Char, car les sparateurs sont des caractres. On peut ajouter 2 paramtres permettant d'indiquer le nombre de ligne maximum et forcer l'limination des lignes vides.
Dim sep() As Char={" "c, ","c, "."c} Dim nom() As String = S.Split ( sep, 100, StringSplitOptions.RemoveEmptyEntries )

Allons encore plus loin: avant et aprs le sparateur il peut y avoir des espaces: Il faut dans ce cas utiliser la mthode Split de la classe Regex:
Imports System.Text.RegularExpressions Dim S As String = "abc ; def ; ghi" ' On cre un Regex Dim R As New Regex("\s*;\s*") ' dcomposition de ligne en champs Dim Nom As String() = R.Split(S)

.Join Concatne tous les lments d'un tableau et peut ajouter des sparateurs. Si myLines() est un tableau de String, je veux ajouter ces lignes bout bout en les sparant d'un retour la ligne.
Dim myText As String = String.Join ( ControlChars.CrLf, myLines)

.IndexOf .LastIndexOf Indique le numro du caractre, la position (la premire occurrence) ou une chane chercher est trouve dans une autre. Recherche en commenant par la fin avec LastIndexOf
Dim a As String= "LDF.EXE" Dim r As Char()={"."} a.IndexOf(r) retourne 3

Se souvenir : le premier caractre est en position 0 en .Net. .LastIndexOf retourne la dernire occurrence. .IndexOfAny .LastIndexOfAny (Framework 2)

- 131 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Indique le numro du caractre, la position (la premire occurrence) ou une chane chercher est trouve dans une autre avec en plus possibilit d'indiqu la position de dpart.
Dim a As String= "LDF.EXE" Dim r As Char()={"."} a.IndexOfAny(r) recherche partir du dbut de chane. recherche partir du deuxime caractre.

a.IndexOfAny(r,2)

Autre exemple: On recherche ici plusieurs caractres (en fait un tableau de Char)
Dim str As String ="gfdjzak;,vdqsygeak" Dim start As Integer =2 Dim at As Integer Dim count As Integer =5 Dim target As String = "ou" 'chane chercher Dim anyOf As Char() = target.ToCharArray() 'on transforme la chane en tableau de char at = str.IndexOfAny(anyOf, start, count) 'on cherche le tableau de Char anyOf dans str partir de la position start et sur count caractres.

.Compare Compare 2 chanes :


Dim rep As Integer rep=String.Compare(a,b)

Retourne un entier.
-1 si a<b 0 si a=b 1 si a>b

On peut comparer des sous chanes et indiquer la sensibilit la casse (Framework 2):
rep= String.Compare(a, 2, b, 2, 10, True)

Ici on compare 10 caractres en commenant par le deuxime caractre de chaque chane en mode sensible la casse (majuscules<>minuscule).

.Equals Permet de comparer 2 chanes. Retourne True si elles sont gales.

- 132 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim b As Booleen= String.Equals("aaa", "AAA") 'b=False

On peut ajouter un paramtre pour signifier la culture ou indiquer de ne pas tenir compte de la case comme ici:
Dim b As Booleen= String.Equals("aaa", "AAA", StringComparison.CurrentCultureIgnoreCase) 'b=True

.Contains Permet de savoir si une chane apparat dans une autre: (Framework 2)
Dim trouve As Boolean trouve = a.Contains( "123")

Retourne True ou False

.Substring Extrait une partie d'une chane. Le premier paramtre indique la position de dpart; le second, le nombre de caractres extraire.
Dim a As String= "Informatique" MessageBox.show(a.Substring(2,3)) 'Affiche for

Le premier paramtre indique la position du caractre o doit commencer la sous-chane, en commenant la position 0. (les caractres sont compts 0, 1, 2, 3.... Le second paramtre la longueur de la sous-chane. Exercice 1: comment obtenir les 4 caractres de droite:
Dim a As String= "Informatique" MessageBox.show(a.Substring(A.Length-4)) 'Affiche ique

Ici on omet le second paramtre,la longueur de la sous-chane, va jusqu'a la fin de la chane. Exercice 2: comment obtenir les 3 caractres de gauche:
Dim a As String= "Informatique" MessageBox.show(a.Substring(0, 3)) 'Affiche inf

.Chars

- 133 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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.

.StartsWith() et EndsWith() Permettent de tester si une string commence ou se termine par une string, retourne True ou False. Tester si la String s commence par "abc" et se termine par "xyz":
If s.StartWith ("abc") And s.EndWith ("xyz") then

En VB 2005, on peut ajouter un argument grant la culture ou la casse.

.IsNull , IsNullOrEmpty() Framework 2 Il est parfois ncessaire de vrifier si une chane est gale Nothing ou de longueur gale 0 (vide).
If S Is Nothing AndOr S.length=0 then

Ou
If String.IsNullOrEmpty( S) then

- 134 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-E-1-b - On peut aussi utiliser les instructions 'Visual Basic'


CONSEIL: Si vous dbutez, laissez de cot ces instructions Visual Basic: elles font double emploi avec la classe String, elles ne sont pas toujours cohrentes avec le reste et cela embrouille. Utilisez donc uniquement la classe String. Les instructions VB, elles, sont bien connues des 'anciens' et font partie intgrante de VisualBasic) elles sont parfois plus simples. Mais elles ne fonctionnent pas comme des Objets mais comme des instructions. Elles font partie de l'espace de nom 'Microsoft.VisualBasic', il est 'charg' par dfaut et il n'y a pas lieu de l'importer. Par contre quand certains 'mots' sont communs plusieurs classes ou instructions, il peut y avoir ambigut et il faut utiliser dans ce cas la syntaxe complte (avec l'espace de nom). 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: Attention : le premier caractre est en position 1 dans les instructions VB.

Mid: Permet de rcuprer une sous-chane.


MaString = "Mid Demonstration" a = Mid(MaString, 1, 3) ' Retourne "Mid".

Retourne 3 caractres partir du premier Le premier paramtre indique la position du caractre o doit commencer la sous-chane, en commenant la position 1. (les caractres sont compts 1, 2, 3...; on rappelle qu'avec SubString la sous-chane, commence la position 0.
a = Mid(MaString, 14)

Retourne "tion": du 14me la fin (pas de 3me argument) Mid permet aussi de remplacer une string dans une string
Mid(MaString, 1, 3) = "Fin"

=> MaString="Fin Demonstration"

Left, Right (Pas d'quivalent dans le Framework) Retourne x caractres de gauche ou de droite:
a=Right(MaString,2)

a="on"
- 135 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

a=Microsoft.VisualBasic.Left(MaString,2)

a="Mi" Notez bien que, pour lever toute ambigut avec les mthodes 'Left' d'autres classes, il faut indiquer Microsoft.VisualBasic.Left.

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

Recherche 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 " "

- 136 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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. Il peut tre compris entre 0 et 255 pour les valeurs du jeu de caractres cods sur un octet (SBCS) et entre -32 768 et 32 767 pour les valeurs du jeu de caractres cods 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 : 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. On peut donner le numro du caractre en hexadcimal, dans ce cas on le fait prcder de &H
Chr(&H20)

est quivalent de Chr(32) et retourne un caractre " ". ChrW retourne le caractre correspondant l'Unicode.

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"

- 137 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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!!

Filter (VB2005) Passe les Strings d'un tableau dans un autre tableau, si elles contiennent ou non une chane.
TableauResultat= Filter( TableauChaine, Match, Include, Compare)

Match: chane chercher. Include: Filtre sur la prsence ou non de la chane chercher. Compare en binaire ou en texte (majuscules = minuscules dans ce cas)
Dim TestStrings(2) As String TestStrings(0) = "Ici" TestStrings(1) = "Si" TestStrings(2) = "si" Dim subStrings() As String 'Chane des rsultats subStrings = Filter(TestStrings, "i", True, CompareMethod.Text) 'Retourne "Ici","Si","si"

- 138 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre subStrings = Filter(TestStrings, "si", True, CompareMethod.Binary) ' Retourne "si". subStrings = Filter(TestStrings, "si", False, CompareMethod.Binary) 'Retourne "Ici","Si"

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. (c'est l'quivalent des expressions rgulires du Framework) UTILISER PLUTOT le REGEX. 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. 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.

- 139 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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

V-E-1-c - Un 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 une valeur dans la variable x :
Dim X As Integer = 2 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 " et de " est " Ce qui n'est pas entre guillemets est valu, le rsultat est affich. C'est le cas de X et X*X Pour ne faire qu'une chane on ajoute les bouts de chanes avec l'oprateur '&'. Notez l'usage d'espace en fin de chane pour que les mots et les chiffres ne se touchent pas.
Dim X As Integer X=2 Label1.Text= "Le carr de " & X & " est " & X * X

Affiche dans le label: " Le carr de 2 est 4 "

V-E-1-d - Comparaison de caractres (Option Compare)


On peut comparer 2 String:
Dim s1 As String ="ABCD" Dim s2 As String ="XYZ"

Dans ce cas s1<s2 est vraie.


- 140 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Car par dfaut Option Compare Binary Les caractres sont classs dans un ordre croissant (l'ordre de leur code unicode). Voyons l'ordre des certains caractres particuliers: " " +,-./ 0123456789 :;ABCDEF abcdef On constate que l'ordre est espace puis quelques caractres spciaux, les chiffres, les majuscules puis les minuscules, les accentus.(voir le tableau d'unicode) Ainsi B<a En utilisant Option Compare Binary, la plage [AE] correspond A, B, C, D et E.

Avec Option Compare Text Les caractres sont classes dans un ordre qui reflte plus la ralit d'un texte: Toutes les types de a: A, a, , , puis tous les types de b: B, b... 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. Ainsi B>a L'ordre des caractres est donc dfini par Option Compare et aussi les paramtres rgionaux du systme sur lequel s'excute le code.

On peut modifier Option Compare soit dans les proprits de l'application (Menu 'Projet' puis 'Proprits de ' puis onglet 'Compiler') ou dans un module en ajoutant en haut 'option Compare Text'. Grande rgles de comparaison: La comparaison s'effectue de gauche droite. La comparaison s'effectue sur le premier caractre de chaque chane. Si le premier caractre est identique, la comparaison se fait sur le deuxime caractre... "zz" > "za" est vrai En cas de chane du type "zz" et "zzz" , la seconde est suprieure. "zz" < "zzz" est vrai. Il y a quelques piges: Si je veux crer des chanes du genre 'un nombre puis le mot string' et qu'elles soient classes dans un ordre logique pour l'humain.

- 141 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Je vais taper: "1string", "2string", "10string", "11string", "100string" Le classement par Vb sera 'surprenant' car les chanes seront classes dans cet ordre: "100string", "10string", "11string", "1string","2string" Pourquoi? c'est l'application stricte des rgles de comparaison: regardons le troisime caractre des 2 premires chanes (les 2 premiers caractres tant gaux), "0" est bien infrieur "s" donc "100string" < "10string" est vrai!! Pour rsoudre le problme et obtenir un classement correct, il faut crire des blocs numriques de mme longueur et aligns droite: crire 010string et non 10string. "001string", "002string", "010string", "011string", "100string" ' ici le trie est dans le bon ordre.

V-E-1-e - 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. L'unicode est donc un codage de caractres sur 16 bits qui contient tous les caractres d'usage courant dans les langues principales du monde. 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 (ancien codage sur un octet). 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. Voici les 255 premiers:

- 142 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Le petit carr indique un caractre non imprimable (non affichable), certains caractres sont des caractres de contrle comme le numro 9 qui correspondant tabulation, le numro 13 qui correspond au retour la ligne..

V-E-2 - Variables 'Char'


Les variables Char contiennent un caractre et un seul, un caractre est stock sous la forme d'un nombre de 16 bits (2 octets) non sign dont les valeurs sont comprises entre 0 et 65 535. Chaque nombre reprsente un seul caractre Unicode. Pour les conversions entre le type Char et les types numriques il y a les fonctions AscW et ChrW qui peuvent tre utilises.. L'ajout du caractre 'c' un littral de chane force ce dernier 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

String.ToCharArray: Permet de passer une string dans un tableau de Char:


Dim maString As String = "abcdefghijklmnop" Dim maArray As Char() = maString.ToCharArray

- 143 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

La variable maArray contient prsent un tableau compos de Char, chacun reprsentant un caractre de maString. Pour mettre le tableau de Char dans une String:
Dim maNewString As String (maArray) String.Chars():

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"

Un caractre est-il numrique? un chiffre? une lettre? un sparateur? un espace?....


Dim chA As chA Dim ch1 Dim str Char = "A"c ch1 As Char = "1"c str As String = "test string" ' Output: "-1" ' A est plus petit que B ' Output: "True" ' Egal?

Console.WriteLine(chA.CompareTo("B"c)) Console.WriteLine(chA.Equals("A"c)) Console.WriteLine(Char.GetNumericValue(ch1)) ' Output: 1 'Convertir en valeur numrique (double) Console.WriteLine(Char.IsControl(Chr(9))) ' Output: "True"' Est une caractre de contrle? Console.WriteLine(Char.IsDigit(ch1)) Console.WriteLine(Char.IsLetter(","c)) Console.WriteLine(Char.IsLower("u"c)) Console.WriteLine(Char.IsNumber(ch1)) Console.WriteLine(Char.IsPunctuation("."c)) ' Output: "True" ' Est un caractre de ponctuation Console.WriteLine(Char.IsSeparator(str, 4)) Console.WriteLine(Char.IsSymbol("+"c)) Console.WriteLine(Char.IsWhiteSpace(str, 4)) Console.WriteLine(Char.ToLower("M"c))

' ' ' ' ' ' ' '

Output: Output: Output: Output: Output: Output: Output: Output:

"True"' "False"' "True" ' "True" ' "True" "True" "True" "m" '

Est Est Est Est

un chiffre une lettre en minuscule un nombre un un un en sparateur symbole espace minuscule

' Est ' Est ' Est Passe

Existe aussi IsLetterOrDigit, IsUpper. Bien sur, si on est en 'Option Strict', il faut ajouter .ToString chaque ligne:
Console.WriteLine(Char.ToLower("M"c).ToString)

On note que l'on peut tester un caractre dans une chane: Char.IsWhiteSpace(str, 4) Autre manire de tester chaque caractres d'une String:
Dim V as string For Each C As Char in V C... - 144 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

'Pour chaque caractre de V..

Cours VB.NET par Philippe Lasserre

Next

Ici la String est considre comme une collection de Char. (C'est aussi une collection de String) Mais on verra plus loin les collections et les boucles For Each. Conversions Char <->Unicode On rappelle que l'unicode est le mode de codage interne des caractres.
Dim monUnicode As Short = Convert.ToInt16 ("B"c) ' le code Unicode Dim monChar As Char = Convert.ToChar (66) ' monChar="B" de B est 66.

Pour savoir si un caractre a un code unicode prcis il y a 2 mthodes: if MyChar=Convert.ToChar(27) th...en ou if AscW(MyChar)=27 then

Si vous souhaiter utiliser Asc et Chr de VisualBasic:


Dim monAscii As Short = Asc("B") 'Asc donne le code Ascii ou l'Unicode (Ascw fait de mme?) Dim monChar As Char= Chr(66) 'Char retourne le caractre qui a le code Ascii donn.

V-E-3 - Et les Chanes 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: viter (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 utilis dans les structures, mais il y a un autre moyen pour les structures. On verra cela plus loin.

- 145 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Donc les chanes fixes sont viter.

V-E-4 - Regex, expressions rgulires.


Dbutant s'abstenir. Les expressions rgulires sont une manire de rechercher (de remplacer, d'extraire) une sous-chane ou un modle d'une chane de caractres. On a un modle, on veut voir si une chane contient des parties rpondant ce modle. Simplement pour voir ou pour sparer des sous-chanes, remplacer.. Exemple: une chane ne contient t-elle que les lettres 'abc', commence t-elle par 'hello' ou 'HELLO', est-elle une adresse mail valide, un code postal valide? Comment dcouper une chane ayant comme sparateur des chiffres? Comment remplacer tous les caractres 'wxyz' par des '-'?....

V-E-4-a - Principe du regex


Les Regex servent : - Vrifier la syntaxe d'une chane de caractres. - Remplacer une partie de la chane par une autre chane. - Dcouper une chane de caractres. - Extraire certaines sous-chanes. Pour expliquer le principe, on va comparer une chane String avec un modle, un 'Pattern', nomm 'REGEX'. Cela permet de vrifier la syntaxe d'une chane de caractres. La chane de caractres examiner respecte t-elle un motif (le Regex) dcrivant la syntaxe attendue?

Necessite l'import d'un espace de nom en haut du module:


Imports System.Text.RegularExpressions

Premier exemple trs simple: Voir si une String ne contient que des chiffres. Il faut dans un premier temps instancier un Regex contenant le motif. Comme exemple nous allons utiliser un motif permettant de voir si la String contient uniquement des chiffres:
Dim rg As New Regex("[0-9]")

Notez que le motif est entre guillemets. Le motif [0-9] signifie: tous les caractres entre 0 et 9. Ensuite on va utiliser la proprit IsMatch du Regex rg pour voir si la String vrifier ("4545896245" ici comme exemple) rpond au motif. Elle retourne True si la String rpond au motif.
rg.IsMatch("4545896245") 'retourne True car il n'y a que des chiffres.

Pour afficher:
- 146 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

MsgBox(rg.IsMatch("45gdGRj1"))

'Affiche False dans une Box

Second exemple pas simple: Voir si une String contient une adresse mail valide. Il faut dans un premier temps instancier un Regex contenant le motif. Comme exemple nous allons utiliser un motif permettant de voir si une adresse mail est valide:
Dim rg As New Regex("^([\w]+)@([\w]+)\.([\w]+)$")

Bonjour le motif!!!! Ensuite on va utiliser la proprit IsMatch du Regex pour voir si la String vrifier rpond au motif. Elle retourne True si la String a bien la syntaxe d'une adresse mail.
MsgBox(rg.IsMatch("philippe@lasserrelyon.fr")) 'affiche True

C'est donc extremement puissant!! mais on l'a compris tout l'art est d'crire le motif!!

V-E-4-b - Caractres pour modle regex


Principaux caractres composant les motifs: hello veut dire le texte 'hello' \ Caractre d'chappement: \. veut dire un point ^ Dbut de ligne $ Fin de ligne . N'importe quel caractre | Alternative: toto|lulu veut dire toto ou lulu ( ) Groupement -Intervalle de caractres: a-c veut dire a b ou c [ ] Ensemble de caractres [^] Tout sauf un ensemble de caractres Aprs le caractre ou un groupe de caractres on peut indiquer le nombre: + 1 fois ou plus ? 0 ou 1 fois * 0 fois ou plus {x} x fois exactement {x,} x fois au moins {x, y} x fois minimum, y maximum

Il y a aussi des mtacaractres: \s Caractre d'espacement (espace, tabulation, saut de page, etc) \S Tout ce qui n'est pas un espacement \d Un chiffre \D Tout sauf un chiffre \w Un caractre alphanumrique \W Tout sauf un caractre alphanumrique \r retour charriot

- 147 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-E-4-c - Exemples
Petits exemples: [\.] contient un "."( "." ne signifie pas 'n'importe quel caractre car il y a un caractre d'echappement avant). ^z$ contient uniquement z (entre dbut et fin). es$ finit par "es" ^.$ contient un seul caractre (entre dbut et fin) ^(i|A) commence par i ou A ^((b)|(er)) commence par b ou er ^[a-c] commence par a,b ou c [a-zA-Z] caractres en majuscule ou minuscule [A-Z]+ un mot en majuscules A-Z]{1,7} un mot en majuscules de 1 7 caractres [0-9] contient un chiffre [^0-9] tous sauf un chiffre \d+ entier positif [+-]?d+ entier positif ou ngatif , le signe + ou - est facultatif ^[^y] ne commence pas par y ^(o)+ commence par un ou plusieurs o ^(a)* peut ou non commencer par a a{2,4} deux, trois ou quatre fois "a" [12\^] Chane contenant les chiffres 1 ou 2 ou le symbole ^ ^[0-9]+-[0-9]+$ 2 nombres spars par un tiret: 55-4589 4586-85 [aeiou]\d Une voyelle et un chiffre: a2 i5 \d+ des chiffres (un ou plusieurs)

Validit de diffrent nom: ^[pP]hilip(pe)?$ True si philip Philip philippe Philippe

Validit d'une adresse ip : ^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$

V-E-4-d - Divers utilisations de Regex


Validation d'une chane de caractres: IsMatch
Funtion SiValideMail (Adresse As String) As Boolean

Dim rg As New Regex("^([\w]+)@([\w]+)\.([\w]+)$") Return rg.IsMatch(Adresse) End Function

Retourne True si la chane envoye la fonction est une adresse mail valide.

Remplacement dans une chane de caractres: Replace


Funtion Remplace (Chaine As String) As String

- 148 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim rg As New Regex("hello|salut|buenas dias") Return rg.Replace(Chaine, "bonjour") End Function

Retourne une chane o hello, salut, buenas dias ont t remplacs par bonjour..

Dcoupage d'une chane de caractres: Split. Split permet de dcouper une chane de caractres et de la mettre dans un tableau en utilisant l'expression rgulire comme sparateur.
Dim ch As String ="az45er78ty" Dim rg As New Regex("\d+") Dim t() As String= rg.Split(ch) 't(1)=az t(2)="er" t(3)="ty"

Retourne un tableau de chanes dcoupes partir de ch avec comme sparateur les chiffres (sparateur: 1 ou plusieurs chiffres).

Extraire des chanes de caractres: Matches. Matches permet d'extraire les squences de caractres correspondant un motif. Retourne une MatchCollection qui a une proprit Count indiquant le nombre d'lments retourns. Cette MatchCollection en lecture seule est compose de 'Match' qui ont les proprits 'Value' (chane retourne) Index (position: numro caractre) et Length. On va extraire les chanes de 2 caractres (caractres de a z, pas les ',').
Dim ch As String ="az,er,ty" Dim rg As New Regex("[a-z]{2}") Dim mac As MatchCollection = rg.Matches(ch) For Each m As Match In mac MsgBox( m.Value &" en position " & m.Index) Next

Extraire des mots d'une chane: Matches. Matches permet d'extraire les squences de lettres donc des mots. Retourne une MatchCollection qui a une proprit Count indiquant le nombre d'lments retourns. Le motif pourrait tre [A-Za-z]+ mais il y a des problmes avec les accentus qui ne font pas partie de a-z!! il faut utiliser le motif: (\p{Lu}|\p{Ll})+ (Explication: \p{LU}: caractres unicode majuscule, \p{Ll}: caractres unicode minuscule).
Dim ch As String ="Ceci est un cours vb" Dim rg As New Regex("(\p{Lu}|\p{Ll})+") Dim mac As MatchCollection = rg.Matches(ch) For Each m As Match In mac MsgBox( m.Value &" en position " & m.Index) Next - 149 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Le motif "\b(?!(le|un|une|et|de|la)\b)(\p{Lu}|\p{Ll})+" permet en plus d'liminer les un, une, le, la..

Mthodes statiques: On peut utiliser une autre syntaxe (pour Replace, Match, Matches) avec une mthode statique (sans instanciation du regex):
Funtion Remplace (Chaine As String) As String

Return Regex.Replace("salut", "bonjour") End Function

Options: Les mthodes statiques ou non peuvent avoir un ou plusieurs arguments optionnels (les sparer par 'Or'): RegexOptions.IgnoreCase: ignore la case oui, oui.. RegexOptions.IgnorePatternWhitespace ignore l'espace la tabulation, nouvelle ligne RegexOptions.Compiled: acclre car compile le regex. RegexOptions.MultiLine: applique les caractres de dbut et fin chaque ligne.
Funtion Remplace (Chaine As String) As String

Return Regex.Replace("salut", "bonjour" , RegexOptions.IgnoreCase Or RegexOptions.Compiled) End Function

ou en instanciant le regex:
Dim rg As New Regex("salut", RegexOptions.IgnoreCase Or RegexOptions.Compiled)

On pourrait crire des livres sur les expressions rgulieres!!! Pour trouver des motifs, voir :Des centaines de chanes de motif toutes faites.

V-F - Variables Numriques

4815162342 Une variable numrique peut contenir des donnes numriques.

On a vu qu'une variable numrique peut tre entire:


Integer (entier sign) Short (entier court sign) Long (Entier long sign) Byte (entier non sign de valeur 0 255)

- 150 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

A partir de VB2005 il y a aussi


UInteger (entier non sign) UShort (entier court non sign) ULong (Entier long non sign) SByte (entier sign)

Une variable numrique peut aussi tre un fractionnaire:


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

On dclare une variable numrique avec Dim, on peut l'initialiser en mme temps :
Dim i As Integer= 3

Si la variable est numrique, il faut la transformer en String avant de l'afficher :


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 qu'on 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 !! de mme pour Str et Val du VisualBasic. Par contre pour les instructions du Framework (CType, TryCaste, Cint...), le sparateur est celui de la culture (',' en culture franaise, '.' en culture us.

- 151 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-F-1 - La Classe Math du Framework peut tre utilise


Pour qu'elle soit disponible il faut d'abord importer l'espace de nom 'Math'du FrameWork : Pour cela il faut taper en haut de la fentre (au-dessus de public Class):
Imports System.Math

Si on n'a pas import l'espace de nom, il faut ajouter Math. avant le nom de a fonction. Exemple:
R=Math.Abs(N)

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 ' N=1.2 ' N=1.5 R=2 R=1 R=2

Pour Round, si nombre <0.5 retourne 0 si > ou = 0.5 retourne 1; c'est la manire d'arrondir les nombres en Euros, comme sur la feuille d'impts. On peut donner en second paramtre le nombre de digit: Math.Round(Valeur, 2)donne 2 dcimales aprs la virgule.

R=Truncate(N)

Retourne la partie entire (enlve les chiffres aprs la virgule, arrondi l'entier le plus proche en allant vers zro). 'N=1.7 R=1

R=Floor(N)

Retourne le plus grand entier gal ou infrieur (arrondi l'entier infrieur le plus proche en allant vers l'infini ngatif).
- 152 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

N=1.7 R=1

R=Ceiling(N)

Retourne le plus petit entier gal ou suprieur. (arrondi l'entier suprieur le plus proche en allant vers l'infini positf). 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 carre. Retourne 3 longResult = Math.BigMul(int1, int2) 'BigMul donne le rsultat de la multiplication de 2 entiers sous forme d'un long. intResult = Math.DivRem(int1, int2, Reste) DivRem donne le rsultat (intResult) de la division de int1 par int2 et retourne le reste (Reste), cela pour des entiers. Il existe aussi Log, Log10, Exp. Bien sur il y a aussi Sin Cos Tan, Sinh Cosh Tanh (pour hyperbolique) Asin Acos Atan Atan2. Prenons un exemple:
Imports System.Math - 153 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre 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:2pi=360 ; Angle en radians= (2pi/360)*Angle en degrs

V-F-2 - Les instructions du langage VisualBasic


Int et Fix qui suppriment toutes deux la partie fractionnelle et retournent l'entier.
Dim R As Single= 1.7 Int(R) 'retourne 1

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.

V-F-3 - Dpassement de capacit, 'Non Nombre'


Test en VB2005 On a vu que , codes sur un nombre de bits dfini, les variables numriques ne peuvent pas avoir des valeurs trs trs grandes. .MaxValue donne le plus grand nombre possible dans le type de la variable. (MinValue le plus petit nombre) Que se passe t-il , si on dpasse la valeur maximum? Si on affecte une variable entire une valeur suprieure .MaxValue cela dclenche une erreur (on dit une exception de type OverFlow) et cela plante. Si on affecte une valeur virgule flottante(un Single par exemple), une valeur suprieure .MaxValue, la variable prend la valeur 'infinie' ( +ou - infinie: Single.NegativeInfinity ou Single.PositiveInfinity))

Exemple: IsInfinity, IsNegativeInfinity, IsPositiveInfinity permettent de tester si le rsultat d'un calcul dpasse les valeurs autorises pour le Type virgule flottante.
Dim s As Single = 2147483647 ^ 33 If Single.IsInfinity(s) Then MsgBox("infinie")

s prend la valeur Single.PositiveInfinity.

Les oprations en virgule flottante retournent NaN pour signaler que le rsultat de l'opration est non dfini. Par exemple, le rsultat de la division de 0,0 par 0,0 est NaN. On peut tester une expression par IsNan. Exemple:
- 154 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

If Single.IsNaN(0 / 0) Then

V-G - Conversion, sparateur dcimal

On a vu qu'on peut afficher les chanes de caractres (des 'String'), par ailleurs, on fait des calculs avec les variables numriques (Integer, Single..). On a donc besoin sans arrt de faire des calculs avec des variables numriques et de transformer le rsultat en String pour l'afficher et vice versa. Est-il possible de convertir une variable d'un type un autre? OUI!! On aura donc besoin de savoir transformer des variables de tous types en d'autres types.

V-G-1 - Conversion numrique vers String


Quel intrt de convertir? Aprs avoir effectu un calcul, on veut afficher un rsultat numrique. On ne peut afficher que des Strings (chane de caractres) dans un label ou un TextBox par exemple. Aussi, il faut transformer cette valeur numrique en chane avant de l'afficher, on le fait avec la mthode ".ToString":
Dim i As Integer=12 Label.text = i.ToString 'On dclare une variable I qu'on initialise 12

La valeur de i est transforme en String puis affecte la proprit Text du label, ce qui affiche '12' On verra plus loin qu'on peut ajouter des paramtres.

Il existe aussi CStr:


Dim i As Integer=12 Label.text = CStr(i) 'On dclare une variable I qu'on initialise 12

V-G-2 - Conversion String vers numrique


A l'inverse une chane de caractres peut tre transforme en numrique :

- 155 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Par exemple, l'utilisateur doit saisir un nombre, il saisit 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 Integer grce CInt.
Dim s as String Dim i as Integer s= InputBox ("Test", "Taper un nombre") 'Saisie dans une InputBox 's contient maintenant une chane de caractres, "45" par exemple i= CInt(S) 'on transforme la chane s en Integer d'un nombre par l'utilisateur.

On peut aussi utiliser Parse:


Dim s as String Dim i as Integer s= InputBox ("Test", "Taper un nombre") 'Saisie dans une InputBox 's contient maintenant une chane de caractres, "45" par exemple i= Integer.Parse(s) 'on transforme la chane s en Integer d'un nombre par l'utilisateur.

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

On peut aussi utiliser, et c'est plus simple, CType pour convertir n'importe quel type en n'importe quel type : Il suffit de donner cette fonction la variable modifier et le type obtenir.
Dim i As Integer Dim s As String= "12" i=CType(s,Integer) ' s est la variable modifier, Integer est le type obtenir.

i contient maintenant l'entier 12. Voila ces quelques instructions devraient suffire pour un usage courant!! Mais il en existe d'autres.

V-G-3 - Tous les modes de conversion


CType pour tout. 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.
Dim d As Double = 2.65

- 156 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim i As Integer i=CType(d,Integer) 'conversion d'un Double en entier

Dim d As Double = 2.65 Dim s As String s=CType(d,String) 'conversion d'un Double en String

Dim d As Integer = 2 Dim S As Single S=CType(d, Single) 'conversion d'un Integer en Single

Pour les forts: DirectCast fait de mme mais on doit utiliser une variable ByRef. i=DirectCast(s,Integer) 'S doit tre ByRef. Par contre DirectCast ncessite que le type d'excution d'une variable objet soit identique au type spcifi.
' ncessite Option Strict Off. Dim Q As Object = 2.37 ' cre un objet contenant un double. Dim K As Integer =CType(Q, Integer) 'Marche Dim J As Integer = DirectCast(Q, Integer) ' choue

DirectCast choue car le type d'excution de Q est Double. CType russit car Double peut tre converti en Integer, mais DirectCast choue car le type d'excution de Q n'est pas encore Integer. TryCast de VB 2005 (Framework 2) TryCast fonctionne comme DirectCast mais retourne Nothing si la conversion est impossible (et ne plante pas!).

Fonctions spcifiques 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() Pour Pour Pour Pour Pour Pour Pour Pour Pour Pour convertir convertir convertir convertir convertir convertir convertir convertir convertir convertir en en en en en en en en en en Boolen octet Char Date Double Decimal Integer Long Objet Short

- 157 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre CSng() Pour convertir en Single CStr() Pour convertir en String Et en VB 2005 CSByte() Pour convertir en SByte CUShort() Pour convertir en UShort CUInt() Pour convertir en UInteger CULng() Pour convertir en ULong

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 (de MicroSoft.VisualBasic) 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") i=Val("5,45") ' donnera i=5,45 ' donnera i=5

Str transforme une valeur numrique en String:


Dim s As String s=Str(1999) ' s=" 1999"

- 158 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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() .

La Classe System.Convert: La Classe System.Convert permet la conversion d'un type de base vers un autre: .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)

En Decimal .ToDecimal On a des mthodes pour pratiquement convertir tous les types en tous les types. Cherchez!!

On verra plus loin, la fonction Format utilise pour convertir une valeur numrique en une chane de caractres gnralement destine l'affichage en imposant un formatage: vous pouvez mettre un format pour l'affichage des dates, des heures, un format pour les monnaies ou les nombres( nombre de chiffre affich, sparateur..) Ce n'est pas proprement parl une conversion.
Dim nb As Single = 12.23 MsgBox( Format (nb, "000,000.000")

'Affiche 000 012.230

V-G-4 - Pour rsumer et faire trs simple, retenir


ToString pour les conversions en String des variables numriques(pour afficher). Ctype pour convertir tout en tout. Le fait de convertir d'un type dans un autre s'appelle 'effectuer un cast'

- 159 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-G-5 - Conversion Explicite et Implicite


A noter que dans cette page, on a tudi la conversion Explicite: est permet de forcer la conversion vers un type l'aide de mots cls. C'est l'option par dfaut de VB (pour le voir: menu 'Projet', 'Proprits de ..', Onglet 'Compiler'). Exemple
Dim d As Double = 2.65 Dim i As Integer i=CType(d,Integer)

Il existe aussi la conversion Implicite effectue automatiquement sans syntaxe particulire et de manire transparente. VB peut le permettre (Si Option Explicit= Off dans la configuration ). Exemple:
Option Explicit Off Dim d As Double = 2.65 Dim i As Integer i=d 'Pour affecter i, un Integer, le Double d, Vb a transform le double d en Integer. ' Transformation effectue automatiquement et sans qu'on le voit.

On verra que ce mode de travail Implicite n'est pas recommand.

V-G-6 - Conversion restrictive


Attention, la conversion est dite restrictive si le type final ne peut pas convertir toutes les valeurs possibles du type de dpart: Si je convertis un Single en Integer, la partie dcimale peut tre tronque, c'est une conversion restrictive. L'inverse (conversion Short en Single par exemple) est dite tendue.

V-G-7 - Sparateur dcimal : le point, la virgule, Culture


On rappelle aussi que le sparateur d'un littral est le point (un littral sert donner une valeur une variable):
Dim s As Single s= 456.67

- 160 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Les fonctions Val (conversion d'une String en numrique) et Str (conversion d'un numrique en String), de Visual Basic, ne reconnaissent que le point (.) comme sparateur dcimal.
Dim s As Single s=Val ("123.4") 'est accept, c'est 123,4 en franais.

Les fonctions CDbl, CType, CSng ou Parse ainsi que ToString utilisent le sparateur des paramtres locaux de la machine . Ils reconnaissent la culture.

Le symbole de sparateur dcimal (ainsi que celui des milliers ) est donc spcifique la culture.
En France, sur votre ordinateur, le sparateur dcimal est la virgule.
Dim s As Single s = CType("123,4", Single) Console.Out.WriteLine(s.ToString) 'affiche sur la console s transform en String

Affiche: '123,4' Par contre s = CType("123.4", Single) est refus. Au Usa le sparateur dcimal est le point.
s = CType("123.4", Single) est accept Console.Out.WriteLine(s.ToString) 'Affiche '123.4'

On remarque donc que ToString utilise aussi le sparateur spcifique la culture.


Console.Out.WriteLine(s.ToString)

Affiche: '123,4' en France Lors de l'utilisation d'autres sparateurs dcimaux (applications internationales, par exemple), convertissez la chane en nombre l'aide de la fonction CDbl ou CType CSng ou Parse.

Pour voir quel est le sparateur en cours: Menu Dmarrer->Paramtres->Panneau de configuration>Options rgionales et linguistiques.

Obtient le sparateur dcimal en fonction des paramtres locaux de la machine par du code.
SeparateurDcimal = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator

On peut modifier le CultureInfo:

- 161 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On peut, si on est en CultureInfo Franais, afficher en mode Us.


Dim i As Single = 45.78 ' Afficher dans la CultureInfo courante: Franais Console.WriteLine(i.ToString) 'Affiche 45,78

' Crer un CultureInfo en anglais U.S. Dim us As New CultureInfo("en-US") ' Afficher sur la console en CultureInfo Us. Console.WriteLine(i.ToString("c", us)) 'Affiche 45.78

Il s'agit ici d'une surcharge de ToString , "c" signifie NumberFormatInfo.

V-G-8 - 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 numriques partir de la gauche, en s'arrtant ds qu'il y a un caractre non numrique.

V-G-9 - Lexique anglais=>Franais


To Cast = Mouler, couler. Type = Type, genre. To parse = analyser.

V-H - Les 'Tableaux'

- 162 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

C'est un beau tableau, mais en VB, ce n'est pas a un tableau!!

Les tableaux 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. Aprs As on indique le type utilis dans le tableau. Dim Tableau(3) As Integer entrane la cration des variables 'Integer' suivante: Tableau (0) Tableau (1) Tableau (2) Tableau (3) Contenu du tableau: 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 l'indice 0. Le nombre d'lments dans le tableau est toujours gale l'indice de dimension + 1 (ou l'indice du dernier lment+1) Dim Tableau(3) comporte 4 lments (lments d'index 0 3).

Tableau(1)= 12

permet d'affecter le nombre 12 au 2eme lment du tableau.

- 163 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

0 12 0 0
S=Tableau(1)

permet d'affecter 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. Voyons pour chaque lment du tableau le numro de ligne et celui de la colonne: (pas le contenu des lments ici mais leurs index) lment:0,0lment:0,1lment:0,2 lment:1,0lment:1,1lment:1,2 lment:2,0lment:2,1lment:2,2 Exemple: La premire ligne comporte les 3 lments: T(0,0) T(0,1) et T(0,2) Pour mettre 33 dans l'lment central:
Dim T(2,2) As Integer T(1,1)=33

voyons le contenu du tableau: 0 0 0 0 33 0 0 0 0

Il est possible de crer des tableaux 3, 4 ..dimensions: Exemple:


Dim T(3,1,2)

cre un tableau de 4X2X3 lments.

- 164 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.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) (mais pour l'accs un lment, ils fonctionnent plus vite).

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

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): En effet aprs dimensionnement d'un tableau, il contient: -la valeur 0 si c'est un tableau de numrique. -Nothing si c'est un tableau de String ou d'Objet.
Dim mois(11) As String 'mois (1) contient Nothing mois(0)="Janvier" mois(1)="Fvrier" mois(2)="Mars"

On peut aussi l'initialiser lors de sa dclaration :


Dim Mois() As String ={Janvier,Fvrier,Mars}

On remarque ici, que le nom d'lment n'est pas indiqu; comme on initialise 3 lments, le tableau en aura 3.

Autre syntaxe:

- 165 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim t As String() 'dclaration

t = New String(1) {"One", "Two"} ' on affecte au tableau un nouveau tableau de String contenant "One" et "Two" Dim R(,) as Integer ={{0, 1}, {1, 2}, {0, 0}, {2, 3}}

Dans le premier exemple, on fait les choses en deux tapes, on dclare puis on dimensionne et on initialise un tableau 't'. Dans le second exemple, n dclare et on initialise en mme temps un tableau 2 dimensions, remarquez qu'on rentre les lments 2 2.(Equivalent R(0,0)=0 R(0,1)=1 R(1,0)=1 R(1,1)=2 ..)

Redim permet de redimensionner un tableau (modifier le nombre d'lments d'un tableau existant), si on ajoute Preserve les anciennes valeurs seront conserves (Array.Resize fait de mme, voir plus bas). 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 30 fois 30 String, 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 (qui dcoupe une String pour la mettre dans un tableau), redimensionnent ellesmme le tableau au nombre d'lment ncessaire.
Dim Nom() as String Nom=S.Split(Separateur)

Erase efface le tableau et rcupre l'espace.


Erase Tableau

Erase Tableau (quivalent tableau= Nothing ). Clear rinitialise le tableau (remise 0 d'un tableau de numrique par exemple).
Array.Clear(t, 2, 3)

Rinitialisation tableau t partir de l'lment 1 et pour 3 lments.

Comment parcourir un tableau?


- 166 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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

'Pour i allant de 0 10

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..

On peut aussi utiliser For Each:( un tableau hrite de la classe System.Array)


Dim amis() As String = {"pierre", "jean", "jacques", "toto"} For Each nom As String In amis Console.Out.WriteLine(nom) Next

L'exemple affiche sur la console (menu Affichage->Fentre->Sortie) les noms qui sont dans le tableau. VB alloue de l'espace mmoire pour chaque lment cre. Ne dimensionnez pas un immense tableau si vous avez besoin d'un tableau de 4*4 car cela utilise de la mmoire inutilement.

V-H-1 - Un tableau est un objet de type Array


La Classe Array (tableau) a des proprits et des mthodes que l'on peut utiliser. Crons 2 tableaux et examinons les principales mthodes.
Dim a(3) As String Dim b(3) As String b=a b=a.copy 'Copie le tableau a dans b 'Est quivalent

Attention: il copie les rfrences (l'adresse, l'endroit 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 (l'adresse en mmoire) est copi. Donc en fait a et b sont le mme tableau.

- 167 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Pour obtenir une copie 'indpendante' dans un nouveau tableau 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).

Soit un tableau Mois() Clear Array.Clear(Mois,0,2) Efface 2 lments du tableau Mois partir de l'lment 0.

Reverse Array.Reverse(Mois, 1, 3) inverse les 3 lments partir de l'lment 1.

Copy Array.Copy(Mois,1,Mois2,1,20) copie 20 lments de Mois vers Mois2 partir du 2eme lment. Array.ConstrainedCopy fait la mme chose mais annule tous si la copie n'est pas effectue intgralement. De mme: mySourceArray.CopyTo(myTargetArray, 6) copie TOUS les lments de la source dans la destination partir d'un index dans la destination.

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 surcharger 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).

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)

- 168 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

BinarySearch effectue une recherche dichotomique: il regarde l'lment du milieu, si l'lment cherch est plus petit, il regarde l'lment du milieu du haut du tableau..... C'est rapide mais le tableau doit tre tri. S'il trouve un lment il retourne son index. Si la recherche choue, il retourne un nombre ngatif, si on effectue un Not sur ce nombre retourn, on a l'index o on doit insrer l'lment.

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. Ici la recherche est linaire: on compare l'lment recherch avec le premier puis le deuxime, puis le troisime lment...C'est long , mais le tableau n'a pas besoin d'tre tri. On a probablement intrt trier le tableau et faire un Binarrysearch (Cela se dit mais je ne l'ai pas vrifi);

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 total dans le tableau. Pour un tableau une dimension Length-1 retourne l'indice du dernier lment. Cela est souvent utilis pour parcourir tous les lments du tableau:
Dim t(10) As String Dim i As Integer - 169 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

For i = 0 To t.Length-1 t(i)=.. Next t

On remarque que dans un tableau multi dimension Length n'est pas gale Ubound. GetLength(x) retourne un entier qui reprsente le nombre d'lments dans la dimension x.

GetValue et 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)

C'est quivalent myArray(0,3)="fox"

ArraySegment permet de dfinir un segment, une plage dans une Array.(framework 2).
Dim myArrSegMid As New ArraySegment(Of String)(myArray, 2, 5) 'ici le segment dbute au second lment et contient 5 lments.

(Si on modifie un lment de myArrSegMid cela modifie myArray car le segment dfini une plage du tableau et non un nouveau tableau) Sur des tableaux, les actions effectuer sont principalement: Rechercher un lment. Trier le tableau. Insrer un lment. Enlever un lment. On a dj voqu cela, mais pour tudier le dtail de ces algorithmes voir le chapitre 'Travail sur les tableaux et collections'.

Pour les super pro (dbutant passe ton chemin), on peut utiliser des mthodes gnriques. Exemple recherche dans un tableau de Short nomm monTab l'lment 2. index= Array.indexOf (Of Short)(monTab, 2) est hyper plus rapide que index= Array.indexOf (monTab, 2) car la premire version avec gnric est directement optimise pour les Short.

- 170 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Il est est de mme pour Binarysearch et Sort. Cela est valable pour les types 'valeur' (peu d'intrts pour les strings par exemple).

V-H-2 - Fonction avances sur les tableaux


Dbutant s'abstenir: La mthode Resize permet de modifier le nombre d'lments du tableau sans perdre le contenu:
Dim array As T(10) Dim newSize As Integer=2 Array.Resize(array, newSize)

La mthode Reverse permet d'inverser les lments d'un tableau.


Dim t(10) As Integer t(1) = 2 Array.Reverse(t)

On peut aussi spcifier l'indice de dbut et le nombre d'lments inverser.


Dim t(10) As Integer t(1) = 2 Array.Reverse(t, 2, 2)

A partir du Framework 2 les Arrays ont donc de nouvelles mthodes: Exists Le tableau contient-il des lments qui correspondent aux conditions dfinies par un prdicat? TrueForAll Chaque lment dans le tableau correspond-il aux conditions dfinies par un prdicat? Find Recherche un lment qui correspond aux conditions dfinies par le prdicat et retourne la premire occurrence. FindLast Idem pour la derniere occurrence. FindAll Rcupre tous les lments qui correspondent aux conditions dfinies par le prdicat. ConvertAll Chaque lment est pass individuellement un Converter, et les lments convertis sont enregistrs dans le nouveau tableau.

La syntaxe est dela forme Array.Find(Tableau, AdresseOf Predicat) Un Predicat est une Sub qui retourne True si une condition est remplie. Exemple fournit par Microsoft: On a un tableau contenant le nom d'animaux prhistoriques, le prdicat retourne True si le nom de l'animal se termine par 'saurus'. On veut savoir si la condition est remplie sur la liste au moins une fois (Exists), si tous les lments remplissent la condition (TrueForAll), quel lment rempli la condition(Find), le premier, le dernier (FindLast), on veut rcuprer dans un nouveau tableau tous les lments qui remplissent la condition.
- 171 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim dinosaurs() As String = { "Compsognathus", _ "Amargasaurus", "Oviraptor", "Velociraptor", _ "Deinonychus", "Dilophosaurus", "Gallimimus", _ "Triceratops" } Console.WriteLine() For Each dinosaur As String In dinosaurs Console.WriteLine(dinosaur) Next Console.WriteLine(vbLf & _ "Array.Exists(dinosaurs, AddressOf EndsWithSaurus): {0}", _ Array.Exists(dinosaurs, AddressOf EndsWithSaurus)) Console.WriteLine(vbLf & _ "Array.TrueForAll(dinosaurs, AddressOf EndsWithSaurus: {0}", _ Array.TrueForAll(dinosaurs, AddressOf EndsWithSaurus)) Console.WriteLine(vbLf & _ "Array.Find(dinosaurs, AddressOf EndsWithSaurus): {0}", _ Array.Find(dinosaurs, AddressOf EndsWithSaurus)) Console.WriteLine(vbLf & _ "Array.FindLast(dinosaurs, AddressOf EndsWithSaurus): {0}", _ Array.FindLast(dinosaurs, AddressOf EndsWithSaurus)) Console.WriteLine(vbLf & _ "Array.FindAll(dinosaurs, AddressOf EndsWithSaurus):") Dim subArray() As String = _ Array.FindAll(dinosaurs, AddressOf EndsWithSaurus) For Each dinosaur As String In subArray Console.WriteLine(dinosaur) Next End Sub Private Shared Function EndsWithSaurus(ByVal s As String) _ As Boolean 'Retourne True si la fin du mot se termine par "saurus" If (s.Length > 5) AndAlso _ (s.Substring(s.Length - 6).ToLower() = "saurus") Then Return True Else Return False End If End Function

Rsultat affich:
'Compsognathus 'Amargasaurus 'Oviraptor 'Velociraptor 'Deinonychus 'Dilophosaurus 'Gallimimus 'Triceratops ' 'Array.Exists(dinosaurs, AddressOf EndsWithSaurus): True ' 'Array.TrueForAll(dinosaurs, AddressOf EndsWithSaurus: False ' 'Array.Find(dinosaurs, AddressOf EndsWithSaurus): Amargasaurus ' 'Array.FindLast(dinosaurs, AddressOf EndsWithSaurus): Dilophosaurus ' 'Array.FindAll(dinosaurs, AddressOf EndsWithSaurus): - 172 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre 'Amargasaurus 'Dilophosaurus

V-H-3 - Exemple courant d'utilisation des tableaux


Exemple dtaill: Crer un tableau de 6 lments, mettre dans chaque lment du tableau le carr de son indice, afficher le contenu du tableau. Cela montre l'intrt d'utiliser une boucle pour balayer tous les lments d'un 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 Next 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".

- 173 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim Dim Dim Dim For

Tableau() As String = {"ABCDEFG", "HIJKLMNOP"} AChercher As String = "MN" i As Integer position As Integer i = 0 To Tableau.Length - 1 'on parcourt chaque lment du tableau position = Tableau(i).IndexOf(AChercher) 'dans l'lment du tableau on cherche la sous-chane If position >= 0 Then Exit For Next i

Exemple de tri de 2 tableaux: On cre un tableau de cls et un tableau des valeurs, chaque cl est lie une valeur. On trie partir du tableau des cls myKeys , le tableau myValues est modifi pour 'suivre' le tri des cls. La Sub PrintKeysAndValues affiche les rsultats.
Public Shared Sub Main() ' ****************Cration des tableaux. 'Tableau des cl Dim myKeys() As String = {"red", "GREEN", "YELLOW", "BLUE", "purple", "black", "orange"} 'tableau des lments Dim myValues() As String = {"strawberries", "PEARS", "LIMES", "BERRIES", "grapes", "olives", "cantaloup"}

'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) ' 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

- 174 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre 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.

V-I - Les 'Collections'

Une alternative aux tableaux est l'usage de Collection. Les Collections permettent de regrouper des donnes. Les collections sont trs utilises dans la programmation 'Objet'. Une collection fonctionne plutt comme un groupe d'lments dans laquelle il est possible d'ajouter ou d'enlever un lment n'importe quel endroit sans avoir se proccuper de la taille de la collection, 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 aucun lment au dpart, puis il n'y a que les lments que l'on a ajout. Les lments sont reprs grce un index ou avec une Cl unique Les items affichs dans une ListBox donnent une ide concrte de ce qu'est une collection.

V-I-1 - Exemple simpliste


Soit la collection Col, au dpart elle est vide. J'ajoute des lments (ou items) cette collection. Col.Add ("Toto") Voici la collection: Toto La collection a maintenant 1 lment (On dit un Item).

- 175 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Je fais maintenant: Col.Add("Lulu") Col.Add("Titi") Toto Lulu Titi La collection a 3 lments maintenant, l'lment (on dit Item) 0, 1, 2.

Je fais : Col.Remove(1) enlve le deuxime lment. (Attention on compte les lments partir de l'lment 0). Toto Titi La collection n'a plus que 2 lments maintenant. On voit que le nombre d'lments n'est pas connu l'avance, il varie en fonction des lments ajouts (ou retirs) Un lment est repr par son indice. Col.Item(1) contient "Titi" (le second Item de la collection) Remarque: J'ai pris une collection de 'Base 0': le premier lment l'indice 0, c'est habituel dans les classes du Framework; il existe aussi des collections (celles venant de Visual Basic) de Base 1.

V-I-2 - Classification des collections


Il est intressant de classer les collections par fonction: Il y a les List, comme dans l'exemple simpliste. On a un Index pour reprer les lments.(Pas de cl). Toto Lulu Titi

Il y a les Dictionnaires, chaque lment une cl, on parle de Collection Cl-Valeur. On utilise la cl pour retrouv une valeur.

- 176 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Certaines collections combinent List et Dictionnaire, d'autres sont tries automatiquement. Enfin il y a des collections particulires: les Piles, Queue, HashSet....

Certaines collections peuvent contenir des objets, d'autres des Strings ou des Bytes.. Certaines collections utilisent, elles, les gnriques: Elles sont faites pour contenir des gnriques c'est dire ce que l'on veut. Quand on utilise la Collection, on indique le type. Du coup la collection est fortement type: elle ne peut contenir d'un type de donne. Exemple : List(Of String) est une List ne pouvant contenir que des Strings.

Voici les principales collections: Les Listes: ArrayList, List(Of..) VB 2005 Les Dictionnaires:HashTable, Dictionnary Les Listes-Dictionnaires:SortedList,DictionnaryList Les Queue et les Queue (Of..) Les Piles: Les Stack et les Stack (Of..) Les Listes chanes Les LinkedList(Of....) VB 2005 Gestion des ensembles: Les HashSet VB 2008 Collections travaillant sur les Bits:BitArray, BitVector32 Autres: ObservableCollection

V-I-3 - ArrayList
Fait partie de System.Collections. c'est une Classe .Net. Il faut donc ajouter en haut du module:
Imports System.Collections

C'est une 'Liste' d'objets, d'Item: La ArrayList est une collection particulire: On peut y mettre des objets : chanes, nombres... rien n'empche que le premier lment soit un entier, le second une chane . Il n'y a pas de cl. Attention le premier lment, le premier Item, est ici l'lment 0 (l'index va de 0 count-1) ; c'est du .NET!! Exemple:
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")

- 177 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

L.Add("Bonjour") MsgBox(L(0))

'On ajoute un lment la collection 'On affiche le premier lment

L.Add() permet d'ajouter un lment; on affiche le premier lment L(0) On pourra aussi crire L.Item(0) pour pointer le premier lment, en effet les lments sont L.Item(0), L.Item(1), L.Item(2)...
MsgBox(L.Count.ToString) 'On affiche le nombre d'lment.

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") L.RemoveAt(0) L.Sort() L.Clear() L.Containts (lment) 'On enlve l'lment de la liste qui contient "Bonjour" 'On enlve l'lment 0 de la liste 'Trie la collection 'Efface tous les lments ' Retourne True si la liste contient lment.

Insert permet d'insrer un index spcifi:


L.Insert( position, Ainserrer)

InsertRange insre une ArrayList dans une Autre ArrayList.

L.Containts (lment)

' Retourne True si la liste contient 'lment'.

Recherche d'un lment dans une collection NON TRIEE avec IndexOf:
Dim l As New ArrayList Dim i As Integer l.Add("toto") l.Add("lulu") i = l.IndexOf("lulu") MsgBox(i.ToString) 'Affiche 1 qui est l'index de "lulu"

On rappelle qu'il existe aussi LastIndexOf qui dmarre par la fin et une surcharge permettant de dbuter la recherche partir d'un indice donn. Comment rechercher "lulu" partir du 3me lment).
i = l.IndexOf(3,"lulu")

- 178 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Recherche d'un lment dans une collection TRIEE avec BinarySearch:


Dim l As New ArrayList Dim i As Integer l.Add("toto") l.Add("lulu") l.Sort()'Il est ncessaire que le tableau soit tri i = l.BinarySearch("lulu") MsgBox(i.ToString) 'affiche 1

Pour parcourir une collection, 3 mthodes : -Avec l'index de l'item


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. Enfin bien se souvenir que A est un Objet, il faudra le convertir pour l'utiliser:
Dim s As String= CType(A,String)

-Avec For Each


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

Attention, A est un objet. De plus on verra que dans une boucle For Each, on ne peut pas modifier la collection.

-Avec l'objet IEnumerator (dbutant passe ton chemin) On cre un objet C de type IEnumerator pour parcourir la collection, cet objet a 3 proprits: MoveNext qui avance d'un lment dans la collection. S'il ne peut plus avancer (s'il est dj aprs le dernier) il retourne False Reset qui place l'lment courant au dbut, avant le premier lment (Comme au dpart) Current dsigne l'lment courant.
- 179 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple montrant la seule manire de faire pour parcourir la collection:


Dim L As New ListArray Dim C As IEnumerator= L.GetEnumerator() While C.MoveNext()) A=C.Current End While

Attention, si Option Explicit=On Les lments de la ListArray tant des objets, on ne peut pas les affecter une variable String par exemple, il faut crire:
Str = CType(L(0), String) 'on convertit (on cast) l'objet en String.

Remarque:
L.Add(Nothing) 'est accept: on ajoute un lment vide

V-I-4 - List (Of)


A partir de 2005 on a des collections que l'on peut typer, c'est dire qu'elles ne pourront contenir qu'un type de donne, que des String, des entiers, des instances de telle classe... On parle de collections gnriques. Le terme Of permet de dfinir le type de la collection. Ncessite:
Imports System.Collections.Generic

Crons une liste ne contenant que des 'decimal'.


Dim lst As New List (Of Decimal)

Exemple: crons une collection de String List(Of String): Elle est type car elle ne peut contenir que des 'String'.
Dim lst As New List(Of String)

Il s'agit d'une List avec Index. lst(0) est le premier lment. ou lst.item(0) On ajoute une String:

- 180 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

lst.Add("toto")

Comment affecter cet lment une String?


Dim S As String = lst.Item(0)

L'item est bien typ : mme avec 'Option Strict=on' pas besoin de CType.

Nombre d'lments de la list:


lst.Count

La liste contient t-elle "toto"?


Dim present As Boolean =lst.Contains("toto")

Present = True si la liste contient "toto".

Insrer un lment une position donne:


lst.Insert(2, "lulu")

Parcourir tous les lments et les afficher:


For Each element As String In lst Console.WriteLine(element) Next

Rechercher un lment dans la liste:


lst.IndexOf("lulu") 'retourne l'index de l'lment qui contient "lulu" lst.IndexOf("lulu", 2,7) recherche partir de l'lment 2 et sur 7 lments.

Il existe aussi LastIndexOf.

Sur un tableau tri on utilise BinaryScearch, voir ArrayList, c'est parreil.

On voit que List (Of) possde toutes les mthodes des ArrayList, mais en plus il existe des mthodes propres aux collections gnriques ( partir du Framework 2):

- 181 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exists List contient-il des lments qui correspondent aux conditions dfinies par un prdicat? TrueForAll Chaque lment dans List correspond-il aux conditions dfinies par un prdicat? Find Recherche un lment qui correspond aux conditions dfinies par le prdicat et retourne la premire occurrence. FindLast Idem pour la dernire occurrence. FindAll Rcupre tous les lments qui correspondent aux conditions dfinies par le prdicat. ConvertAll Chaque lment est pass individuellement un Converter, et les lments convertis sont enregistrs dans la nouvelle collection. RemoveAll Efface les lments qui correspondent au Predicat

La syntaxe est dela forme List.Find(Tableau, AdresseOf Predicat) Un Predicat est une Sub qui retourne True si une condition est remplie. Exemple: J'ai une list 'lst', je veux mettre dans 'listResult' tous les lments de lst qui se terminent par 'lu'. On cre une liste (listResult) qui grce FindAll se chargera des lments de lst qui rpondent une condition:
Dim listResult As List(Of String) = lst.FindAll(AddressOf SeTermineParLU)

En argument de FindAll on a l'adresse d'une fonction: ici la fonction 'SeTermineParLU'. Pour chaque lment de lst si SeTermineParLU retourne True, l'lment correspondant est pass dans listResult. Voici la fonction de test, le Predicat.
Private Shared Function SeTermineParLU (ByVal s As String) As Boolean If (s.Length > 2) AndAlso Return True Else Return False End If End Function (s.Substring(s.Length - 2).ToLower() = "lu") Then

V-I-5 - HashTable
C'est un 'Dictionnaire' qui comporte des couples cl-lment, des paires cl-valeur. Ces couples sont de type Objet-Objet.

- 182 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

La cl toujours unique permet de retrouver la valeur, La cl ne doit pas tre vide non plus.

Crons une Hashtable:


Dim H As New Hashtable

H.Add(Cl,Valeur) Ajoute un lment H.Item(Cl) Retourne l'lment correspondant une cl. H.ContainsKey(Cl) Retourne True si la Cl est dans la table. H.ContainsValues(Valeur) Retourne True si la valeur est dans la table. H.Clear Efface tous les lments H.Remove(Cl) Supprime l'lment ayant une cl spcifie. Les collections H.Values et H.Keys contiennent les valeurs et les cls.

Exemple:
' Creation d'une Hashtable. Dim myHT As New Hashtable() ' Mettre des lments dans la HashTable myHT.Add("un", "premier") myHT.Add("deux", "second") myHT.Add("trois", "troisime") myHT.Add("quatre", "quatrime") 'Recherche la valeur correspondant la cl "trois" myReponse=myHT.Item("trois") 'Parcourir la HashTable 'Cration d'un IDictionaryEnumerator Dim myEnumerator As IDictionaryEnumerator = myHT.GetEnumerator() While myEnumerator.MoveNext() 'Afficher cl et valeur MsgBox( myEnumerator.Key+ myEnumerator.Value) End While 'Retourne "troisime"

- 183 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Attention on n'utilise pas de numro d'index mais uniquement la cl. En interne, pour chaque lment, la cl est 'hache' pour crer un code de hashage qui sert pointer l'lment et sa valeur (voir le chapitre sur l'algorithme), ce procd acclre la recherche de la valeur partir de la cl.

V-I-6 - Dictionnary (Of)


A partir de VB 2005, il y a cette collection de type Dictionnaire (Cl-Valeur) mais elle utilise les gnriques. La cl doit tre unique (pas de doublon de cl). La rcupration d'une valeur partir de sa cl est trs rapide.(Utilisation d'un hachage) Of permet de choisir le type de la cl et celui des valeurs. Crons un Dictionnary avec des cls de type String et des valeurs de type String.
Dim Dic As New Dictionary(Of String, String)

' Ajout d'lment


Dic.Add("txt", "notepad.exe") Dic.Add("bmp", "paint.exe")

' Ajout d'lment en vrifiant avant si la cl n'existe pas


If Not Dic.ContainsKey("ht") Then Dic.Add("ht", "hypertrm.exe") End If

' Modifier la valeur correspondant la cl 'doc'


Dic("doc") = "winword.exe"

'Parcours du Dictionary (le type de cl/Value est KeyValuePair).


For Each kvp As KeyValuePair(Of String, String) In Dic Console.WriteLine("Key = {0}, Value = {1}", Next kvp kvp.Key, kvp.Value)

' Rcuprer une valeur correspondant une cl

- 184 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim tt As String = Dic("rtf")

'TryGetValue permet de rechercher une valeur correspondant une cl, retourne False si la cl n'existe pas (sans dclencher d'erreur).
Dim value As String = "" If Dic.TryGetValue("tif", value) Then Console.WriteLine("For key = ""tif"", value = {0}.", value) Else Console.WriteLine("Key = ""tif"" non trouve.") End If Dic..ContainsKey("ht") permet aussi de tester si une cl existe.

'Enlever un lment
Dic.Remove("doc")

V-I-7 - SortedList
Combine List et Dictionnaire avec un tri automatique. Il permet l'accs aux valeurs par l'intermdiaire des cls associes ou des index. C'est un hybride de HashTable et de Array. On ajoute un lment par mySL.Add(Cl,Valeur) La squence d'index est base sur la squence de tri. Quand un lment est ajout, il est insr dans l'ordre de tri adquat, et l'indexation s'ajuste en consquence. Le tri est donc automatique.

On peut donc lire une valeur par sa Cl ou son Index:


Quand la cl d'un lment permet d'accder celui-ci l'aide de la proprit d'indexeur Item, l'lment se comporte comme Hashtable. Quand l'index d'un lment permet d'accder celui-ci l'aide de GetByIndex ou de SetByIndex, l'lment se comporte comme Array (tableau avec un Index).
mySL.GetKey(3) 'retourne la Cl qui est dans l'lment d'index 3 mySL.GetByIndex(3) 'retourne la valeur qui est dans l'lment d'index 3 mySL.Item(CLE) 'retourne la valeur correspondant la cl CLE

SortedList maintient en interne deux tableaux , un tableau pour les cls et un autre pour les valeurs associes. Index de base 0: Le premier lment est 0.

- 185 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple:
Dim mySL As New SortedList() mySL.Add("1", "Hello") mySL.Add("2", "World") mySL.Add("3", "!") Console.WriteLine(" Count: {0}", mySL.Count) 'Nombre d'lments Console.WriteLine(" Capacity: {0}", mySL.Capacity) 'nombre d'lments possible,automatique, on n'a pas s'en occuper. Dim i As Integer For i = 0 To mySl.Count - 1 Console.WriteLine( myList.GetKey(i)& myList.GetByIndex(i)) 'affiche les lments de la collection ' par index croissant. Next i

Les SortedList(Of..) sont des SortedList gnriques avec Cl et valeur ,tries sur la cl. Ressemble SortedDictionary, mais occupe moins de mmoire et est moins rapide pour les insertions/suppressions. Les SortedDictionnary(Of..) sont des collections gnriques avec Cl et valeur ,tri sur la cl.

V-I-8 - Queue
Collection d'objets de type FIFO (First In, First Out) Premier arriv premier servi. C'est la queue devant un cinma, le premier arriv, prend son billet le premier. Les objets (String, Integer....) stocks dans Queue sont insrs une extrmit et supprims l'autre. Le nombre d'lment de la queue est gr automatiquement. DeQueue supprime et retourne l'objet de dbut de liste. EnQueue ajoute un objet en fin de liste. Peek retourne l'objet de dbut sans le supprimer.

Dim myQ As New Queue() myQ.Enqueue("One") myQ.Enqueue("Two") - 186 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre myQ.Enqueue("Tree") Console.WriteLine ( myQ.Count) 'Affiche le nombre d'lments. Console.WriteLine (myQ.Dequeue())

Affiche le premier sorti en le sortant. "one" dans notre exemple. S'il n'y a plus d'lment cela lve une exception (une erreur) il faut donc grer l'exception ou contrler le nombre d'lment avec la proprit Count.
If MyQ.Count>0 then myQ.Dequeue.. End If

Console.WriteLine (myQ.Peek())

Affiche le premier lment sans l'enlever de la Queue


myQ.Clear()

Efface tous les lments de la queue

Les Queue(Of..) sont des Queue mais avec un gnric.

V-I-9 - Stack
Collection d'objets de type pile ( ou stack) LIFO (Last In, First Out) Dernier entr, premier sortie. 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.

- 187 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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 MaPile.Push ("A") MaPile.Push ("B") MaPile.Push ("C") 'Rcuprer un objet de la pile: Srt =MaPile.Pop()

Str est maintenant gal "C" Attention, si Option Explicit=On, les lments de la pile tant des objets, on ne peut pas les affecter une variable String, il faut crire:
Str = CType(MaPile.Pop(), String) 'on convertit (cast) l'objet en String

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!!), l aussi vrifier que MaPile.Count (qui indique le nombre d'lments dans la pile) n'est pas gale 0 avant de 'Poper'.
Mapile.Clear() 'Supprime tous les objets.

Les Stack(Of..) sont des track mais avec un gnric.

V-I-10 - Les LinkedList (Of)


Ce sont des Listes Chanes de gnrique, chaque lment comportant une proprit Value(qui contient la valeur de l'lment), Next et Previous. A partir d'un lment, on peut connatre le suivant ou le prcdent. Voir le chapitre sur les algorithmes qui explique la notion de liste chane. Schmas d'une liste chaine:

- 188 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Imports System.Collections.Generic ' Cration d'une list. Dim words() As String = {"the", "fox", "jumped", "over", "the", "dog"} ' Cration d'une Linkedlist. Dim lk As New LinkedList(Of String)(words) Ajouter le mot 'today' au dbut. lk.AddFirst("today") 'Effacer le dernier lment. lk.RemoveLast() 'Les lments sont des LinkedListNode, on peut en chercher un avec Find FindFirst, FindLast. Dim current As LinkedListNode(Of String) = lk.FindLast("the")

'A partir de l'lment courant, on peut ajouter avant ou aprs. lk.AddAfter(current, "old") 'il y a aussi AddBefore

'A partir de l'lment courant, on peut parcourir la linkedList Dim element As LinkedListNode(Of String) = current.Previous 'On peut dplacer un lment lk.AddBefore(current, element) 'On peut voir le contenu d'un LinkedListNode current.Value current.Previous.Value 'on peut voir la valeur du premier ou du dernier lment: lk.First.Value lk.Last.Value 'Il existe aussi Containst, Count 'il y a aussi Next

- 189 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-I-11 - HashSet (Of)


Travailler sur les ensembles. Il s'agit d'une collection de gnriques sans ordre qui contient des lments uniques. HashSet possde comme toutes les collections Add, Remove et Contains.. et fournit plusieurs oprations d'ensembles (notamment l'union, l'intersection et la diffrence symtrique) ce qui permet de prendre en charge la plupart des oprations mathmatiques qui sont gnralement ralises sur des ensembles (sens mathmatique du terme).
Dim hs As New HashSet(Of String) 'Ajout d'lments: hs.Add("toto") hs.Add("lulu") hs.Add("titi"

La mthode Add renvoie True ou False pour indiquer si elle a fonctionn (s'il n'y avait pas dj dans la HashSet l'lment que l'on veut ajouter).
Dim caMarche As Boolean = hs.Add("toto") 'retourne False

hs.Count 'donne le nombre d'lment.

On peut effacer un lment:


hs.Remove("lulu")

On peut effacer sous condition: Exemple: effacer tous les lments contenant un "t":
hs.RemoveWhere( Adress Of Test)

'La fonction Test reoit chaque string de la table et retourne un boolen qui indique si la condition est remplie ce qui dclenche le Remove.
Private Shared Function Test(ByVal s As String) As Boolean Return (Instr(s,"t")<>0) End Function

On peut ajouter la collection hs2 hs grce UnionWith:


hs.UnionWith(hs2)

Les lments doublons (qui existent dj dans hs) ne sont pas ajouts.
- 190 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Cela correspond un And.

On peut rechercher les lments communs hs2 et hs grce IntersectWith:


hs.IntersectWith(hs2)

hs contient maintenant les lments qui taient prsent dans hs et hs2 Cela correspond un Or.

On supprime tous les lments de hs qui sont aussi contenus dans la collection passe en paramtre (hs2) avec ExceptWith
hs.ExceptWith(hs2)

hs contient maintenant les lments qui n'taient pas prsent dans hs et hs2

On peut rechercher les lments contenus dans hs2 et dans hs mais pas dans les 2 grce SymmetricExceptWith:
hs.SymmetricExceptWith(hs2)

hs contient maintenant les lments qui taient prsent dans hs ou hs2 mais pas les deux.

On peut rechercher si hs2 est un sous ensemble de hs grce IsSubsetOf:


Dim b As Boolean= hs.IsSubsetOf(hs2)

b est gal True si hs est un sous ensemble de hs2 (tous les lments de hs sont dans hs2). Il existe aussi: IsProperSubstOf qui retourne True si hs est un sous ensemble de hs2 et si hs diffrent de hs2 (sous ensemble strict).

On peut rechercher si hs est un sur ensemble de hs grce IsSupersetOf:


Dim b As Boolean= hs.IsSupersetOf(hs2)

b est gal True si hs est un sur ensemble de hs2 (tous les lments de hs2 sont dans hs). Il existe aussi: IsProperSupersetOf qui retourne True si hs est un sur ensemble de hs2 et si hs est diffrent de hs2 (sur ensemble strict).

- 191 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-I-12 - BitArray
Cre une collection de boolens (cods sur un bit). La valeur de chaque lment est True ou False.
'Creation de BitArray. Dim myBA As New BitArray(5)

'BitArray de 5 bits

Dim myBA As New BitArray(5, False) 'BitArray de 5 bits False Dim myBA() As Boolean = {True, True, False, False, False} Dim myBA As New BitArray(myBytes) 'on cre un tableau de Booleans que l'on met dans le BitArray

Le premier lment est l'lment 0. On peut mettre tous les bits True avec SetAll:
myBA.SetAll(True)

' Mettre le dernier Bit False avec Set.


myBA.Set(myBA.Count - 1, False)

'Obtenir la valeur du second Bit.


myBA.Get(1)

myBA(1) ou myBA.Item(1) donnent aussi la valeur du second Bit. On peut effectuer des oprations logiques entre 2 BitArray (Or, Xor, And Not): Exemple pour Or:
myBA1.Or(myBA2)

Count et Length donnent le nombre d'lments, mais Count est en lecture seule, Length permet, lui, de modifier le nombre d'lments.

La Collection BitVector32: Ne permet de travailler que sur 32 bits mais est plus rapide. Il faut avoir ajout: Imports System.Collection.Specialized.

V-I-13 - StringCollection
L'espace System.Collections.Specialized fournit ces nouveaux types de collection trs spcifiques, elles ne sont faites que pour un seul type:

- 192 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

StringCollection ne peut contenir que des chanes (cela devrait aller plus vite)
' Crer une StringCollection. Dim myCol As New StringCollection() 'Crer un tableau de String, l'ajouter( en fin) la collection. Dim myArr() As [String] = {"rouge", "vert", "orange", "vert",) myCol.AddRange(myArr) 'Ajouter un lment la fin de la collection myCol.Add("marron") 'Insrer un lment l'index 3 myCol.Insert(3, "bleue") 'Enlever une lment myCol.Remove("orange") ' chercher et enlever tous les lments "vert" Dim i As Integer = myCol.IndexOf("vert") While i > - 1 myCol.RemoveAt(i) i = myCol.IndexOf("vert") End While ' La collection contient t'elle "jaune"? If myCol.Contains("jaune") Then.. ' Copie la collection dans un tableau. Dim myArr2(myCol.Count) As [String] myCol.CopyTo(myArr2, 0) ' Efface toutes les strings de la Collection. myCol.Clear() 'Afficher la liste des Strings Dim myEnumerator As System.Collections.IEnumerator = myCol.GetEnumerator() While myEnumerator.MoveNext() Console.WriteLine(" {0}", myEnumerator.Current) End While 'C'est un peu complexe!! on y reviendra.

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

V-I-14 - Autres
Pour mmoire on se souvient qu'il existait un Type Collection en VB6, de Base 1, oublier.

Par contre, partir de VB 2008 existent les collections ObservableCollections qui peuvent tre 'Bindes' (attaches) des Objets visuels (comme une List ou une Grid WPF) et qui permettent la mise jour automatique du contrle quand on modifie la collection.

V-I-15 - Gnralisation de la notion de collection


Certains objets ont une liste de donnes, d'items, Vb les organise en Collections.

- 193 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Une collection peut donc faire partie des proprits d'un objet. Exemple: On verra plus loin qu'un contrle nomm TextBox peut contenir du texte, ce contrle une collection nomme .lines qui contient les lignes de texte (s'il y en a plusieurs) Si le texte contient 3 lignes, elles seront dans la collection 'lines'.
Texbox1.lines(0) Textbox1.lines(1) Textbox1.lines(2) 'remarquer, ici le premier lment est 0!!

L'indice des lments va de 0 count-1 Autres exemples: Les contrles ListBox possdent une collection 'Items' dans laquelle sont placs tous les lments contenus dans la liste. Pour ajouter un lment on utilise la mthode Add de la collection Items:
ListBox.Items.Add( )

Un tas d'objets possdent des collections. Encore plus: chaque formulaire possde une Collection 'Controls'. Il s'agit d'une collection qui contient tous les contrles de ce formulaire.

V-I-16 - Pourquoi le premier lment est-il 0 ou 1 ?


Le .NET Framework normalise les collections comme tant des collections de base zro (ArrayList par exemple). Visual Basic fournit des collections de base 1 (Comme Collection qui n'est plus utilis).

V-I-17 - 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")

- 194 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre 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, "!!!")

V-I-18 - Lexique anglais=>Franais


Array = tableau, table. length= longueur Key= cl Remove (to)= enlever Stack= tas

V-J - 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. Les structures sont surtout utilises dans la programmation non 'objet'(En programmation Objet, on utilisera plutt les Collections).

Exemple : Vous voulez dfinir une variable contenant une adresse compose d'un numro, de la rue, de la ville. Il faut d'abord dfinir la structure (au niveau Module ou Class, pas dans une procdure).
Public Structure Adresse Dim Numero Dim Rue Dim Ville End Structure As Integer As String As String

Puis dans une procdure il faut dclarer la variable :


- 195 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim MonAdresse As Adresse

La variable MonAdresse est dclare comme une adresse, elle contient donc: un numro qui est dans 'MonAdresse.Numero' un nom de rue qui est dans 'MonAdresse.Rue' un nom de ville qui est dans 'MonAdresse.Ville'

On pourra enfin l'utiliser :


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 de type structure comme paramtre d'une fonction:
Sub AfficheAdresse( ByVal ...Imprimer l'adresse End sub Une Adresse As Adresse)

Pour imprimer l'adresse 33 on crira AfficheAdresse ( Adresse(33))

V-J-1 - Tableau dans une structure


Attention quand dans une structure il y a un tableau, il faut l'initialiser:

- 196 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

on veut dfinir une structure dans laquelle il y a 25 donnes DriveNumber. On aurait tendance crire:
Public Type DriveInfo DriveNumber(25) As Integer 'FAUX DriveType As String End Type

Mais cela ne fonctionne pas!! En Visual Basic .NET il y a 2 mthodes pour utiliser un tableau dans une structure: 1-Mthode par initialize Une structure peut comporter une mthode 'Initialize' qui sera excute quand on dclare une variable de type structure. Ici, on a cre une mthode Initialize qui redimensionne le tableau interne la structure.
Public Structure DriveInfo Dim DriveNumber() As Short 'Noter que le nombre d'lment a disparu. Dim DriveType As String 'maintenant on instance les 25 lments. Public Sub Initialize() ReDim DriveNumber(25) End Sub End Structure

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

2-Autre manire de faire: Aprs la dclaration de la variable, on 'Redimensionne' le tableau.

- 197 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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 utilise 100 variables Drives, il faut 'Redim' ou 'Initialize' le tableau pour chaque variable!!
Dim Drives (100) As DriveInfo

For i as Integer =0 to 100 Drives (i).Initialize Next i 'Dur dur!!

En plus si Dim Drives (100) est en tte d'un module, il faut mettre la boucle dans une procdure.

V-J-2 - Allons plus loin


Une structure hrite de System.ValueType

V-J-2-a - 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:
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 - 198 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On dfinit une structure Point et on dfinit 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 nulles ( elles sont gales 0 aprs la cration).

V-J-2-b - 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. - D'autres Structures. - Des procdures. - Des proprits.

Exemple donn dans l'aide (et modifi par moi) : Dbutant: A relire peut-tre ultrieurement quand vous saurez utiliser les Classes.

- 199 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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 ' 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 ep.Salary = 100 'Dclaration d'une variable Employee 'On saisit le salaire

ep.CalculateBonus(20) 'On calcule le bonus TextBox1.Text = ep.Bonus.ToString 'On affiche le bonus

Cela ressemble aux Classes !! Non?

V-J-2-c - 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 Structute

En conclusion les structures sont maintenant trs puissantes et peuvent contenir autant de choses que les Classes , on verra cela plus loin. Mais les structures sont rfrences 'par valeur' alors que les Classes le sont 'par rfrence'.

- 200 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-K - Type valeur ou rfrence

Rsumons la notion trs importante de variable 'par valeur' ou 'par rfrence'.

Un type de donnes est un type valeur s'il contient des donnes dans l'espace qui lui est allou en mmoire. Un type rfrence contient un pointeur vers un autre emplacement en mmoire contenant les donnes.(dixit MicroSoft)

V-K-1 - La variable 'par Valeur'


Contient rellement une valeur. Prenons pour exemple une variable de type 'Long'.
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 il 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.

V-K-2 - La variable 'par Rfrence'


Elles ne contiennent pas la valeur de 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.

V-K-3 - Influence sur l''Affectation'


Posons le problme:

- 201 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Travaillons sur A et B, 2 variables ayant la mme 'nature'. A existant dj, faisons:


Dim B=A

Puis modifions la valeur de A, cela modifie t-il B? Les variables par Valeur ou par Rfrence ne ragissent pas de la mme manire: 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. 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: ils 'pointent' sur le mme endroit. Si on modifie A, B est modifi car il pointe au mme endroit. 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 P=4 'on affecte P L '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 Classe 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 C2.Value = 123 'on cre C2, on affecte C1 C2 'on modifie C2

=> C1.Value=123 C2.Value=123 Modifier C2 a modifi C1 car elles pointent sur le mme endroit mmoire.

V-K-4 - Copie d'objet By Ref: exemple des Tableaux


Exemple sur les tableaux qui sont 'Par rfrence':

- 202 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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'

Voyons le dtail: B=A 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. C'est ce qui se passe dans notre exemple.

Copie lment par lment. Si on a dclar 2 tableaux distinct, B(2)= A(2) affecte un lment d'un tableau un lment d'un autre tableau, cela ne modifie que la valeur d'un lment et n'affecte pas le tableau. Aussi si on veut faire une copie 'indpendante' d'un tableau, il faut le dclarer puis avec une boucle copier chaque lment du tableau dans le nouveau.

B= A.Clone B= A.Clone copie le tableau A dans B en conservant 2 tableaux distinct. Ensuite, modifier un lment du tableau ne modifie pas l'autre.

V-K-5 - Le cas particulier des 'String'.


Elles 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 les Strings 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 qui est 'par rfrence', il parait donc impossible de la dupliquer, elle se comporte comme une variable par valeur!!
- 203 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Pourquoi les String sont 'par rfrence' et se comportent comme si elles taient 'par valeur'?? L'oprateur d'affectation "=" de deux strings "A=B" a simplement t dfini de manire restrictive pour les strings. Les crateurs de vb .net lui ont permis uniquement une copie de la valeur de la string et non de la rfrence. Il vaut mieux ne pas permettre l' affectation de la mme rfrence pointant sur le mme objet c'est dangereux pour les dbutants et cela serait totalement incompatible avec les versions prcdentes.. Ensuite, parce que la copie de la valeur d'une string dans une autre est une opration extrmement courante chez les programmeurs. Ce qui n'est pas le cas de l'affectation de la mme rfrence pointant sur le mme objet. On dit que les String sont 'Immutable' (Comme System.Nullable?). En conclusion, rien de choquant dans le fait qu'un type string se comporte comme un type par valeur: car c'est juste la dfinition de l'oprateur d'affectation "=" qui a t redfinie, et c'est tout. Tout ce qui concerne l'implmentation du type string est strictement comme tous les types par rfrence. (Merci Sabri pour cette explication)

V-K-6 - Dclaration avec New ?


En thorie, il faut utiliser New quand on dclare une variable 'par rfrence': Il faut crire:
Dim L As Long 'un long est 'par valeur' 'un bouton est un objet 'par rfrence'

Dim F As New Button

En fait
Dim L As New Long Dim O As Object Dim S As String 'est accept 'est accept mais on a une rfrence vide. 'est accept.

Pour les Classes ou les objets graphiques, il faut par contre bien taper New pour crer l'objet:
Dim F As New Button

Si on tape Dim F As Button on cre une rfrence vide, mais pas d'objet Button.

V-K-7 - Valeur aprs dclaration


Apres cration (avant initialisation) une variable numrique '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 S As String 'S contient Nothing: il ne pointe sur aucun objet.

- 204 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On peut tester par If IsNothing( O ) then.. ou If O Is Nothing..

Pour les tableaux, bien que le tableau soit 'par Rfrence', c'est le type de variable utilis dans le tableau qui dcide de la valeur des lments aprs dclaration.
Dim T(3) As Long '=>T(0)=0

V-K-8 - Comparaison
1-Une variable par Valeur peut tre compare une autre par "=",
Dim L As Long=12 Dim P As Long=24 If L=P Then..

2-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..

NB: pour les String '=' et 'Is' peuvent tre utiliss. 3-Equals peut tre utilis pour comparer les 2 types de donnes:
Obj1.Equals(Obj2)) 'Retourne True si Obj1 et Obj2 ont le mme pointeur.

ou
N1.Equals(N2) 'Retourne True si la valeur de N1= la valeur de N2

Pour les types 'rfrence', l'galit est dfinie comme une galit d'objets, c'est--dire si les rfrences renvoient ou non au mme espace mmoire. Pour les types valeur, l'galit est dfinie comme une galit au niveau du bit , autrement dit si la valeur est la mme.

V-K-9 - IsReference
Il existe une instruction permettant 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 - 205 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim Dim Dim Dim R R R R = = = = MyArray(3) As Boolean MyString As String MyObject As Object MyNumber As Integer IsReference(MyArray) ' IsReference(MyString) ' IsReference(MyObject) ' IsReference(MyNumber) ' R= R= R= R= True. Tableau True. String True. Objet False. Entier

V-L - Variable 'Object' et autre

Il existe un autre type de variable: le type 'Object'.

V-L-1 - Le Type 'Object'


Parfois on ne sait pas ce que va contenir une variable: un Integer? une String? un Single? Pour rsoudre ce problme on utilise une variable de type 'Object'. Cela remplace le type 'Variant' de VB6.
Dim myObjet As Object

Ensuite:
myObjet=12

est accept, et myObjet sera considr comme un type Integer.


myObjet=12.6

est accept, et myObjet sera considr comme un type Single.


myObjet="Visual Basic"

est accept aussi, et myObjet sera considr comme un type String. Les 3 affectations myObjet= peuvent se suivre sans planter, l'objet contenant successivement un type Integer, Single et String. On rappelle qu'une variable objet est une variable 'Par rfrence'. On peut, suite au dernier exemple, rcuprer l'objet et le transformer en String.
Dim maString As String maString= CType(myObjet, String) - 206 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Comment savoir quel type de variable contient la variable 'Objet'? Si on fait myObjet.GetType.ToString cela retourne 'System.String' indiquant que myObjet contient bien une String. myObjet.GetType.Name retourne 'String' Pour tester si myObjet est une String, il y a une autre manire avec TypeOf Is:
If TypeOf myObjet Is String Then.. End if

Attention, TypeOf Is retourne True aussi pour les Classes d'objet parent.

Dim monlabel As New Label If TypeOf monlabel Is Control Then ' est vrifi car label drive de control

monlabel est bien un Label mais c'est aussi un Control.(On verra que tous les objet visuel comme Label drive de la classe Control).

V-L-1-a - Comment utiliser les proprits d'un objet ?


Comment utiliser les membres des variables String qui sont dans un objet? Exemple: mettre une string dans une variable Objet, connatre la longueur de la String. -Si Option strict=Off (On force VB ne pas tre trop Strict!!! On verra cela plus loin)
Dim myObjet As New Object myObjet="VB" MessageBox.Show(myObjet.length) 'affiche 2

-Si Option strict=On (On force VB ne rien tolrer)

MessageBox.Show(myObjet.length) dclenche une erreur car length n'est pas une proprit des Object. Il faut convertir l'objet en String et l, on peut utiliser 'Length': il faut crire simplement:(Merci le forum de developpez.com)
Dim myObjet As New Object myObjet="VB" MessageBox.Show(DirectCast(myObjet, String).Length.ToString)

DirectCase transforme un type de variable en un autre, DirectCase peu'tolrant' car la variable qui reoit doit tre du bon type.
- 207 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Une autre mthode consiste transformer par Ctype le contenu de l'objet vers une variable String, puis afficher la longueur de cette variable String.
Dim myObjet As New Object myObjet="VB" Dim myString As String

myString = CType(myObjet, String) MessageBox.Show(myString.Length.ToString)

Au dpart, VB ne sait pas quel type de variable sera dans l'objet, on ne connat donc pas les proprits de la variable; la recherche de la proprit se fait l'excution, c'est plus long, de plus les contrles et vrifications se font l'excution. , cela se nomme une B ( viter). On vitera donc d'utiliser si possible des variables 'Object'. Utilisez plutt des variables types (des variables String, Integer..) au dpart; quand on les utilise, les contrles et appels sont vrifis ds le dpart, on appelle cela une liaison anticipe ou prcoce.

V-L-1-b - Comparaison d'objets


Is permet de savoir si 2 variables object se rapportent la mme instance.
Dim o1 As New Objet = monObjet Dim o2 As Objet o2= o1 If o1 Is o2 Then..

V-L-1-c - Nothing
Aprs:
Dim myObjet As Object

myObjet contient Nothing, c'est dire 'Rien': pas de rfrence une instance. Aprs avoir utiliser myObjet=12 On peut faire myObjet=Nothing. Lorsque vous assignez Nothing une variable objet, cette dernire ne fait plus rfrence une instance d'objet, elle ne pointe sur rien. Si la variable avait fait rfrence une instance au pralable, l'assignation de Nothing la variable ne met pas fin l'instance. L'instance se termine, et les ressources mmoire et systme qui lui sont associes sont libres uniquement lorsque le garbage collector (qui fait le mnage) dtecte l'absence de toute rfrence active restante.
- 208 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On peut tester si un Objet contient Nothing avec .IsNothing

V-L-2 - Les variables d'autres types


On verra que l'interface utilisateur est compose de contrles, ces contrles tant des objets, et bien, on peut dclarer une variable de type 'contrles': bouton, ou textbox ou formulaire.
Dim myButton As New Button 'cre une variable myButton de type Button

Ensuite on peut utiliser les membres de la classe Button.


myButton.BackColor

Autre exemple: crons un TextBox:


Dim myTextBox As New TextBox 'cre une variable myTextBox de type TextBox

V-L-3 - Utilisez donc des variables le plus types possible


Eviter les 'Object'. Utilisez donc des variables le plus types possible. Si une variable doit contenir des boutons, crer une variable de type 'Button'. Si une variable doit tre utilise pour contenir divers choses: Button, ListBox... plutt que la dclarer en Objet, il est prfrable de la dclarer en System.Windows.Forms.Control
Dim fistControl As New System.Windows.Forms.Control fistControl= New Button

V-L-4 - Attention quand on met un objet dans une variable objet


Si je met un Button dans une variable Object.
Dim MyObjet As Object MyObjet = Button1

MyObjet donne accs aux proprits des Object (Equals, GetType, ToString...); pour utiliser les proprits de Button (comme Text par exemple, il faut d'abord transformer l'objet en Button en crivant : CType(MyObjet, Button). Par exemple, pour mettre le texte du button contenu dans MyObjet dans la variable MyTexte, il faut crire:
Dim MyTexte As String = CType(MyObjet, Button).Text

- 209 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-M - Variable Boolenne

Mr Georges Boole 1805-1864 Il existe un autre type de variable: le type 'Booliens 'ou 'Boolens'. (Boolean)

V-M-1 - Introduction
L'algbre de Boole est la partie des mathmatiques, de la logique de l'lectronique et de l'informatique qui s'intresse aux oprations et aux fonctions sur les variables logiques. En logique propositionnelle, une expression est soit vraie soit fausse. (le vrai (1) et le faux (0)). Georges Boole (1815-1864), physicien Anglais dfinit en 1847 un algbre qui est applicable au raisonnement logique, qui traite des fonctions variables binaires (deux valeurs). Mais il ne s'applique pas aux systmes plus de deux tats d'quilibre. Une variable boolenne, ou logique, ou binaire ne prend que deux valeurs (elle est gnralement stocke sous la forme d'un bit). Vers la fin des annes 30, Claude Shannon dmontra qu' l'aide d'interrupteurs ferms pour vrai et ouverts pour faux il tait possible d'effectuer des oprations logiques en associant le nombre 1 pour vrai et 0 pour faux . Ce codage de l'information est nomm base binaire. C'est avec ce codage que fonctionnent les ordinateurs. Il consiste utiliser deux tats (reprsents par les chiffres 0 et 1) pour coder les informations. Il permet d'tudier les circuits logiques.

V-M-2 - Les boolens


On a parfois besoin de savoir si une assertion est vraie ou Fausse.(True ou False) Pour stocker une information de ce type, on utilise une variable de type boolen. Une variable de ce type ne peut contenir que True ou False. Le terme boolen vient de "l'algbre de Boole", cette algbre ne travaille que sur les valeurs 1 ou 0 (True ou False) Soit myBoolean une variable boolenne:
Dim myBoolean As Boolean

On peut crire myBoolean = True On peut aussi tester cette variable:

- 210 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

If myBoolean = False Then..

L'expression aprs If est value, si elle est vraie 'Then' se produit. Autre exemple montrant comment le raisonnement informatique est 'logique':
If maValeur=2 Then .. End If

L'expression 'maValeur=2' est value, si maValeur est effectivement gal 2, l'expression prend la valeur True; dans ce cas le programme se poursuit aprs Then. si maValeur est diffrent de 2, maValeur=2 est value et prend la valeur False; dans ce cas le programme se poursuit aprs End If. Un boolen peut donc prendre deux tats (vrai/faux, oui/non, 1/0, etc.). Il s'agit donc d'une "valeur binaire". Techniquement, un boolen peut tre reprsent par un seul bit (binary digit = chiffre binaire). Dans les langages n'ayant pas de variables booliennes, on se servait souvent d'un entier, avec pour convention que la valeur 0 reprsente "faux", tandis que toute valeur non nulle reprsente "vrai". En VB6 vrai tait gale -1. En VB.Net vrai = 1. Mais on s'en fiche car: un Boolen est un Boolen, en VB.Net on utilise donc True ou False comme seules valeurs pour un Boolen. Il n'empche que si on utilise une expression, un nombre et qu'on l'value comme si c'tait un boolen (C'est pas bien!!), la valeur 0 reprsente "False", tandis que toute valeur non nulle reprsente "True".

V-M-3 - Les conditions


On a vu que quand il faut faire un choix (comme dans 'If condition Then') il faut une condition qui est une expression boolenne. (avec While, Do Loop aussi). Exemple:
If Condition Then ... End if 'Si 'condition' est vraie faire..

Do Until condition ... Loop

'Boucler jusqu' ce que 'condition'

While Condition

'Tant que 'condition' boucler

- 211 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre ... End While

Pour crire une condition, on utilise les oprateurs:


= gal > suprieur < infrieur >= suprieur ou gal <= infrieur ou gal <> Diffrent de

L'valuation d'une condition donne True (Vrai) ou False (Faux) car on l'a dit c'est une expression boolenne. Exemple :
Dim valeur1 As Integer=2 Dim valeur2 As Integer=3 If valeur1=valeur2 Then ... End if

valeur1 tant diffrent de valeur2, la condition 'valeur1=valeur2' prend la valeur False et le programme passe la ligne aprs End If). Ici le signe = n'indique pas une affectation mais 'gale' dans une expression valuer. On peut combiner les oprateurs et mettre des parenthses:
If (valeurC <> valeurD )AND (valeurD =2)

V-M-4 - Les oprateurs logiques


Si on a plusieurs expressions logiques, on peut les combiner avec des oprateurs logiques. Si A et B sont des expressions boolennes:
A And B A Or B A Xor B Not A retourne True si A et B sont vrais retourne True si une des 2 est vrai retourne True si une et une seule est vrai retourne True si A est faux et vice versa

On entend par expression boolenne le rsultat de l'valuation d'une condition:


- 212 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

c=d retourne True si c gal d et False si c diffrent de d. Exemple Si A diffrent de B.. peut s'crire If Not(A=B) Then.. Si A compris entre 2 et 5 peut s'crire If A>=2 And A<=5 Then..

Comment faire une bascule: Il faut crire A= Not A A chaque fois que l'on effectue cette instruction A bascule True s'il tait False et vice versa. Les oprateurs AndAlso et OrElse sont plus rapides car ils n'valuent pas la seconde expression si ce n'est pas ncessaire. Parfois les expressions sont complexes et on peut les simplifier en utilisant des transformations: Originale Not A And Not B Not A And B A And Not B A And B Not A Or Not B Not A Or B A Or Not B A Or B Exemple pratique: Si A compris entre 2 et 5 peut s'crire If A>=2 And A<=5 Then.. ou If Not (A<2 Or A>5) Then... Une remarque: Avec une expression Boolenne, on peut crire:
Dim a As Boolean= True If a = True Then..

Transformation Not (A Or B) Not (A Or Not B) Not (Not A Or B) Not (Not A Or Not B) Not (A And B) Not (A And Not B) Not (Not A And B) Not (Not A And Not B)

ou
If a Then..

Exemple:
If (x=15)=True Then..

- 213 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre ou If x=15 Then...

Donc, avec une expression boolenne, et uniquement avec une expression boolenne, il est possible de se passer du = True aprs un If car de toutes faons , l'expression est value. Voir aussi le chapitre sur l'algbre de Boole.

V-N - Soyons strict et explicite (et Compare et Infer ?)

VB peut tre tolrant ou pas

Option Strict=On et Option Explicit=On le rendent totalement intolrant, et c'est tant mieux!! Voyons cela.

V-N-1 - Notion de conversion Explicite et Implicite


La conversion Explicite: est permet de forcer la conversion d'un type de donnes vers un autre type l'aide de mots cls. Exemple
Dim d As Double = 2.65 Dim i As Integer i=CType(d,Integer) 'conversion d'une valeur double en Integer

Il existe aussi la conversion implicite effectue automatiquement sans syntaxe particulire et de manire transparente. VB peut le permettre ( Si Option Explicit Off dans la configuration ) Exemple
Dim d As Double = 2.65 Dim i As Integer i=d 'Pour affecter i le Double d, Vb a transform le double d en Integer.

V-N-2 - Comment modifier une option ?


Menu Projet puis 'Proprits de ..'.

- 214 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Onglet 'Compiler' En VB 2008:

L on peut modifier les options de compilation.

V-N-3 - Option Strict V-N-3-a - Conversions implicites


Avec Option Strict=On VB refuse les conversions implicites qui pourraient entraner des pertes de donnes. VB est naturellement trs arrangeant (trop sympa !!) quand il est configur avec Option Strict Off : Par dfaut il transforme, quand c'est 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 (s'il 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 c'est des calculs d'astronomie !! et le programmeur ne s'en rend pas forcment compte !!
- 215 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Pour viter cela il faut activer l'OPTION STRICT ON (Elle est par dfaut Off) 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; s'il y a perte de prcision, elle se produit quand mme, MAIS le programmeur SAIT qu'il y a conversion, il prendra ou pas EN CONNAISSANCE DE CAUSE le risque. 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!!

V-N-3-b - Conversions String-numrique


Avec Option Strict=On VB refuse les conversions String-numriques implicites. Avec Option Strict=Off
Dim n As Integer=12 MessageBox(n)

Affiche 12 : le contenu de l'entier 'n' a t transform automatiquement en String pour tre affich. Avec Option Strict=On
Dim n As Integer=12 MessageBox(n)

Plante Il faut transformer explicitement n en String et crire:


MessageBox(n.ToString)

- 216 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

C'est pour cela qu'il y a des '.ToString' partout!!

V-N-3-c - Liaisons tardives


Avec Option Strict=On VB refuse les liaisons tardives:
Dim V As Object V="VB" MessageBox.Show(V.Length) 'est refus

MessageBox.Show(V.Length) est refus Il faut crire


MessageBox.Show(CType(V, String).Length.ToString)

Du fait que les membres utiliss avec une variable Object ne sont pas dfinis l'criture du programme (on ne sait mme pas quel type de variable sera dans l'objet, on n'en connat donc pas les membres), la recherche du membre se fait l'excution, c'est plus long, de plus les contrles et vrifications se font l'excution. Cela se nomme une liaison tardive, viter donc. Utilisez plutt des variables types (des variables String , Integer..) au dpart, quand on les utilise, les contrles et appels sont vrifis ds le dpart, on appelle cela une liaison anticipe ou prcoce.

'Option Strict Off' permet n'importe quoi. C'est du mauvais Basic . 'Option Strict On' oblige une grande rigueur.

V-N-3-d - VB rapide ?
Avec Option Strict=On VB est plus rapide. La vrification est effectue lors de la compilation, l'excution il y a moins de contrle de type.

V-N-4 - Option Explicit


Pour la dclaration des variables nous avions dit que toute variable utilise devait tre dclare. Par dfaut c'est vrai. Ouvrir Menu Projet > Proprits de Nom de projet. Page de proprits de Langage VB. Onglet 'Compiler' en VB 2008. En face de Option Explicit, il y a On

- 217 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On pourrait (c'est 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 d'une variable, VB accepte le nouveau nom et cre une nouvelle variable objet distinct.
Dim MaVariable MaVariabble=10 'MaVariable avec un b 'Faute de frappe(bb)

Je crois avoir mis 10 dans Mavariable. En fait j'ai mis 10 dans une nouvelle variable nomme MaVariabble Mavariable toujours une valeur=0 Donc, c'est clair et sans appel : Laisser Option Explicit On, ce qui oblige dclarer toutes les variables avant de les utiliser Dans ce cas si vous tapez le nom d'une variable non dclare, elles est souligne en bleue.

V-N-5 - 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.

V-N-6 - Option Compare


Option Compare Binany permet de comparer des chanes de caractres en fonction de leur code Unicode (le numro du caractre). Option Compare Text permet de comparer des chanes de caractres en fonction du CultureInfo qui prend en compte, pour chaque langue, la signification, la smantique du caractre.

- 218 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple : Comparons 2 caractres, on affiche True s'ils sont gaux.


Console.WriteLine("a" = "A")

Donne True si Option Compare Text car smantiquement parlant c'est le mme caractre, du moins il a la mme signification. Donne False si Option Compare Binary car le code Unicode de "a" et de "A" n'est pas le mme .

Avec Option Compare Binary: Les caractres sont classs dans un ordre croissant (l'ordre de leur code unicode) Voyons l'ordre des certains caractres particuliers: " " +,-./ 0123456789 :;ABCDEF abcdef On constate que l'ordre est espace puis quelques caractres spciaux, les chiffres, les majuscules puis les minuscules, les accentus.(voir le tableau d'Unicode) Ainsi "B" est infrieur "a". En utilisant Option Compare Binary, la plage [A-E] correspond A, B, C, D et E.

Avec Option Compare Text: Les caractres sont classs dans un ordre qui reflte plus la ralit d'un texte: Toutes les types de a: A, a, , , puis tous les types de b: B, b... Avec Option Compare Text, [A-E] 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. Ainsi "B" est suprieur "a".

V-N-7 - Option Infer


Option Infer apparait en VB 2008. Dbutant passe ton chemin. 'Option Infer On' permet de se passer de donner le type d'une variable quand on la dclare. Lors de l'utilisation de la variable, elle prendra le type ncessaire. Ainsi, si on met une String dans la variable cela devient une variable String. Par dfaut on a Option Infer Off. Exemple:
Option Infer On Module Test - 219 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Sub Main() ' Le type de x est ' Integer' Dim x = 10 ' Le type de y est 'String' Dim y = "abc" End Sub End Module

Son utilit se retrouve dans l'usage de base de donnes et surtout de Linq qui permet d'interroger les bases de donnes. viter Option Infer On pour du code habituel.

V-O - Les constantes, les numrations

V-O-1 - 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 NOMDUPROGRAMME= "LDF" 'constante chane de caractres. 'constante Integer

Const NOMBREDECASE As Integer = 12

Ensuite on peut utiliser la constante:


For k= 0 To NOMBREDECASE ... Next k

Si on utilise: For k=0 To 12, la lecture c'est moins clair. Si on crit: NOMBREDECASE=13 cela dclenche une erreur!! Habituellement, les constantes sont cres en dbut de programme. Il est conseill par convention d'crire le nom des constantes en majuscules.

V-O-1-a - Intrts des constantes ?


Amliore la lisibilit et vite d'utiliser des constantes littrales: Il faut viter:

- 220 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

For i=0 To 100 .. Next i

'A quoi correspond 100?

Il faut crire
Const NBMAXPATIENT As Integer= 100 For i=0 To NBMAXPATIENT ..

Modifications du code facilites: Si une constante doit tre modifie ultrieurement, il suffit en mode conception, de modifier sa valeur ce qui modifie sa valeur dans l'ensemble du code de l'application. Const NBMAXPATIENT As Integer= 200 'Si j'introduis une modification de valeur
For i=0 To NBMAXPATIENT 'Toutes les boucles utilisant NBMAXPATIENT seront jour

Next i

Amlioration la vitesse.
Const NBMAXPATIENT As Integer= 100 Dim nombre= NBMAXPATIENT

Next i

est plus rapide que:


Dim nbpatient As Integer= 100 Dim nombre= nbpatient

Car le compilateur code directement nombre=20 dans le premier cas. On rappelle que seuls les types primitifs peuvent avoir des constantes ( Byte, Boolean, Short, Integer, Long, Single, Double, Decimal, Date, Char, String).

V-O-1-b - Constantes prdfinies dans le langage


Les constantes de Visual Basic sont toujours l:
vbOk vbBack vbCancel vbCrLf 'caractre numro 13 puis numro 10 = saut la ligne. 'retourn par une MessageBox quand l'utilisateur a cliqu sur Ok.

- 221 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-O-1-c - True False


On rappelle que True et False sont des valeurs Boolennes faisant partie intgrante de VB. Pour les anciens de VB6 ne plus utiliser -1 et 0 (D'ailleurs c'est maintenant 1 et 0). Mais, en plus, dans Visual Basic .NET, la plupart des constantes sont remplaces par des numrations dans le .NET Framework. (Voir plus bas ) Utiliser largement ces constantes fournies par VB, cela amliore la lisibilit et la maintenance.

V-O-2 - numration
Les numrations sont utilises lorsque l'on a un jeu de constantes lies logiquement. Un bloc Enum permet de crer une liste (une numration) de constantes:
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 (en haut). 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 comme par exemple :
fichierEnCours= TypeFichier.DOC

On peut ensuite tester par exemple :


If fichierEnCours= TypeFichier.RTF then

Il est conseill par convention d'crire le nom des numrations en minuscules avec la premire lettre en majuscules.

Ce qui suit concernant les numrations est un peu plus complexe:


- 222 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Chaque constante littrale de l'numration a une valeur par dfaut. Par dfaut
TypeFichier.Doc =0 TypeFichier.RTF =1 TypeFichier.TEXTE=2 ..

La premire valeur est 0. Si on ne spcifie rien, les valeurs sont des Integers Parfois le nom utilis dans l'numration (la constante littrale) est suffisant en soi et on n'utilise pas la valeur : Dans un programme grant des fichiers, une variable 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=2 RTF=4 TEXTE=8 End Enum

Cela vite d'crire fichierEnCours= 15 (en retenant que 15=fichier doc, 30= fichier rtf...) Je peux mme donner plusieurs valeurs avec And et Or condition d'utiliser l'attribut Flags.
<Flags()> Enum TypeFichier DOC=2 RTF=4 TEXTE=8 TOUS= DOC AND RTF AND TEXTE End Enum

L'attribut 'Flags() indique que les valeurs sont codes en bits, ce qui permet les combinaisons de valeurs. (pour 2 le second bit est 1, pour 4 le troisime bit est 1, pour 8, le quatrime bit est 1...) (voir chapitre sue l'algbre de Boole.) 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 :

- 223 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Enum Color As Long Red Green Blue End Enum

Habituellement, on utilise les numrations dans le code, comme des constantes. Exemple:
Enum TypeFichier DOC=2 RTF=4 TEXTE=8 End Enum ' affecter une variable: Dim monFichier As TypeFichier = TypeFichier.RTF

On remarque qu'on cre une variable de type numration dans laquelle on ne peut mettre q'une numration (en fait un Integer).
' affichage d'une valeur Console.Out.WriteLine("Numro type du fichier=" & monFichier)

Affiche: 4
Console.Out.WriteLine("Type du fichier=" & monFichier.ToString)

Affiche: RTF
' test avec la constante de l'numration If (monFichier = TypeFichier.RTF) Then Console.Out.WriteLine("C'est du RTF") End If

Affiche:"C'est du RTF"

Mais parfois on a besoin de rcuprer la liste des lments d'une numration. Comment relire la liste des numrations? Il faut utiliser une mthode statique (ne ncessitant pas d'instanciation) GetValues pour obtenir toutes les constantes littrales ou valeurs d'un type numr que l'on passe en paramtre.
' liste des mentions littrales (Constantes) - 224 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

For Each t As TypeFichier In [Enum].GetValues(monFichier.GetType) Console.Out.WriteLine(t.ToString) Next ' liste des mentions entires (Valeurs) For Each t As Integer In [Enum].GetValues(monFichier.GetType) Console.Out.WriteLine(t) Next

Affiche:
DOC RTF TEXTE 2 4 8

GetValues, quand on lui donne le type de l'numration retourne la list des lments de l'numration; c'est pratique pour remplir une ListBox avec une numration:
ListBox1.DataSource = [Enum].GetValues(GetType(TypeFichier))

Si on affecte un lment d'une numration une variable Integer, on rcupre la valeur, si on utilise ToString on rcupre la constante littrale.
Dim n As Integer n = TypeFichier.RTF Console.Out.WriteLine(n.ToString) Dim st As String st = TypeFichier.RTF.ToString Console.Out.WriteLine(st) Affiche

2 RTF

Comment rcuprer dans une numration une constante partir de sa valeur ou une valeur partir de la constante? Ici il faut instancier:
- 225 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim s As Type = GetType(TypeFichier) Console.Out.WriteLine(CType([Enum].GetName(s, 15), String)) Console.Out.WriteLine(CType([Enum].Parse(s, "DOC"), String))

Affiche:
DOC 2

V-O-3 - Gnralisation de la notion d'numration


Noter que VB.Net contient, comme on l'a vu, un tas de constantes classes l'aide d' Enum.

V-O-3-a - ControlChars
Cette numration contient les caractres de contrle. ControlChars.CrLf gale Chr$(13)+Chr$(10) qui sert sauter la ligne dans une chane de caractres : Si on affiche "VISUAL" & ControlChars.CrLf & "BASIC" On obtient l'cran :
VISUAL BASIC

ControlChars.Tab Chr$(9) = caractre de tabulation ControlChars.NullChar Aucun caractre ControlChars.Nothing Chane vide ControlChars.Back Taper ControlChars. Et comme d'habitude vous obtiendrez la liste des constantes.

V-O-3-b - Couleurs
On peut aussi utiliser l'numration des couleurs dfinies par le Framework
System.Drawing.Color.Blue 'Pour le bleu

ou en simplifiant (si Imports System.Drawing a t crit)

- 226 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Color.Chocolate Color.Black ..

V-O-3-c - Math
Si Import System.Math est prsent en haut du module, PI contient 3,14 E contient la base log naturel

V-O-3-d - Touche du clavier dans le Framework


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 Keys.D8 Keys.Delete Keys.D 'Dsigne le code de la touche '->' 'Dsigne le code de la touche '8' 'Dsigne le code de la touche 'Suppr'

'Dsigne le code de la touche 'D' 'Dsigne le code de la touche 'Majuscule' 'Dsigne le code de la touche 'Impression cran'

Keys.Shift Keys.SnapShot

V-O-3-e - Autre un 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) .

V-P - Les oprateurs

+-*/And OrMod& Pour travailler sur les variables on utilise des oprateurs (addition, soustraction...).

- 227 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-P-1 - Addition : +
Dans le cas de variables numriques.
Dim A,B, C As Integer B=2 C=3 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, A=3 ensuite. A+=1 est quivalent A=A+1 Cela incrmente la variable A. On peut utiliser '+' pour ajouter une string une autre, il est prfrable d'utiliser '&'.

V-P-2 - Soustraction : B=C-D A-=1 est quivalent A=A-1

V-P-3 - Multiplication : *
C'est une toile: * B= C*D

V-P-4 - Division : /
On remarque que : n'est pas l'oprateur de division.(Ce signe sert de sparateur quand plusieurs instructions sont sur la mme ligne.) Retourne le quotient complet qui conserve le reste dans la partie fractionnaire. B=C/D Si C=10 et D=3 B=3.33333333333333 La division de 2 Singles retourne un Single.
- 228 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

La division de 2 Doubles retourne un Double. La division de 2 Decimals retourne un Decimal. Voir en bas de page, des informations complmentaires car La division de 2 entiers (Integer..) retourne un Double.

V-P-5 - Division entire: \


Si A=10\3 => A=3 'on perd le reste Voir en bas de page, des informations complmentaires car "\"sur 2 Integer retourne un Integer.

V-P-6 - Puissance : ^
A=B^3 'A=B*B*B

V-P-7 - Modulo : Mod


C'est 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
If A Mod 3 = 0 then...

V-P-8 - Concatnation : &


C'est 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

- 229 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-P-9 - Priorits
L'ordre des calculs se fait en fonction de la priorit des oprateurs. S'il y a plusieurs oprateurs, '^' a la priorit la plus forte puis * et / puis + et Cela veut dire que VB effectue les lvations puissance puis les multiplications et divisions puis les additions et soustractions. Pour tre complet, voyons les priorits par ordre dcroissant:
^ lvation la puissance - ngation unaire / et * multiplication et division \ division entire mod modulo addition et soustraction.

+ et -

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 d'interprtation utiliser des parenthses : 2+(3^3) lve toute ambigut.

V-P-10 - Comparaison
= gal > suprieur < infrieur >= suprieur ou gal <= infrieur ou gal <> Diffrent de

Le rsultat d'une comparaison est True (Vrai) ou False (Faux) Exemple :


Dim A As Integer=2 Dim B As Integer=3

- 230 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre If A=B then .. End If

A tant diffrent de B, A=B prend la valeur False et le programme passe la ligne en dessous de End If (pas aprs then). Ici le signe = n'indique pas une affectation mais une expression valuer. Ici aussi on peut combiner les oprateurs et mettre des parenthses:
R= (C<>D)AND (D=2) 'Si C diffrent de D et si D gal 2

Comparaison de chanes de caractres: Les chanes de caractres sont compares en fonction du tri alphabtique. Par dfaut, 'Option Compare Binary' est activ, ce qui fait que l'ordre des caractres est en relation avec leur code Unicode (voir chapitre sur les Options).
' 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 minuscule) est diffrencie. Si on veut comparer sans tenir compte du fait que c'est en majuscule ou minuscule, il faut d'abord 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)

En utilisant 'Option Compare Text' en dbut de module, on ne diffrencie plus la casse: "A" devient gal "a".

- 231 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-P-11 - Logique : Not And Or ElseOr Xor V-P-11-a - 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 boolenen 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 s'crire IF Not(A=B).. Si A compris entre 2 et 5 peut s'crire If A>=2 And A<=5..

Comment faire une bascule: Il faut crire A= Not A A chaque fois que l'on effectue cette instruction A bascule True s'il tait False et vice versa.

V-P-11-b - Si A et B sont des nombres (Integer par exemple)


L'opration est effectue sur chaque bit. A = 7 'en dcimal ( 0111 en binaire) B = 12 'en dcimal( 1100 en binaire) Que donne A And B? On effectue l'opration bit bit: Pour le premier bit de chaque nombre 0 And 1 = 0 Pour le second bit de chaque nombre 1 And 1 = 1... Cela donne 0100. A And B = 4 'en dcimal( 0100 en binaire) Autre exemple: A And 1 indique si le bit le moins significatif (le plus droite) est a 1
- 232 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple: si A = 7 'en dcimal ( 0111 en binaire) A And 1 retourne 1

V-P-11-c - Les oprateurs And, Or et Xor sont valus en fonction du type des oprandes V-P-11-c-i - 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.

V-P-11-c-ii - 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 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 rapide car ils n'valuent pas la seconde expression si ce n'est pas ncessaire.

Il n'est pas judicieux d'effectuer des oprations logiques sur des Single, Decimal, Double (nombre avec vigule).

V-P-12 - Dplacement de bits


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. A quoi cela sert? Exemple dcaler gauche un Byte revient faire une multiplication par 2. 3 en dcimal= 11 Je dcale gauche, j'obtient 110 , c'est 6 en dcimal.
- 233 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-P-13 - Remarque 1 : Allons plus loin avec / et \


La division de 2 Singles avec "/" retourne un Single. La division de 2 Decimals avec "/" retourne un dcimal. mais La division de 2 entiers avec "/" retourne un double: Avec Option Strict=Off
Dim i As Integer = 4 Dim j As Integer = 2 Dim k As Integer = i / j 'est accept 'car i/j donne un double transform en Integer 'automatiquement'.

Avec Option Strict=On, il faut crire:


Dim i As Integer = 4 Dim j As Integer = 2 Dim k As Integer = CType(i / j, Integer) 'on est oblig de caster le double en Integer.

Mais "\" retourne un Integer si on divise 2 entiers. Pour diviser 2 entiers utiliser donc "\".
Dim i As Integer = 4 Dim j As Integer = 2 Dim k As Integer = i \ j 'est accept 'mme si Option Strict=On

V-P-14 - Remarque 2 : Division par zro La division par zro est impossible mathmatiquement.
Si on divise un double (ou un Single ) par zro, on obtient NaN :nombre non dfini ou PositiveInfinity ou NegativeInfitiny selon le dividende. Pour les entiers, Integer , Byte.. une division par zro dclenche une erreur ( on dit une exception) DivideByZeroException.

En pratique les choses ne sont pas si videntes; voyons des exemples:


Dim i As Integer = 4 Dim j As Integer = 0 TextBox1.Text = (i/j).ToString 'Affiche " +Infini"

Le rsultat de l'opration (i/j) qui est un Double prend la valeur infini et est directement affich.

- 234 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Par contre:
Dim i As Integer = 4 Dim j As Integer = 0 Dim k As Integer = CType(i / j, Integer) 'Erreur

Retourne une exception (une erreur) Overflow.Exception car le rsultat de l'opration est l'infini donc plus grand que MaxValue des Integers. Il faut donc, si on risque d'avoir la valeur zro, faire un contrle avant la division:
If j<>0 Then k=i/j End If

V-Q - Les structures de contrle : Choix et boucles

Elles permettent de grer le droulement du code.

V-Q-1 - If Then
Permet de crer une structure dcisionnelle:

If Condition Then End if Si la Condition est vraie alors... Une instruction (ou un bloc d'instructions) peut tre excute si une condition est vraie.

- 235 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple:
If A=B then MsgBox("A=B") End If

Si A = B alors on excute le bloc de code entre Then et End If, il affiche dans une fentre MessageBox A=B Noter que, si on le dsire, on peut crire sur la mme ligne aprs Then (Pas besoin de End If).
If A=B Then MsgBox("A=B")

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". (On aurait pu crire If A<>B Then...)

Il peut y avoir des oprateurs logiques dans la condition:


If A=B And C=D then.. 'Si A gal B et si C gal D

Autre exemple :
Dim n As String ="33" ' on cre une String , on y met les caractres "33" If Not IsNumeric(n) then MsgBox ("n n'est pas un nombre") Exit Sub End if

Si n n'est pas numrique alors afficher dans une boite de dialogue: n n'est pas un nombre puis quitter la procdure (Exit Sub) Noter bien que comme il y a plusieurs instructions aprs Then on cre un bloc d'instruction de plusieurs lignes entre Then et End If.

Simplification d'criture: Au lieu de


If Condition = True Then

- 236 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

End if

On peut crire:
If Condition Then End if

Condition tant de toute manire value pour voir si elle est gale True.

On peut aussi utiliser la structure'Si..Alors..Sinon' :


If condition then .. 'effectu si condition vraie .. Else ..'effectu si condition fausse .. End if

Exemple:
If A=B then MsgBox("A=B") Else MsgBox("A diffrend de B") End If

Des structures If Then peuvent tre imbriques :


If.. If.. .. Else If.. .. End if End if End If

- 237 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Pour bien reprer les diffrents niveaux, utiliser les tabulations et dcaler le 'If then' et son code au mme niveau. Pour vrifier s'il n'y a pas d'erreur, compter les 'If', il doit y en avoir autant que des 'End If'. VB souligne le 'If' si il n'y a pas de 'End if'.

Dernire syntaxe avec 'ElseIf':


If Condition1 Then .. ElseIf condition2 Then .. ElseIf condition3 Then .. end if

Si condition1... Sinon si condition2 Sinon si condition3 Fin Si

V-Q-2 - Select Case


Crer une structure dcisionnelle permettant d'excuter un grand nombre de blocs de code diffrents en fonction de la valeur d'une expression :

Select Case expression Case valeur1 'code effectu si expression=valeur1 Case valeur2 'code effectu si expression=valeur2 Case valeur3

- 238 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre '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 l'excution saute aprs End Select. Exemple d'un code affichant le jour de la semaine : J est un entier contenant le numro d'ordre du jour

Select Case N Case 1 MsgBox "Lundi" 'Si N=1 'Afficher 'Lundi'

Case 2 MsgBox "Mardi"

Case 3 MsgBox "Mercredi" .. .. Case Else MsgBox "Nombre pas entre 1 et 7" End select

Nous venons d'utiliser 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 - 239 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Case 8 To 20 'Effectuer le code End Select

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 l'expression. Si le mot cl Is n'est pas indiqu, il est automatiquement insr.
Select Case N Case Is >= 5 'Effectuer le code End Select si N suprieur ou gal 5.

Vous pouvez utiliser plusieurs expressions ou plages dans chaque clause Case (spares par 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

Pour les 'Pro': Les "Case" peuvent contenir n'importe quelle expression. Aussi il est possible de tester dans les conditions, non pas les valeurs d'une mme variable, mais divers fonctions totalement indpendantes ou comme ici des fonctions travaillant toutes sur une mme variable. C'est un usage mconnu du Select Case qui clarifie l'criture et qui vite de multiples If Then ou Goto. Ici une routine reoit une String contenant un nom de fichier, elle teste si le nom n'est pas vide puis si le fichier existe..
Sub TestFichier (File As String) Select Case true Case len(File) = 0 msgbox "Pas de nom de fichier" Case Not Exit(File) errorState=File.NotExist Case Not Open(File) errorState=File.NotOpen Case Not Overwrite(File) errorState=File.NotOverwrite Case else

- 240 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre 'placer les exceptions ici End Select End Sub

V-Q-3 - 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 d'un tableau ou pour effectuer de manire itrative un calcul. Le nombre de boucle va tre dtermin par une variable qui sert de compteur: la variable de boucle. Le nombre d'excution est dtermin au dpart de la boucle car le compteur a une valeur de dpart, une valeur d'arrt. Pour variable allant de 'dbut' 'fin' Boucler donne en VB
For variable=dbut To fin .. Next variable

Exemple:
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 :
- 241 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

i=1 Affiche 1 , arriv Next, remonte For, i =2 , affiche 2 ... i=10 , affiche 10 poursuit aprs Next. En effet i augmente d'une unit chaque 'tour'. 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 d'entre il faut indiquer un pas ngatif.
Dim i as integer For i=10 to 1 Step -2 MsgBox (i.toString) Next i

Affiche 10 puis 8 puis 6 puis 4 puis 2

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

On peut quitter prmaturment la boucle avec Exit For.


For K As Integer = 1 To 10 ... If A=2 Then Exit For Next K

- 242 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dans ce cas la boucle s'arrte de tourner si A=2, on poursuit aprs Next.

Remarque: Le nom de la variable de boucle est facultatif aprs Next:


For K As Integer = 1 To 10 ... Next

Est correct. Depuis la version 2005 il existe aussi Continue For qui permet de sauter au prochain Next et de poursuivre la boucle.

V-Q-4 - Do Loop
Permet aussi de faire des boucles mais sans que le nombre de boucle (d'itration) soit dtermin au dpart.

La boucle suivante tourne sans fin:


Do Loop

Il faut une condition d'arrt qui dtermine la sortie de la boucle : On doit mettre Until (Jusqu' ce que) ou While (Tant que) avant la condition d'arrt pour sortir de la boucle.

On peut mettre la condition aprs Do:


Do Until condition Code Loop 'Boucler jusqu' ce que condition soit vraie.

Si condition est fausse, effectuer le code, boucler et recommencer le code jusqu' ce que condition soit gale True. Attention, avant de dbuter la boucle, la condition doit tre fausse sinon la boucle ne sera jamais excute.. A chaque boucle la condition est value.
- 243 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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, boucler.

La condition peut tre mise en fin de boucle, cela permet d'effectuer au moins une fois le code. Cela vite aussi d'avoir dmarrer le processus avant la boucle, dans notre exemple cela permet d'viter de lire le premier mot avant la boucle : Les mots sont dans un tableau Mot(); premier lment Mot(0).
IndexMot=-1 Do IndexMot=IndexMot+1 Loop While MotCherch<>Mot(IndexMot)

Il faudrait en plus boucler jusqu' la fin du tableau et pas plus.

Exemple complet : Imposer la saisie d'un nombre ngatif l'utilisateur: 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 s'ouvre de nouveau. Si le nombre est ngatif, on sort de la boucle.

Comment crer une boucle qui tourne sans fin?

- 244 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Do ... Loop While True

Autre exemple: Crer une boucle affichant successivement dans une MessageBox les chiffres de 1 10.
Dim i As Integer = 0 Do i = i + 1 MsgBox(i.ToString) Loop Until i = 10 'incrmente i de 1 'affiche la valeur de i dans une messageBox 'sort de la boucle quand i=10

V-Q-5 - While End While


Permet une boucle qui tourne tant qu'une condition est vraie.

Principe:
Tant que Condition ... Fin Tant que

En VB:
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

- 245 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-Q-6 - For Each


C'est une variante de la boucle For mais elle permet de parcourir les objets d'une collection. Elle n'utilise pas l'indice.

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 s'crirait :
Dim mystring As String Dim item as Object For Each item in ListBox.Items mystring=mystring+item Next

La variable de boucle peut tre dclare aprs For:


Dim mystring As String For Each item As Objet in ListBox.items mystring=mystring+item Next

Au lieu de dclarer Item comme un objet, on aurait pu le dclarer comme un ListBox.Item

Cette notion de collection est beaucoup plus large que je le pensais: Ici pour tester chaque caractre dans une String, et voir s'il est gal "i", on peut utiliser For Each:
Dim chaine As String = "aeiou" Dim c As String For Each car As String In chaine If car= "i" Then..

- 246 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Next

Attention, dans une boucle For Each, on peut parcourir la collection mais on ne peut pas modifier un lment de la collection.

V-Q-7 - 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", _ Pays = "FRANCE", "Euro", Pays = "Angleterre", "Livre")

Si Pays="FRANCE", cette expression est vrai, le second objet du couple est retourn. Retourne Euro

V-Q-8 - 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.

V-R - Les procdures et leurs paramtres

On se souvient qu'en programmation procdurale on dcoupe les problmes en fonctions: les Sub et les Function. 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 l'appel.

- 247 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

En VB les procdures sont des Sub ou des Function. - Les procdures Sub: Elles dbutent par le mot Sub et se terminent par End Sub. Elles ont des paramtres mais ne 'retournent' rien. Exemple: une sub qui retourne la somme de 2 nombres:
Sub Addition (a , b, result) result= a+b End Sub

Pour l'utiliser:
Dim a, b, result As Integer a=2 b=3 Addition (a ,b ,result)

- Les procdures Function: Si on a besoin que la procdure retourne un rsultat (un seul), on utilise une Fonction. Elles dbutent par Function et se terminent par End 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 dans v). Cette fonction retourne un Single qui est 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

- 248 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim valeur as Single=3 resultat= Carr(valeur)

Remarque: ici, on a un paramtre nomm 'valeur'; on appelle la fonction Carr avec ce paramtre. Dans la fonction Carr on retrouve ce paramtre; il se nomme 'v': Ce paramtre est pass la fonction, mais il a un nom diffrent dans la fonction. On conseille, quand le nom d'une procdure est compos de plusieurs mots, de mettre la premire lettre de chaque mot en majuscule. Exemple:
MyCalcul()

V-R-1 - Les parenthses


Rappel, mme s'il n'y a pas de paramtre, mettre des () lors de l'appel de procdure.
MaRoutine()

V-R-2 - Par Valeur, Par Rfrence


Il y a 2 manires d'envoyer des paramtres : Par valeur : (By Val)c'est la valeur (le contenu de la variable) qui est envoye. (La variable est copie dans une autre partie de la mmoire pour tre utilise par la routine appele.) Par rfrence :(By Ref) c'est l'adresse (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

Chaque paramtre est ByRef ou ByVal suivi du nom du paramtre dans la procdure puis de son type. Si j'appelle cette procdure partir d'une procdure nomm Main():
Sub Main() Dim A, B As Long MaProcedure (A, B) End sub

C'est l'adresse de A qui est envoye et la valeur contenue dans la variable B. Elles se retrouvent dans les variables x et y de la procdure MaProcedure. Noter que le type de la variable fournie en paramtre dans Main et le type de la variable dans 'MaProcedure' doit tre le mme (ici un Long).

- 249 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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 n'est pas modifi. Exemple permettant de bien diffrencier By Val et By Ref: Exemple avec ByVal:
Sub MaProcedure Dim A As Integer A=1 Call MaProcedure( A 'On crer une variable A 'On met 1 dans A ) 'On appelle la procdure MaProcedure en envoyant le paramtre A

Label1.Text= A.ToString 'On affiche la valeur de A End Sub

Sub MaProcedure ( ByVal Variable As Integer )

'La procdure reoit la valeur de A donc ' et la met dans 'Variable'

Variable=Variable+1 End Sub

'Variable=2 mais A=1

Aprs l'appel de la procdure A=1, Labe1 affiche '1' car bien que dans MaProcedure Variable =2 , cela n'a pas modifi A. Exemple avec ByRef:
Sub MaProcedure Dim A As Integer A=1 Call MaProcedure( A 'On crer une variable A 'On met 1 dans A ) 'On appelle la procdure MaProcedure en envoyant le paramtre A

Label1.Text= A.ToString 'On affiche la valeur de A End Sub

Sub MaProcedure ( ByRef Variable As Integer ) 'La procdure reoit l'adresse de A ; Variable et A ont donc mme adresse 'Variable et A contiennent 1 Variable=Variable+1 End Sub 'Variable=2 mais A=2 aussi

Aprs l'appel de la procdure A=2, , Labe1 affiche '2' car La procdure reoit l'adresse de A ; Variable et A ont donc mme adresse; si je modifie variable cela modifie A. Compris!!

- 250 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

L'avantage de passer un argument ByRef est que la procdure peut retourner une valeur au code qui a appel la procdure en modifiant la valeur de la variable qui a t passe en argument. L'avantage de passer un argument ByVal est que la variable de la routine est 'protge' dans le code qui a appel la procdure; elle ne peut pas tre modifie par la procdure qui reoit le paramtre.

V-R-3 - Par Dfaut, que se passe-t-il ?


Si on n'indique pas By Val ou By Ref: ATTENTION: Pas 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. Taper Sub MaProcedure (ByRef x as Long, ByVal x As Long) Plutt que Sub MaProcedure ( x as Long, x As Long)

V-R-4 - 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 qui sera utilise dans la routine s'il n'y a pas de paramtre.
Sub MaRoutine (Optional X As Integer=0)

V-R-5 - 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 ( ByVal R() As Integer ) End Sub

- 251 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-R-6 - 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): Exemple d'une Function nomme 'Somme' qui calcule la somme de X Integer.
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 End Sub Total

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 obligatoirement un paramtre ByVal et comme on l'a dit, tous les paramtres sont de mme type.

V-R-7 - Porte des procdures


Le terme Sub ou Function peut tre prcd d'une indication de porte; la procdure sera t-elle visible uniquement dans le module o elle se trouve ou partout?

La procdure peut tre Private. Dans ce cas on ne peut l'appeler qu' partir du module qui la contient. Les procdures vnements, d'une Form sont, par exemple, Private:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load End Sub

La procdure peut tre Public. Dans ce cas on pourra l'appeler partir de la totalit du programme. La Sub 'Calcul' qui est par exemple dans un module, peut tre appele de partout.

Public Sub Calcul

- 252 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre End Sub

V-R-8 - Nommage
Sub , Fonctions Utilisez la 'case Pascal' pour les noms de routine (la premire lettre de chaque mot est une majuscule). Exemple: CalculTotal() vitez d'employer des noms difficiles pouvant tre interprts de manire subjective, notamment Analyse() pour une routine par exemple. Utilisez les verbe/nom pour une routine : CalculTotal(). Pour les noms de paramtres, utilisez la 'case Camel' selon laquelle la premire lettre des mots est une majuscule, sauf pour le premier mot. Exemple: typeName

V-S - Porte des variables

Quand on dclare une variable, jusqu'o est-elle visible? Quand une variable est visible, on peut l'utiliser. Il est important souvent de rendre une variable visible dans une procdure mais pas les autres, dans un seul module ou dans la totalit du programme. Comment faire cel?

V-S-1 - Dans les procdures


On dclare une variable avec Dim. Si on dclare une variable dans une procdure (une Sub ou une Function), 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.)
- 253 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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 (X reoit la valeur envoye comme paramtre). 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 variable et sa valeur continue d'exister et on garde sa valeur en mmoire; 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)

V-S-2 - Dans un bloc d'instructions


Si vous dclarez 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. Cela est aussi valable pour les blocs If: Exemple:
If A=0 Then Dim risk As String = "Haut" Else - 254 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim risk As String = "Bas" End If Console.WriteLine("Le risque est " & Risk)

Dans la dernire ligne Risk est soulign comme contenant une erreur car il est considr comme non dclar. En effet les 2 dclarations Dim risk sont dans les blocs 'If..Else' et 'Else..End If'.

Attention quand mme la position de la variable locale, il peut y avoir des piges: Voyons ce code:
Dim i, j, As Integer

For i = 1 To 10 For J = 1 To 3 Dim k As Integer K+ =1 'Imprimer k Next Next

On souhaite que K=1 puis 2 ,3 ,1 ,2 ,3.. FAUX!! Cela donne :1 ,2 ,3 ,4 ,5 ,6 ,7 ....30 !!!??? pas normal En remplaant par Dim k As Integer = 0 cela donne des 1 ,1 ,1 ,1 ,1 , 'normal Et en intercalant la dclaration de k entre les 2 For, cela marche comme on le souhaite:1, 2 ,3 ,1 ,2 ,3 .
Dim i, j, As Integer

For i = 1 To 10 Dim k As Integer For J = 1 To 3 K+ =1 'Imprimer k Next

Next

V-S-3 - Dans la section dclaration d'un Module


Dans la section dclaration d'un module (en haut du module juste aprs la ligne '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. Public, dans ce cas la variable est accessible dans la totalit du programme.
Module Module1 Public A as String - 255 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

.... Sub MaRoutine End Sub End Module

A est accessible partout dans la totalit du programme. (On parle dans ce cas de variable dite 'Globale'.)

V-S-4 - Dans la section dclaration d'une fentre, d'un formulaire


Dans la section dclaration d'un formulaire (en haut du formulaire juste aprs la ligne 'Inherits') 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 (Class1.A).
Class Class1 Inherits System.Windows.Forms Public A as String .... Sub MaRoutine End Sub End Class

Exemple: On peut atteindre la zone de dclaration en droulant le menu de droite.

Dans l'exemple ci dessus: MaVariable est visible dans le formulaire. et hors du formulaire condition d'utiliser Form1.MaVariable.

- 256 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

MaVariable2 est visible dans le formulaire . MaVariable3 n'est visible que dans la procdure Button1_Click.

V-S-5 - 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 (notation avec un prfixe dite 'hongroise'): g_MaVariable sera public (g comme global). m_Variable2 sera accessible au niveau du module. Dans un module standard, on peut mettre 'Public' toutes les variables que l'on veut rendre accessible tout le programme. Ce sont les variables (et constantes) gnrales utilises dans la totalit de l'application: tat du programme, utilisateur en cours...Pour des raisons que nous verrons plus loin, il faut viter ce type de variable publique dites 'globale'. Dans chaque formulaire on met dans la section dclarations, les variables du module: tat du formulaire. Variable 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. De manire gnrale utiliser des variables avec une porte la plus rduite possible.

V-S-6 - En gnral
Que se soit pour les variables, procdures ou Classes:

- Les variables qui sont Dim sont accessibles dans une procdure. - Celles qui sont Public sont accessibles dans la totalit du programme. - Celles qui sont Private ne sont accessibles qu' l'intrieur mme du module. il y a en plus: - Celles qui sont Protected sont similaires aux Private, mais dans le cas des classes, ils ont une particularit en cas d'hritage.
- 257 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

- Celles qui sont Friend ne sont accessibles qu' l'intrieur du projet, et pas par des lments extrieurs au projet en cours.

V-T - Les nombres alatoires

Comment obtenir un nombre alatoire?

V-T-1 - Avec la classe 'Random' du Framework


Il existe une classe (faisant partie de System ) nomme Random. La mthode Next() retourne un Integer positif entre 0 et 2 147 483 647 La mthode NextDouble() retourne un Double entre 0 et 1. La mthode NextBytes() retourne un Byte (octet) On peut surcharger ces mthodes pour dfinir des bornes. Exemple: J'instancie une objet partir de la classe.
Dim Al As New Random

L'objet Al est initialis avec une valeur probablement lie au temps, l'horloge interne, aussi l'initialisation est 'alatoire'. Pour obtenir un nombre (un double) entre 0 et 1 (toujours infrieur 1)j'cris:
MonNombrealeatoire=Al.NextDouble

Ensuite chaque NextDouble gnre le nombre alatoire suivant ( partir d'une formule) Noter bien que dans ce qui prcde, si on fait plusieurs fois Dim Al As New Random , le nombre obtenu par NextDouble n'est jamais le mme. Par contre si on fait:
Dim Al As New Random(1) MonNombrealeatoire=Al.NextDouble MonNombrealeatoire=Al.NextDouble

On obtient toujours:

- 258 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

'0.248668584157093' '0.110743977181029' On obtient donc la mme srie car on a impos avec Random(1) une valeur de dpart qui est fonction de (1) et non du temps. Pour obtenir un nombre alatoire entre 0 et 10, on utilise Next:
Dim Al As New Random() MonNombrealeatoire=Al.Next(10) MonNombrealeatoire=Al.Next(10)

On obtient la srie: 2, 1, 4, 7, 6, 4, 3, 9 On travaille sur des 'Integer' Pour obtenir un nombre alatoire entre 5 et 10 (mais < 10), on utilise Next:
Dim Al As New Random() MonNombrealeatoire=Al.Next(5,10) MonNombrealeatoire=Al.Next(5,10)

La srie comportera les nombres integers 5, 6, 7, 8, 9 (pas 10) Pour remplir un tableau d'octets avec des octets alatoires, on utilise NextBytes:
Dim rnd As New Random() Dim b(10) As Byte rnd.NextBytes(b)

V-T-2 - Avec les instructions Rnd() et Randomize() de Visual Basic.Net


On peut utiliser les instructions VB. Ne faut-il pas mieux utiliser le Framework? Rnd() fournit un nombre alatoire entre 0 et 1 (sans jamais atteindre 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 (avec une formule mathmatique complexe), ce qui fait que la suite de nombre alatoire est toujours la mme et qu'elle est priodique (au bout d'un grand nombre de tirage, on recommence la mme suite). 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:

- 259 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Rnd , si il n'y a pas d'argument, 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 lanc 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.

V-T-3 - En cryptographie avec le Framework


Pour remplir un tableau d'octets avec des octets alatoires forts d'un point de vue cryptographique (pour gnrer un mot de passe par exemple), on utilise plutt la classe RNGCryptoServiceProvider() L'exemple suivant cre une squence alatoire de 100 octets de long et la stocke dans ra.
Imports System.Security.Cryptography Dim ra() As Byte = New Byte(100) {} Dim rng As New RNGCryptoServiceProvider() rng.GetBytes(ra) ' les octets dans ra sont maintenant alatoires.

Il existe aussi GetNonZeroBytes pour ne pas avoir d'octet=0.

V-T-4 - Un peu de thorie (creusons)

Un nombre alatoire est obtenu par tirage au sort galit des chances, il est impossible de prvoir le tirage suivant. Il existe des procdures physiques permettant de gnrer des nombres alatoires: comptage de dsintgration par compteur Geiger, analyse de bruit.. En informatique, on utilise les nombres pseudo alatoires gnrs par des algorithmes.

- 260 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

L'implmentation actuelle de la classe Random est base sur l'algorithme du gnrateur de nombres alatoires soustractif de Donald E. Knuth. Pour plus d'information, consultez D. E. Knuth. The Art of Computer Programming, volume 2: Seminumerical Algorithms. Addision-Wesley, Reading, MA, deuxime dition, 1981. Soit un nombre de dpart x (nomm' graine'ou seed en anglais) Le nombre est utilis pour le calcul du nombre alatoire suivant (avec une formule mathmatique complexe), ce qui fait que la suite de nombre alatoire est toujours la mme pour une mme graine et qu'elle est priodique. La formule, dite gnrateur congruence linaire, pour trouver le nombre suivant, est de la forme: Xn+1 = (aXn+b) mod m xn+1 = (1 664 525 xn + 1 013 904 223) mod 2 32 (gnrateur de Knuth & Lewis)

Voir l'excellent article sur les nombres pseudo alatoires:Article de P larbier:http://www.alrj.org/docs/algo/random.php et l'excellent site de D. Mller: www.apprendre-en-ligne.net/random/index.html On a vu que le gnrateur est priodique: au bout d'un certain nombre de tirage pseudo alatoire, ds qu'un nombre apparat la seconde fois, on recommence la mme srie. En thorie, la priode maximale serait m de mod m dans la formule soit 232. Quelle est la priode de la Classe Random en pratique? Priode: 81 672 063 avec Next (Integer) Priode: 562 183 903 avec NextDouble (Double) C'est un ordre de grandeur car en fonction de la graine (valeur de dpart), la srie et la priode sont diffrentes (j'ai essay!). Tout l'art est de choisir la graine (le premier nombre) alatoirement!!Cela est effectu par Randomize en VB ou l'instanciation d'un objet Random. Randomize utilise par exemple la valeur de l'horloge interne pour initialiser; cette valeur serait d au hasard

Amlioration : Comment gnrer des nombres plus alatoires que les pseudo alatoires? 1- Solution cre par le programmeur: Le nombre alatoire est la combinaison d'un nombre pseudo alatoire et d'un nombre probablement alatoire par exemple: -Position de la souris Temps entre 2 pressions sur des touches. -Statistique d'activit du disque dur. -Temps coul depuis.. (Ce que fait randomize).
- 261 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple: Le nombre alatoire est le produit d'un nombre pseudo alatoire et du nombre de seconde coul depuis une date:
Dim pAlea As Double Dim second As Double Dim Alea Randomize pAlea = Int((1000000 * Rnd) + 1) second = DateDiff("s", "12/30/96", Now) Alea = second *pAlea As Double 'Nombre pseudo alatoire 'Nombre de secondes depuis le 30/12/96 'Nombre alatoire

Il y a des biais, en particulier, si on utilise rgulirement cette routine, le nombre de seconde est rgulirement croissant. On pourrait amliorer en utilisant second Mod quelque chose. 2- Solution propose par le Framework: Mthode utilise dans la classe System.Security.Cryptography Le gnrateur doit tre capable de produire des nombres alatoires rsistant des attaques ou des analyses statistiques qui permettraient de prdire la suite. Les mthodes courantes pour gnrer des nombres alatoires en cryptographie consistent utiliser diverses sources disponibles sur un ordinateur: temps entre deux accs au disque, taille de la mmoire, mouvements du pointeur de la souris... et faire passer le rsultat dans une fonction de hachage cryptographique comme MD5 ou SHA-1 puis utiliser cette valeur comme graine puis...

V-U - La 'Rcursivit'
La rcursivit c'est quoi? Exemple trouv sur developpeur.journaldunet.com :

"C'est l'histoire d'un petit garon qui ne voulait pas dormir et dont la mre lui raconte l'histoire de la petite grenouille qui ne voulait pas dormir et dont la mre lui raconte l'histoire de l'ourson qui ne voulait pas dormir et dont la mre lui raconte l'histoire du bb cureuil qui s'est endormi, et l'ourson s'endormi, et la petite grenouille s'endormi, et le petit garon s'endormi."

- 262 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Cette histoire, permet de mieux voir ce qui se produit lors de la rcursivit: la procdure (le petit qui ne dort pas et qui on raconte une histoire) appelle, la mme procdure (le petit qui ne dort pas et qui on raconte une histoire) qui appelle la mme procdure..... on passe au "niveau" suivant puis au suivant tant qu'on n'a pas atteint la condition d'arrt (ici, l'endormissement). Celle-ci atteinte, la rcursion se termine pour les autres niveaux en sens inverse en remontant. Une procdure est rcursive si elle peut s'appeler elle mme. VB accepte les procdures rcursives:
Sub Calcul() .. Calcul() .. End Sub

On voit ici que la procdure Calcul() s'appelle elle mme: la ligne centrale appelle de nouveau la procdure Calcul() avec nouveaux paramtres, nouvelles variables locales, la sortie de la procdure (aprs End Sub), retour la 'version' prcdente de la procdure Calcul() ou on retrouve les variables de la prcdente version. Une procdure non rcursive appelle, elle, d'autres procdures. Pourquoi utiliser la rcursivit? Une procdure rcursive dcoupe le problme en morceaux plus petits et s'appelle elle-mme pour rsoudre chacun des plus petits morceaux, elle rsout une petite partie du problme elle mme.
Sub Calcul(Gros) If.. Rsout petit problme Else Dcoupe Calcul(Petit) End If End Sub

Ici 'Rsout petit problme' s'appelle le point terminal ou le point d'arrt, c'est la branche qu'une condition qui n'appelle pas de nouveau la fonction Calcul(). C'est indispensable. Ou bien elle dcoupe le problme en plus petits morceaux et pour chaque morceau on appelle de nouveau le procdure:
Sub Calcul(Gros) If..

- 263 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dcoupe Calcul(Petit) End If End Sub

A un moment donn, la condition n'est pas remplie, cela correspond au point terminal. On se rend compte qu'une bouche For Next peut tre transforme en procdure rcursive: Exemple : Crons une procdure qui ajoute N lments par ordre dcroissant (ajoute l'lment N puis N-1 puis ... 2 puis 1) On l'appelle avec Calcul(10) par exemple: Avec For:
Function Calcul(N As Integer) Dim total As Integer For i= N to 1 Step-1 total=total + i Next i Calcul=total End Function

4Avec la rcursivit: Function Calcul(N As Integer) Dim total As Integer If N>0 Then total= N+ Calcul (N-1) End If Calcul= total End Fonction

On l'appelle avec Calcul(10) Mais la rcursivit ne sert pas seulement cela, elle sert rsoudre aussi des problmes qui seraient extrmement complexes en programmation non rcursive.

V-U-1 - Rgles fondamentales d'une fonction rcursive


1-La rcursivit doit s'arrter un moment donn.

- 264 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Il doit y avoir un point terminal (ou point d'arrt); Il doit y avoir dans la fonction rcursive, une expression conditionnelle dont au moins un des cas conduit une expression valuable. Il doit donc y avoir un chemin non rcursif (chemin ou la fonction ne s'appelle pas de nouveau). Il doit y avoir un test qui survient obligatoirement et qui arrte le fonctionnement rcursif sinon la fonction tourne sans fin (ou du moins, elle plante quand la pile est pleine).

2- A aucun moment les paramtres appelant de nouveau la fonction doivent tre les mmes que l'appel prcdent. Sinon cela tournera indfiniment.

3-Le nombre d'appel rcursif ne doit pas tre trs grand. Sous peine de 'StackOverflow': la pile des appels qui stocke les adresses de retour de chaque appel rcursif est pleine, elle dpassent ses capacits. Certains ajoute dans le code de la fonction rcursive 'un compteur de scurit':
Sub Calcul(ByRef Compteur As Long) If Compteur> LIMITE Then Compteur= Compteur+1 .. Calcul(Compteur) .. End Sub Exit Sub

Noter que le compteur est un paramtre ByRef, ce qui permet de toujours incrmenter la mme variable. Voir exemple sur les fractales.

4-La fonction rcursive ne doit pas dclarer un grand nombre de variables ou d'objets. Sous peine d'occuper une place trop importante en mmoire.

5-Limiter les fonctions rcursives une seule procdure, viter plusieurs fonctions rcursives imbriques. Sinon cela devient vite trop complexe.

6- Chaque fois qu'elle est appele de manire rcursive (par elle-mme, donc), un ou plusieurs des arguments qui lui sont transmis doivent se rapprocher de la condition d'arrt.

- 265 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Sinon il n'y aura pas d'arrt.

7- La complexit du problme doit tre rduite chaque nouvel appel rcursif. 8- Ne peut-on pas faire plus simple avec une boucle For Next? Parfois une boucle simple remplace avantageusement une fonction rcursive. Dans ce cas utiliser la boucle!! C'est le cas de la fonction factorielle!!

V-U-2 - Exemple 1 : Inversion de chanes


Soit une chane de caractres, on veut une fonction qui inverse cette chane: dernier caractre en premier, avant dernier en second... Exemple: "abcd" retournera "dcba" Principe de la fonction 'inverse' rcursive: La fonction 'inverse' met le dernier caractre au dbut et appelle la fonction 'inverse' avec comme paramtre la chane moins le dernier caractre. Exemple "abcd", on met "d" au dbut et rappelle la fonction inverse avec comme paramtre "abc" Point d'arrt: si la chane est vide, plus d'appel rcursif, on retourne une chane vide.
Function inverse(ByVal st As String) As String If st = "" Then inverse = "" Else inverse = st.Substring(st.Length() - 1, 1) + inverse(st.Substring(0, st.Length() - 1)) End If End Function

V-U-3 - Exemple 2 : 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:

- 266 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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. 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 Factorielle est appele 4 fois : Factorielle (4) appelle Factorielle(3) qui appelle Factorielle(2) qui appelle Factorielle (1)
- 267 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Puis la fonction remonte en retournant le rsultat de chaque factorielle. 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.

V-U-4 - Exemple 3 : Calcul d'une expression avec parenthses multiples


Comment calculer la valeur de la chane "(4+2(2*8)-(5/(8+1)))" Une partie du code nomme Calculsimple sait calculer une chane de type "8+1" ou "4+2" sans parenthses. Il faut grer les parenthses: la sub dcoupe ce qui est entre parenthse et s'appelle elle-mme pour calculer ce qui est entre parenthses: La sub calcul fait 2 choses: S'il y a des parenthses: appelle Calcul() avec comme paramtre la chane entre parenthse puis remplace la chane entre parenthse par sa valeur Si il n'y a pas de parenthses calcule l'expression simple (= - * /). Voici l'algorithme:
Sub Calcul(Chaine As String) As String Si Chaine contient "("

Decouper ValeurEntreParenthese Resultat=Calcul (ValeurEntreParenthese) Remplacer (ValeurEntreParenthese) par Resultat Sinon CalculSimple Fin Si End Sub 'Appel rcursif

V-U-5 - Exemple 4 : PGCD


On rappelle que le PGCD est le 'Plus Grand Commun Diviseur'.

- 268 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Soit a et b 2 nombres: Si b divise a => PGCD=b. sinon, PGCD(a,b) = PGCD(b, a mod b)


Function PGCD(ByVal P As Long, ByVal Q As Long) As Long If Q Mod P = 0 Then Return P Else Return PGCD(Q, P Mod Q) End If

V-U-6 - Exemple 5 : Tri rcursif


Tri rcursif Le principe est que la fonction rcursive scinde le tableau en 2 et pour chaque partie appelle de nouveau le tri rcursif, la condition d'arrt survient quand le dernier lment est < ou = au premier. Dans un premier temps on range le tableau de telle sorte que tous les lments infrieurs l'lment d'indice pivot se trouvent placs la gauche de celui-ci et donc tous les lments suprieurs sa droite. Ensuite on appelle nouveau (rcursivement) la procdure QuickSort pour chacun des deux sous-tableaux. Cette mthode de tri rcursif qui se nomme QuickSort est proportionnellement efficace au dsordre du tableau trier. Cette mthode mettra plus de temps (qu'une autre mthode) trier un tableau qui est dj en parti tri qu'un tableau rang au hasard... Mais en cas de dsordre intgral, c'est certainement la plus rapide.
Sub QuickSort(debut As Integer, fin As Integer) Dim pivot, gauche, droite, temp As Integer pivot = debut gauche = debut droite = fin do if t(gauche) >= t(droite) then 'changer si ncessairet(droite) et t(gauche) temp = t(gauche) t(gauche) = t(droite) t(droite) = temp pivot = gauche + droite - pivot 'nouvelle position du pivot 'pivot est alors gal droite ou gauche car pivot tait avant gal ' gauche ou droite End If if pivot = gauche then droite=droite-1 else gauche=gauche+1 loop until gauche = droite if debut < gauche - 1 then QuickSort(debut, gauche - 1) ' //appel rcursif sur la partie gauche if fin > droite + 1 then QuickSort(droite + 1, fin) 'appel rcursif sur la partie droite End Sub

Comment l'utiliser: On cre un tableau Public d'integer contenant les valeurs trier:
Public t() As Integer = {10, 2, 7, 4, 1, 3, 12, 6} - 269 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim i As Integer Call QuickSort(0, 7) 'paramtre= premier et dernier lment du tableau

Affichage du tableau tri dans une texteBox1


For I = 0 To 7 TextBox1.Text = TextBox1.Text + ControlChars.CrLf + t(i).tostring Next

V-U-7 - Exemple 6 : Parcours de rpertoires et de sous rpertoires


On veut afficher dans une ListBox les noms des rpertoires, sous-rpertoires et fichiers: On cre une routine AfficheTree qui affiche: -Le nom du rpertoire courant. -Le nom des fichiers du rpertoire courant. -Qui parcourt les sous-rpertoires et pour chacun d'eux appelle AfficheTree
Imports System.IO

Sub

AfficheTree ( ByVal myDir As String, ByVal Optional Niveau As Integer =0)

'Affiche le rpertoire myDir List1.Items.Add(New String (" ", niveau *2) & myDir)

'Affiche les fichiers For Each fichier As String In Directory.GetFiles( myDir)

List1.Items.Add(New String (" ", niveau *2+2) & fichier) Next

'Parcourt les sous-rpertoires For each sousRepertoire As String In Directory.GetDirectories( myDir) 'Appel de manire rcursive 'AfficheTree pour afficher le contenu des sous rpertoires. AfficheTree (sousRepertoire, niveau+1) Next

End Sub

- 270 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-U-8 - Exemple 7 : valuation d'un nombre crit en chiffres romains


On veut taper III et voir s'afficher 3 taper M et voir s'afficher 1000 taper XLVIII et voir s'afficher 48 On remarque (je l'ai pas fait tout seul!!) que: Chaque caractre romain a une valeur (I=1, V=5, X=10, L=50, C=100, D=500, M=1000) Pour deux caractres, on compare leurs valeurs: Si le premier est plus petit, on le soustrait au second: IX = 10 - 1 = 9 Si le premier est plus grand, on l'ajoute au second: VI = 5 + 1 = 6 Pour une suite de n caractres: en partant de la gauche, si le premier chiffre a une valeur infrieure au deuxime, alors on le soustrait de la valeur de tout le reste, sinon on l'additionne la valeur de tout le reste.. Le programme va donc comparer la valeur des 2 caractres de gauche; il va ajouter (si la valeur du premier est plus grande) ou soustraire (si la valeur du premier est plus petite) la valeur du premier caractre la valeur de la chane raccourcie du premier caractre. Exemple: pour XLVIII
X plus petit que L L plus grand que V V plus grand que I ... donc donc donc -10 +valeur de (LVIII) -10 +50 + valeur de (VIII) -10 +50 + 5 + valeur de (III)

Il faut crer un routine nomme valeur qui calcule la valeur d'un caractre. Et la routine Eval qui calcule l'expression S'il y a un caractre dans la chane c passe en paramtre, on retourne sa valeur, s'il y en a plusieurs, on compare les 2 premiers caractres, et on additionne ou soustrait la valeur du premier caractre l' Eval (appel rcursif) du reste de la chane.

Function valeur(ByVal c As Char) As Integer Select Case c Case "M"c : valeur = 1000 Case "D"c : valeur = 500 Case "C"c : valeur = 100 Case "L"c : valeur = 50 - 271 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Case "X"c : valeur = 10 Case "V"c : valeur = 5 Case "I"c : valeur = 1 End Select End Function

Function eval(ByVal s As String) As Integer

Dim n As Integer

If s.Length = 1 Then eval = valeur(s.Chars(0)) Else n = valeur(s.Chars(0)) If n < valeur(s.Chars(1)) Then n = -n eval = n + eval(s.Substring(1, s.Length - 1)) End If End Function

Si on veut tester: crer dans une form 2 texteBox: TextDecimal, TextRomain et un bouton Button1
Private Sub Button1_Click TextDecimal.Text = eval(TextRomain.Text).ToString End Sub

V-U-9 - Exemple 8 : Suite de Fibonacci


Possdant initialement un couple de lapins, combien de couples obtient-on en douze mois si chaque couple engendre tous les mois un nouveau couple compter du second mois de son existence ? On suppose que :

On suppose que :

le premier mois, il y a juste une paire de lapins ; les lapins ne sont pubres qu' partir du deuxime mois ; chaque mois, toute paire susceptible de procrer engendre effectivement une nouvelle paire de lapins ; les lapins ne meurent jamais (donc la suite de Fibonacci est strictement croissante).

Sont nots en gras, les couples productifs.

- 272 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

En janvier : 1 couple En fvrier : 1 couple En mars : 1 + 1 = 2 couples En avril : 1 + 2 = 3 couples En mai : 2 + 3 = 5 couples En juin : 3 + 5 = 8 couples En juillet : 5 + 8 = 13 couples En aot : 8 + 13 = 21 couples En septembre : 13 + 21 = 34 couples En octobre : 21 + 34 = 55 couples En novembre : 34 + 55 = 89 couples En dcembre : 55 + 89 = 144 couples Les rponses constituent les nombres de la suite de Fibonacci : 1 - 1 - 2 - 3 - 5 - 8 - 13 - 21 - ..., dont chaque terme partir du 3me est la somme des deux prcdents.
Function Fibonacci(ByVal n As Integer) ' si n > 91, cela entrane un overflows sur les long. Dim result As Long = 0

If n < = 2 Then result = 1 Else result = Fibonacci(n - 1) + Fibonacci(n - 2) End If

Return result End Function

Programme itratif correspondant:


Function Fibonacci2(ByVal n As Integer) Dim u, v, w, i As Long

If n <= 0 Then Return 0 If n = 0 Then Return 1

u = 0 v = 1 For i = 2 To n w = u + v u = v - 273 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

v = w Next

Return v End Function

V-U-10 - Exemple 9 : Fractales


Calculs de fractales Les fonctions fractales sont des fonctions rcursives thoriquement infinies... Le Flocon de Koch, du nom du mathmaticien sudois Helge Von Koch (1870-1924), est une courbe ferme, reproduisant un triangle quilatral des chelles de plus en plus petites. En rptant ce processus une infinit de fois, la courbe obtenue possde alors un primtre infini mais une aire limite. Pour ce faire, chaque segment formant un triangle quilatral est lui-mme dcompos en un triangle quilatral dont la base mesure un tiers du segment, centre et confondue ce segment. On va donc crer une fonction rcursive nomme 'flocon' qui dcompose un segment en ajoutant un triangle puis qui pour chaque segment appelle la fonction 'flocon. Comme on ne peut pas afficher des points infiniment petits, on va ajouter une condition d'arrt qui est dclenche par le nombre d'appel rcursif. Si la condition d'arrt est remplie, on dessine le segment.

Voici la fonction rcursive:


Private Sub Flocon(ByRef gh As Graphics, ByVal a As Point, ByRef b As Point, ByRef n As Integer) 'procdure rcursive pour dessiner la fractale de Von Koch Dim d, c, e As Point

- 274 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim Couleur As Color = Color.Aqua

If n = 0 Then 'Condition de sortie de la rcursivit gh.DrawLine(New Pen(Color.Red), a.X, a.Y, b.X, b.Y) Else 'Appel rcursif c = Tiers(a, b) d = Tiers(b, a) e = Sommet(c, d) Flocon(gh, a, c, n - 1) Flocon(gh, c, e, n - 1) Flocon(gh, e, d, n - 1) Flocon(gh, d, b, n - 1) End If

End Sub

Pour que cela fonctionne, il faut les deux routines suivantes:


Private Function Sommet(ByRef a As Point, ByRef b As Point) As Point 'Calcule le sommet du triangle quilatral 'dont la base est dfinie par 2 points Sommet.x = (b.x + a.x) / 2 + (b.y - a.y) * Racine3Sur2 Sommet.y = (b.y + a.y) / 2 - (b.x - a.x) * Racine3Sur2 End Function

Private Function Tiers(ByRef a As Point, ByRef b As Point) As Point 'Calcul le premier tiers d'un segment 'Attention: Le rsultat est orient Tiers.x = (b.x - a.x) / 3 + a.x Tiers.y = (b.y - a.y) / 3 + a.y End Function

Pour utiliser cet exemple il faut dans un formulaire un PictureBox nomm PictureBox1 pour afficher la fractale, un TextBox1 permettant de saisir le nombre d'appel rcursif( ne pas dpasser 9 en pratique), et un bouton command1 excutant le calcul et l'affichage.
- 275 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Mettre en haut du module:


Const Racine3Sur2 As Double = 0.866025404 Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click Dim newBitmap As Bitmap = New Bitmap(400, 400) 'crons un BitMap

Dim g As Graphics = Graphics.FromImage(newBitmap) 'crons un Graphics et y mettre le BitMap Dim t As Integer

'dclarons les 3 points du triangle initial Dim a(2) As Point Dim b(2) As Point

'donnons une valeur 2 points, calculons le troisime a(0).X = 164 a(0).Y = 10 b(1).X = 20 b(1).Y = 260 b(0) = Sommet(a(0), b(1)) a(1) = b(0) a(2) = b(1) b(2) = a(0)

'Pour chaque cot For t = 0 To 2 'Appelons la fonction rcursive Flocon(g, a(t), b(t), Val(TextBox1.Text)) Next t

'Affichons PictureBox1.Image = newBitmap

End Sub

Code issu d'un code VB6 situ sur CodeS-SourceS VBFrance.com crit par D. Thuler et transcrit par moi en VB.Net.Merci David.

- 276 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-U-11 - Autre
Recherche de chemin dans un labyrinthe. Le principe est que la fonction rcursive teste le dplacement droite, gauche, en haut, en bas. La condition d'arrt se produit quand on a trouv la sortie; les endroits ou on est dj pass sont nots. L'article http://recursivite.developpez.com/ donne des exemples et des explications extraordinaires de programmes rcursifs EN PASCAL. Si vous avez le courage de les traduire en VB , envoyez les moi!!

V-V - Faut-il oublier le GoTo ?

Et hop!! On saute.. Le Goto c'est quoi? Faut-il utiliser le GoTo ?

V-V-1 - Le 'Goto'
L'instruction GoTo permet de transfrer le contrle l'emplacement d'une tiquette (on dit parfois un label) locale. Une tiquette permet de localiser un endroit du code Les tiquettes sont toujours termines par deux points(:). Goto permet un saut non conditionnel : aller , sauter vers une tiquette:
... GoTo FIN A=2 B=A+2 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 (Les instructions entre Goto FIN et FIN: ne sont pas excutes : Le GoTo est souvent utilis avec une instruction If (pour rendre le saut conditionnel):
If A=0 Then GoTo FIN .. FIN:

- 277 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-V-2 - Pourquoi viter le 'GoTo'


L'utilisation du GoTo est peu lgante et viter: Cela casse la structure du code qui se droule de haut en bas, le cheminement du programme est moins vident, moins visible; s'il y a plusieurs GoTo le programme devient vite illisible.

On parle dans ce cas de "code spaghetti" ou de "code kangourou" ( cause des sauts). Dans la programmation structure il faut bannir le 'GoTo'. On le remplacera avantageusement par des If..Then et des boucles. Exemple: On peut remplacer avantageusement la ligne:
If A=0 Then GoTo FIN B=1 FIN:

par:
If A<>0 Then B=1 End if

Autre exemple: Saisir l'aide d'une InPutBox un nombre. S'il n'est pas entre 1 et 31, ressaisir. Avec GoTo:
Dim reponse As String Question: reponse= InPutBox ("Donner un nombre entre 1 et 31") If Val(Reponse)<1 Or Val(Reponse) >31 Then GoTo Question

Sans GoTo:
Dim reponse As String While Val(Reponse)<1 Or Val(Reponse) >31 reponse= InPutBox ("Donner un nombre entre 1 et 31") Wend

- 278 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-V-3 - Quand utiliser le 'GoTo'


Il est cependant parfois utilis pour la clart du code, car il permet de sortir de plusieurs blocs de code qui se suivent. Exemple: dtection d'erreur avant l'criture sur une fichier:
If Not Exit(File) Then errorState=File.NotExist GoTo FIN End if

If Not Open(File) Then errorState=File.NotOpen GoTo FIN End if

If Not Overwrite(File) Then errorState=File.NotOverwrite GoTo FIN End if FIN:

C'est propre. L aussi on aurait pu utiliser des If imbriqus:


If Exit(File) Then If If Open(File) Then Overwrite(File) Then errorState=File.Ok Else errorState=File.NotOverwrite End if

Else errorState=File.NotOpen End if

- 279 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Else errorState=File.NotExit End if

La solution avec les GoTo l'avantage d'tre plus lisible. Pour info, il existe une autre solution lgante et originale utilisant un Select Case: Les "Case" peuvent contenir n'importe quelle expression.
Select Case true Case len(File) = 0 msgbox "Pas de nom de fichier" Case Not Exit(File) errorState=File.NotExist Case Not Open(File) errorState=File.NotOpen Case Not Overwrite(File) errorState=File.NotOverwrite Case else 'placer les exceptions ici End Select

V-W - Les bases binaires, hexadcimales, l'algbre de Boole

Mr Georges Boole 1805-1864 On tudie dans ce chapitre les diffrentes bases (binaire, hexadcimale..) en approfondissant. Ce chapitre n'est pas lire de suite pour les dbutants. Voici ce que nous allons voir: Le Bit, poids d'un bit. Conversion dcimal binaire. L'octet, Kilo, Mga, Tra-Octet Opration: L'addition, la multiplication binaire, les nombres ngatifs.

- 280 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Table de vrit. Fonction logique. Or And, Not, Xor... Notation. Ordre des valuations. Loi de composition. Dplacement de bit. Hexadcimale. Intrts en Visual Basic. A notre disposition Boolean, Integer Byte.. Conversion binaire, dcimale, hexadcimale. Cas particulier: If A then Les masques de bit Cryptage par Xor Travail sur les couleurs, graphiques.. Viewer hexadcimal.

V-W-1 - Introduction
L'algbre de Boole est la partie des mathmatiques, de la logique de l'lectronique et de l'informatique qui s'intresse aux oprations et aux fonctions sur les variables logiques. En logique propositionnelle, une expression est soit vraie soit fausse. (le vrai (1) et le faux (0)). Georges Boole (1815-1864), physicien Anglais dfinit en 1847 un algbre qui est applicable au raisonnement logique, qui traite des fonctions variables binaires (deux valeurs). Mais il ne s'applique pas aux systmes plus de deux tats d'quilibre. Une variable boolenne, ou logique, ou binaire ne prend que deux valeurs (elle est gnralement stocke sous la forme d'un bit). Vers la fin des annes 30, Claude Shannon dmontra qu' l'aide d'interrupteurs ferms pour vrai et ouverts pour faux il tait possible d'effectuer des oprations logiques en associant le nombre 1 pour vrai et 0 pour faux . Ce codage de l'information est nomm base binaire. C'est avec ce codage que fonctionnent les ordinateurs. Il consiste utiliser deux tats (reprsents par les chiffres 0 et 1) pour coder les informations. Il permet d'tudier les circuits logiques.

- 281 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-W-2 - Notions thoriques


Notion de base: On utilise diverses bases dans la vie courante: Pour les heures, minutes, secondes on utilise sans le savoir une base 'soixante': 60 secondes= 1 minute 60 minutes = 1 heure Si je compte : 1 s, 2s, 3s,...59s, 1mn, 1mn+1 s.....1mn+59s, 2 minutes....59 mn+ 59s, 1h...

En base dcimale, on a notre disposition les caractres 1 2 3 4 5 6 7 8 9. Si on veut reprsenter le nombre au-dessus de 9, comme on n'a plus de caractre, on recommence avec 1 mais en le dcalant vers la gauche pour signifier qu'il s'agit d'une dizaine. On obtient '10'. Le nombre suivant est '11' puis "12'.. Idem pour 100, 1000.. En base binaire, on n'a que le caractre 1 (et le zro), 1 binaire= 1 dcimal. Si on veut crire en binaire le nombre au dessus de 1, comme on n'a plus de caractre, on procde de mme en dcalant vers la gauche le 1: 10 binaire= 2 dcimal. Le nombre suivant est 11 binaire (3 en dcimal). Puis 100 (4 en dcimal) car il faut de nouveau dcaler.

En base hexadcimale, on a notre disposition les caractres 1 2 3 4 5 6 7 8 9 A B C D E F. Aussi 10 dcimal = A en hexadcimal ... 15 dcimal = F en hexadcimal 16 dcimal = 10 en hexadcimal Si on veut reprsenter le nombre au-dessus de 15, comme on n'a plus de caractres, on recommence avec 1 mais en le dcalant vers la gauche pour signifier qu'il s'agit d'une 'seizaine'. On obtient '10' hexadcimal qui correspond 16 dcimal . Le nombre suivant est '11' puis "12' jusqu'a 1F puis 100... 1000.. Utilisons l'analogie des allumettes et des paquets d'allumettes: En dcimal on a des paquets de 10 allumettes. On compte 1 ,2 ,3..9, 1 paquet de 10, puis 1 paquet + 1 allumette...

- 282 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On a des gros paquets de 100, des normes paques de 1000 allumettes.. En binaire on a des paquets de 2 allumettes et des gros paquets de 4 allumettes. On compte 1 , 1 paquet de 2, puis 1 paquet + 1 allumette, puis 1 gros paquet de 4...

Donc pour compter en binaire: Binaire Dcimal 1 allumette. 1 1 1 paquet de 2 10 2 1 paquet de 2 + 1 allumette 11 3 1 gros paquet de 4 100 4 1 gros paquet de 4 +1 allumette 101 5 1 gros paquet de 4 +1 paquet de 2 110 6 .... Le nombre d'allumette qu'il y a dans un paquet se nomme le poids. En hexadcimal, les paquets sont de 16 allumettes: On compte 1, 2, 3 ..jusqu'a 15 allumettes puis 1 paquet de 16 puis 1 paquet plus une allumette..

Base binaire: Soyons maintenant un peu plus scientifique: Le bit: Le terme bit (b avec une minuscule) signifie binary digit , c'est--dire 0 ou 1 en numrotation binaire. Il s'agit de la plus petite unit d'information manipulable par un ordinateur. Physiquement cette information binaire correspond : * un signal lectrique ou magntique. (pas de signal=0, au-del d'un certain seuil de +5V, valeur 1). * des trous ou pas de trous sur un CD.
- 283 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

* l'tat de bistables, c'est--dire des composants lectroniques contenus dans les circuits intgrs qui ont deux tats d'quilibre (tat 1, tat 0). Avec un bit il est donc possible d'avoir deux tats : soit 1. soit 0. Grce 2 bits, il est possible d'obtenir quatre tats diffrents (2*2) : On peut avec 2 bits , avoir les valeurs: 0, 1, 10, 11 soit 0,1, 2, 3 en dcimal.

Avec 3 bits, il est possible d'obtenir huit tats diffrents (2*2*2) de 0 7 en dcimal:

Avec 4 bits, il est possible d'obtenir huit tats diffrents (2*2*2*2) de 0 15 en dcimal:

Pour un groupe de n bits, il est possible de reprsenter 2n valeurs ( de 0 2n-1 ). Avec 8 bits =256 valeurs.
- 284 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Avec 16 bits=65536 valeurs. Avec 32 bits=4294967296 valeurs. Avec 64 bits=18446744073709551616 valeurs. Avec 8 bits (un octet) on peut reprsenter un nombre qui peut avoir 256 valeurs diffrentes: de 0 255

Poids des bits: Chaque bits a un poids, qui dpend de la position du bit en partant de la droite. Comme les dizaines, les centaines et les milliers pour un nombre dcimal, le poids d'un bit crot d'une puissance de deux en allant de la droite vers la gauche:

Remarque : cela est valable pour toutes les bases: Soit un nombre 'mno' en base b Le premier chiffre droite a la valeur: o x b1 Le deuxime chiffre droite a la valeur: n x b2 Le troisime chiffre droite a la valeur: m x b3 En allant de la droite vers la gauche le poids crot d'un puissance de b. Le nombre total est la somme de toutes les valeurs: o x b1 + n x b2 + m x b3

Conversion: Pour convertir un nombre binaire en nombre dcimal: Il faut multiplier la valeur de chaque bit par son poids, puis d'additionner les rsultats. Ainsi, le mot binaire 10101 vaut en dcimal :

- 285 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

24x1 + 23x0 + 22x1 + 21x0 + 20x1 = 16x1 + 8x0 + 4x1 + 2x0 + 1x1 = 21 Pour convertir un nombre dcimal en nombre binaire:

-Mthode des poids: Soit 21 en dcimal. Il faut connatre les poids (puissance de 2): 2, 4, 8, 16 ,32.. Trouver le premier poids (la premire puissance de 2) infrieur au nombre dcimal 21 :c'est 16 16 donne en binaire 10000 Faire 21-16 =5 Trouver le premier poids infrieur au nombre 5, c'est 4. 4 donne en binaire 100 Faire 5-4= 1 Quand on atteint 1 (ou 0) on s'arrte. On additionne 10000 + 100 +1 _____ 10101

-Mthode des divisions par 2: 21 /2 = 10 reste 1 10 /2 = 5 reste 0 5 /2 = 2 reste 1 2 /2 = 1 reste 0 1 /2 = 0 reste 1 On prend les restes en commenant par la fin: 10101
- 286 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Y a t-il une solution plus lgante? La calculette Windows permet les conversions. 1. Dans le menu Affichagede la calculette, cliquez sur Scientifique. 2. Tapez le nombre dcimal que vous souhaitez convertir. 3. Cliquez sur le RadioButton 'Bin' .

Octet, Kilo mga Tra Octet. L'octet (en anglais Byte ou B) est une unit d'information compose de 8 bits ( 256 valeurs possibles). Il permettait par exemple de stocker le code d'un caractre (une lettre ou un chiffre: 65 indiquant 'A' dans le code ASCII). Il y a quelques annes les ordinateurs fonctionnaient avec des octets puis ils ont utilis 16 bits , 32 bits et maintenant 64 bits. On voit que plus l'unit d'information contient de bits, plus elle pourra contenir des grands nombres. En informatique, si 8 bits correspondent un octet (Byte), 16 bits est gnralement appele mot (en anglais word), 32 bits correspond un mot double (en anglais double word, d'o l'appellation dword). En Visual Basic.Net, les entiers (Integer) sont cods sur 32 bits, les Long sur 64 bits. Les valeurs sont signes (positive ou ngative), un bit est donc utilis pour le signe. Par contre UInteger est un entier non sign cod sur 32 bits pouvant donc prendre les valeurs 0 4 294 967 295. Ko, Mo, Go, To ( kB, MB, GB, TB en anglais) Pour indiquer la capacit d'une mmoire, on utilisait: * Un kilooctet (Ko) = 210 octets = 1024 octets * Un Mgaoctet (Mo) = 220 octets = 1024 ko = 1 048 576 octets * Un Gigaoctet (Go) = 230 octets = 1024 Mo = 1 073 741 824 octets * Un Traoctet (To) = 240 octets = 1024 Go = 1 099 511 627 776 octets

- 287 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Cela correspondait bien des puissances de 2, de plus c'tait en accord avec les circuits intgrs de mmoire qui avaient bien 1024 octets dans un Ko. Il parait que depuis 1998 l'IEC a dcid: * Un kilooctet (Ko ou KB) = 1000 octets * Un Mgaoctet (Mo ou MB) = 1000 Ko = 1 000 000 octets * Un Gigaoctet (Go ou GB) = 1000 Mo = 1 000 000 000 octets * Un Traoctet (To) = 1000 Go = 1 000 000 000 000 octets

Hors de France, on utilise le nom de byte plutt que le terme octet . Cela donne les kilobyte, mgabyte, gigabyte et terabyte : (kB, MB, GB, TB avec un B majuscule)

Ne pas confondre Byte B (octet) et bit (bit ou binary digit).

Oprations: Addition binaire: L'addition en binaire se fait comme en dcimale : 0+1 = 1 1+0 = 1 0+0 = 0 1+1 =10 Pour plusieurs digits, on additionne en commenant par les bits de droite. On a des retenues lorsque la somme de deux bits de mme poids dpasse la valeur de l'unit la plus grande (dans le cas du binaire : 1), cette retenue est reporte sur le bit de poids plus gauche... C'est ce qui se passe avec 1+1= 10 Autre exemple: 01100 +01110 -----11010

- 288 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Soustraction binaire: La soustraction en binaire se fait comme cela : 100 - 010 _____ 010 Mais pour les processeurs il est plus facile d'additionner le complment 2. Le complment 1 c'est le fait d'inverser tous les bits du nombre sur toute sa longueur. 010 donne le complment 1 suivant: 11111101 (si on travaille sur des octets, on inverse les huit bits) Le complment 2, c'est le complment 1 +1: 11111101+1=11111110 Ajoutons 00000100 11111110 cela donne bien 00000010 (la dernire retenue tombe dans le vide)

La table de multiplication en binaire est trs simple : * 0x0=0 * 0x1=0 * 1x0=0 * 1x1=1 La multiplication se fait en formant un produit partiel pour chaque digit du multiplicateur (seuls les bits non nuls donneront un rsultat non nul). Lorsque le bit du multiplicateur est nul, le produit partiel est nul, lorsqu'il vaut un, le produit partiel est constitu du multiplicande dcal du nombre de positions gal au poids du bit du multiplicateur. Par exemple : 1 1 0 1 multiplicande x 0 0 1 0 multiplicateur -----0000 1101

- 289 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

0000 -----11010 On constate que pour multiplier un nombre par 2, il faut le dcaler d'un bit gauche. 10 binaire multipli par 2 est gal 100 (2 x 2=4 en dcimal) Nombres ngatifs On peut utiliser des nombres non signs (contenant une valeur absolue), dans un octet il peut y avoir 256 valeurs (0 255) On peut utiliser des nombres signs (positif ou ngatif), on 'code' les nombres ngatifs en complment 2: Le complment 1 c'est le fait d'inverser tous les bits du nombre sur toute sa longueur. 010 donne le complment 1 suivant: 11111101 sur un octet (si on travaille sur des octets, on inverse les huit bits) Le complment 2, c'est le complment 1 +1: 11111101+1=11111110 On se rend compte que le premier bit gauche est 1 pour les nombres ngatifs. Dans ce cas on ne peut plus coder que 128 valeurs (sur 7 bits) pour un octet sign. Table de vrit: Une table de vrit est un tableau permettant de dcrire toutes les possibilits de sorties en fonction des entres. On place donc les variables d'entres dans les colonnes de gauche en les faisant varier. La colonne (ou les colonnes si la fonction a plusieurs sorties) de droite dcrit le rsultat. Exemple de table de vrits de la multiplication.

L'expression logique correspondante est S= A X B On retrouve bien par exemple: si les 2 entres sont 1 et 1 la sortie est 1: en d'autres termes 1 X 1 =1

- 290 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple des tables de vrits des fonctions logiques:

Pour la fonction And par exemple, l'expression logique correspondante est S= A AND B si les 2 entres sont 1 et 1 la sortie est 1: en d'autres termes 1 And 1 =1

Comment crire une fonction logique partir d'une table de vrit: Il est possible partir de la table de vrit d'une fonction d'crire l'expression algbrique de celle-ci. Exemple 1:Soit la table de vrit suivante:

- 291 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

La sortie vaut 1 lorsque A vaut 1 et B vaut 0, l'expression logique de cette fonction est donc: S=A AND NOT B Exemple 2: Soit la table de vrit suivante:

La sortie vaut 1 lorsque A vaut 1 et B vaut 0 ou lorsque A et B sont 0, l'expression logique de cette fonction est donc: S=(A And Not B) Or (Not A And Not B) En conclusion: On crit donc les expressions pour chaque sortie 1 (avec des And), on les combine avec des Or

Fonction logique: La loi AND, dite conjonction Elle est dfinie de la manire suivante : a And b est gal 1 si et seulement si a est gal 1 et b est gal 1. On peut construire la table.

- 292 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

l'un et l'autre La loi OR, dite disjonction ou disjonction inclusive Elle est dfinie de la manire suivante : a Or b est gal 1 si et seulement si a est gal 1 ou b est gal 1. (notons que si a est gal 1 et que b est gal 1 aussi, alors a OU b est gal 1.) On peut construire la table:

l'un ou l'autre ou les deux Le contraire, dite ngation Le contraire de "a" gal 1 si et seulement si a est gal 0. Le contraire de a est not Not a

- 293 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

La loi XOR, dite disjonction exclusive Elle est dfinie de la manire suivante : a Xor b est gal 1 si et seulement si a est gal 1 ou b est gal 1 mais pas les deux. (notons que si a est gal 1 et que b est gal 1 aussi, alors a Xor b est gal 0.) On peut construire la table:

l'un ou l'autre mais pas les deux . a Xor b quivalent (a Or b) And Not( a And b) a Xor b Xor b = a : si on applique sur a 2 fois Xor b, on retrouve a. C'est une proprit trs utilise.

L'oprateur quivalence L'quivalence (note =) est vraie si les deux entres ont la mme valeur et faux sinon. Elle se compose comme suit : a=b est gal Not( a Or b) Or ( a And b) On peut aussi dire que : a=b est gal Not (a Xor b)

Notons la notation utilise dans les traits d'algbre de Boole: + (addition) quivalent Or . (produit) quivalent And - au dessus (ngation) quivalent Not

- 294 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Ordre des valuations: Les oprations seront soumises aux mme rgles que les oprations de tous les jours , la fonction Not est prioritaire par rapport And qui est prioritaire par rapport la fonction Or, enfin on trouve Xor ; on peut, pour s'aider, placer des parenthses dans les oprations pour forcer l'ordre des oprations. Exemple :
Dim a As Boolean = 0 Dim b As Boolean = 1 Dim c As Boolean 1 On cherche a And b Or c a And b = 0 (0 And 1 = 0) 0 Or c = 1 (O Or 1 = 1)

Le rsultat est donc:


a And b Or c = 1

Les parenthses modifient l'ordre des oprations: elles sont prioritaires sur tous:
a And (b Or c) = 0

En VB, compte tenu que les oprateurs logiques et de bits ont une priorit infrieure celle des oprateurs arithmtiques et relationnels, toutes les oprations au niveau du bit doivent tre mises entre parenthses afin de garantir une excution prcise. Sur un groupe de bit les oprations s'effectuent bit bit: Exemples: 15 dcimal 00001111 4 dcimal 00000100 15 And 4 = 00000100 --->4 dcimal 4 dcimal 00000100 2 dcimal 00000010 4 Or 2 = 00000110 --->6 dcimal

Les lois de composition: Ce sont des rgles logiques qui permettent de simplifier l'criture des expressions algbriques.

- 295 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Associativit: * (A And B)And C est quivalent A And (B And C) et A And B And C * (A Or B) Or C est quivalent A Or (B Or C) et A Or B Or C Absoption: * A And (A Or B) est quivalent A * A Or A And B est quivalent A Commutativit: * A And B est quivalent B And A L'ordre est sans importance * A Or B est quivalent B Or A Distributivit: * A Or(B And C) est quivalent (A Or B) And (A Or C) * A And (B Or C) est quivalent A And B Or A And C Mais aussi: * A Or A est quivalent A * A And A est quivalent A Identit: * 1 And A est quivalent A * 0 Or A est quivalent A Inversion: * A And Not A est quivalent 0 'A ne peut pas tre vrai et faux * A Or Not A est quivalent 1 Nullit: * 0 And A est quivalent 0 * 1 Or A est quivalent 1 Thorme de De Morgan Not (a Or b) est quivalent Not a And Not b Dans les deux cas, l'expression ne sera gale 1 que si a et b sont = 0.
- 296 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Not( a And b)quivalent Not a Or Not b Dans les deux cas, l'expression ne sera =1 que si a ou b sont =0. Les expressions complexes peuvent donc tre simplifies en utilisant des transformations:

Il existe aussi plusieurs autres oprateurs qui n'ont pas d'quivalent en Visual Basic Net: Ils existaient en VB6!! Implication L'implication (note IMP) qui n'existe pas en VB.Net s'crit de la manire suivante : a IMP b peut s'crire en VB: Not(a) Or b Cette opration n'est pas commutative a est une condition suffisante pour b, qui, elle, est une condition ncessaire pour a.

Inhibition L'inhibition (note INH) n'existe pas en VB.Net, elle se compose comme suit : a INH b peut s'crire en VB: a And Not(b) Cette opration n'est pas commutative.

Dplacement de bit: Les oprateurs binaires << et >> effectuent des oprations de dplacement de bits.

- 297 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

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. A quoi cela sert? Exemple dcaler gauche un Byte revient faire une multiplication par 2. 3 en dcimal= 11 Je dcale gauche, j'obtient 110 , c'est 3*2=6 en dcimal.

Revenons sur la base hexadcimale: En hexadcimal: On a 16 caractres: 0, 1, 2, 3 ,4 ...8, 9, A, B, C, D, E, F. Quand on compte et qu'on arrive F (15 dcimal), on passe 10 (16 dcimal) puis 11... Voyons la correspondant dcimale, hexadcimale, binaire:

Pour un nombre hexadcimal plusieurs chiffres le poids de chaque chiffre est:

1C en base 16 c'est donc 10+C en hexadcimal = en dcimal c'est 161 + 12x 160 = 16 + 12 = 28 Le nombre 28 (en base 10) vaut en base 16 : 1*161 + 12*160 = 1*161 + C*160 c'est--dire 1C en base 16. Le nombre FB4 (en base 16) vaut en base 10 : F*162 + B*161 + 4*160 = 3840 + 176 + 4 = 4020 A quoi sert la base hexadcimale? C'est une reprsentation plus image de la reprsentation binaire: Pour convertir un octet en hexadcimale, on le partage en 2 groupes de 4 bits, qui correspondent chacun un chiffre hexadcimal.

- 298 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

00101010 c'est un octet en binaire; impossible retenir en binaire (en dcimal on ne voit pas du tout ce qu'il reprsente en bits). Cet octet, on le coupe en 2 , chaque demi-octet reprsente 4 bits dont la valeur est comprise entre 0 (0000 en binaire) et F (1111 en binaire, 15 en dcimal) 00101010 en binaire= 2A en hexadcimal.

Il suffit de se souvenir des nombres de 1 15 en binaire pour se reprsenter rapidement 2A.

Autre exemple:

HFF = 255 dcimal HFFFF=65535 dcimal Notons que pour signifier qu'on a affaire un nombre hexadcimal, on ajoute H devant. L'hexadcimal est donc une manire rapide et mnmotechnique de se reprsenter des nombres binaires. Les viewers et diteurs permettant de voir et modifier les octets contenues dans un fichier affichent les octets en hexadcimal. (voir plus bas)

V-W-3 - Pratique en Visual Basic


En Visual Basic.Net, on a notre disposition Les Boolean qui peuvent prendre les valeurs True ou False.. Les entiers: Byte contient 8 bits (non sign) pouvant prendre les valeurs 0 255: il existe aussi en VB 2005, SByte contenant un octet sign dont les valeurs varient de moins 128 plus 127. Les Short 16 bits, les Integer sont cods sur 32 bits, les Long sur 64 bits. Ces valeurs sont signes (positives ou ngatives), un bit est donc utilis pour le signe. Par contre en VB 2005, UInteger est un entier non sign cod sur 32 bits pouvant donc prendre les valeurs 0 4 294 967 295. Ushort et ULong existent aussi. (U comme Unsigned) Il existe aussi les nombres en virgule flottante ou fixe ( Single, Double, Decimal), ceux l, on ne les utilisera pas pour travailler sur les bits.

Littral Un littral est sens tre en base dcimal . Dim A As Integer = 12 (12 est en base dcimale)
- 299 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On peut forcer un littral a tre un hexadcimal ou un octal: Un nombre hexadcimal est not avec le prfixe &H , exemple : A=&HFF (&O pour octal) Il n'est pas possible de saisir un littral en binaire. Bien comprendre que, en interne, les entiers sont cods en binaire: c'est normal, la mmoire de l'ordinateur et les registres des processeurs sont composs d'octets de 8 bits de Dword de 16 bits et maintenant de 32 et 64 bits contenant des bits positionns 0 ou 1. Dim A As Integer = 12 c'est 12 est en base dcimale, c'est notre manire de l'utiliser. mais c'est 0000000000001100 en mmoire physique, reprsentation binaire. c'est 000C en hexadcimal, mais dans une autre base plus pratique, "plus image". C'est toujours le mme nombre!!

And Or Xor AndAlso, OrElse En VB, en plus de And, Or, Xor, existent AndAlso et OrElse qui testent la premire valeur puis, si ncessaire, la seconde. Si la seconde valeur n'a pas tre value, est ne le sera pas, c'est un gain de temps. Pourquoi Xor n'a pas d'quivalent? Car pour valuer Xor, il faut d'emble utiliser les 2 valeurs. Comment ragit VB avec les boolens, les entiers? * Si A et B sont des expressions boolennes (valeur True ou False uniquement): IF A>=2 And A<=5 Then.. Les expressions boolennes sont values et on a comme rsultat True ou False.

* Si A et B sont des nombres entiers (Integer= 32 bits, Long=64 bits, Short=16 bits, Byte=8 bits par exemple): L'opration est effectue sur chaque bit de l'quivalent binaire, le rsultat binaire est affich en dcimal. A = 7 'en dcimal ( 0111 en binaire) B = 12 'en dcimal( 1100 en binaire) A And B = 4 'en dcimal( 0100 en binaire)

- 300 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

* Si A et B sont des nombres en virgule flottante (Single, Double par exemple), ils sont cods sous la forme de mantisse plus exposant, une opration logique devrait produire un rsultat aberrant. Ils sont convertis en Long avant valuation si Option Strict= Off: Dim a As Single = 7 Dim b As Single = 12 Dim c As Boolean = True MsgBox(a And b) 'affiche '4' car 7 et 12 sont transforms en Long (si Option Strict=Off) si Option Strict=On Leve d'une exception.

Un conseil: utiliser des Boolens quand vous voulez effectuer des oprations logiques, des entiers quand vous travaillez sur les bits.

Conversion Binaire, hexadcimale, dcimal: L'affichage d'un entier se fait en dcimal par dfaut si on utilise la mthode ToString:
Dim a As Integer =&HFF MsgBox (a.ToString) Littral en hexadcimal Affiche '255' dcimal

On peut surcharger la mthode et afficher en hexadcimal:


Dim a As Integer = 255 MsgBox(a.ToString("X")) Affiche 'FF'

On peut afficher en hexadcimal et dcider le nombre de digit affich:


Dim a As Integer = 255 MsgBox(a.ToString("X4")) Affiche '00FF'

En utilisant la classe Convert, on peut mme afficher en base binaire, octale, dcimal, hexadcimal. Convert.ToString(Int64, base) Convertit la valeur d'un entier sign 64 bits en sa reprsentation String quivalente dans une base 'base' spcifie (base 2, 8, 10, 16). Dim d As Long = 3 Dim r As String r= Convert.ToString(d, 2)) 'convertit la valeur Long de "d" en base 2 d= 3 donne r="11" binaire
- 301 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Si on avait eu une String "3" on l'aurait convertie en Long grce CLng(d) Convert.ToInt64(s, base) 'convertit en type int64(long en base 10) la valeur de la String 's' partir d'une base 'base'. Dim d As String = "111" Dim r As Long r= Convert.ToInt64(d, 2)) 'convertit d (string reprsentant un binaire) en Long cela donne r=7 Enfin dans l'espace Visual Basic l'instruction Hex donne la reprsentation hexadcimale d'un nombre , ( Oct existe aussi) str=Hex(456) retourne 1C8 Conversion String en Byte:

Conversion String en Bytes:

Dim str As String= ".." Dim encoding As New System.Text.ASCIIEncoding() Dim Bytes() As Byte()= encoding.GetBytes(str)

Conversion Bytes en String:


Dim Dim Dim str Bytes As Byte() = ... str As String enc As New System.Text.ASCIIEncoding() = enc.GetString(Bytes)

Enregistrement d'un tableau de Bytes: 1 - En mmoire: (dans un mmoryStream)


Imports System.IO ... ' Creation d'un tableau de Byte. Dim dataArray(1000) As Byte ' On le remplit avec des nombres alatoires. Dim randomGenerator As New Random randomGenerator.NextBytes(dataArray)

Ecriture
Dim binWriter As New BinaryWriter(New MemoryStream()) ' Ecrire les donnes dans la mmoire. - 302 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

binWriter.Write(dataArray)

Lecture
' Crer un reader en utilisant le stream du Writer Dim binReader As New BinaryReader(binWriter.BaseStream) ' mettre la position au dbut du stream. binReader.BaseStream.Position = 0 ' Relecture dans verifyArray. Dim verifyArray() As Byte = binReader.ReadBytes(dataArray.Length)

2 - Dans un fichier:
... Dim fs As New FileStream(FILE_NAME, FileMode.CreateNew) Dim w As New BinaryWriter(fs) w.Write(datArray) w.Close() fs.close

Le Framework 2 permet une criture encore plus simple pour lire crire les octets d'un fichier: Lire et mettre dans un tableau les octets d'un fichier? (Framework 2) Dim myBytes() As Byte =File.ReadAllBytes("c:\monText.txt") Il existe aussi WriteAllByte.

Prcision sur 'If a Then' Avec des valeurs numriques si * a=0, a est valu comme False le programme se poursuit aprs Then; * si a est diffrent de 0 (1, -1, 45,...) a est considr comme True et le programme se poursuit aprs Then. Donc
Dim a As Integer =15 If a Then..

C'est une mauvaise mthode!! Il vaut mieux crire:


Dim a As Integer =15 If a <>0 Then.. - 303 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Avec une expression Boolenne par contre, on peut crire:


Dim a As Boolean= True If a = True Then.. 'ou If a Then..

Exemple:
If (x=15)=True 'ou If x=15 Then... Then..

Avec une expression boolenne, et uniquement avec une expression boolenne, il est possible de se passer du = True aprs un If car de toutes faons , l'expression est value.

Masque de bit: Or permet d'crire un bit 1: Soit un entier, on veut forcer un des bits 1 , la solution est de faire un Or avec un entier ayant ce seul bit 1. Exemple : Mettre le deuxime bit de 00000100 (4 en dcimal) 1 Il faut faire un Or avec 00000010. Le poids du deuxime bit est 2, c'est le 'mask bit'. 4 Or 2 = 6 00000100 Or 00000010 = 00000110 En faisant Or 2, on a bien mis le deuxime bit 1. Le masque est toujours une puissance de 2. Or 8 met le quatrime bit 1 And permet de tester un bit A And 1 indique si le bit le moins significatif (le plus droite) est a 1 Exemple: si A = 7 'en dcimal ( 0111 en binaire) A And 1 retourne 1 A And 8 indique si le quatrime bit est a 1 (8 est le poids du quatrime bit). Exemple: si A = 7 'en dcimal ( 0111 en binaire) A And 8 retourne 0 8 c'est le 'mask bit' (00001000) du quatrime bit.
- 304 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

A And 8 peut ensuite tre valu comme une expression boolenne: If A and 8 Then ' Si le quatrime bit de A est 1 alors, And permet aussi de forcer 0 une partie des bits et de ne conserver que la valeur de certains bits: Soit une couleur code sur 24 bits; les 8 bits droite code la composante bleue, Je veux conserver uniquement ces 8 bits de droite (l'octet de droite): myColor And &HFF conserve le premier octet mais met les 2 autres 0: MyColor=0010 0100 1000 0010 0010 0000 And 0000 0000 0000 0000 0000 1111 = 0000 0000 0000 0000 0010 0000 Le masque correspond au bits conserver.

Xor permet de forcer un bit 0 Pour mettre le 4eme bit 0: Il faut faire un Xor avec 00001000. Le poids du deuxime bit est 2, c'est le 'mask bit'. 12 Xor 8 = 4 00001100 Or 00001000 = 00000100

Exemple pratique: Comment stocker plusieurs valeurs dans une variable en utilisant un masque. Souvent, plutt que de coder une information par octet, on peut coder une information par bit et ainsi coder 8 informations par octet. Le paramtre d'une fonction est, par exemple, compos d'un entier ou chaque bit une signification. Exemple fictif : 00000001 le premier bit 1 signifie gras (1 en dcimal) 00000010 le deuxime bit 1 signifie l'italique (2 en dcimal) 00000100 le troisime bit 1 signifie le soulignage. (4 en dcimal) Si je veux envoyer les paramtres gras et soulign, j'enverrais le paramtre 1 Or 4 qui correspond a 00000101. Les bits 1 et 3 sont bien 1.

- 305 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On note bien que chaque paramtre doit tre une puissance de 2. C'est plus clair de crer une numration:
<Flags()> Enum Car Normal=0 Gras= 2 Italique= 4 Souligne= 8 End Enum

Si je veux envoyer les paramtres gras et soulign, j'enverrais le paramtre Car.Gras Or Car.Souligne <Flags()> indique qu'on travaille bien sur des bits. Souvent les valeurs sont proposes par VB, comme par exemple quand on utilise MsgBox; le deuxime paramtre qui indique le style peut comporter plusieurs indications spares par des Or:
reponse= MsgBox(msg, MsgBoxStyle.DefaultButton2 Or MsgBoxStyle.Critical Or MsgBoxStyle.YesNo, Title)

Pour lire un bit en retour d'une fonction, on utilisera And:


Si reponse And Car.Italique =1

c'est que le second bit de reponse est 1. Bien que ce soit une opration sur les bits on crit souvent:
If reponse And Car.Italique Then...

Cryptage simple par Xor La technique la plus simple est d'appliquer un OU exclusif (XOR) entre le texte chiffrer et la cl. Pour obtenir le message crypt on effectue Message Xor Cle (si la cl fait x octets on effectue le Xor entre le premier octet du message et le premier de la cl, puis le deuxime.. quand on arrive x+1 caractre du message, on recommence au premier caractre de la cl). Comme Message Xor Cle Xor Cle =Message, pour dchiffrer le message cod, il suffit de faire de nouveau un Xor avec la cl. La cl est donc la mme pour coder et dcoder, on appelle cela une cl symtrique. Bien sur, si on utilise un texte comme cl et comme message, c'est le code du caractre qui est utilis.

Travail sur les couleurs:

- 306 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Les valeurs RVB (couleurs) sont stockes dans trois octets de 8 bits, conduisant une couleur 24 bits, chaque octet correspondant respectivement au rouge, au vert et au bleu. rrrr rrrr vvvv vvvv bbbb bbbb Comment rcuprer la composante rouge verte ou bleue?
Dim myColor As Integer = 15963245 'Un Integer a 32 bits , les 24 premiers sont utiliss. Dim R, V, B As Byte

Pour le rouge:
R = myColor >> 16

On dcale de 16 bits vers la droite: 0000 0000 0000 0000 rrrr rrrr Pour le vert:
V = (myColor And &HFF00) >> 8

On fait un And &HFF00 ce qui met le premier et le troisime octet 0 0000 0000 vvvv vvvv 0000 0000 On dcale de 8 bits vers la droite: 0000 0000 0000 0000 vvvv vvvv Pour le bleue:
B = (myColor And &HFF)

On fait un And &HFF ce qui met le premier et le second octet 0 0000 0000 0000 0000 bbbb bbbb (En Vb on peut faire plus simple)

Travail sur les graphiques: Un mode souvent utilis pour la ralisation d'interfaces est le mode XOR. Ce mode permet d'effacer facilement un cadre de slection en le redessinant une seconde fois la mme position. Si l'on a un cran noir et blanc pour lequel 1 = noir et 0 = blanc et que l'on affiche une forme en noir, chaque pixel appartenant la forme est invers l'cran puisque 1 xor p = not p. Donc si l'on dessine la forme deux fois, chaque pixel est invers deux fois et revient donc dans son tat initial. Par contre, sur un cran couleur, les rsultats sont imprvisibles. Si le noir est reprsent par la valeur de pixel 1111 et que l'on dessine en xor sur un pixel de valeur 1001, le rsultat est un pixel de valeur 1111 xor 1001 = 0110. La couleur rsultante est alors imprvisible : on obtient un effet "technicolor". En VB on a d'autres fonctions sur les graphiques.
- 307 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-W-4 - Viewer hexadcimal


Comment voir le contenu d'un fichier en hexadcimal? C'est trs simple et VB 2005: On utilise un composant ByteViewer Charger la rfrence System.design.Dll Puis entrer le code dans Form_Load:
Private Sub Form1_Load() Dim viewer As New System.ComponentModel.Design.ByteViewer() Dim viewer As New System.ComponentModel.Design.ByteViewer Me.Controls.Add(viewer) viewer.Dock = DockStyle.Fill Dim ofd As New OpenFileDialog 'Choix d'un fichier If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then viewer.SetFile(ofd.FileName) End Sub

Si vous avez dj un tableau de bytes, utilisez sa mthode SetBytes . Vous pouvez mme choisir son mode d'affichage (Ansi, Unicode, Hexadump ou automatique) avec sa mthode SetDisplayMode. Second exemple: Ouvrir un fichier image .jpg le charger dans un tableau de Bytes et l'afficher:
Dim viewer As New System.ComponentModel.Design.ByteViewer Me.Controls.Add(viewer) viewer.Dock = DockStyle.Fill Dim ofd As New OpenFileDialog ofd.ShowDialog()

- 308 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim img As Image = Image.FromFile(ofd.FileName) Dim mstImage As IO.MemoryStream = New IO.MemoryStream img.Save(mstImage, System.Drawing.Imaging.ImageFormat.Jpeg) Dim bytImage As Byte() = mstImage.GetBuffer viewer.SetBytes(bytImage)

Fait partir d'un article de c2i en C#

V-W-5 - diteur hexadcimal


On peut crire en VB.Net un diteur hexadcimal de fichier (lecture du fichier, visualisation en hexa et ascii, modification d'un octet: Voir le lien suivant: Editeur hexadcimal ULTRA EDIT de fichier par VBsorcier Pour que le source marche , ne pas oublier de gnrer puis mettre les fichiers vb dans MyProjet et les fichiers ressources dans le rpertoire de ressources.

V-X - Les gnriques


Super complexe? non!!

V-X-1 - Dfinition
A partir de VB 2005 on peut utiliser les gnriques. Un type gnrique (Generic) permet de crer une Classe ou une procdure, ayant des Data Types non dfinis au dpart. En d'autres termes, les paramtres et variables n'ont pas de type: ce ne sont pas des Strings, des Integers.. Ce sont des gnriques. Quand on utilise la Classe ou la procdure, on indique le type. Les gnriques nous permettent de dfinir un comportement ou un algorithme commun sur les types ou un sous ensemble de types .Net. Ils sont un moyen de mutualiser un comportement. Par exemple, je vais crire une routine de calcul avec des gnriques, elle sera utilisable avec des Integers, des Singles..

Exemple de Fonction utilisant un 'generic'. Permettant d'en comprendre l'intrt: Crons une sub nomme Swap ( elle intervertit 2 variables) fonctionnant pour tous les types de donnes:
Private Sub Swap(Of ItemType) (ByRef v1 As ItemType, ByRef v2 As ItemType)

- 309 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim temp As ItemType temp = v1 v1 = v2 v2 = temp End Sub

Notons que en plus des 2 paramtres V1 et V2 'swapper' ,"Of ItemType" indique le type de donne qui doit tre utilis. Si on a 2 entiers swapper, il faut appeler la fonction Swap comme cela:
Swap(Of Integer)(v1, v2)

Si ce sont des Strings:


Swap(Of String)(v1, v2)

Le JIT compile la fonction Swap comme si elle avait t crite pour des Strings. Sans les gnriques j'aurais fait plusieurs routines de code pour chaque Type. Or en utilisant les gnriques cette redondance peut tre vite.

Exemple de Classe utilisant un 'generic'. A revoir quand vous connatrez les classes. De la mme manire, on peut crer une Classe entirement gnrique:
Public Class SomeClass(Of ItemType) Private internalVar as ItemType ' variable generic

Public Function SomeMethod(ByVal value As ItemType) As ItemType 'Fonction acceptant un generic comme paramtre ... End Function End Class

Exemple de Collection utilisant un 'generic'. On peut crer une collection gnrique (System.Collections.Generic) et lui imposer un type. Exemple: crons une collection de String : List(Of String).
Dim l As New System.Collections.Generic.List(Of String) l.Add("toto") 'On ajoute une string

Dim S As String = l.Item(0) ' l'item est bien typ : mme avec 'Option Strict=on' 'pas besoin de CType. - 310 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Habituellement les collections contiennent des objets; ici c'est une collection de String. Je ne peux y mettre que des String (sinon cela provoque une erreur). Comme par dfinition c'est des string, il n'y a pas de conversion String=>Objet et Objet=>String (pas de boxing/ unboxing) On peut aussi crer des Stack(Of..) Queue(Of..), Dictionnary(Of..) SortedList(Of..)..

V-X-2 - Intrts des gnriques ?


Pourquoi ne pas utiliser des types 'Object' la place des gnriques? Les gnriques sont fortement typs. Si on cre une collection gnrique de Long, on ne peut utiliser que des Long: c'est mieux, cela vite les erreurs, les conversions de type. Ils sont plus rapides que l'usage des objets. S'il y a erreur, elle se produit probablement la compilation et pas l'excution. Cela permet d'utiliser l'intellisense.

V-X-3 - Usage des gnriques


On peut utiliser des mthodes gnriques pour travailler sur les tableaux. Exemple recherche dans un tableau de short nomm monTab l'lment 2
index= Array.indexOf (Of Short)(monTab, 2)

est hyper plus rapide que index= Array.indexOf (monTab, 2) car la premire version avec gnric est directement optimise pour les Short. Il est de mme pour Binarysearch et Sort. Cela est valable pour les types 'valeur' (peu d'intrts pour les strings par exemple).

Collections gnriques: On peut crer une collection gnrique (System.Collections.Generic) et lui imposer un type. Exemple: crons une collection de String (List(Of String)): Elle est type car elle ne peut contenir que des 'String'.
Dim l As New List(Of String) Il s'agit d'une List avec Index. l.Add("toto") 'On ajoute une string

- 311 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim S As String = l.Item(0) ' l'item est bien typ : mme avec 'Option Strict=on' 'pas besoin de CType.

Il y a aussi de nouveaux types de collections gnriques -Les Dictionnary(Of..) avec Cl et valeur -Les SortedDictionnary(Of..) avec Cl et valeur tri. -Les LinkedList(Of..) Liste Chane, chaque lment comportant une proprit Value, Next et Previous. -Les SortedList(Of..).. -Les Stack(Of..) -Les Queue(Of..)

On peut aussi crer des collections 'composes'.


Dim genericColl As New Dictionary(Of String, String) genericColl.Add("PremiereCl", item1)

V-Y - Link
'Language-Integrated Query' (LINQ), veut dire "langage de requte intgr". On l'utilise dans VB partir de VB2008 (Framework 3.5).

V-Y-1 - Dfinition, mise en place


C'est un langage de requtes (permettant d'interroger une source de donnes) directement dans le code Visual Basic et l'aide de mots cls familiers (issues du SQL, le langage d'interrogation des bases de donnes). Cette source de donnes peut tre une Base de donnes (Link To SQL et Link To DataSet )un fichier XML (Link To XML) mais aussi une collection, un tableau, une chane de caractres. On parle dans ce dernier cas de 'Link To Objects'. Si un objet prend en charge l'interface IEnumerable ou IEnumerable (Of), le fournisseur LINQ to Objects vous permet de l'interroger. LINQ (dixit Microsoft) offrent trois principaux avantages par rapport aux boucles for Each traditionnelles : Les requtes: -Elles sont plus concises et lisibles, surtout lors du filtrage de plusieurs conditions. -Elles fournissent des fonctions puissantes de filtrage, de classement et de regroupement avec un minimum de code d'application. -Elles peuvent tre appliques d'autres sources de donnes avec peu ou pas de changement.
- 312 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Pour que LINK soit pris en compte il faut: Utiliser VB 2008 et le framework 3.5. Dans les proprits, onglet compile, il faut que Option Infer=On Il faut ajouter System.Data.Linq:

Si vous crez un nouveau projet dans VB 2008, toutes les conditions sont effectives par dfaut, si vous modifiez un ancien projet, il faut rajouter certaines rfrences: Dans l'Explorateur de solutions (Projet, Proprits..), cliquez sur Rfrences, puis cliquez sur Ajouter une rfrence. Cliquez sur .NET, sur l'assembly System.Data.Linq, puis sur OK, cela ajoute la rfrence.

Il faut ajouter l'espace de nom: Dans l'explorateur de solution cocher Systel.Data.Link comme ci-dessus ou ajouter les directives suivantes en haut du Module1 :Imports System.Data.Linq

V-Y-2 - Principe d'une requte Link


A titre d'exemple simpliste, on a des donnes dans MyData et chaque donne a un champ 'Nom'. Comment chercher les enregistrements ayant comme nom "toto"?

- 313 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim Resultat = From Element In MyData _ Where Element.Nom = "Toto" _ Select Element

On cre une variable de requte (ici ' Dim Resultat') qui sera charge de contenir les rsultats, puis l'expression de requte compose de: From : dans quoi chercher? dans quel lment. In : dans quoi chercher? l'lment se trouve o? dans MyData. Where : prcise les conditions appliquer. Select: Prcise les lments qui vont apparatre dans 'Resultat' Remarquons que Dim From In Where Select doivent tre sur une seule unique et mme ligne; pour la lisibilit, on crit sur plusieurs lignes en ajoutant des continuateurs de lignes " _". Remarquons aussi qu'initialement on connat MyData et on sait que chaque lment de MyData a un champ 'Nom', c'est tout!! On utilise dans la requte les nouvelles variables 'Resultat' et 'Element' sans avoir dclarer leurs types (on aurait pu le faire). 'Element' est une variable de porte dduite comme lment de MyData. Ce fonctionnement particulier de LINK est possible grce l'infrence de type et aux types anonymes (voir plus bas).

'Et pour afficher les noms dans une ListBox:


For Each P In Resultat ListBox1.Items.Add(P.NOM ) Next

Order By permet de trier les rsultats.


Dim Resultat = From Element In MyData _ Order By Element.Price Descending, Element.Nom _ Select Element.Nom, Element.Price

Ici on trie par prix dcroissant, puis prix gal sur le nom croissant. Remarquons qu'on slectionne seulement 2 'colonnes'.

V-Y-3 - Link et les tableaux d'Integers


Un tableau peut tre interrog par Link.

- 314 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exemple: rechercher les nombres pairs dans un tableau d'Integer :


' La Data source: c'est un tableau d'Integer Dim numbers() As Integer = {0, 1, 2, 3, 4, 5, 6}

' Cration de la requte. 'Pour chaque lment num dans la source 'Si l'lment num est tel que num Mod 2=0 (condition pour qu'il soit pair) 'Selectionner num et le mettre dans rponses Dim rponses = From num In numbers _ Where num Mod 2 = 0 Select num _

' Excution de la requte. ' On utilise les rponses For Each number In rponses Console.Write(number & " ") Next

Cela affiche sur la console(menu Affichage puis Sortie): 0 2 4 6

On peut vouloir compter uniquement les nombres pairs:


Dim nombredepair = (From num In numbers _ Where num Mod 2 = 0 _ Select num).Count() Console.Write(nombrepair) 'pour afficher 4

On remarque que dans le premier exemple (Select num) l'excution de la requte est effectue au cours de la boucle For Each (excution diffre par rapport la cration) alors que dans le second exemple (count) , l'excution est immdiate.

V-Y-4 - Link et les chanes de caractres


Soit une chane de caractres MyString, rechercher les caractres qui sont des nombres.
' Un string Dim MyString As String = "ABCjkjhkhs666KMOOP" ' Select les caractres qui sont des nombres

- 315 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim Query = From ch In MyString _ Where ch.IsDigit(ch) _ Select ch ' Excution de la requte For Each c As Char In Query Console.Write(c & " ") Next ' Combien y a t-il de nombres? Dim count As Integer = Query.Count() Console.WriteLine("Count = " & count)

On remarque qu'il n'est pas ncessaire de rexecuter la requte.

Autre syntaxe: Slectionner tous les caractres avant '6'


Dim Query2 = MyString.TakeWhile(Function(c) c <> "6") ' Execute the second query For Each ch In Query2 Console.Write(ch) Next

Ici on a utilis TakeWhile qui slectionne les caractres jusqu' 6. (les slectionne une seule fois). On a utilis une expression lambda (voir le chapitre sur les expressions lambdas).

Dim Query2 = MyString.Except("6")

Ici on a utilis Except qui slectionne les caractres sauf 6.

V-Y-5 - Link et les mots d'une chane de caractres


Rechercher combien de fois une String contient le mot 'Basic':
Dim text As String = "Ceci est un cours Visual Basic" & _ " pour les dbutants et les autres" Dim searchTerm As String = "Basic" ' Conversion de la String en Tableau de mots:. Dim dataSource As String() = text.Split(New Char() {" ", ",", ".", ";", ":"}, _ StringSplitOptions.RemoveEmptyEntries) ' Cration et excution de la requte ' Utiliser ToLower pour trouver "Basic " et "Basic" Dim Query = From word In dataSource _ Where word.ToLowerInvariant() = searchTerm.ToLowerInvariant() _ Select word ' Compter les 'Basic'. Dim count As Integer = Query.Count() Console.WriteLine(count )

- 316 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-Y-6 - Link pour rechercher la diffrence entre deux listes de noms


Rechercher dans la String nom1, les noms qui ne sont pas aussi dans nom2.
' Soit 2 tableaux de Sting Dim nom1 As String() = {"Philippe", "Paul"} Dim nom2 As String() = {"Paul", "Jean"}

' Crer la requte. Dim difference = nom1.Except(nom2)

' Executer For Each name As String In difference Console.WriteLine(name) Next

Affiche 'Philippe'

V-Y-7 - Inference de Type et type anonyme


Dbutant, tu peux sauter!! On a vu que Link fonctionnait d'une manire un peu particulire. Pour mieux comprendre cela, il faut savoir qu' partir de VB 2008 on peut utiliser l'infrence de type et les types anonymes.

Infrence de Type Il faut pour cela que Option Infer =On (Off par dfaut) Passer par le menu 'Projet' puis 'Proprits de..', onglet 'Compiler' En plus des options Explicit, Compare, Strict, on peut modifier Option Infer. L'infrence est la capacit de dduire le type d'une variable par analyse des types fournis en entres ainsi que des oprations effectues sur ceux-ci. C'est donc le compilateur qui dduit le type de la variable.
' Type explicite pour une String Dim Myname1 As String = "Rouge" ' Exploitation de l'infrence de type Dim Myname2 = "Vert"

Le passage du curseur de la souris sur Myname2 vous permet de dcouvrir que celui-ci est bien un type "String". On avait dit qu'il fallait travailler avec Option Implicit = True et l on ne dclare mme pas le type!!! En fait l'infrence existe afin de supporter par exemple les types anonymes ou encore LINQ. Il existe des cas pour lesquels l'infrence de type ne se produit pas. Pour les instructions Dim locales, l'infrence de type survient uniquement lorsqu'il y a une assignation sur la ligne de dclaration. Par consquent, pour les
- 317 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

assignations effectues hors de la dclaration de la variable, le compilateur supposera que le type est Object. Object est galement toujours dduit comme type des membres de niveau classe, si bien que l'infrence de type ne s'applique pas aux fonctions, sous-routines, proprits, champs de classe/structure, etc Lorsque Option Explicit est Off , une variable locale peut tre utilise dans le code sans dclaration explicite. La variable est suppose tre dans ce cas de type Object et tous les appels sont lis tardivement. L'infrence de type ne survient pas sur les variables dfinies implicitement.

Type anonyme Habituellement, on peut dclarer Mycustomer, une instance de la classe Customer et renseigner une proprit .Name.
Dim MyCustomer = New Customer With {.Name = "Philippe"}

Grce au type anonyme, on peut crire:


Dim AnomyneCustomer = New With {.Name = "Philippe"}

Remarque= avant New il doit y avoir '=' et pas As. Cela crer une nouvelle classe anonyme (sans nom) possdant une proprit .Name. Les types anonymes sont surtout utiliss avec Link: Exemple:
Dim namePriceQuery = From prod In products _ Select prod.Name, prod.Price

Si products est une liste d'objets avec plein de proprits, namePriceQuery est une collection de type anonyme qui possde 2 proprits: .Name et .Price .

V-Z - Les 'rgions', la compilation conditionnelle, les 'Attributs'


Dans le code on peut ajouter des choses qui ne sont pas du code VB, mais plutt des directives pour l'affichage, le compilateur ou le Runtime:

V-Z-1 - Les Rgions


Pour une meilleure visibilit, il est possible de crer des 'rgions' de code. Une rgion peut tre droule ou contracte. Une rgion peut tre droule: le code entre #Region et #End Region est visible (pour modifier le code par exemple): #Region "Routine de Tri"
Sub QuickSort(ByVal debut As Integer, ByVal fin As Integer)

- 318 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Dim pivot, gauche, droite, temp As Integer Do ... Loop Until gauche = droite End Sub #End Region

Si on clique sur le petit carr (avant #region), cela contracte la rgion et masque le code, on voit seulement un petit carr avec un plus et le nom de la rgion. + Routine de Tri Cela permet de masquer une procdure en totalit. Attention, cela ne permet pas de masquer seulement une partie du code mais la procdure entire.

Exemple: En VB 2003, dans une Classe de formulaire, il existe une rgion nomme 'Code gnr par le Concepteur Windows Form' qui contient le code crant les contrles du formulaire. Ce code est habituellement cach dans une 'rgion' ferme.

V-Z-2 - La Compilation conditionnelle


La compilation conditionnelle contrle si les squences de lignes sont traduites en code rel. Certaines lignes peuvent tre ignores pendant le processus de compilation. Les instructions de compilation conditionnelle sont prcdes de # On utilise:

#if .. then #else #end if

Exemple
#const Demo = True Class MaClasse #if Demo then Sub F() #else Sub G() #end if End Class 'crer une constante conditionnelle

La compilation produit le rsultat suivant :


- 319 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Class C Sub F() End Class

Il suffit de changer la valeur de la constante pour compiler des parties diffrentes de code. Noter que #const Demo cre une constante prive accessible uniquement dans le fichier. En VB 2005 on peut dfinir une constante au niveau projet avec /define
/define const Demo=True

V-Z-3 - Les Attributs


Les attributs peuvent tre utiliss pour dcrire votre code au runtime (fournir des informations supplmentaires) ou modifier le comportement de l'application au moment de l'excution. Le Framework fournis de nombreux attributs , mais vous pouvez galement crer vos propres attributs personnaliss. Les attributs sont entre < et > en VisualBasic. Les attributs peuvent modifier le comportement des proprits, mthodes, classes, assemblys. Ils couvrent diffrents aspects comme la compilation, la scurit, les services Web... Exemple: <Obsolete > Avec une procdure. Dclarons une fonction Add comme obsolte, en plus, le compilateur affiche le message: 'Sera enlev la prochaine version'. On utilise donc <Obsolete > ou le nom complet de l'attribut: <System.ObsoleteAttribut>
<Obsolete("Sera enlev la prochaine version ")> Function Add(a as Integer, b as Integer) as Integer Add = a + b - c End Function

Exemple:<Browsable> avec un composant. Dans un composant, je cre une Propertie nomme 'Valide', je ne veux pas qu'elle apparaisse dans la fentre 'proprits' du composant; je veux qu'elle soit accessible uniquement par code:

Imports System.ComponentModel

'Classe charges du comportement des composants.

<Browsable(False)> Property Valide() As Integer

Exemple:<ToolBoxBitMap> avec un composant. Quand on cre un composant, on dsire parfois avoir une icne propre ce composant dans la boite outils:

- 320 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre <ToolBoxBitMap("C:MonIcone")> Public Class MaClasse

Exemple:<Serializable> avec une Classe. Quand on cre une classe, on a parfois besoin qu'elle soit srializable:
<Serializable()> Public Class TestSimpleObject Public Public Public Public member1 member2 member3 member4 As As As As Integer String String Double

'Un member qui ne doit pas tre srialis. <NonSerialized()> Public member5 As String

Il est possible de faire un tas de choses avec les attributs, mais cela devient vite trs complexe.

V-AA - Traiter les erreurs

Il y a plusieurs types d'erreurs. - Les erreurs de syntaxe. - Les erreurs d'excution. - Les erreurs de logique.

Voir la vido : au format 'Flash'> ou au format 'Avi' en Visual Basic 2005.

V-AA-1 - Les erreurs de syntaxe


Elles surviennent en mode conception quand on tape le code: Exemples:
A+1=B f.ShowDialogue 'Erreur dans l'affectation 'Faute de frappe, il fallait taper ShowDialog

2 For... et un seul Next Dim i As Integer: Label.Text= i .... 'Affectation d'un Integer une proprit text qui attend une String.

- 321 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dans ces cas VB souligne en ondul bleu le code. Il faut mettre le curseur sur le mot soulign, l'explication de l'erreur apparat. Exemple: Proprit Text d'un label mal orthographie:

Il faut les corriger immdiatement en tapant le bon code (ici 'Text').

En bas il y a aussi une fentre; "liste des erreurs":

Elle affiche tous les problmes; pour atteindre le code correspondant une de ces erreurs, double-cliquez sur une des lignes de la liste.

En VB 2005 un bouton avec point d'exclamation permet d'ouvrir une fentre proposant le moyen de corriger l'erreur:

Ici on met dans la proprit text d'un label un Integer, alors qu'il faut mettre une String (Option Strict est probablement gal On); Vb montre la correction : CStr(i) converti i en String.

Si vous excuter le programme dans l'IDE alors qu' il y a un problme, VB demande si on veut excuter la dernire gnration russie:

Si vous tapez 'oui' VB excute la dernire version qui a t gnre correctement, mais PAS de code source actuel qui contient des erreurs!!

- 322 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-AA-2 - Les erreurs d'excution


Elles surviennent en mode Run dans l'IDE ou lors de l'utilisation de l'excutable: Une instruction ne peut pas tre effectue. Quand on utilise l'excutable: Le logiciel s'arrte brutalement, c'est trs gnant!!

Pour l'utilisateur c'est un 'BUG' Il y a 'leve d'une exception', voila ce que cela donne dans l'IDE: Exemple: je tente d'accder un lment d'un tableau qui n'existe pas (l'indice est trop grand cela entrane une exception 'OutOfRange'). En cours de test, dans l'IDE, s'il y a une exception, le logiciel s'arrte, l'instruction qui a plant apparat en jaune et VB donne une explication.

L'erreur est:
Soit une erreur de conception. Exemple: Ouvrir un fichier qui n'existe pas (On aurait du vrifier qu'il existe avant de l'ouvrir!). Division par zro. Utiliser un index d'lment de tableau suprieur au nombre d'lment: Envoyer un mauvais paramtre une fonction. Soit une erreur de l'utilisateur. Exemple: On lui demande de taper un chiffre, il tape une lettre ou rien puis valide. Il faut toujours vrifier ce que fait l'utilisateur et prvoir toutes les possibilits. Exemple: si je demande l'utilisateur de tapez un nombre entre 1 et 10, il faut: Vrifier qu'il a tap quelque chose.

- 323 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Que c'est bien un chiffre (pas des lettres). Que le chiffre est bien entre 1 et 10. Sinon il faudra reposer la question.

A-Capter les erreurs avec Try Catch Finally: Plutt que de laisser le logiciel 'planter', je vais anticiper et essayer de capter l'erreur au niveau des lignes de code qui peuvent la provoquer. Avant l'instruction suppose provoquer une erreur indiquez: Essayer l'instruction (Try), si une erreur se produit Intercepter l'erreur (Catch) puis poursuivre (aprs Finally).
Try 'Instruction susceptible de provoquer une erreur. Catch 'Traitement de l'erreur Finally 'Code toujours excut End Try

Il faut pour que cela fonctionne avoir tap au pralable Imports System.IO Il est possible d'utiliser Catch pour rcuprer l'objet 'Exception' qui est gnr par l'erreur.
Catch ex As Exception

Cet objet Exception des proprits: Message qui contient le descriptif de l'erreur. Source qui contient l'objet qui a provoqu l'erreur.... ex.Message contient donc le message de l'erreur. Cet objet gnraliste Exception( de l'espace IO) a aussi des classes drives: -StackOverFlowException -FileNotFoundException -EndOfStreamException -FileLoadException -PathTooLongException.

- 324 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Enfin une exception peut provenir de l'espace System: ArgumentExceptions; ArithmeticException: -DivideByZeroException.....

Il est possible d'crire plusieurs instructions Catch avec pour chacune le type de l'erreur intercepter. (Faisant partie de la classe Exceptions) Exemple: On ouvre un fichier par StreamReader , comment intercepter les exceptions suivantes? Rpertoire non valide Fichier non valide Autre.
Try sr= New StreamerReader (NomFichier) Catch ex As DirectoryNotFoundException MsgBox("Rpertoire invalide") Catch ex As FileNotFoundException MsgBox("Fichier invalide") Catch ex As Exception MsgBox(ex.Message) End Try

Noter que le dernier Catch intercepte toutes les autres exceptions. On peut encore affiner la gestion par le mot cl When qui permet une condition.
Catch ex As FileNotFoundException When ex.Message.IndexOf ("Mon Fichier.txt") >0 MsgBox ("Impossible d'ouvrir Mon Fichier.txt")

Si le texte "Mon Fichier.txt" est dans le message, affichez que c'est lui qui ne peut pas tre ouvert.

Exit Try permet de sortir prmaturment.

B-Capter les erreurs avec On error : On peut aussi utiliser la mthode Visual Basic:

- 325 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On Error Goto permet en cas d'erreur de sauter une tiquette (un emplacement dans le code) emplacement ou une portion de code traite l'erreur. On peut lire le numro de l'erreur qui s'est produite, ce numro est dans Err.Number. Err.Description contient le texte dcrivant l'erreur. Err.Source donne le nom de l'objet ou de l'application qui a cre l'erreur. Quand l'erreur est corrige, on peut revenir de nouveau la ligne qui a provoqu l'erreur grce Resume ou poursuivre la ligne suivante grce Resume Next Exemple:
On Error GoTo RoutinedErreur 'Si une erreur se produit se rendre 'RoutineErreur' Dim x As Integer = 33 Dim y As Integer = 0 Dim z As Integer z = x / y ' Cre une division par 0 !! RoutinedErreur: ' La Routine d'erreur est ici (remarquer ':' indiquant une etiquette). Select Case Err.Number ' On regarde le numro de l'erreur. Case 6 ' Cas : Division par zro interdite y = 1 ' corrige l'erreur. Case Else ' autres erreurs.... End Select Resume ' Retour la ligne qui a provoqu l'erreur.

Pour arrter la gestion des erreurs il faut utiliser:


On Error Goto 0

Parfois on utilise une gestion hyper simplifie des erreurs: Si une instruction 'plante', la sauter et passer l'instruction suivante, pour cela on utilise: On Error Resume Next Exemple: On veut effacer un fichier
On Error Resume Next Kill (MonFichier) On Error goto 0

Ainsi , si le fichier n'existe pas , cela ne plante pas (on aurait pu aussi vrifier qu'il existe avant de l'effacer!!). On Error Gosub n'existe plus.

On Error est moins performant que Try Catch et surtout il ralentit le code+++: si ncessaire utiliser Try Catch.

- 326 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

En rsum: pour viter les erreurs d'excution il est donc possible: - D'crire du code grant le problme, contrlant les actions de l'utilisateur.. Exemple: on demande l'utilisateur de saisir un nombre dans TextBox1 puis de cliquez sur Button3 Si l'utilisateur a tap une lettre au lieu d'un chiffre, le prvenir.
Private Sub Button3_Click If String.IsNullOrEmpty(TextBox1.Text) Then 'on teste si l'utilisateur a tap quelque chose MsgBox("Tapez quelque chose") Else If Not IsNumeric(TextBox1.Text) Then 'on teste si l'utilisateur a tap du numrique MsgBox("Tapez un chiffre") End If End If End Sub

- Une autre alternative est de capter l'erreur. Exemple: on demande l'utilisateur de saisir un nombre dans TextBox1 puis de cliquez sur Button3 Convertir le texte tap en Integer, on sait que si la conversion est impossible (pas de texte tap ou texte non numrique) une exception invalidCastException sera leve et le programme 'plantera'. On crit donc avant l'instruction Ctype un Try pour capter l'erreur: Tester s'il y a une erreur, la capter.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim i As Integer Try i = CType(TextBox1.Text, Integer) Catch MsgBox("saisir un nombre") End Try End Sub

V-AA-3 - Les erreurs de logique

- 327 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Le programme fonctionne, pas d'erreurs apparentes, mais les rsultats sont errons, faux. Il faut faire des tests dans les conditions relles avec des donnes courantes, mais aussi avec des donnes remarquables (limites suprieures, infrieures, cas particuliers..) pour voir si les rsultats sont cohrents et exacts. Une fois l'erreur trouve, il faut en dterminer la cause et la corriger. Ou bien elle est vidente la lecture du code ou bien elle n'est pas vidente et c'est l'horreur. Dans ce dernier cas il faut analyser le fonctionnement du programme pas pas, instruction par instruction en surveillant la valeur des variables.(voir la rubrique dbogage )

Les erreurs les plus communes sont: Utilisation d'un mauvais nom de variable (La dclaration obligatoire des variables vite cela) Erreur dans la porte d'une variable. Erreur dans le passage de paramtres (Attention au By Val et By Ref) Erreur dans la conception de l'algorithme. ... Quelques rgles permettent de les viter: voir Rgles de bonne programmation.

V-AA-4 - Les Tests


Il faut donc toujours tester le fonctionnement du programme de multiples fois:

On fera des:

Tests unitaires: qui testeront les procdures, les classes une une sans tester la totalit du programme. Tests de composants et d'intgration: qui testeront plusieurs procdures ou classes fonctionnant ensemble. Tests de rgression: c'est la rptition des test prcdents afin de voir si une modification ou un ajout n'entrane pas de nouvelles erreurs qui n'existaient pas. Tests systme: test sur le logiciel dans sa version finale.

Les tests dtecteront les erreurs, le dbogage permettra de trouver la cause et de corriger l'erreur. Il faut avoir une arme de Bta-testeurs.

V-AB - Travailler sur les dates, les heures, sur le temps

Il est probablement ncessaire de lire le chapitre VI sur les Classes avant de lire celui-ci. On a vu qu'il existe un type de variable 'DateTime' pour grer les dates et heures, comment l'utiliser ? Nous verrons aussi comment utiliser les Timers pour dclencher des vnements intervalle rgulier. Enfin comment perdre du temps?

- 328 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Une variable DateTime contient une date plus l'heure. Elle occupe 8 octets.(64 bits) Elle peut contenir une date comprise entre le 1er janvier de l'anne 01 et le 31 dcembre 9999 et une heure comprise entre 0:00:00 (minuit) et 23:59:59. En fait ce qui est cod dans la variable DateTime est le nombre de graduations ( Une graduation= 100 nanosecondes.) coules compter de minuit, le 1er janvier de l'anne 1 jusqu'a la date code. Nb: DateTime fait partie d'une Classe .Net , il existe aussi un type nomm Date qui fait partie de Visual Basic, qui est quivalent DateTime. Prfrez DateTime qui est une Classe Net.

V-AB-1 - Dfinir une date, une heure


A - Pour dfinir une valeur DateTime en utilisant un littral: elle doit tre place entre des signes (#) et son format doit tre de type d/m/yyyy, par exemple #31/5/1998#.
Dim dateNaissance As DateTime

dateNaissance= #02/12/1951#

B - Autre manire de saisir une date, une heure:


Dim dateNaissance As New System.DateTime(1996, 6, 3, 22, 15, 0) 'Anne, mois, jour, heure, minute, seconde, et ventuellement millisecondes)

Ici on a utilis le constructeur. C -Troisime mthode: On peut saisir une date dans une string puis convertir:
DateNaissance = CDate("02/12/1951")

CDate converti donc une chane en dateTime. On peut aussi utiliser Ctype:
Dim dateNaissance As Date = Ctype("01/12/2005", Date)

IsDate (objet) permet de vrifier si objet est convertible en date. IsDate retourne True si l'expression est de type Date ou est une chane convertible en type Date ; sinon, elle retourne False. Cela permet de vrifier, aprs une saisie d'une string par exemple, si l'utilisateur a bien tap des chiffres valides et mme si la date est valide ("31/02/1945" n'est pas valide).

- 329 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Bizarrerie= "12/2005" est considr comme une date valide et quivalente "01/12/2005"!! Pas de vrification des 2 '/'.
If IsDate( MyString) Then..

Exemple de Microsoft:
Dim MyDate, YourDate As DateTime Dim NoDate As String Dim D As Boolean MyDate = CDate("12 Fvrier, 1969") YourDate = #2/12/1969# NoDate = "Hello" D = IsDate(MyDate) ' Retourne True. D = IsDate(YourDate) ' Retourne True. D = IsDate(NoDate) ' Retourne False.

V-AB-2 - Afficher une date, une heure


Pour afficher les dates et heures simplement, il suffit d'utiliser .ToString
MsgBox(DateNaissance.ToString) 'Affichera 02/12/1951 11:00:00

Le format utilis est le format d'affichage des dates de l'ordinateur (en fonction du pays; en france c'est le format fr). ToString peut comporter des arguments qui formatent l'affichage: Voici quelques codes de formatage:
d dd ddd dddd M MM MMM MMMM affiche le jour affiche le jour sur 2 chiffres affiche le jour abrg affiche le jour complet affiche le mois affiche le mois sur 2 chiffres affiche le mois abrg affiche le mois complet 2 02 Dim. Dimanche 12 12 dc dcembre 51, 51, 1951

y, yy, yyyy affiche 1 2 chiffres, deux chiffres ou quatre chiffre H HH affiche l'heure sur un ou deux chiffres (format 24h)

affiche l'heure sur 2 chiffres

h et hh font de mme mais avec un format 12 h. t, tt affiche l'heure en format 12h plus A ou P (pour matin, aprs midi)

m, mm, s, ss, f, ff font de mme pour les minutes, secondes et millisecondes. : et / sont les sparateurs heure et date.

Exemple:
- 330 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

MsgBox(DateNaissance.ToString("dddd d MMMM yyyy")) MsgBox(DateNaissance.ToString("hh:mm") MsgBox(DateNaissance.ToString("d/MM/yy") 'Affichera 'Affichera

'Affichera 11:00 02/12/51

Dimanche 2 dcembre 1951

MsgBox(DateNaissance.ToString("%h) 'Affichera 11 le caractre % est utilis quand on affiche une seule donne.

On peut enfin utiliser les mthodes de la classe DateTime!!


DateNaissance.ToLongDateString DateNaissance.ToShortDateString DateNaissance.ToLongTimeString DateNaissance.ToShortTimeString 'dimanche 02 dcembre 1951 '02/12/1951 '11:00:00 '11:00

V-AB-3 - Variable "temps"


Un TimeSpan est une unit de temps (un intervalle de temps) exprime en jours, heures, minutes, secondes; Un TimeSpan initialis avec 1.0e+13 graduations reprsente "11.13:46:40", ce qui correspond 11 jours, 13 heures, 46 minutes et 40 secondes. On peut initialiser un TimeSpan avec des graduations:
Dim instance As New TimeSpan(ticks)

ou avec des heures, minutes, secondes, millisecondes.


Dim instance As New TimeSpan(h, m ,s ,ms)

On peut aussi l'initialiser avec un certain nombre de jours, d'heures, de secondes. Exemple avec 4 jours.
Dim value As Double= 4 Dim returnValue As TimeSpan returnValue = TimeSpan.FromDays(value)

L'espace de nom System.DateTime. contient une multitude de membre:

V-AB-4 - Add, Substrat


On peut ajouter ou soustraire un TimeSpan un DateTime, on obtient un DateTime. En clair on peut ajouter une date une dure, on obtient une date.

- 331 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre ' Quel sera la date dans 36 jours?. Dim today As System.DateTime Dim duration As System.TimeSpan Dim answer As System.DateTime today = System.DateTime.Now duration = New System.TimeSpan(36, 0, 0, 0) answer = today.Add(duration)

On peut ajouter ou soustraire 2 dates, on obtient une TimeSpan


Dim diff1 As System.TimeSpan diff1 = date2.Subtract(date1)

V-AB-5 - AddDay, AddMouths, AddHours, AddSeconds, AddMiliseconds


Permet d'ajouter des jours, des mois, des heures, des secondes, ou des millisecondes une date, on obtient une date.
Answer=today.AddDay(36)

V-AB-6 - Year, Mouth, Day, Hour, Minute, Seconde, Millisecond


Permettent d'extraire l'anne, le mois, le jour, l'heure, les minutes, les secondes, les millisecondes d'une date:
I=DateNaissance.Year ' => I=1951 'donne le jour d'aujourd'hui (1 31)

I=System.DateTime.Now.Day

(DatePart permet aussi d'extraire plein d'infirmations d'une date: jour , mois, anne, jour de la semaine..)

V-AB-7 - DayOfWeek
Retourne le jour de la semaine (0 pour dimanche 6 pour samedi)
I=DateNaissance.DayOfWeek 'I=0 car le 02/12/1951 est un dimanche.

DayForYear existe aussi.

V-AB-8 - Now, ToDay, TimeOfDay


Now est la date et l'heure du systme.(L, maintenant) ToDay est la date du systme avec l'heure 0. TimeOfDay est l'heure actuelle. En Clock permet de rcuprer l'heure courante ainsi que le nombre de millisecondes coules depuis le dmarrage.
MsgBox(My.Computer.Clock.LocalTime.ToString) 'Affiche date et heure

- 332 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-AB-9 - Ticks
Donne le nombre de graduations d'un DateTime. AddTicks peut tre utilis.

V-AB-10 - Anne bissextile ?


Pour cela utiliser IsLeapYear:
MsgBox(DateTime.IsLeapYear(2005)) 'Affiche False

V-AB-11 - Comparaison de DateTime


On utilise Compare: DateTime.Compare(t1, t2) retourne 0 si t1=t2, une valeur positive si t1>t2 ngative si t1<t2.
Dim t1 As New DateTime(100) Dim t2 As New DateTime(20) If DateTime.Compare(t1, t2) Console.WriteLine("t1 > End If If DateTime.Compare(t1, t2) Console.WriteLine("t1 = End If If DateTime.Compare(t1, t2) Console.WriteLine("t1 < End If > 0 Then t2") = 0 Then t2") < 0 Then t2")

On peut aussi utiliser la mthode op_Equality de l'espace de nom pour voir si 2 dates sont gales:
areEqual = System.DateTime.op_Equality(april19, otherDate)

Il existe aussi op_GreaterThan et beaucoup d'autres.

V-AB-12 - Calcul de la diffrence entre deux dates


On utilise DateDiff, il faut fournir en paramtre: L'intervalle de temps utiliser comme unit de la diffrence entre Date1 et Date2. DateInterval.Day pour obtenir le nombre de jours entre les 2 dates. DateInterval.Year pour obtenir le nombre d'annes entre les 2 dates. .. Date1 Date2

Exemple: Afficher le nombre de jours entre une date donne et la date du jour.

- 333 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dim DateS, Msg As String ' Declare les variables. Dim DateD As DateTime DateS = InputBox("Entrer une date") 'Saisir une date : on rcupre une string DateD = CDate(DateS) 'Conversion de la string en DateTime Msg = "Nombre de jour:"& DateDiff(DateInterval.Day, Now, DateD) 'diffrence en jours MsgBox (Msg)

V-AB-13 - Comment saisir rapidement une date dans un programme ?


En ajoutant une fentre un contrle DateTimePicker. En mode Run , il apparat une zone rectangulaire avec la date systme dedans:

Si l'utilisateur clique sur la flche droulante, il apparat une fentre calendrier.

Il suffit pour l'utilisateur de cliquer sur la bonne date. Le programmeur rcupre la date dans DateTimePicker1.value Il existe, bien sur, de multiples proprits et plusieurs vnements, le plus remarquable tant: ValueChanged.

MonthCalendar est un contrle similaire mais qui reste toujours ouvert. De plus grce CalendarDimension on peut afficher plusieurs mois.

V-AB-14 - Fuseau horaire


TimeZone reprsente le fuseau horaire actuel, celui dfini dans le panneau de configuration. Vous pouvez utiliser la classe TimeZone pour rcuprer des informations propos du fuseau horaire actuel et convertir l'heure locale en temps universel (UTC, Universal Time Coordinated) ou vice versa. Le fuseau actuel est dans TimeZone.CurrentTimeZone, son nom est dans la proprit .StandartName; pour convertir en temps universel: .ToUniversalTime(currentDate).
Imports System.Globalization Public Class Form1

- 334 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Const dataFmt As String = "{0,-30}{1}" Const timeFmt As String = "{0,-30}{1:dd-MM-yyyy HH:mm}" Console.WriteLine("Exemple TimeZone" & vbCrLf) ' Prendre le time zone local , la datetime de maintenant. 'l'anne actuelle Dim localZone As TimeZone = TimeZone.CurrentTimeZone Dim currentDate As DateTime = DateTime.Now Dim currentYear As Integer = currentDate.Year ' Affiche le fuseau local ' Affiche le fuseau de l'heure d't. Console.WriteLine(dataFmt, "Nom du fuseau local:", _ localZone.StandardName) Console.WriteLine(dataFmt, "Nom du fuseau de l'heure d't:", _ localZone.DaylightName) ' Affiche date et heure courantes 'Affiche si l'heure d't est en cours Console.WriteLine(vbCrLf & timeFmt, _ "Date et heure courante:", currentDate) Console.WriteLine(dataFmt, "Heure d't?", _ localZone.IsDaylightSavingTime(currentDate)) ' Prendre le temps universelle (UTC) et l'offset Dim currentUTC As DateTime = _ localZone.ToUniversalTime(currentDate) Dim currentOffset As TimeSpan = _ localZone.GetUtcOffset(currentDate) Console.WriteLine(timeFmt, "Date et heure universelle:", _ currentUTC) Console.WriteLine(dataFmt, "Diffrence local-UTC:", currentOffset) ' Prendre l'heure d't. Dim daylight As DaylightTime = _ localZone.GetDaylightChanges(currentYear) ' Affiche dbut et fin heure d't puis le delta. Console.WriteLine(vbCrLf & _ "Anne de l'heure d't {0}:", currentYear) Console.WriteLine("{0:dd-MM-yyyy HH:mm} " & _ "{1:dd-MM-yyyy HH:mm}, delta: {2}", _ daylight.Start, daylight.End, daylight.Delta) End Sub End Class

Affiche:
Exemple TimeZone Nom du fuseau local: Paris, Madrid Nom du fuseau de l'heure d't:Paris, Madrid Date et heure courante: Heure d't? Date et heure universelle: Diffrence local-UTC: 23-05-2009 14:51 True 23-05-2009 12:51 02:00:00

Anne de l'heure d't 2009: 29-03-2009 02:00 25-10-2009 03:00, delta: 01:00:00

- 335 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Vous ne pouvez pas utiliser la classe TimeZone pour reprsenter des fuseaux horaires autres que ceux de la zone locale ou pour grer des conversions de date et heure d'un fuseau horaire en un autre. Pour cela, utilisez la classe TimeZoneInfo (permet de travailler sur n'importe quel fuseau horaire). Exemple: dans un TimeZoneInfo, on va mettre le TimeZoneInfo local:
Dim localZone As TimeZoneInfo = TimeZoneInfo.Local Console.WriteLine("Local Time Zone ID: {0}", localZone.Id) Console.WriteLine(" Display Name is: {0}.", localZone.DisplayName) Console.WriteLine(" Standard name is: {0}.", localZone.StandardName) Console.WriteLine(" Daylight saving name is: {0}.", localZone.DaylightName)

TimeZoneInfo.Utc Obtient un objet TimeZoneInfo qui reprsente la zone de temps universel (UTC, Universal Time Coordinated). On peut convertir un DateTime d'un fuseau un autre:
Dim dateTime As DateTime Dim destinationTimeZone As TimeZoneInfo Dim returnValue As DateTime returnValue = TimeZoneInfo.ConvertTime(dateTime, _ destinationTimeZone)

V-AB-15 - Les Timers


Pour dclencher un vnement intervalle rgulier, il faut utiliser les minuteries ou 'Timer'. Prendre le contrle Timer dans la Boite outils, l'ajouter la fentre. Il apparat en bas sous la fentre dans la barre d'tat des composants. Il n'apparat pas l'utilisateur dans la fentre en mode Run. Il est trs simple utiliser. La proprit Interval contient la priodicit de l'vnement Ticks , vnement qui se dclenche rgulirement. Interval est en millisecondes. Pour Interval=500 l'vnement Ticks se dclenche toutes les 1/2 secondes. Start et Stop dclenche et arrte la minuterie (De mme Enabled active ou non ).

Exemple: Faire clignoter un label toutes les 1/2 secondes. Crer le label1 Ajouter un Timer1 (qui se place en bas sous la fentre).
Private Sub Form3_Load(...) Timer1.Interval = 500 - 336 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Timer1.Start() End Sub Private Sub Timer1_Tick(..) Label1.Visible = Not (Label1.Visible) End Sub

Un vnement Timer_Tick se produit toutes les 1/2 secondes et inverse la valeur de la proprit visible du label. (Si elle tait gale True, elle devient gale False et vice versa.)

Mais attention: Timer des restrictions de taille:

Si votre application ou une autre demande beaucoup au systme (boucles longues, calculs complexes, accs intensifs un priphrique, un rseau ou un port, par exemple), les vnements de minuterie peuvent tre moins frquent que spcifi dans la proprit Interval. Il n'est pas garanti que l'intervalle s'coule dans le temps exact!! L'intervalle peut tre compris entre 1 et 64 767 millisecondes: l'intervalle le plus long ne dpasse pas de beaucoup la minute (64,8 secondes). Le systme gnre 18 graduations la seconde (mme si la valeur de la proprit Interval est mesure en millisecondes, la vritable prcision d'un intervalle ne dpassera pas un dix-huitime de seconde).

Donc pour faire clignoter un label :OUI Pour compter prcisment un intervalle de temps:NON Mais il y a d'autres mthodes.

V-AB-16 - Perdre du temps


Parfois on a besoin de perdre du temps: Exemple ne rien faire pendant 3 secondes puis poursuivre.. Il est exclu de faire des boucles vides:
For i=0 to 100000 Next i ' le temps coul est variable en fonction des machines..

Autre mthode : on boucle tant que l'heure courante est infrieure l'heure du dpart+3s
Dim t As DateTime=DateTime.Now Do While DateTime.Now <t.AddSeconds(3) Loop

Mais cela accapare le processeur.

On peut utiliser un Timer et vrifier dans la procdure Tick si le temps est coul (avec les restrictions que l'on connait).

- 337 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

On peut utiliser Thread.Sleep (qui met le processus en cours en sommeil).


System.Threading.Thread.Sleep(3000)

Le temps de sommeil du thread est en millisecondes: 3000 correspond 3 secondes.

V-AB-17 - Chronomtrer
Parfois on a besoin de chronomtrer un vnement: Voir la rubrique Chronomtrer. L'exemple sur l'horloge est aussi didactique.

V-AB-18 - Exemple: Horloge numrique


Trs Simple: Comment crer une horloge numrique? 15:21:45 Dans la fentre Form1. Mettre un Timer (Timer1) Mettre un label (Label1) Ajouter le code
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Interval = 1000 Timer1.Start() End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label1.Text = Now.ToLongTimeString End Sub 'Affiche l'heure format long. 'Timer1_Tick sera dclench toutes les secondes. 'On dmarre le Timer

Simple!! non!!

V-AC - Lire et crire dans les fichiers (squentiels ou alatoires)

Il est probablement ncessaire de lire le chapitre VI sur les Classes avant de lire celui-ci.

Comment lire et crire dans des fichiers du texte, des octets, du XML du Rtf ?

- 338 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-AC-1 - Gnralits et rappels


Le mot 'fichier' est a prendre au sens informatique: ce n'est pas un ensemble de fiches mais plutt un ensemble d'octets. Un fichier peut tre un programme (Extension .EXE), du texte (Extension .TXT ou .DOC....), une image (Extension .BMP .GIF .JPG...), une base de donnes (.MDB..) du son, de la vido.... Pour travailler avec du texte, des octets, des donnes trs simple (sans ncessit d'index, de classement..), on utilise les mthodes dcrites dans ce chapitre: travail direct dans les fichiers squentiels, alatoires, binaires. Mais ds que les informations sont plus structures, il faut utiliser les bases de donnes (Il y a plusieurs chapitres plus loin traitant des bases de donnes). Un fichier a un nom: 'Image.GIF', une extension: '.GIF' qui en indique gnralement le type de contenu , des attributs (Longueur, Date de cration, de modification, Fichier en lecture seule ou non..). On voit cela dans l'explorer Windows:

Un fichier est compos d'enregistrements qui sont des 'paquets' de donnes; suivant le type de fichier un enregistrement peut correspondre une ligne, un octet, un groupe d'octets.. Un fichier peut tre vu comme contenant du texte, de l'XML, des octets. Comment utiliser les fichiers? Voici le plan de cet article: A- Il est conseill de travailler avec les Classes du Framework. Avec la Classe FileInfo, on obtient des renseignements sur le fichier. Pour lire crire dans un fichier (en dehors des bases de donnes), il y a plusieurs mthodes: Avec la Classe System.Io on a a notre disposition StreamReader StreamWriter BinaryReader BinaryWriter FileStream: Pour lire ou crire dans un fichier, il faut l'ouvrir (Open), lire ou crire en utilisant un flux de donnes (Stream) puis le refermer (Close). Le Stream (flux, torrent, courant) est une notion gnrale, c'est donc un flux de donnes provenant ou allant vers un fichier, un port, une connexion TCP/IP... L'accs est squentiel: les donnes sont traites du dbut la fin du fichier.

B- Il existe toujours la mthode classique du FileOpen: On ouvre le fichier en mode squentiel, alatoire, binaire, on lit X enregistrements, on referme le fichier. C- Avec certains objets, on gre automatiquement les lectures critures sur disque.

- 339 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Comme avec le RichTextBox par exemple.

En rsum, pour travailler sur les fichiers, on dispose:


de l'espace de nom System.IO avec les Classes et objets .NET des instructions VisualBasic traditionnelles: FileOpen WriteLine.. des instructions du FSO (FileObjetSystem) pour la compatibilit avec les langages de script.

Les 2 derniers font appel au premier; donc pourquoi ne pas utiliser directement les Classe .NET?

V-AC-2 - Classe FileInfo et File, Stream du Framework


Pour travailler sur les fichiers, il faut au pralable taper: Imports System.IO

La classe File est utilise pour travailler sur un ensemble de fichier ou un fichier (sans instanciation pralable: ce sont des mthodes statiques), la Classe FileInfo donne des renseignements sur un fichier particulier (Il faut instancier au pralable un objet FileInfo). La Classe File possde les mthodes suivantes.
Exists Create Copy Delete Teste si le fichier existe. Cre le fichier Copie le fichier Efface le fichier Lire ou crire les attributs.

GetAttributes , SetAttributes

GetCreationTime , GetLastAccessTime , GetLastWriteTime et les Set.. correspondant. Move Replace Dplacement de fichier Framework 2 Framework 2 lire ou crire un texte dans un fichier Framework 2 lire ou crire des lignes dans un fichier Framework 2 lire ou crire des octets dans un fichier

ReadAllText, WriteAllText ReadAllLines, WriteAllLines ReadAllBytes, WriteAllBytes

Toutes les mthodes Open (pour un FileStream) OpenRead, OpenWrite, OpenText.

Exemple: Un fichier existe-t-il? Afficher True s'il existe:

Label1.Text = File.Exists("vessaggi.gif").ToString

Exists est bien une 'mthode de Classe': pas besoin d'instancier quoi que ce soit.

- 340 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Dplacer un fichier de c: vers d:?


File.Move("c:\monText.txt", "d:\monText.txt")

Copier un fichier de c: vers d:?


File.Copy("c:\monText.txt", "d:\monText.txt", True)

Le dernier argument facultatif (framework 2) permet de remplacer le fichier cible s'il existe.

Sauvegarde un fichier et le remplace? (Framework 2)


File.Copy("c:\monText.txt", "c:\newText.txt",, "c:\newText.bak " True)

Sauvegarde monText.tx dans un .bak , puis copie NewText.txt dans monText.tx ; True permet de remplacer cible s'il existe.

Efface un fichier:
File.Delete("d:\monText.txt")

Lire la totalit d'un fichier texte? (Framework 2)


Dim myText As String =File.ReadAllText("c:\monText.txt")

File.WriteAllText("c:\monText.txt", myText) 'pour recrire le texte dans un autre fichier. La mthode AppendAllText existe aussi.

Lire un fichier texte et mettre dans un tableau les lignes d'un fichier texte? (Framework 2)
Dim myLines() As String =File.ReadAllLines("c:\monText.txt")

Lire et mettre dans un tableau les octets d'un fichier? (Framework 2)


Dim myBytes() As Byte =File.ReadAllBytes("c:\monText.txt")

Un fichier est-il en lecture seule?


If File.GetAttributes("c:\monText.txt") And FileAttributes.ReadOnly Then..

- 341 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

La Classe FileInfo possde les proprits suivantes:


Name FullName Extension Length Directory DirectoryName Exists LastAccessTime Attributes Nom du fichier (sans chemin) Nom complet avec chemin Extension Longueur du (.txt par exemple) fichier.

Rpertoire parent Rpertoire ou se trouve le fichier Existe? Date du dernier accs, LastWriteTime existe aussi. Attributs

Pour voir les attributs d'un fichier, il faut faire un AND entre Attributes et une valeur de l'numration FileAttributes ( Archive, Compressed, Directory, Encrypted, Hidden, Normal, ReadOnly, System, Temporaly). Pour tester ReadOnly par exemple:
Dim sNom As String = "c:\monfichier.txt" Dim Fi As FileInfo Fi=New FileInfo( sNom) 'On dclare un FileInfo 'On instancie ce FileInfo avec comme paramtre le nom du fichier

Ensuite:
Fi.Attributes And FileAttributes.ReadOnly 'Retourne True si le fichier est ReadOnly

Et aussi: Fi.Name retourne "monfichier.txt" Fi.FullName retourne "c:\monfichier.txt" Fi.Name.Substring(0, Fi.Name.LastIndexOf(".")) retourne "monfichier" : pas de chemin ni d'extension.

Et les mthodes suivantes: Create, Delete, MoveTo AppendTex, CopyTo Open, OpenRead, OpenWrite, OpenText.. On voit que toutes les informations sont accessibles.

Exemple:
- 342 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Pour un fichier, afficher successivement le nom, le nom avec rpertoire, le rpertoire, la longueur, la date de dernire criture et si le fichier est en ReadOnly.
Dim sNom As String = "c:\monfichier.txt" Dim Fi As FileInfo 'On dclare un FileInfo 'on instance ce FileInfo avec comme paramtre le nom du fichier

Fi=New FileInfo( sNom)

MsgBox("Nom="& Fi.Name) MsgBox("Nom complet ="& Fi.FullName) MsgBox("Rpertoire="& Fi.DirectoryName) MsgBox("Longueur="& Fi.Length.ToString) MsgBox("Date dernire modification="& Fi.LastWriteTime.ToShortDateString) MsgBox("ReadOnly="& (Fi.Attributes And FileAttributes.ReadOnly).ToString)

V-AC-3 - Classe My.Computer.FileSystem


A partir de VS 2005 il y a en plus la classe My.Computer.FileSystem qui simplifie normment les choses: les mthodes CopyFile, DeleteFile, FileExits permettent de copier, effacer un fichier ou de voir s'il existe. Il existe aussi RenameFile et MoveFile.

Exemple : Afficher dans une MsgBox True si 'c:\config.sys' existe.


MsgBox(My.Computer.FileSystem.FileExists("c:\config.sys").ToString)

Exemple : Afficher la liste des fichiers qui sont sous c:\; ici on utilise GetFiles qui retourne une collection des fichiers.(count contient le nombre de fichiers, item () les noms.
Dim i As Integer For i = 0 To My.Computer.FileSystem.Getfiles("c:\").Count - 1 ListBox1.Items.Add(My.Computer.FileSystem.GetFiles("c:\").Item(i)) Next i

Un fichier existe t-il et est-il ouvert et utilis par une autre application?
If My.Computer.FileSystem.FileExists("c:\monText.txt") Then

- 343 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre Try 'on tente d'ouvrir un stream sur le fichier, s'il est dj utilis, cela dclenche une erreur. Dim fs As IO.FileStream = My.Computer.FileSystem.GetFileInfo("c: \monText.txt").Open(IO.FileMode.Open, _ IO.FileAccess.Read) fs.Close() Catch ex As Exception MsgBox("Le fichier End Try End If est dj ouvert")

V-AC-4 - Utiliser les "Stream" du Framework


Le Stream (flux, torrent, courant) est une notion gnrale, c'est donc un flux de donnes 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'accs est squentiel: les donnes sont traites du dbut la fin du fichier. Pour crire dans un fichier texte: Il faut instancer un objet de la classe StreamWriter. Puis on crit avec Write ou WriteLine (ajoute un saut de ligne). Enfin on ferme avec Close. On peut instancier avec le constructeur de la classe StreamWriter et avec New, ou par la Classe File.
Dim SW As New StreamWriter ("MonFichier.txt") ' cre le fichier ou, si existe dja, crase

Il existe une surcharge permettant de ne pas craser mais d'ajouter la fin du fichier:
Dim SW As New StreamWriter ("MonFichier.txt", True) ' cre ou si existe ajoute

Avec la classe File:


Dim SW As StreamWriter=File.CreateText ("MonFichier.txt") ' cre ou si existe crase

Dim SW As StreamWriter = File.AppendText("MonFichier.txt") ' cre ou si existe ajoute

Ensuite pour crire 2 lignes:


SW.WriteLine ("Bonjour") SW.WriteLine ("Monsieur")

Enfin on ferme:

- 344 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

SW.Close()

Pour lire dans un fichier Texte: Il faut instancier un objet de la classe StreamReader. Puis on lit avec Read (un nombre d'octet) ReadLine (une ligne) ReadToEnd (de la position courante jusqu' la fin). Enfin on ferme avec Close. Avec le constructeur de la Classe Stream Reader:
Dim SR As New StreamReader ("MonFichier.txt")

Avec la Classe File:


Dim SR As StreamReader=File.OpenText ("MonFichier.txt") '

Comment lire chaque ligne du fichier et s'arrter la fin? En effet on ne sait pas habituellement combien le fichier contient de ligne, si le fichier contient 2 lignes il faut en lire 2 et s'arrter sinon on tente de lire aprs la fin du fichier et cela dclenche une erreur.

3 solutions:
1 2 3

Utiliser ReadToEnd qui lit en bloc jusqu' la fin. Avant ReadLine mettre un Try: quand l'erreur 'fin de fichier' survient elle est intercepte par Catch qui sort du cycle de lecture et ferme le fichier. Utiliser Peek qui lit dans le fichier un caractre mais sans modifier la position courante de lecture.

La particularit de Peek est de retourner -1 s'il n'y a plus de caractre lire sans dclencher d'erreur, d'exception. La troisime solution est la plus gnrale et la plus lgante:
Do Until SR.Peek=-1 Ligne=SR.ReadLine() Loop Enfin on ferme: SR.Close()

Notion de 'Buffer', utilisation de Flush. En fait quand on crit des informations sur le disque, le logiciel travaille sur un buffer ou mmoire tampon qui est en mmoire vive. Si on crit des lignes dans le fichier, elles sont 'crites' dans le buffer en mmoire vive. Quand le buffer est plein,(ou que l'on ferme le fichier) l'enregistrement du contenu du buffer est effectu effectivement sur le disque. Ce procd est gnral l'criture et la lecture de fichier mais totalement transparent car le programmeur ne se proccupe pas des buffers. Parfois, par contre, mme si on a enregistr peu d'information, on veut tre sr qu'elle est sur le disque, il faut donc forcer l'enregistrement sur disque mme si le buffer n'est pas plein, on utilise alors la mthode Flush.
- 345 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

SW.Flush()

Le fait de fermer un fichier par Close, appelle automatiquement Flush() ce qui enregistre des donnes du buffer.

V-AC-5 - Utiliser "FileOpen" du VisualBasic


Bonjour les anciens. Visual Basic fournit trois types d'accs au fichier : L'accs squentiel, pour lire et crire des fichiers 'texte' de manire continue, chaque donne est enregistre successivement du dbut la fin; les enregistrements n'ont pas la mme longueur, ils sont spars par un sparateur (des virgules ou des retours la ligne).

On ne peut qu'crire le premier enregistrement puis le second, le troisime, le quatrime... Pour lire c'est pareil: on ouvre, on lit le premier, le second, le troisime, le quatrime.... Pour lire le troisime enregistrement il faut lire avant les 2 premiers. L'accs alatoire (Random), (on le nomme parfois accs direct) pour lire et crire des fichiers texte ou binaire constitus d'enregistrements de longueur fixe; on peut avoir directement accs un enregistrement partir de son numro.

Les enregistrements ont une longueur fixe: il faut prvoir!! si on dcide de 20 caractres pour le prnom, on ne pourra pas en mettre 21, le 21me sera tronqu, l'inverse l'enregistrement de 15 caractres sera complt par des blancs. Il n'y a pas de sparateur entre les enregistrements. Les enregistrements peuvent tre constitus d'un ensemble de variables: une structure, ici prnom et adresse. Ensuite on peut lire directement n'importe quel enregistrement, le second enregistrement par exemple, ou crire sur le 3me.(on comprend que, connaissant la longueur d'un enregistrement qui est fixe, l'ordinateur peut calculer la position d'un enregistrement quelconque.) L'accs binaire, pour lire et crire dans tous les fichiers, on lit ou crit un nombre d'octet dsir une position dsire..C'est comme l'accs direct, on peut lire le 36me octet..

- 346 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

En pratique: Les fichiers squentiels sont bien pratique pour charger une srie de ligne, (toujours la mme) dans une ListBox par exemple. Faut-il utiliser les fichiers squentiels ou random ( accs alatoire, accs direct) pour crer par exemple un petit carnet d'adresse?

Il y a 2 manires de faire:

Crer un fichier random et lire ou crire dans un enregistrement pour lire ou modifier une adresse. Crer un fichier squentiel. A l'ouverture du logiciel lire squentiellement toutes les adresses et les mettre dans un tableau (de structure). Pour lire ou modifier une adresse: lire ou modifier un lment du tableau. En sortant du programme enregistrer tous les lments du tableau squentiellement.(Enregistrer dans un nouveau fichier, effacer l'ancien, renommer le nouveau avec le nom de l'ancien).

Bien sur s'il y a de nombreux lments dans une adresse, un grand nombre d'adresse, il faut utiliser une base de donnes. Attention: Si on ouvre un fichier en criture et qu'il n'existe pas sur le disque, il est cre. Si on ouvre un fichier en lecture et qu'il n'existe pas, une exception est dclenche (une erreur). On utilisait cela pour voir si un fichier existait: on l'ouvrait, s'il n'y avait pas d'erreur c'est qu'il existait. Mais maintenant il y a plus simple pour voir si un fichier existe (File.Exists). Si on ouvre un fichier et que celui-ci est dj ouvert par un autre programme, il se dclenche gnralement une erreur (sauf si on l'ouvre en Binaire, c'tait le cas en VB6, c'est vrifier en VB.NET).

Pour ouvrir un fichier on utilise FileOpen. FileOpen (FileNumber, FileName, Mode, Access, Share, RecordLength) Paramtres de FileOpen FileNumber A tout fichier est affect un numro unique, c'est ce numro que l'on utilisera pour indiquer sur quel fichier pratiquer une opration.. Utilisez la fonction FreeFile pour obtenir le prochain numro de fichier disponible.

FileName Obligatoire. Expression de type String spcifiant un nom de fichier. Peut comprendre un nom de rpertoire ou de dossier, et un nom de lecteur.

Mode Obligatoire. numration OpenMode spcifiant le mode d'accs au fichier : Append, Binary, Input (squentiel en lecture), Output (squentiel en criture) ou Random (accs alatoire).

Access

- 347 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Facultatif. Mot cl spcifiant les oprations autorises sur le fichier ouvert : Read, Write ou ReadWrite. Par dfaut, la valeur est OpenAccess.ReadWrite.

Share Facultatif. Spcifiant si un autre programme peut avoir en mme temps accs au mme fichier : Shared (permet l'accs aux autres programmes), Lock Read (interdit l'accs en lecture), Lock Write (interdit l'accs en criture) et Lock Read Write (interdit totalement l'accs). Le processus OpenShare.Lock Read Write est paramtr par dfaut. RecordLength Facultatif. Nombre infrieur ou gal 32 767 (octets). Pour les fichiers ouverts en mode Random, cette valeur reprsente la longueur de l'enregistrement. Pour les fichiers squentiels, elle reprsente le nombre de caractres contenus dans la mmoire tampon.

Pour crire dans un fichier on utilise: Print , Write, WriteLine dans les fichiers squentiels. FilePut dans les fichiers alatoires.

Pour lire dans un fichier on utilise: Input, LineInput dans les fichiers squentiels. FileGet dans les fichiers alatoires.

Pour fermer le fichier on utilise FileClose().

Numro de fichier: Pour reprer chaque fichier, on lui donne un numro unique (de type Integer). La fonction FreeFile retourne le premier numro libre.
Dim No as Integer No= Freefile()

Ensuite on peut utiliser No pour reprer le fichier sur lequel on travaille.


FileOpen( No, "MonFichier", OpenMode.Output) Print(No,"toto") FileClose (No)

- 348 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-AC-5-a - Fichier squentiel en VB


Vous devez spcifier si vous voulez lire (entrer) des caractres issus du fichier (mode Input), crire (sortir) des caractres vers le fichier (mode Output) ou ajouter des caractres au fichier (mode Append). Ouvrir le fichier 'MonFichier' en mode squentiel pour y crire:
Dim No as integer No= Freefile FileOpen( No, "MonFichier", OpenMode.Output)

Pour crire dans le fichier squentiel: on utilise Write ou WriteLine Print ou PrintLine: La fonction Print crit dans le fichier sans aucun caractre de sparation.
Print(1,"toto") Print(1,"tata") Print(1, 1.2)

Donne le fichier 'tototata1.2' La fonction Write insre des points-virgules entre les lments et des guillemets de part et d'autre des chanes au moment de leur criture dans le fichier, les valeurs boolens et les variables DateTime sont crites sans problmes.
Write(1,"toto") Write(1,"tata") Write(1, 1.2)

Donne le fichier '"toto";"tata";1.2" Attention s'il y a des points-virgules dans les chanes, elles seront considres comme sparateurs!! ce qui entrane des erreurs la lecture; il faut mettre la chane entre "" ou bien remplacer le point-virgule par un caractre non utilis (# par exemple) avant de l'enregistrer puis aprs la lecture remplacer '#' par ';'

Il faut utiliser Input pour relire ces donnes (Input utilise aussi le point-virgule comme sparateur. La fonction WriteLine insre un caractre de passage la ligne, c'est--dire un retour chariot+ saut de ligne (Chr(13) + Chr(10)),On lira les donnes par LineInput.
WriteLine(1,"toto") WriteLine(1,"tata") WriteLine(1, 1.2)

Donne le fichier: "toto" "tata"

- 349 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

1.2 Il faut utiliser LineInput pour relire ces donnes car il lit jusqu'au retour Chariot, saut de ligne.

Toutes les donnes crites dans le fichier l'aide de la fonction Print respectent les conventions internationales ; autrement dit, les donnes sont mises en forme l'aide du sparateur dcimal appropri. Si l'utilisateur souhaite produire des donnes en vue d'une utilisation par plusieurs paramtres rgionaux, il convient d'utiliser la fonction Write

EOF (NumroFichier) veut dire 'End Of File', (Fin de Fichier) il prend la valeur True si on est la fin du fichier et qu'il n'y a plus rien lire. LOF (NumroFichier) veut dire 'Length Of File', il retourne la longueur du fichier. Exemple: Lire chaque ligne d'un fichier texte.
Dim Line As String FileOpen(1, "MonFichier.txt", OpenMode.Input) ' Ouvre en lecture. While Not EOF(1) ' Boucler jusqu' la fin du fichier Line = LineInput(1) ' Lire chaque ligne Debug.WriteLine(Line) ' Afficher chaque ligne sur la console. End While FileClose(1) ' Fermer.

Ici on a utilis une boucle While.. End While qui tourne tant que EOF est Faux. Quand on est la fin du fichier EOF (End of File)devient gal True et on sort de la boucle.

V-AC-5-b - Fichier accs alatoire en VB


On ouvre le fichier avec FileOpen et le mode OpenMode.Random, ensuite on peut crire un enregistrement grce FilePut() ou en lire un grce FileGet(). On peut se positionner sur un enregistrement prcis (le 2eme, le 15me) avec Seek. Le premier enregistrement est l'enregistrement numro 1.

Exemple:Fichier des adresses. Crer une structure Adresse, on utilise <VBFixedString( )> pour fixer la longueur.
Public Structure Adresse <VBFixedString(20)>Dim Nom <VBFixedString(20)>Dim Rue <VBFixedString(20)>Dim Ville End Structure As String As String As String

- 350 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

'Ouvrir le fichier, comme il n'existe pas, cela entrane sa cration Dim FileNum As Integer, RecLength As Long, UneAdresse As Adresse ' Calcul de la longueur de l'enregistrement RecLength = Len(UneAdresse) ' Rcuprer le premier numro de fichier libre. FileNum = FreeFile ' Ouvrir le fichier. FileOpen(FileNum, "MONFICHIER.DAT", OpenMode.Random, , , RecLength)

Pour crire des donnes sur le second enregistrement par exemple:


UneAdresse.Nom = "Philippe" UneAdresse.Rue = "Grande rue" UneAdresse.Ville = "Lyon" FilePut(FileNum, UneAdresse,2 )

Dans cette ligne de code, FileNum contient le numro utilis par la fonction FileOpen pour ouvrir le fichier, 2 est le numro de l'enregistrement ou sera copi la variable 'UneAdresse' (c'est un long si on utilise une variable) et UneAdresse, dclar en tant que type Adresse dfini par l'utilisateur, reoit le contenu de l'enregistrement. Cela crase l'enregistrement 2 s'il contenait quelque chose. Pour crire la fin du fichier, ajouter un enregistrement il faut connatre le nombre d'enregistrement et crire l'enregistrement suivant.
Dim last as long 'noter que le numro d'enregistrement est un long

Pour connatre le nombre d'enregistrement, il faut diviser la longueur du fichier par la longueur d'un enregistrement.
last = FileLen("MONFICHIER.DAT") / RecLength

On ajoute 1 pour crer un nouvel enregistrement.


FilePut(FileNum, UneAdresse,last+1 )

Pour lire un enregistrement (le premier par exemple):


FileGet(FileNum, UneAdresse, 1)

Attention Option Strict doit tre false . Si option Strict est True, la ligne qui prcde gnre une erreur car le second argument attendu ne peut pas tre une variable 'structure'. Pour que le second argument de FileGet (Une adresse) soit converti dans une variable Structure automatiquement Option Strict doit donc tre false. (Il doit bien y avoir un moyen de travailler avec Option Strict On et de convertir explicitement mais je ne l'ai pas trouv)

- 351 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Remarque: si le fichier contient 4 enregistrements, on peut crire le 10me enregistrement, VB ajoute entre le 4me et le 10me, 5 enregistrements vides. On peut lire un enregistrement qui n'existe pas, cela ne dclenche pas d'erreur. Le numro d'enregistrement peut tre omis dans ce cas c'est l'enregistrement courant qui est utilis.

On positionne l'enregistrement courant avec Seek: Exemple: Lire le 8me enregistrement:


Seek(FileNum,8) FileGet(FileNum,Une Adresse)

Suppression d'enregistrements. Vous pouvez supprimer le contenu d'un enregistrement en effaant ses champs (enregistrer la mme position des variables vides), mais l'enregistrement existe toujours dans le fichier.

Pour supprimer totalement un enregistrement.


Crez un nouveau fichier. Copiez tous les enregistrements valides du fichier d'origine dans le nouveau fichier (pas ceux qui sont vides). Fermez le fichier d'origine et utilisez la fonction Kill pour le supprimer. Utilisez la fonction Rename pour renommer le nouveau fichier en lui attribuant le nom du fichier d'origine.

V-AC-5-c - Fichier binaire en VB


Dans les fichiers binaires on travaille sur les octets. La syntaxe est la mme que pour les fichiers Random, sauf qu'on travaille sur la position d'un octet et non sur un numro d'enregistrement. Pour ouvrir un fichier binaire: FileOpen(FileNumber, FileName, OpenMode.Binary)

FileGet et FilePut permettent de lire ou d'crire des octets .


FileOpen(iFr, ReadString, OpenMode.Binary) MyString = New String(" "c, 15) 'Crer une chane de 15 espaces FileGet(iFr, MyString) ' Lire 15 caractres dans MyString FileClose(iFr) MsgBox(MyString)

Le fait de crer une variable de 15 caractres et de l'utiliser dans FileGet permet de lire 15 caractres.

- 352 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

V-AC-6 - Utilisation du Contrle RichTextBox


Un contrle RichTextBox est un contrle qui contient du texte enrichi qui peut tre modifi. On rappelle que du texte prsent dans un contrle RichTextBox peut tre enregistr ou lu trs simplement avec les mthodes .SaveFile et .LoadFile. Le texte peut tre du texte brut ou du RTF.

Comment enregistrer cetexte dans un fichier sur disque?


richTextBox1.SaveFile(FileName, RichTextBoxStreamType.PlainText)

Si on remplace .PlainText par .RichText c'est le texte enrichi et non le texte brut qui est enregistr Pour lire un fichier il faut employer .LoadFile avec la mme syntaxe. Simple, non!!!

V-AC-7 - Lire ou crire des octets ou du XML


BinaryWriter et BinaryReader permettent d'crire ou de lire des donnes binaires. XMLTextWriter et XMLTextReader crit et lit du Xml.

Pour enregistrer un tableau, un objet, Vb.Net propose aussi la Srialization (voir ce chapitre).

V-AC-8 - Bote de dialogue pour choix de fichier


Taper:
Dim dialogOpen As New OpenFileDialog

With DialogOpen .InitialDirectory = "C:" .Title = "Choisir une fichier" .Filter = "Fichiers LDF(*.ldf)|*.ldf" .ShowDialog() 'rpertoire sur lequel s'ouvrira la boite 'titre de la barre 'filtre, seules les fichiers LDF apparatront ' on ouvre la boite de dialogue enfin

'Retour aprs la fermeture de la boite de dialogue If Err.Number = 32755 Then Exit Sub If Len(.FileName) = 0 Then Exit Sub 'le bouton 'annuler' a t'il t cliqu? 'aucun choix 'nom du fichier choisi ( avec extension)

Dim sFile As String = .FileName

- 353 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre End With

Vous avez le nom du fichier ouvrir, vous devez crire le code pour l'ouvrir avec un Open...

SaveFileDialog existe aussi.

V-AC-9 - Stream et fichier alatoire avec structure


Comment enregistrer, lire, effacer des donnes (qui sont dans une variable structure) dans un fichier binaire: Sans utiliser de FileOpen FilePut, FileGet mais en utilisant plutt des FileStream (un BinaryReader et un BinaryWriter). On reste dans le Framework .Net. Par Bruno Chappe. Dbutant s'abstenir. Cette syntaxe est entirement crite en VB .NET 2005, et n'utilise que des objets avec mthodes et proprits issue de VB .NET 2005. On cre une Structure 'personne', une Class 'myBinaryReader', une Class 'myBinaryWriter' permettant de lire et d'enregistrer des 'personne'. 'System.IO doit tre import dans l'entte de votre module.

ETAPE N1 : Crer la structure et les classe binaryReader et binaryWriter personnalises.


'Crer la structure avec son constructeur spcifique Structure personne

- 354 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Public pNom As String Public pPrenom As String Public pAge As Integer Public pMarie As Boolean Sub New(ByVal myNom As String, ByVal myPrenom As String, ByVal myAge As Integer, ByVal myMarie As Boolean) Me.pNom = myNom Me.pPrenom = myPrenom Me.pAge = myAge Me.pMarie = myMarie End Sub End Structure

'Crer une classe de binarywriter personnalise partir de le classe binarywriter ' native de vb Class myBinarywriter Inherits System.IO.BinaryWriter Sub New ( ByVal st1 As System.IO.Stream ) MyBase.New(st1) End Sub 'PadRight est utilis pour faire des chanes de caractre de longueur fixes

'C'est indispensable pour pouvoir calculer la longueur des enregistrements ' par la suite et avoir des enregistrements qui ont tous la mme longueur Overloads Sub write( ByVal e As personne ) MyBase.Write(e.pNom.PadRight(15)) MyBase.Write(e.pPrenom.PadRight(15)) MyBase.Write(e.pAge) MyBase.Write(e.pMarie) End Sub End Class

'Crer une classe de binaryreader personnalise partir de la classe binaryreader ' native de vb Class myBinaryreader Inherits System.IO.BinaryReader Sub New ( ByVal st2 As System.IO.Stream ) MyBase.New(st2) End Sub - 355 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Function readpersonne() As personne Dim pNom As String = MyBase.ReadString Dim pPrenom As String = MyBase.ReadString Dim pAge As Integer = MyBase.ReadInt32 Dim pMarie As Boolean = MyBase.ReadBoolean readpersonne = New personne(pNom, pPrenom, pAge, pMarie) End Function End Class

ETAPE N 2 : Utilisation des classes personnalises. ***Ecrire un enregistrement DEBUT


'Variable string stockant le chemin d'accs au fichier Dim myFile as String 'Si l'on veut crire directement dans un enregistrement existant ' (plutt que d'crire la suite du fichier) 'il faut au pralable rcuprer la rang de l'enregistrement ou l'on veut commencer crire 'et multiplier ce rang par la longueur d'un enregistrement (en octets). 'Cette opration nous donne la position du premier octet crire dans le fichier. 'Pour mmoire, la longueur d'un enregistrement en octet est gale la taille du fichier en octet 'divis par le nombre d'enregistrements (Voir Annexe de ce document pour les explications) Dim position As Integer 'Dclarer une variable de type 'personne' et assigner les valeurs voulues ses champs 'Il est possible de travailler avec un tableau de structure, cela revient au mme mais 'est moins indispensable qu'avant vu que l'on peut aller crire et lire directement dans le fichier Dim maPersonne As personne With maPersonne .pNom = 'valeur du champ .pPrenom = 'valeur du champ .pAge = 'valeur du champ .pMarie = 'valeur du champ End With 'Dclare le flux et le writer qui vont nous permettre d'crire notre structure 'Bien faire attention aux proprits FileMode et FileAccess en fonction des oprations 'que vous voulez effectuer

- 356 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre 'Si vous voulez crire l'enregistrement la suite des autres : Dim fs As FileStream = File.Open(myFile, FileMode.Append, FileAccess.Write, FileShare.None) 'Si vous voulez re-ecrire/modifier un enregistrement : Dim fs As FileStream = File.Open(myFile, FileMode.Open, FileAccess.Write, FileShare.None) 'Dans les 2 cas, remarquez ici que nous instancions un objet issue de la classe ' que nous avons cr plus haut 'et non pas un objet issue des classes natives de vb Dim bw As New myBinarywriter(fs) 'Ncessaire que si vous souhaitez crire un endroit prcis dans le fichier 'O position indique la position de dbut d'criture dans le flux (fs) et SeekOrigin.Begin ' indiquant partir de quel endroit du flux commencer la recherche de position fs.Seek(position, SeekOrigin.Begin) 'Dans tous les cas, l'instruction ci-dessous crit l'intgralit de notre structure ' sous forme binaire dans le fichier bw.write(maPersonne) 'SURTOUT BIEN PENSER A FERMER LES FLUX ET WRITER bw().Close fs().Close

FIN

***Lire un enregistrement DEBUT


'Variable string stockant le chemin d'accs au fichier Dim myFile as String 'Dclarer la variable qui va recevoir les informations issues du fichier Dim maPersonne As personne 'Instancier un objet flux et un objet binaryReder 'Remarquez le FileAcces.Read pour la lecture Dim fs As FileStream = File.Open(myFile, FileMode.Open, FileAccess.Read, FileShare.None) 'Objet instanci partir de notre classe personnalise myBinaryreader Dim br As New myBinaryreader(fs) 'Si besoin d'aller lire un enregistrement prcis fs.Seek(position, SeekOrigin.Begin) 'Mmes paramtres que pour l'criture 'Sinon, vous ferez probablement un traitement en boucle de tous les enregistrements du fichier Do Until fs.Position = fs.Length 'Faire jusqu' ce que la position ' dans le flux soit gale la longueur total du flux myPersonne = br.readpersonne

- 357 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre 'Ici traitez les informations rcupres, par exemple pour afficher dans un listBox Loop 'SURTOUT BIEN PENSER A FERMER LES FLUX ET READER br().Close fs().Close

FIN

***Supprimer un enregistrement Au pralable il faut marquer l'enregistrement effacer en utilisant la procdure dcrite plus haut pour modifier un enregistrement. Pour cela on peut faire soit comme dans le TP en utilisant un champ supprim de notre structure que l'on marque True soit on crit un enregistrement vide par-dessus l'enregistrement que l'on veut effacer (en affectant Nothing au premier champ de l'enregistrement par exemple). En rsum, n'importe quoi qui nous permet de reprer au moment de la rcriture du fichier, que cet enregistrement ne doit pas tre recopi. Commencer par crer une copie du fichier original (Ne pas oublier de faire des tests sur l'existence du fichier).
Dim fi As New FileInfo(myFile) Dim newFile As String = myFile & .bck fi.CopyTo(newFile) 'Cr newFile et copie myFile dedans 'Ensuite on ouvre les 2 flux (1 en lecture et 1 en criture) et les 2 binary (-reader & -writer) Dim fsR As FileStream = File.Open(newFile, FileMode.Open, FileAccess.Read, FileShare.None) 'Ici le le paramtre FileMode.Create va faire que le fichier myFile va tre recr ' par-dessus l'ancien fichier et l'craser Dim fsW As FileStream = File.Open(myFile, FileMode.Create, FileAccess.Write, FileShare.None) 'Aprs l'instruction ci-dessus on a donc un fichier myFile qui existe mais qui est vide ' (sans avoir besoin de le supprimer d'abords et de le recrer ensuite), ' prt recevoir les donnes du fichier newFile. Dim br As New myBinaryreader(fsR) Dim bw As New myBinarywriter(fsW) 'On dimensionne une variable du type de notre structure Dim maPersonne As personne 'Faire une boucle sur le fichier en lecture Do Until fsR.Position = fsR.Length maPersonne = br.readpersonne 'Si marquage de maPersonne n'indique pas qu'il faut effacer l'enregistrement alors : bw.write(maPersonne) End If Loop 'Cette boucle va donc lire chaque enregistrement dans newFile, l'affecter dans ' une variable structure maPersonne et si cette variable ne contient pas - 358 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre ' d'indicateur de suppression, l'crire dans myFile. ' A la fin de la boucle myFile contient donc tous les enregistrements de newFile sauf ceux marqus supprimer. 'On oubli pas de fermer les flux br.Close() bw.Close() fsR.Close() fsW.Close() 'Et de supprimer le fichier newFile qui ne nous sert plus rien File.Delete(newFile)

ANNEXE : Comment calculer la valeur de la variable position utilise dans la mthode seek de notre FileStream. Nous avons besoin de 3 lments : la longueur totale du fichier en octets, la taille d'un enregistrement en octets, le numro de l'enregistrement que l'on souhaite modifier/remplacer/effacer. Longueur totale du fichier en octets:
Dim fi as New FileInfo(myFile) Dim longueurFichier As Long longueurFichier = fi.length 'Renvoi un entier long reprsentant la taille totale en octet

Taille d'un enregistrement en octets


Dim nbEnreg As Integer 'Au pralable il faut rcuprer le nombre d'enregistrements, ' par exemple lors d'une premire lecture du fichier squentielle, ' en incrmentant un compteur par programmation. Dim tailleEnreg as Integer tailleEnreg = longueurFichier / nbEnreg

Pointer directement dans le fichier l'octet voulu pour l'criture. Autrement dit, calculer la variable "position" pour pouvoir l'utiliser dans la mthode seek. Il suffit de multiplier le numro de l'enregistrement crire (le premier enregistrement doit avoir l'indice 0) par la taille d'un enregistrement. Ainsi par exemple, si j'ai un fichier de 120 octets avec 12 enregistrements (de 0 11), cela me fait des enregistrements de 10 octets de long. Si je veux aller modifier le 4me enregistrement, ma variable position sera gale 40 (4*10). Il ne me reste plus qu' dplacer le pointeur dans mon flux avant d'crire ma variable, en utilisant :
fs.Seek(position, SeekOrigin.Begin)

Remarque: Le code propos dans l'exemple permet de crer un enregistrement de 37 octets par ligne pour autant que l'on n'utilise pas de caractres accentus. Il faut ajouter 1 octet pour chaque caractre accentu utilis dans les zones de texte et ce malgr l'usage de la fonction PadRight(15). L'usage de Seek tel que dcrit dans le mme chapitre en devient impossible.
- 359 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Comment corriger cela ?

V-AD - Travailler sur les rpertoires

Il est probablement ncessaire de lire le chapitre VI sur les Classes avant de lire celui-ci.

Comment crer, copier effacer des rpertoires (ou dossiers)? Avec les classes DirectoryInfo et Directory. Avec la classe Path. Avec la classe Environment. Avec My.Computer.FileSystem en VS 2005. Avec les Classes de VisualBasic. Comment crer une boite de dialogue 'choix de rpertoire' en VB2005?

V-AD-1 - Classe DirectoryInfo et la Classe Directory du Framework


Pour travailler sur les dossiers (ou rpertoires), il faut au pralable taper: Imports System.IO La classe Directory est utilise pour travailler sur un ensemble de dossier, la Classe DirectoryInfo donne des renseignements sur un dossier particulier (Aprs instanciation ). La Classe Directory possde les mthodes suivantes.

- 360 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Exists CreateDirectory Delete Move GetCurrentDirectory SetCurrentDirectory GetDirectoryRoot GetDirectories GetFiles GetFilesSystemEntries GetLogicalDrives GetParent

Teste si le dossier existe. Cre le dossier Efface le dossier Dplacement de dossier Retourne le dossier de travail de l'application en cours Dfinit le dossier de travail de l'application. Retourne le dossier racine du chemin spcifi. Retourne le tableau des sous dossiers du dossier spcifi. Retourne les fichiers du dossier spcifi. Retourne fichier et sous dossier avec possibilit d'un filtre. Retourne les disques Retourne le dossier parent du dossier spcifi.

La Classe Directory est statique: on l'utilise directement.

Exemple: Afficher dans une ListBox les sous-dossiers (rpertoires) du rpertoire de l'application:
Dim SousDos() As String= Directory.GetDirectories(Directory.GetCurrentDirectory) Dim Dossier As String For Each Dossier In SousDos List1.Items.Add(Dossier) Next

Afficher dans une ListBox les sous-dossiers et fichiers. On utilise ici la rcursivit. Pour chaque sous-rpertoire, on appelle la routine elle mme.
Imports System.IO

Sub

AfficheTree ( ByVal myDir As String, ByVal Optional Niveau As Integer =0)

'Affiche le rpertoire myDir List1.Items.Add(New String (" ", niveau *2) & myDir)

'Affiche les fichiers - 361 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

For Each fichier As String

In Directory.GetFiles( myDir)

List1.Items.Add(New String (" ", niveau *2+2) & fichier) Next

'Parcourt les sous-rpertoires For each sousRepertoire As String In Directory.GetDirectories( myDir) 'Appel de manire rcursive 'AfficheTree pour afficher le contenu des sous rpertoires. AfficheTree (sousRepertoire, niveau+1) Next

End Sub

La variable niveau permet de pratiquer une indentation :New String (" ", niveau*2) produit une chane d'espace de longueur niveau *2. On appelle cette routine avec AfficheTree (c:\myprogramme", 0) 'viter "c:\" car c'est trs trs long!!! on le fait tous pour tester!!

Directory.GetFiles et Directory.GetDirectories acceptent un argument supplmentaire qui fait office de filtre. Directory.GetFiles( myDir, "*.txt") 'pour ne voir que les fichiers .txt.

Afficher dans une ListBox les excutables d'un rpertoire et de ses sous-rpertoires. Ici on utilise un argument supplmentaire qui permet de rechercher dans les sous rpertoires.
For Each file As String In Directory.GetFiles("c:\windows", "*.exe", System.IO.SearchOption.AllDirectries )) List1.Items.Add (file) Next

Gnial , non? quelle conomie de code!!

Afficher les disques prsents dans une ListBox .


Imports System.IO

For Each disque As String In Directory.GetLogicalDrives() List1.Items.Add (Disque) Next

- 362 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Afficher dans une ListBox les fichiers .jpg d'un rpertoire.


Dim dirInfo As New System.IO.DirectoryInfo ("C:\Nos Images\sicile") Dim file As System.IO.FileInfo Dim files() As System.IO.FileInfo = dirInfo.GetFiles("*.jpg") If (files IsNot Nothing) Then For Each file In files ListBox1.Items.Add(file.FullName) Next End If

Changer de rpertoire courant, effacer un sous-rpertoire.

Directory.SetCurrentDirectry (c:\mydirectory") 'change le rpertoire courant Directory.Delete (c:\otherdirectory") 'efface ce rpertoire s'il est vide Directory.Delete (c:\otherdirectory", True) 'efface ce rpertoire ses fichiers et sous-rpertoires.

Ah!! nostalgique du DEL *.*

La Classe DirectoryInfo possde les proprits suivantes.


Name Full Name Exists Parent Root Dossier parent Racine du dossier Nom du dossier (sans extension) Chemin et nom du dossier

La Classe DirectoryInfo n'est pas statique: il faut instancier un dossier avant de l'utiliser. Il y a aussi les mthodes suivantes:
Create, Delete, MoveTo CreateSubdirectory GetDirectories GetFiles GetFileSystemInfos Retourne les sous-dossiers Retourne des fichiers

Exemple:

- 363 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Afficher le rpertoire parent d'un dossier:


Dim D As DirectoryInfo D= New DirectoryInfo( MonDossier) MsgBox(D.Parent.ToString)

Crer un rpertoire:
Dim D As DirectoryInfo D= New DirectoryInfo( MonDossier) D.CreateSubdirectory("monsousdossier")

Effacer un rpertoire et ses sous-rpertoires:


Dim D As DirectoryInfo D= New DirectoryInfo( MonDossier) D.Delete(True)

V-AD-2 - Classe Path


La Classe statique Path a des mthodes simplifiant la manipulation des rpertoires: Exemple:
Si C= "C:\Windows\MonFichier.txt" retourne "C:\Windows

Path.GetDirectoryName(C)

Path.GetFileName(C) retourne "Monfichier.txt" Path.GetExtension(C) retourne ".txt" Path.GetFileNameWithoutExtension(C) retourne "MonFichier" Path.PathRoot(C) retourne "c:\"

Il y a aussi les mthodes GetFulPath ChangeExtension, Combine, HasExtension... GetFulPath: Transforme un chemin relatif en chemin absolu l'aide du rpertoire courant. Path.GetFullPath("monAppli.exe")) retourne "C:\MonRep\monAppli.exe" si le rpertoire courant est "C:\MonRep"

Combine: combine bout bout un chemin et un nom de fichier

- 364 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://plasserre.developpez.com/cours/vb-net/

Cours VB.NET par Philippe Lasserre

Path.Combine("C:\MonRep", "monAppli.exe")) retourne "C:\MonRep\monAppli.exe"

V-AD-3 - Classe DriveInfo


Nouveaut en VB 2005, la Classe DriveInfo : Pour un disque particulier, il faut instancier un DriveInfo avec la lettre du drive, ensuite, on a accs toutes les proprits du lecteur.
Dim di As New DriveInfo ("c:") di.Name retourne le nom VolumeLabel du lecteur ( "c:" ici)

Nom (label) du lecteur (en lecture criture)

DriveType ( Fixed, Removal, CDRom, Ram, Networl, Unknown) DriveFormat (NTFS, Fat32) TotalSize, TotalFreeSpace, AvailableFreeSpace

DriveInfo.GetDrives retourne tous les disques installes


For Each di As DriveInfo in DriveInfo.GetDrives() If di.IsReady Then 'il parait qu'il faut bien tester s'il est ready!! MsgBox (di.VolumeLabel) End if Next

V-AD-4 - Classe Environment


Donne des informations concernant l'environnement et la plate-forme en cours ainsi que des moyens pour les manipuler. Par exemple: les arguments de la ligne de commande, le code de sortie, les paramtres des variables d'environnement, le contenu de la pile des appels, le temps coul depuis le dernier dmarrage du systme ou le numro de version du Common Language Runtime mais aussi certains rpertoires .
Environment.CurrentDirectory Environment.MachineName 'donne le rpertoire courant : ou le processus en cours dmarre. 'Obtient le nom NetBIOS de l'ordinateur local.

Environment.OsVersion 'Obtient un Identificateur et le numro de version de la plate-forme en cours. Environment.SystemDirectory 'Obtient le chemin qualifi complet du rpertoire du systme

Environment.UserName 'Obtient le nom d'utilisateur de la personne qui a lanc le thread en cours.

La fonction GetFolderPath avec un argument faisant partie de l'numration SpecialFolder retourne le rpertoire d'un tas de choses:

- 365 Les sources prsentes sur cette page sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces source