Vous êtes sur la page 1sur 125

1

CT Mumbere Nguramo Augustin

Visual studio
Objectif du cours
Au cœur de ce cours, il poursuit un double objectif :
 constituer un vade-mecum de départ pour le langage Visual Basic, dans ses versions .net (mais
cela vaut tout aussi bien pour la version 6).
 présenter certains des concepts fondamentaux de la programmation objet,
 Nous offrir des méthodes et procédures appliquées en visual basic 2010.
 Nous familiariser à la programmation des objets visual basic net
 Créer la connexion aux bases des données avec visual basic .net
Visual Basic étant, comme tout langage moderne, richissime en fonctionnalités, il va de soi que les
quelques pages qui suivent ne remplaceront ni une consultation intelligente de l’aide du logiciel, ni le
recours à des ouvrages de référence d’une toute autre ampleur (mais d’un tout autre prix. On n’a rien
sans rien). En revanche, elles visent à brosser à grands traits les spécificités de Visual Basic, posant
ainsi les fondations d’un apprentissage technique plus approfondi.
Ajoutons que ce cours serait vide de sens sans les exercices – et les corrigés – qui l’accompagnent.
1. Particularités des langages objet
En quoi un langage objet diffère-t-il d’un langage normal ? On peut résumer l’affaire en disant qu’un
langage objet possède toutes les caractéristiques d’un langage traditionnel, avec deux grands aspects
supplémentaires. Donc, c’est un premier point, on peut tout à fait programmer dans un langage objet
comme on programmerait du Fortran, du Cobol ou du C. Selon le vieil adage, qui peut le plus peut le
moins. En pratique, cela voudrait dire négliger tout ce qui fait la spécificité d’un tel langage, comme -
entre autres - la prise en charge de l’environnement graphique Windows.
Cela implique également que toutes les notions fondamentales que le programmeur a mises en
pratique en algorithmique ou en programmation dans un langage traditionnel conservent leur validité
pleine et entière : comme tout langage, un langage objet ne connaît que quatre grands types
d’instructions : affectations de variables, tests, boucles et entrées / sorties (encore que, nous le verrons,
ce dernier type puisse y connaître de fait un certain nombre de bouleversements). Comme tout langage,
un langage objet connaît des variables de différents types (numérique, caractère, booléen), et des
variables indicées (tableaux). Donc, encore une fois, tout ce qui était vrai dans la programmation
traditionnelle demeure vrai dans la programmation objet. Mais celle-ci offre comme on vient de le dire
deux nouveaux outils, redoutables de puissance, à la trousse du programmeur.
1.1 Les Objets
1.1.1 Présentation

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


2
CT Mumbere Nguramo Augustin

La première particularité d’un langage objet est de mettre à votre disposition des objets. Etonnant,
non ? Un objet peut être considéré comme une structure supplémentaire d’information, une espèce de
super-variable. En effet, nous savons qu’une variable est un emplacement en mémoire vive, caractérisé
par une adresse – un nom – et un type (entier, réel, caractère, booléen, etc.). Dans une variable, on ne
peut stocker qu’une information et une seule. Même dans le cas où l’on emploie une variable indicée –
un tableau – les différents emplacements mémoire ainsi définis stockeront tous obligatoirement des
informations de même type. Un objet est un groupe de variables de différents types. Il rassemble ainsi
couramment des dizaines d’informations très différentes les unes des autres au sein d’une même
structure, rendant ainsi ces informations plus faciles à manier. A la différence de ce qui se passe avec
un tableau, les différentes variables d’un même objet ne sont pas désignées par un indice, mais par un
nom qui leur est propre. En l’occurrence, ces noms qui caractérisent les différentes variables au sein
d’un objet s’appellent des propriétés de l’objet. Conséquence, toute propriété d’objet obéit strictement
aux règles qui s’appliquent aux variables dans tout langage (type, taille, règles d’affectation…). On dira
également que plusieurs objets qui possèdent les mêmes propriétés sont du même type, ou encore
pour mieux frimer, de la même classe. Clââââsse ! A titre d’exemple, prenons un objet d’usage
courant : un ministre. Les propriétés d’un ministre sont : sa taille, son poids, son âge, son portefeuille, le
montant de son compte en Suisse, son nom, sa situation par rapport à la justice, etc. On peut retrouver
aisément le type de chacune de ces propriétés :
 le portefeuille, le nom, sont des propriétés de type caractère.
 la taille, le poids, l’âge, le compte en Suisse, sont des propriétés de type numérique.
 la situation judiciaire (mis en examen ou non) est une propriété booléenne.
1.1.2 Syntaxe
La syntaxe qui permet de désigner une propriété d’un objet est :
objet.propriété
Par exemple, nous pouvons décider que le montant du compte en Suisse du ministre Duchemol s’élève
modestement à 100 000 euros. Si la propriété désignant ce compte pour les objets de type (de classe)
ministre est la propriété CompteSuisse, on écrira donc l’instruction suivante :
Duchemol.CompteSuisse = 100 000
Pour affecter à la variable Toto le montant actuel du compte en Suisse du ministre Duchemol, on
écrira :
Toto = Duchemol.CompteSuisse
Pour augmenter de 10 000 euros le montant du compte en Suisse de Duchemol, on écrira :
Duchemol.CompteSuisse = Duchemol.CompteSuisse + 10 000

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


3
CT Mumbere Nguramo Augustin

Et, vraiment juste histoire d’utiliser une propriété booléenne, et parce que Duchemol n'est pas le seul
objet de la classe ministre :
Pasqua.MisEnExamen = True
On répète donc qu’hormis ce qui concerne la syntaxe, l’usage des propriétés des objets ne se
différencie en rien de celui des variables classiques.
1.1.3 Méthodes
Les langages objet ont intégré une autre manière d’agir sur les objets : les méthodes. Une méthode est
une action sur l’une – ou plusieurs - des propriétés d’un objet. Une méthode va supposer l’emploi d’un
certain nombre d’arguments, tout comme une fonction. On trouvera donc des méthodes à un argument,
des méthodes à deux arguments (plus rares), et aussi des méthodes sans arguments. Ce n’est pas le
seul point commun entre les méthodes et les fonctions. On sait qu’une fonction peut : soit accomplir une
tâche impossible si elle n’existait pas, soit accomplir une tâche possible par d’autres moyens, mais
pénible à mettre en œuvre.
De la même manière, certaines méthodes accomplissent des tâches qui leur sont propres, et qui ne
pourraient pas être accomplies si elles n’existaient pas. D’autres méthodes ne sont là que pour soulager
le programmeur, en permettant de modifier rapidement un certain nombre de propriétés. Par exemple,
reprenons le cas notre ministre. Une méthode pourrait être AugmenterPatrimoine, qui supposerait un
argument de type numérique. On pourrait ainsi écrire: Duchemol.AugmenterPatrimoine(10 000)
Ce qui aurait en l’occurrence exactement le même effet que de passer par la propriété
correspondante :Duchemol.CompteSuisse = Duchemol.CompteSuisse + 10 000
Pour terminer sur ce sujet, il faut bien faire attention à une chose lorsqu’on utilise des objets.
 certains objets sont fournis par le langage de programmation lui-même. Il s’agit en particulier
(mais pas seulement) de ce qu’on appelle des contrôles, c’est-à-dire d’objets possédant pour la plupart
une existence graphique ; ce sont des éléments de l’interface Windows. Pour tous ces objets que le
programmeur utilise alors qu’ils ont été créés par d’autres, les propriétés et les méthodes ne s’inventent
pas : chaque type (chaque classe) d’objet possède ses propres méthodes et arguments, qu’il s’agit
donc de connaître pour utiliser l’objet en question. Quitte à insister, je répète : connaître, et non
inventer.
 d’autre part, un langage objet ouvre la possibilité de créer soi-même ses propres objets, et donc
de programmer leurs propriétés et leurs méthodes. On se situe alors à tout autre niveau, celui de la
programmation objet proprement dite. Nous n’aborderons ce domaine que pour mémoire, tout à la fin
du cours. Ne soyons pas prétentieux, et commençons par le commencement.
En attendant, l’essentiel de nos efforts va consister à comprendre comment on peut se servir des objets
(en particulier des contrôles) écrits par d’autres. Et pour ceux qui trouveraient- ils auraient raison - que

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


4
CT Mumbere Nguramo Augustin

ces quelques lignes sont loin d'épuiser le sujet, je leur donne rendez-vous au dernier chapitre de ce
cours.
1.2 Procédures événementielles
On en arrive à la deuxième grande possibilité supplémentaire des langages objet par rapport
aux langages traditionnels. En PASCAL ou en C, par exemple, une application est constituée d’une
procédure principale contenant la totalité du code (y compris par l’appel indirect à des sous-
programmes). Les instructions qu’elle contient sont exécutées les unes après les autres, jusqu’à la fin
(je passe pudiquement sous silence l’improbable hypothèse d’un arrêt prématuré pour cause d’erreur).
Le point fondamental est que dans un tel langage, l’ordre d’exécution des procédures et des sous-
procédures est entièrement fixé d’avance par le programmeur lui-même, par le biais des instructions
d’appel des sous-procédures. Par ailleurs, et ce n’est pas un hasard, ces procédures portent des noms
arbitraires fixés par le programmeur, hormis le cas particulier de la procédure principale, qui se doit de
porter un nom particulier, fixé par le langage (généralement, Main).
Dans un langage objet, on peut, si on le désire, conserver intégralement ce mode de fonctionnement.
Mais ce n’est plus le seul possible.
En effet, dans un langage objet, il n’y a donc plus à proprement parler de procédure principale ; en tout
cas, l’existence d’une procédure principale n’a rien d’obligatoire.
Chaque procédure est liée à la survenue d’un événement sur un objet, et sera donc automatiquement
exécutée lorsque cet événement se produit. Le nom de la procédure est alors, de manière obligatoire, le
nom de la combinaison objet-événement qui la déclenche.
 On vient de parler des objets, et en particulier des contrôles. Répétons qu’un contrôle est un
des éléments de l’interface graphique de Windows, éléments que VB met à la disposition du
programmeur pour qu’il constitue ses propres applications. Ainsi, les contrôles les plus fréquents sont :
la feuille, le bouton de commande, la liste, la case à cocher, le bouton radio, etc.
 Quant aux événements, ils peuvent être déclenchés par l’utilisateur, ou par déroulement du
programme lui-même. Les événements déclenchés par l’utilisateur sont typiquement : la frappe au
clavier, le clic, le double-clic, le cliquer-glisser. Les événements déclenchés par le code sont des
instructions qui modifient, lors de leur exécution, une caractéristique de l’objet ; par exemple, le
redimensionnement, le déplacement, etc.
Résumons-nous. Un petit dessin vaut parfois mieux qu’un grand discours :
Le lien entre l'objet, la survenue de l’événement et le déclenchement de la procédure est établi par
le nom de la procédure lui-même. Ainsi, le nom d’une procédure événementielle répond à une syntaxe
très précise :
Par exemple, la procédure suivante :

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


5
CT Mumbere Nguramo Augustin

Private Sub Machin_Click()



End Sub
Se déclenche si et seulement si l’utilisateur clique sur l’objet dont le nom est "Machin". Si on prend le
problème dans l’autre sens : si je suis programmeur, et que je veux qu’il se passe ceci et cela lorsque
l’utilisateur clique sur le bouton appelé "Go", je dois créer une procédure qui s’appellera obligatoirement
Sub Go_Click() et qui contiendra les instructions "ceci" et "cela".
Moralité : Ecrire un programme qui exploite l’interface Windows, c’est avant tout commencer par définir :
 quels sont les objets qui figureront à l’écran
 ce qui doit se passer lorsque l’utilisateur agit sur ces objets via la souris ou le clavier.
A la différence d’un programme traditionnel, les procédures liées aux différents événements possibles
ne seront donc pas toujours exécutées dans le même ordre : tout dépend de ce que fera l’utilisateur.
Mais bien sûr, à l’intérieur de chaque procédure, les règles traditionnelles de programmation restent
vraies. C’est déjà ça de pris.
Si vous avez bien compris ce qui précède, vous avez accompli 80 % de la tâche qui vous attend en ce
second semestre. Non, ce n’est pas de la démagogie. J’ai bien dit : « si vous avez bien compris ».
2. Compilation et Interprétation
Lorsqu’on écrit une application Visual Basic (on ne traite ici que du cas standard, il en existe d’autres,
mais qui sortent du sujet du cours), on crée donc un ensemble d’objets à partir des classes proposées,
et on définit les procédures qui se rapportent à ces objets. Lorsqu’on sauvegarde cette application,
Visual Basic va créer un certain nombre de fichiers. Pour l’essentiel :
 un fichier dit Projet comportant l’extension *.vbp (les plus fûtés d’entre vous reconnaîtront là
l’acronyme de Visual Basic Project. Ils sont décidément très forts, chez Microsoft). Ce fichier rassemble
les informations générales de votre application (en gros, la structure des différents objets Form, qui sont
le squelette de toute application)
 un fichier par objet Form créé, fichier portant l’extension *.frm. Ne soyez pas si impatients, vous
saurez très bientôt ce qu’est un objet Form. Toujours est-il que si votre application comporte six Form,
vous aurez en plus du fichier "projet", six fichiers "Form" à sauvegarder. Chacun de ces fichiers
comporte les objets contenus par la "Form", ainsi que tout le code des procédures liées à ces objets.
 éventuellement, d'autres fichiers correspondant à d'autres éléments de l'application, éléments
dont nous parlerons plus tard (modules, modules de classe.
La destruction de l’un quelconque de ces fichiers vous portera naturellement un préjudice que l’on ne
saurait sous-estimer.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


6
CT Mumbere Nguramo Augustin

D’autre part, je tiens à signaler dès maintenant qu’il est extrêmement périlleux de procéder à des
"copier – coller" de Form, car le fichier structure (vbp) possède une tendance affirmée à se mélanger
complètement les crayons en pareil cas.
Conclusion, on crée un nouveau projet à chaque nouvelle application, et on ne déroge jamais à cette
règle d’or. Il ne doit jamais y avoir deux projets ouverts en même temps dans la même fenêtre VB, sous
peine de graves représailles de la part du logiciel.
Tant que votre projet est ouvert sous cette forme d’une collection de fichiers vbp et frm, vous pouvez
naturellement l’exécuter afin de le tester et de jouer au célèbre jeu des 7 777 erreurs. Lors de
l’exécution, le langage est alors ce qu’on appelle « compilé à la volée ». C’est-à-dire que VB traduit vos
lignes de code au fur et à mesure en langage machine, puis les exécute. Cela ralentit naturellement
considérablement l’exécution, même si sur de petites applications, c’est imperceptible. Mais dès que ça
commence à grossir…
Voilà pourquoi, une fois l’application (le "projet") mis au point définitivement, VB vous propose de le
compiler une bonne fois pour toutes, créant ainsi un unique fichier *.exe. Ce fichier contient cette fois à
lui seul l’ensemble de votre projet, form, code, et tutti quanti. Et il peut naturellement être exécuté sans
l’ouverture – donc la possession - préalable de Visual Basic (à un détail près, que nous réexaminerons
plus loin dans ce cours).
Un projet terminé est donc un projet compilé.
3. L’interface VB
Je ne me lancerai pas ici dans la description exhaustive de l’interface très riche (trop ?) de ce langage.
Vous pourrez trouver ce type de descriptif dans n’importe quel manuel du commerce. Cette partie a
pour seul but de signaler les points importants.
 le langage possède un vérificateur de syntaxe en temps réel. C'est-à-dire que l’éditeur de code
détecte les instructions non légitimes au fur et à mesure que vous les entrez, et il les signale par un
texte mis en rouge, et pour faire bonne mesure, par un message d’erreur. Il est donc impossible de
laisser traîner des erreurs de syntaxe en VB, ce qui je n’en doute pas, rendra les amateurs de langage
C inconsolables. Qu’ils se rassurent toutefois, VB ne corrige ni les fautes de logique, ni les fautes
fonctionnelles. Il reste donc tout de même de quoi se faire plaisir.
 De même, le code est immédiatement mis en couleurs par l’éditeur.
o le bleu correspond aux mots réservés du langage (instructions, mots-clés...)
o le vert correspond à un commentaire (toute ligne commençant par un guillemet simple – quote
– est considérée comme un commentaire).
 tout mot reconnu par l'éditeur (nom d'objet, instruction) voit sa première lettre transformée
automatiquement en majuscule.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


7
CT Mumbere Nguramo Augustin

 tout nom d’objet suivi d’un point voit s’afficher une liste déroulante contenant l’intégralité des
propriétés et des méthodes disponibles pour cet objet. A contrario, cela signifie qu’un objet ne faisant
pas apparaître une liste déroulante dans le code est un objet non reconnu (qui n’existe pas). De même,
une instruction ne prenant pas automatiquement de majuscule initiale est une instruction non reconnue.
 il est possible de réaliser une exécution pas à pas via la commande appropriée du menu.
 il est possible d’insérer des points d’arrêt pour faciliter le déboguage.
 dans le cas d’un pas à pas comme d’un point d’arrêt, il est possible de connaître la valeur
actuelle d’une variable en pointant (sans cliquer !) la souris sur une occurrence de cette variable dans le
code.
Fenêtre d'une application VB en exécution Pas à Pas

On a le choix entre: -Nouveau projet... -Ouvrir un projet.. -Projets récents Pour créer un nouveau projet Visual
Basic, il faut choisir 'Nouveau projet' dans le menu démarrage ou passer par le menu 'Fichier' puis 'Nouveau
Projet'. La fenêtre suivante s'ouvre:

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


8
CT Mumbere Nguramo Augustin

Il faut choisir 'Application Windows Forms' ou 'Application WPF'. On peut aussi choisir 'Modèle en ligne' à gauche
pour avoir une liste (courte) de modèle de programme. On a donc le choix (à partir de VB 2008) de créer
l'interface utilisateur: En Windowsforms (basé sur GDI+), interface habituelle, bien connue ou en WPF interface
vectorielle élaborée n'existant pas avant VB 2008. Choisir l'icône '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
défaut ' C:\Documents and Settings\Nom Utilisateur\Mes documents\Visual Studio 2010\ Projects\MonProjet')
C:/Utilisateurs/Philippe/Mes document/ Visual Studio 2010/Projet sous Windows 7 Avec l'explorateur:
Documents=> Visual Studio 2010=>Projet On remarque qu'on aurait pu choisir 'Application WPF', on y reviendra.
2-1-a. Fenêtre Projet

Vous pouvez ancrer les fenêtres correspondant aux onglets aux extrémités de la fenêtre de l'IDE ou les déplacer
n'importe où sur le Bureau (sur un second moniteur aussi). Ci-dessus la fenêtre de Form2 est détachée de l'IDE
(il suffit de cliquer déplacer l'onglet).

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


9
CT Mumbere Nguramo Augustin
2-1-b. Créer ou ajouter une fenêtre 'WinForm' Dans un nouveau projet, créer ou ajouter une fenêtre 'WinForm':
Pour ajouter une fenêtre (un formulaire) Menu 'Project', 'Ajouter un formulaire Windows' ( 'Add a WindowsForms'
en version anglaise ):

Cela permet d'ajouter un formulaire mais aussi un module standard, un module de Classe. Cliquer sur Windows
Form, une fenêtre (un formulaire) Form2 vide apparaît (Form1 était le nom du premier formulaire). Il y a des
fenêtres toutes faites pour accélérer le travail (les templates) comme les 'Ecran de démarrage' les 'Formulaire
Explorateur'...
2-1-c. Le concepteur (Designer) C'est la zone permettant de dessiner l'interface utilisateur: les fenêtres,
controles.. La zone de travail se trouve au centre de l'écran: C'est l'onglet Form1.vb[Design] ci-dessous qui
donne donc accès au dessin de la feuille (du formulaire); on peut ajouter des contrôles, modifier la taille de ces
contrôles..
Modifier les propriétés d'un contrôle ou du formulaire. Quand un formulaire ou un contrôle est sélectionné
dans la fenêtre Design, ses propriétés sont accessibles dans la fenêtre de 'Propriétés' (Properties) à droite en
bas: Ici ce sont les propriétés du contrôle 'Button1' qui sont visibles (Text, Location..) on peut modifier
directement les valeurs.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


10
CT Mumbere Nguramo Augustin

Considérant que vous savez normalement déjà allumer un PC et l'éteindre, utiliser une souris et un
clavier de préférence, et que vous êtes motivé pour écrire des programmes en Visual Basic.NET, que
ce soit pour le plaisir ou le travail, vous êtes donc prêt à débuter la programmation en VB.NET ! En plus
d'un PC, il vous faut un exemplaire de Visual studio.NET. Dans le cas où vous douteriez de vos
capacités à apprendre la programmation, souvenez-vous d'Albert Einstein (le célèbre physicien qui a
inventé la théorie de la relativité). Un de ses instituteurs avait déclaré qu'il apprenait si lentement qu'il
était sans doute attardé ! Peut-être en réponse à cela, Albert Einstein a dit un jour : " L'imagination est
plus importante que le savoir ". Certaines personnes soutiennent qu'il aurait aussi dit : " Si mon
instituteur est si intelligent, où est son prix Nobel ? " (Ce qui reste à vérifier !!) Avec de l'imagination, un
ordinateur et VS.NET (Visual Studio qui est l'outil de développement), vous êtes fin prêt pour le grand
saut dans le monde de la programmation…

I-B. A la découverte de Visual Basic


Le Visual Basic.NET est la dernière version de Visual Basic. Pour comprendre les changements que
Microsoft a apportés au langage Visual Basic dans cette version, il faut comprendre ce que Microsoft
tente d'accomplir avec le concept .NET. Il existe des centaines de langages de programmation
différents pour résoudre différentes tâches. Un gros problème est que ces langages de programmation
ne sont pas conçus pour travailler ensemble. Même les langages de programmation d'un même éditeur,
comme Microsoft, ont des problèmes à travailler ensemble. Les versions précédentes de Visual C++ et
Visual Basic enregistrent les données, telles que chaînes et nombres, de façon différente. Du fait qu'il
est très fastidieux de découvrir tous les moyens particuliers employés par chaque langage de
programmation pour enregistrer et manipuler les chaînes et les nombres, la plupart des programmeurs
écrivent leurs programmes à l'aide d'un seul langage de programmation, même lorsqu'un second
langage convient mieux pour résoudre un problème particulier. Par exemple, le Visual Basic est très
utile pour faire des applications de bureautique, le C++ est plus puissant que le Basic et donc à utiliser

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


11
CT Mumbere Nguramo Augustin

pour les très gros programmes. Quant au Java, il est utilisé dans la conception de sites Internet
sophistiqués. Microsoft a donc développé quelque chose baptisé " .NET Framework ", qui agit comme
couche intermédiaire entre le système d'exploitation (Windows) et tous les programmes que vous
écrivez. Cela résout deux problèmes majeurs. Le premier problème résolu par le .NET est la possibilité
pour différents langages de coopérer entre eux. Au lieu d'octroyer à chaque langage un accès direct au
système d'exploitation de l'ordinateur, l'infrastructure .NET Framework force les langages qui ont été
conçus pour travailler avec .NET (comme VB.NET) à stocker leurs chaînes et nombres exactement de
la même manière. De la sorte, vous pouvez écrire un programme utilisant différents langages sans vous
préoccuper du fait qu'un langage stocke et manipule les données de façon différentes d'un autre
langage de programmation. Le second problème résolu par le .NET Framework concerne la distribution
du programme. Actuellement, la plupart des utilisateurs exécutent des programmes stockés sur leurs
disques durs… Bref passons enfin aux choses plus intéressantes !

I-C. Les inconvénients du Framework


Tout ordinateur se plante périodiquement et la mise en place de nouvelles technologies résorbe
rarement les faiblesses des technologies déjà mises en place. Aussi promoteur que soit .NET, ne vous
laissez pas abuser par le marketing de Microsoft… Le .NET Framework, étant un logiciel est sujet à
toutes sortes de bugs qui font de l'usage de l'ordinateur une expérience frustrante. D'autant plus que
cette technologie n'est disponible que pour les versions récentes de Windows (XP et suivant). Si vous
souhaitez écrire des programmes pour Linux ou Windows versions antérieures, vous devez passer par
la version 6.0 de Visual Basic. Bon c'est fini pour l'introduction, passons au codage pur ! Mais avant
tout, regardons d'un peu plus près, les structures utilisées dans la technologie .NET.
II. Structure du programme
II-A. Présentation des objets
Déjà il faut savoir ce qu'est un objet en programmation. Prenons un exemple de la vie courante. Une
voiture est un objet. Jusqu'à présent, rien de bien compliqué. Cette voiture a des phares, un volant, des
pédales, un capot, une couleur, une marque… Ce sont des propriétés de la voiture. De plus, toutes ses
propriétés ont des valeurs. Par exemple, la couleur de la voiture peut être bleue ou rouge (bleu et rouge
sont les valeurs de la propriété " couleur "). En programmation c'est un peu pareil : La voiture fait partie
d'un grand ensemble qui est " les voitures ". " Les voitures " représentent la " class " en programmation.
L'objet est " ma voiture ". Un objet est créé suivant un modèle qu'on appelle une Class.

Sélectionnez
'exemple pour créer 'MaVoiture' à partir de la class " LesVoitures "

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


12
CT Mumbere Nguramo Augustin
Dim MaVoiture As New LesVoitures
MaVoiture a été instanciée (par le mot clé 'new'). Utilisons quelques propriétés de MaVoiture :
Sélectionnez
'propriétés de MaVoiture
MaVoiture.Couleur = " Bleue " 'la couleur est bleue
MaVoiture.Phares = 2 'elle possède 2 phares
Les chaînes de caractères (texte comme 'Bleue') sont entre guillemets. Les nombres ne sont pas entre
guillemets.
MaVoiture possède aussi des méthodes. Par exemple, elle roule : c'est une méthode.
Sélectionnez
'Méthode de MaVoiture
MaVoiture.Roule() ' la voiture roule
Une méthode est caractérisée par des parenthèses. Mais une méthode peut demander des paramètres.
Par exemple, à quelle vitesse doit rouler MaVoiture ? Un paramètre est un renseignement envoyé à la
méthode.
Sélectionnez
'Méthode avec paramètre
MaVoiture.Roule(100) 'MaVoiture va rouler à 100 Km/h
Dans cet exemple, MaVoiture est un objet, Roule est une méthode et 100 est un entier (Integer).
On peut aussi fournir plusieurs paramètres :
Sélectionnez
'Méthodes avec plusieurs paramètres
MaVoiture.Roule(100, avant) 'Ici elle va rouler à 100 Km/h en avant !
Enfin, un objet (ici MaVoiture), peut avoir des événements. Dans notre exemple, MaVoiture peut tomber
en panne, démarrer ou s'arrêter. 'TomberEnPanne', 'Demarrer' ou 'Arrêter' sont des événements.
Sélectionnez
'Evenement de MaVoiture
MaVoiture.Roule(100, avant) 'Ici elle va rouler à 100 Km/h en avant !
'MaVoiture_Demarrer va donc se déclencher à cause de l'appel de la méthode 'Roule'
Si on récapitule, un objet est donc dérivé d'une Class. Un objet possède des propriétés, des méthodes
et des événements (et d'autres choses…)

II-B. Instructions et procédures


Une instruction permet d'effectuer une opération, une déclaration, une définition.
Sélectionnez
Dim A As Integer ' est une instruction (de déclaration)
A=1 ' est aussi une instruction qui effectue une assignation.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


13
CT Mumbere Nguramo Augustin

C'est habituellement une 'ligne de code exécutable'. Une instruction est exécutée lorsque le programme
marche. Plusieurs instructions peuvent se suivre sur une même ligne, séparées par ':'
Sélectionnez
Dim B As String : B="Bonjour"
Si une ligne est très longue, on peut passer à la ligne grâce à '_'
Sélectionnez
Dim B As String = "Bonjour monsieur ": C= _"le professeur"
'Equivaut à :
Dim B As String = "Bonjour monsieur ": C= "le professeur"
Quand un programme tourne, les instructions sont effectuées ligne après ligne.
Sélectionnez
1 Dim B As String
2 B="Bonjour"
3 Dim A As Integer
4 A= 3
5 A= A + 1
La ligne 1 est exécutée puis la ligne 2 puis la 3, la 4... Bien que l'on puisse avoir des numéros de ligne,
ils ne sont plus utilisés actuellement et ils sont invisibles. Pour mettre des commentaires dans un
programme, on le fait précéder d'une apostrophe. À la différence d'une instruction, le commentaire ne
sera pas exécuté.
Sélectionnez
'Ceci est un commentaire, ce n'est pas une instruction.
Une procédure est un ensemble d'instructions qui effectue une fonction précise. En Visual Basic.NET, il
existe deux sortes de procédures : les 'sub' et les 'function' . Les 'sub' commencent par le mot clé 'sub'
puis finissent par 'end sub' et ne retournent aucune valeur contrairement aux fonctions qui débutent par
'function' puis finissent par 'end function' et qui retournent une valeur précise.

Sélectionnez
'Exemple de sub
Sub DemarrerProgramme()
'la procédure ne retournera aucune valeur.
End Sub

'Exemple de fonction
Function CalculerPi()
'la fonction va retourner la valeur de PI après une série de calculs…
End Function

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


14
CT Mumbere Nguramo Augustin

Pour appeler une fonction ou un sub on utilise le mot clé " Call ". Il n'est pas obligatoire et est devenu
inutile en .Net (c'est un reste de VB6).

Sélectionnez
'Exemple d'appel de fonction ou sub
Call DemarrerProgramme 'déconsillé
CalculerPi() 'OK
'Ces deux appels sont identiques

II-C. Les modules


Les modules sont des feuilles (ou formulaires) qui contiennent plusieurs procédures et/ou fonctions. Un
module commence toujours par le mot clé 'Module' et finit par 'End Module'
Les modules de classe
Les modules de classe sont une extension extrêmement puissante des simples modules. En effet, nous
approchons ainsi quelque peu de la POO (Programmation orientée Objet), telle que celle pratiquée
avec C++, C#, Java, et autre Eiffel. Visual Basic est la la fois plus simple et moins puissant que ces
langages, mais attention : En effet, même si vous avez déjà quelque peu bidouillé avec VBA, la
création, l'utilisation et la rationnalisation des modules de classe demande bien plus de pratique, et si
vous n'êtes pas un programmeur véritablement aguerri, et en tout cas avec une excellente
connaissance des concepts tels que Procédures paramétrées, variables typées, variables globales,
visibilités des fonctions et des procédures, il y a bien des chances pour que vous considériez cet article
comme du chinois, ou tout du moins ne compreniez pas vraiment l'utilité de ce concept de classe.
Accrochez-vous : C'est parti !
Avant de commencer l'étude des classes à proprement parler, nous allons d'abord créer une variable
d'un type particulier, qui contient des sous-variables.
Allez dans un module normal (pas un module de classe), et écrivez directement :
Type Coordonnee
Nom As String
Prenom As String
Age As Integer
End Type
On ne peut pas mettre ce code dans une procédure. Il faut que ce soit en en-tête de Module. Il s'agit
d'une variable Coordonnee compoosée de 3 sous variables.
Créez maintenant juste plus bas un module, comme ceci :

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


15
CT Mumbere Nguramo Augustin

Sub Remplissage()
Dim MonCopain As Coordonnee

MonCopain.Nom = "Dupont"
MonCopain.Prenom = "Jean"
MonCopain.Age = 40

MsgBox MonCopain.Prenom
End Sub
Voilà comment on peut ainsi créer des variables composées : C'est déjà une sorte d'objet. Passons
maintenant aux choses sérieuses !
Nous allons d'abord créer une Classe, grace à l'insertion d'un nouveau module de classe :
Imaginons le concept d'un simple bistrot
Insertion/Module de classe (et pas nouveau module, sinon, ce n'est pas un module de classe)
Le sauvegarder sous Bistrot
Dans ce module, installer le code (Minable, j'en conviens) suivant :
Public NombreClient
Sauvegardez.
Voici notre première classe réduite à sa plus simple expression : En effet : Elle ne comporte ni
procédure ni fonction, ni rien d'autre qu'une simple variable : NombreLitre
Nous allons la tester. La manière la plus simple consiste à créer un module (normal cette fois), et à y
insérer le code suivant : Il s'agit de créer une variable de type Bistrot (As New Bistrot). C'est comme une
variable normale, mais c'est cette fois une variable dite OBJET, c'est à dire qu'elle sera d'une structure
beaucoup plus complexe qu'un type de données String, ou Single qui sont considérées comme des
variables de type SCALAIRES (Simples)
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot
End Sub
Exécutez cette procédure TesterLaClasse : Il ne se passe rien, mais il n'y a pas d'erreur.
Nous allons maintenant placer la valeur 5 dans cette variable NombreLitre, et l'afficher à l'aide d'un
MsgBox. Nous pouvons nous permettre cela uniquement grâce au fait d'avoir déclaré NombreLitre en
Public, sinon, une erreur de compilation aurait eu lieu :
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


16
CT Mumbere Nguramo Augustin

CafeDeLaGare.NombreClient = 5
MsgBox CafeDeLaGare.NombreClient
End Sub
Plusieurs instances d'une classe
Ouvrons un bistrot : Le Café de la Gare
De cette même façon, il est donc possible de déclarer 2 INSTANCES de Bistrot, chacune étant
indépendante de l'autre, comme ceci :
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot
Dim ChezGaston As New Bistrot
CafeDeLaGare.NombreClient = 5
ChezGaston.NombreClient = 10
MsgBox CafeDeLaGare.NombreClient' 5
MsgBox ChezGaston.NombreClient' 10
End Sub
Méthodes simples
Cuisinons
Maintenant, il est possible de créer des Subs directement dans la Classe. Modifiez votre module de
classe Bistrot comme ceci :
Public Sub Cuisiner()
MsgBox "Je cuisine"
End Sub
Et dans votre autre module de test TesterLaClasse, faites un appel :
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot
CafeDeLaGare.Cuisiner ' Affichera "Je cuisine"
End Sub
Nous avons pu appeler ce sub grâce au fait qu'il est déclaré comme Public, sinon, une erreur de
compilation serait survenue. Un Sub dans un module de classe est appelé alors une METHODE.
Méthodes paramétrées
Cuisinons un bon repas
Il est possible de paramétrer la méthode comme ceci :

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


17
CT Mumbere Nguramo Augustin

Modifications à faire dans le module de classe Bistrot (Appelons désormais ce module de classe
simplement "La classe bistrot") :
Public Sub Cuisiner(QuelRepas)
MsgBox "Je cuisine " & QuelRepas
End Sub
Modifications à faire dans TesterLaClasse :
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot
CafeDeLaGare.Cuisiner "Un steack"
CafeDeLaGare.Cuisiner "Une omelette"
End Sub
Constatez l'absence de parenthèses. Vous allez donc maintenant pouvoir appeler la méthode Cuisiner
de la classe Bistrot avec un paramètre.
Fonctions (Sortes de méthodes avec renvoi de valeurs)
Mettons les tables en place
On peut également placer des fonctions dans les classes. Ajoutez la fonction PreparerLesTables() dans
la classe Bistrot :
Public Function PreparerLesTables()
PreparerLesTables = "Les tables sont préparées"
End Function
Cette fonction s'appelle comme une fonction normale. A nouveau, pour qu'elle puisse s'appeler depuis
ailleurs que dans un MEMBRE de la classe elle-même, il est nécessaire de la précéder de Public. Un
membre est une fonction, une procédure, une variable ou une propriété de la classe (Nous n'avons pas
encore abordé les propriétés)
Modifiez TesterLaClasse pour appeler cette nouvelle fonction :
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot
MsgBox CafeDeLaGare.PreparerLesTables()
End Sub
Constatez l'apparition des parrenthèses vides indispensables en cas d'appel à une fonction, par
opposition aux procédures Sub. Constatez également l'obligation du MsgBox. En effet, on DOIT
récupérer la valeur "Les tables sont préparées" :
CafeDeLaGare.PreparerLesTables()

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


18
CT Mumbere Nguramo Augustin

donnerait une erreur. On aurait pu également stocker cette valeur "Les tables sont préparées" dans une
variable, comme ceci :
Dim EtatDesTables
EtatDesTables = CafeDeLaGare.PreparerLesTables()
Fonctions paramétrées
Mettons les tables en place plus consciencieusement !
Imaginons la même fonction mais avec 3 paramètres : Le genre de la nappe, sa couleur, et s'il faut
mettre des bougies. Modifiez Bistrot.PreparerLesTables comme suit :
Public Function PreparerLesTables(GenreDeNappe, CouleurNappe, MettreBougie)
Dim JePrepare
JePrepare = "Je met des nappes en " & GenreDeNappe
JePrepare = JePrepare & " " & CouleurNappe & "s "
If MettreBougie = True Then
JePrepare = JePrepare & "avec une bougie"
End If
PreparerLesTables = JePrepare
End Function
Et appelez maintenant cette nouvelle fonction comme ceci :
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot
MsgBox CafeDeLaGare.PreparerLesTables("papier", "rouge", True)
End Sub
Il va afficher :
Je met des nappes en papier rouges avec une bougie

Propriétés
Property Let
Mettons de la musique dans le café de la gare
Les propriétés permettent une certaine syntaxe d'appel aux membres de Bistrot.
Corrigez la classe Bistrot comme suit :
Property Let Musique(QuelGenre)
End Property
Les Property sont par défaut Publiques : On pourra donc les appeler sans problème depuis l'extérieur.
QuelGenre est un paramètre OBLIGATOIRE. On ne peut PAS créer une property sans paramètre.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


19
CT Mumbere Nguramo Augustin

Nous verrons plus tard comment mettre plusieurs paramètres tels que Property Let
Musique(QuelGenre, QuelVolume) par exemple.
Le Let veut dire qu'il s'agit d'une propriété qui va ACCUEILLIR un paramètre lors de l'appel. Ce qui veut
dire que cette propriété sera dite EN ECRITURE, puisqu'on va pouvoir ECRIRE dedans, comme ceci :
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot
CafeDeLaGare.Musique = "Jazz"
End Sub
Voilà. En exécutant ce code, il ne va pas se passer grand chose, c'est le moins qu'on puisse dire : En
effet, Il se contente d'envoyer "Jazz" dans le paramètre QuelGenre.
Le but étant bien évidemment de traiter ce paramètre, en le gardant en mémoire, par exemple en
mémorisant le résultat dans une variable locale comme ceci :
Dim GenreMusique
Property Let Musique(QuelGenre)
GenreMusique = QuelGenre
End Property
Peut-on utiliser une Property Let avec plus d'un paramètre ?
On peut effectivement se poser la question puisque l'appel à une Property Let à comme forme
NomDeLaClasse.NomDeLaPropertyLet = QuelqueChose
Et bien oui, on peut, et l'appel se fera alors comme ceci :

Prenons l'exemple d'une Property Let qui allume le bistrot (Un certain nombre de lustres, de chandelles,
le tout à une certaine puissance) :
Property Let Allumer(Lustre, chandelle, Puissance)
MsgBox "Lustre : " & Lustre
MsgBox "Chandelle : " & chandelle
MsgBox "Puissance : " & Puissance
End Property
Qui s'appelle de la manière suivante :

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


20
CT Mumbere Nguramo Augustin

Sub MettreLaLumiere()
Dim CafeDesAmis As New Bistrot
CafeDesAmis.Allumer(2, 10) = "60 Watts"
End Sub
Différence entre variable et Property
Mais alors, on est en droit de se demander pourquoi créer une propriété, et pas simplement déclarer
GenreMusique comme étant une variable Public, et directement injecter le genre de musique dedans,
comme ceci :
CafeDeLaGare.GenreMusique = "Jazz"
Ce qui reviendrait effectivement au même. Mais en fait, la propriété étant carrément tout un bout de
code visual Basic, on peut se permettre de faire beaucoup plus que d'attribuer une simple valeur à une
variable, comme par exemple, définir automatiquement le volume sonore suivant le genre de musique
choisie, ou simplement s'il y a de la musique. Changez la classe Bistrot comme ceci :
Dim AvecMusique
Dim GenreMusical
Dim VolumeMusical

Property Let Musique(QuelGenre)


AvecMusique = True
Select Case QuelGenre
Case "Jazz":
GenreMusical = "Détendu"
VolumeMusical = 4
Case "Hard-Rock":
GenreMusical = "Violent"
VolumeMusical = 10
Case "Classique"
GenreMusical = "Calme"
VolumeMusical = 1
Case "Silence"
GenreMusique = ""
AvecMusique = False
VolumeMusical = 0
End Property

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


21
CT Mumbere Nguramo Augustin

Voyez comme le simple envoi d'une valeur à une propriété peut engendrer des grands changements.
Si vous réfléchissez un peu, vous constaterez qu'on aurait pu faire la même chose avec une procédure
Musique (Sub), comme ceci :
Dim AvecMusique
Dim GenreMusique
Dim VolumeMusical

Public Sub Musique(QuelGenre)


AvecMusique = True
Select Case QuelGenre
Case "Jazz":
GenreMusical = "Détendu"
VolumeMusical = 4
' Etc, la même chose qu'avec le property
End Sub
L'appel à cette procédure depuis TesterLaClasse aurait alors été :
CafeDeLaGare.Musique "Jazz"
Au lieu de
CafeDeLaGare.GenreMusique = "Jazz"
On aurait pu même le transformer en Function, mais dans ce cas, il aurait fallu renvoyer le résultat dans
une variable du style :
Resultat = CafeDeLaGare.Musique ("Jazz")
Enfin bref, voyez comme les Property, Sub et Function peuvent s'interchanger. Donc, finalement,
pourquoi utiliser les Property ?
Simplement parce qu'elles permettent de LIRE et d'ECRIRE avec le même nom ! Je m'explique : Dans
la Classe bistrot, créez une Property Let toute simple :
Dim GenreMusique
Property Let Musique(QuelGenre)
GenreMusique = QuelGenre
End Property
C'est la possibilité pour un appel externe d'IMPOSER le style musical :
Dim GenreMusique
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


22
CT Mumbere Nguramo Augustin

CafeDeLaGare.Musique = "Jazz"
End Sub
Maintenant, dans la classe Bistrot, ajoutez la MEME propriété Musique, mais avec GET, pour que
finalement votre Classe ressemble à ceci :
Dim GenreMusique

Property Let Musique(QuelGenre)


GenreMusique = QuelGenre
End Property

Property Get Musique()


Musique = GenreMusique
End Property
A nouveau, on pourrait se demander pourquoi créer une Property Let et Get, puisqu'à priori, il suffit de
lire ou d'écrire dans la variable GenreMusique qui serait simplement déclarée Public pour que tout le
monde puisse y accéder sans restriction, comme ceci :
Contenu de la classe Bistrot :
Public GenreMusique
Appel depuis l'extérieur :
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot
CafeDeLaGare.GenreMusique = "Jazz"
MsgBox CafeDeLaGare.GenreMusique
End Sub
C'est effectivement strictement la même chose. Mais je fais la même remarque qu'avant : En effet,
lorsqu'on met de la musique, on voudrait définir :
1. Que la musique est en marche (True)
2. Le volume de la musique (entre 0 et 10)
3. Le style d'ambiance (Calme, reposante, dynamique,...)
Et lorsqu'on lit la musique, on ne voudrait par exemple pas seulement le style de la musique, mais un
message personnalisé, comme par exemple :
"Jazz à volume moyen"
"Hard-Rock Plein Pot"
"Musique classique douce"

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


23
CT Mumbere Nguramo Augustin

Maintenant, la simple utilisation d'une variable ne suffit plus.


Voici le code complet de la classe Bistrot, avec les 2 Property Musique :
Dim AvecMusique
Dim GenreMusical
Dim VolumeMusical
Property Let Musique(QuelGenre)
AvecMusique = True
Select Case QuelGenre
Case "Jazz":
GenreMusical = "Jazzy"
VolumeMusical = 4
Case "Hard-Rock":
GenreMusical = "Hardeux"
VolumeMusical = 10
Case "Classique":
GenreMusical = "Bien habillé"
VolumeMusical = 1
Case "Silence":
GenreMusique = ""
AvecMusique = False
VolumeMusical = 0
End Select
End Property

Property Get Musique()


If AvecMusique = False Then
Musique = "Pas de musique"
Exit Property
End If

Musique = GenreMusical & ", "


Select Case VolumeMusical
Case 1 To 3: Musique = Musique & "Calme"
Case 3 To 5: Musique = Musique & "Détendu"

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


24
CT Mumbere Nguramo Augustin

Case 6 To 8: Musique = Musique & "Dynamique"


Case Is > 8: Musique = Musique & "Très forte"
End Select
End Property
Et le code de l'appel à la classe :
Sub TesterLaClasse()
Dim CafeDeLaGare As New Bistrot
CafeDeLaGare.Musique = "Jazz"
MsgBox CafeDeLaGare.Musique
End Sub
Voici un exemple beaucoup plus basique pour juste bien comprendre la différence entre Get et Let :
Contenu de la classe "ClasseDebile":
Property Let Machin(Truc)
MsgBox "Je suis dans Let" ' (Truc vaut 1)
End Property

Property Get Machin()


MsgBox "Je suis dans Get"
End Property
Appel à la classe :
Dim Troulala As New ClasseDebile
Sub TestBidon()
Troulala.Machin = "N'importe quoi" ' Appelle Let Machin(Parametre)
VariableQuelconque = Troulala.Machin ' Appelle Get Machin()
End Sub
Une classe peut contenir elle-même une classe
Un exemple parlant va être plus compréhensible qu'un long disours :
1. Créez une classe que vous appellerez Salle. Placez y le code suivant :
Public NombreTable
2. Créez une autre classe que vous appellerez Bistrot. Placez-y le code suivant :
Public NombreClient
Public Salon As New Salle

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


25
CT Mumbere Nguramo Augustin

3. Créez encore ailleurs une procédure que vous appellerez Sub Tralala. Placez y le code
suivant :
Sub Tralala()
Dim CafeDeLaGare As New Bistrot
' Appel à une variable dans Bistrot :
CafeDeLaGare.NombreClient = 12
' Appel à une variable dans Salle, elle-même définie comme Salon dans la classe Bistrot :
CafeDeLaGare.Salon.NombreTable = 4
End Sub
Le constructeur et le destructeur
Ce que l'on appelle le constructeur en POO (Programmation Orientée Objet) désigne simplement une
procédure exécutée automatiquement immédiatement lors du premier appel à quoi que ce soit dans la
classe en question en utilisant le nom de procédure-clé Class_initialize. Exemple :
1. Créez une autre classe que vous appellerez Bistrot. Placez-y le code suivant :
Public NombreClient
Private Sub Class_initialize()
MsgBox "Début"
End Sub
2. Créez ailleurs une procédure sub Tralala :
Sub Tralala()
Dim Impact As New Bistrot
' Dès l'exécution de la ligne suivante, juste avant, sera exécutée Class_initialize (ok ok)
Impact.NombreClient = 2
End Sub
Même commentaire avec le destructeur qui s'exécutera à la fin du code VBA
Private Sub Class_Terminate()
MsgBox "Fin"
End Sub

Sélectionnez
'Exemple de module
Module NomDeMonModule
Sub Test1()
'Procédure 1

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


26
CT Mumbere Nguramo Augustin
End Sub

Function Test_1()
'Fonction 1
End Function

Function Test_2()
'Fonction 2
End Function

Sub Test2()
'Procédure 2
End Sub
End Module
Les 'sub' et 'fonctions' ne peuvent pas avoir les mêmes noms sauf si le nombre de paramètres est
différent.
Récapitulatif : Une instruction est une ligne de code qui va être exécutée par le programme. Une
fonction retourne une valeur contrairement à la procédure qui n'en retourne pas. Un module n'est en fait
qu'une feuille contenant de nombreuses procédures et fonctions.
Exercice
1. Ecrire une fonction en vb studio qui permet de calculer la surface d’un carrée sitôt que vous entrez le
cote. Le label affichant le résultat doit être en couleur.

Public Class frmfonction

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


Dim carre As Single
carre = surfacescalc(Val(Text1.Text))
affichecarre(carre)
End Sub

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


27
CT Mumbere Nguramo Augustin

Sub affichecarre(ByVal C As Single)


Label1.Text = C.ToString
End Sub

Private Sub frmfonction_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


Button1.BackColor = Color.AliceBlue
Label1.ForeColor = Color.BurlyWood

End Sub
End Class
Module
Module surfacecalc
Public Function surfacescalc(ByVal R As Single)
Return R * R
End Function
End Module

2. Ecrire une module qui permet de produire la surface d’un cercle en entrant le rayon.

Code
Public Class frmsurface

Private Sub cmdsurf_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdsurf.Click

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


28
CT Mumbere Nguramo Augustin

lblsurf.Text = 3.14 * txtrayon.Text * txtrayon.Text


If lblsurf.Text > 500 Then
MsgBox("Votre cercle est tres gros" & vbCrLf, lblsurf.Text)

End If

End Sub
End Class

Module
Module surfacecercles
Function surfcercle(ByVal Rayon As Single)
Return 3.14 * Rayon * Rayon
Exit Function
End Function
End Module

3. Faire un programme qui affiche dans un msgbox le resultat des operations addition effectuer dans le
modeule :

Le résultat d’appel de code est :


Private Sub cmdafficher_Click()
Call aff
End Sub
4. Refaire le code sous load et sur la comande

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


29
CT Mumbere Nguramo Augustin

Resultat de traitement est

5. fdffdfdfd
III. Le langage Visual Basic
III-A. Les variables
En programmation, une des choses essentielle est l'utilisation des variables. Une variable est
une sorte de boîte qui contient une valeur. Par exemple, je mets une chaussure dans une boite. La
'boite' représente la variable et la valeur est la 'chaussure'. L'intérêt principal des variables est leur
utilisation ultérieure. En effet, on peut utiliser une variable à n'importe quel moment dans le programme
en fonction de la portée de cette variable. (Voir chapitre sur la portée des variables)
III-A-1. Les variables
En ce qui concerne les noms des variables, on peut utiliser des majuscules, minuscules et chiffres. Les
espaces et autres caractères spéciaux ne sont pas acceptés (accents, @, ...).

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


30
CT Mumbere Nguramo Augustin

Le nom de la variable ne peut pas commencer par un chiffre !


Sélectionnez
'Exemples de noms de variables
MaVariable 'est acceptée
COOL 'est acceptée
Je_Suis_1_Variable 'est aussi acceptée
2Variable 'est refusée
2_Variable 'est également refusée
The Variable 'est réfusée
Différent 'est aussi refusée
Donnez des noms explicites aux variables pour ne pas vous y perdre dans le programme. De plus, vous
pouvez mettre la première lettre de votre variable en majuscule. Si votre variable est composée de
plusieurs noms, séparez les par des " _ " ou mettez une majuscule à chaque nouveau mot (préférez la
première méthode).
Sélectionnez
'Exemple :
Variable_pour_calculer_pi 'est mieux que
VariablePourCalculerPi 'mais ces deux lignes sont équivalentes
Maintenant pour utiliser une variable, il faut avant tout la déclarer et l'instancier dans certains cas. Pour
cela on utilise le mot clé " Dim " pour la déclarer et " new " pour l'instancier. De plus, il vaut lui assigner
un type (Voir plus loin dans le chapitre)
Sélectionnez
'Exemples de déclarations de variables
Dim Ma_Variable As String
Dim Nombre As Integer
Dim Compteur As Integer

'Instancier des variables


Dim Msn As New Msn_Protocol 'Msn_Protocol est une class
Dim Test As New Class
On peut aussi instancier les variables précédentes comme cela :

Sélectionnez
'Exemple avec les variables précédentes
Dim Ma_Variable As String = " toto "
Dim Nombre As Integer = 45
Dim Compteur As Integer = 1000
Une variable peut aussi être instanciée par une fonction :

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


31
CT Mumbere Nguramo Augustin

Sélectionnez
'Exemple de variable instanciée par une fonction
Dim Pi As Decimal = Fonction_pour_calculer_pi()
Exemple des variables
1. Ecrire un programme qui vous permet d’entrez votre nom et affiche « bonjour Monsieur » associe de votre nom.
Solution

En cet exercice nous apprenons la concatenation par le signe &. Ainsi le code deviens :
Public Class controle

Private Sub cmdafficher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdafficher.Click

Me.txtaff.Text = "Bienvenu Monsieur" & txtnom.Text

End Sub
End Class

2. faire

III-A-2. Les différents types de variables


Il existe une multitude de types de variable. A notre niveau, on en utilisera essentiellement 4 : String,
Integer, Boolean et Byte
Regroupons tous les types dans un tableau

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


32
CT Mumbere Nguramo Augustin

Type de Mémoire
Plage de nombres acceptés Utilisation principale
variable occupée

Boolean 2 octets True (0) ou False (1) Pour les conditions

Byte 1 octet De 0 à 255 Pour les fichiers

Pour les caractères


Char 2 octets De 0 à 65 535
alphanumériques

Dates entre le 1 Janvier 0001 et le 31 Décembre


Date 8 octets Pour les dates
9999

+ / - 79 228 162 514 264 337 593 543 950 335 sans
Pour les nombres
Decimal 16 octets séparateur décimal sinon + / - 7.9 228 162… avec 28
décimaux
chiffres après le séparateur décimal

- 1,79769313486231E+308 à - 4.94065645841247E- Pour les grands nombres


Double 8 octets 324 (nombres négatifs) et 4.94065645841247E-324 à virgule (avec double
à 1,79769313486231E+308 (nombres positifs) précision)

Integer 4 octets De - 2 147 483 648 à 2 147 483 647 Pour les nombres entiers

De - 9 223 372 036 854 775 808 à 9 223 372 036


Long 8 octets Pour les entiers longs
854 775 807

Short 2 octets De - 32 768 à 32 767 Pour les entiers courts

Pour les grands nombres


Single 4 octets De - 3.402823E-45 à - 1.401298E+38 à virgule (avec simple
précision)

Pour les chaîne de


String Variable 0 à 2 milliards de caractères Unicode
caractères
Utiliser les types qui prennent le moins de mémoire. Par exemple, si vous souhaitez stocker une note
dans votre variable, utilisez le type Integer mais n'utilisez pas le type Long dans la mesure où votre
variable sera comprise entre 0 et 20 (ou 40 ou 100 en fonction des examens lol) Une chaîne de
caractères n'est en fait que du texte (" Je suis gentille ") et elle se met TOUJOURS entre guillemets
contrairement aux nombres ! En VB.NET 2005 (dernière version de Microsoft), il existe 4 autres types
de variables mais cela ne concerne pas notre cours.
III-A-3. Convertir des variables

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


33
CT Mumbere Nguramo Augustin

Dans tous les langages de programmation, il peut être utile voire même nécessaire de convertir des
variables d'un type dans un autre type. Cela permet d'éviter la création de nouvelles variables qui
alourdiraient le programme.
Tableau récapitulatif des fonctions permettant de convertir des variables
Fonction de Convertir vers le
conversion type...

CBool Boolean

CByte Byte

CChar Char

CDate Date

CDbl Double

CDec Decimal

CInt Integer

CLng Long

CObj Object

CShort Short

CSng Single

CStr String

Sélectionnez
'Exemples
Dim Pi As Decimal = 3.14 'crée la variable Pi qui vaut 3.14
Dim a As Integer = 15 'crée la variable a qui vaut 15

Dim Pi_Entier As Integer = CInt(Pi) 'retournera 3


Dim a_caractère As String = CStr(a) 'retourner " 15 " 'en chaîne de caractère
Dans le langage VB.NET, la virgule n'existe pas. On utilise le point qui remplace la virgule.
Noter que ces fonctions sont construites à partir de C (pour Convert) et de l'abréviation du type.
Pour convertir un Object dans un type (String, Integer...), on utilise la commande 'CType' [ CType(a,
String) 'a va être convertit en 'String']
III-A-4. La portée des variables

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


34
CT Mumbere Nguramo Augustin

Une variable peut être utilisée que si elle est visible dans le programme. Pour définir le niveau de
visibilité de chaque variable, il existe un mot clé propre à chaque cas.

Tableau pour la portée des variables


Mot clé Portée de la variable

Public Partout dans le programme

Private Partout dans la classe ou le module où elle a été créée

Dim Seulement dans la procédure ou la fonction créée

Les membres Protected sont similaires aux Private, mais ils ont une
Protected
particularité en cas d'héritage. Ce point ne sera pas abordé

Les membres Friend ne sont accessibles qu'à l'intérieur du projet, et


Friend
pas par des éléments extérieurs au projet en cours

Shared Permet de partager une variable. N'est pas indispensable


Ce tableau est aussi valable pour les procédures et les fonctions

Sélectionnez
'Exemple avec des sub et fonctions

Module Test_Portee

Private Sub Test()

End Sub

Protected Sub Azerty(ByVal Argument As String)

End Sub

Private Shared Function Calcul(ByVal Nombre As Integer)

End Function

End Module

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


35
CT Mumbere Nguramo Augustin

Cependant, il est déconseillé d'utiliser des variables globales (publics) car cela est une source
importante d'erreurs. Pour affecter une valeur à une variable public, il est préférable de passer par une
procédure d'affectation.

Sélectionnez
'Exemple
Module Test
Public Nombre As Integer

Public Sub Routine_Qui_Va_Affecter_La_Variable(ByVal Valeur As Integer)


Nombre = Valeur
End Sub
End Module

'Quelque part d'autre dans le programme on appel la procédure avec un argument de type Integer
Call Routine_Qui_Va_Affecter_La_Variable(45)

'Ensuite dans le programme totale, la variable Nombre va valoir 45


MsgBox(Nombre.ToString) 'Affiche dans une boite de dialogue la valeur
Bien sûr qu'il est possible directement de faire directement

Sélectionnez
Nombre = 45
Mais cela est source d'erreurs... En effet, vous pouvez modifier la variable à tout moment sans même
vous en rendre compte ! A utiliser à vos risques et périls

III-B. Les structures conditionnelles


Les conditionnelles comme les boucles permettent de gérer le déroulement du code. Il existe deux
grands types de conditionnelles : celles avec " If - Then " et celles avec " Select Case - End Select "
III-B-1. Avec "If -Then"
Structure générale :

Sélectionnez
If condition 1 vraie Then
'exécuter instructions
Else
'exécuter autre intructions

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


36
CT Mumbere Nguramo Augustin
End If
If : Mot clé signifiant " si " et qui ouvre la structure
Then : Mot clé signifiant " alors "
Else : Mot clé signifiant " sinon "
End If : Mot clé permettant de fermer la structure

En français : Si la condition 1 est vraie alors on exécute le bloc Then sinon on exécute le bloc Else.

Sélectionnez
'Exemple
Dim code As Integer = 1739

If code = 1739 Then


MsgBox("condition vraie")
Else
MsgBox("condition fausse")
End If
On peut tester une condition fausse et dans ce cas utiliser Not.

Sélectionnez
If Not A=B Then MsgBox("A est différent de B") 'Si A et B sont différents (Not A=B signifie NON égaux) afficher "A est
différent de B".
Il peut y avoir des opérateurs logiques dans la condition:

Sélectionnez
If A=B And C=D Then.. 'Si A égal B et si C égal D
Des structures If - Then peuvent être imbriquées. C'est-à-dire que l'on peut emboîter plusieurs
conditions dans une seule condition :

Sélectionnez
'Exemple
If condition_1 vraie Then
If condition_2 vraie Then
MsgBox("Condition_1 Vraie et Condition_2 Vraie")
Else
If condition_3 Vraie Then
MsgBox("Condition_1 Vraie et Condition_2 Fausse et Condition_3 Vraie")

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


37
CT Mumbere Nguramo Augustin
End If
End If
End If
Astuce : Pour ne pas vous tromper, utilisez les tabulations et décalez chaque structure (dans l'exemple :
Bleue, Violet et Vert) et son code au même niveau. Pour vérifier s'il n'y a pas d'erreur, comptez les 'If', il
doit y en avoir autant que des 'End If'. Visual Studio vous avertira en cas d'erreur.
Autre syntaxe possible :

Sélectionnez
If Condition1 vraie Then
..
ElseIf condition2 Then 'sinon on teste la condition 2
..
ElseIf condition3 Then 'la condition 3
..
End If

III-B-2. Avec "Select Case - End Select


Cette structure est très utile pour tester un grand nombre de possibilités en fonction de la valeur d'une
expression :

Structure générale :

Sélectionnez
Select Case X
Case 1 : 'faire Y
Case 2 : 'faire Z
Case Else : 'faire A
End Select
Select Case : Mot clé permettant d'ouvrir la structure
Case : Représente les différents cas (Case 1 = cas 1, Case 2 = cas 2, Case Else = autre cas...)
End Select : Mot clé permettant de fermer la structure
X : Expression à évaluer (nombre, chaîne de caractères, booléen…)
faire Y : Exécute le cas 1
faire Z : Exécute le cas 2
faire A : Exécute le cas "else"

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


38
CT Mumbere Nguramo Augustin

Prenons un exemple : Un serveur envoie un certain code mais on ne sait pas si c'est le 1, le 2 ou un
autre (comme 1000, 453, 876…) et vous voulez vous connecter si le code envoyé correspond au 1,
vous déconnecter s'il correspond au 2 et afficher un message d'erreur si c'est un autre code autre que
le 1 et le 2. Voilà la structure :

Sélectionnez
Select Case code
Case 1 : 'se connecter
Case 2 : 'se déconnecter
Case Else : 'erreur code non reconnu
End Select
La structure précédente est relativement simple mais limitée. On peut aussi utiliser d'autres types
d'expressions plus complexes et plus pratiques : Plusieurs expressions peuvent être séparées par des
virgules. Le mot-clé To permet de définir les limites d'une plage de valeurs correspondantes pour N. Le
mot-clé Is associé à un opérateur de comparaison (=, <> < <=, > ou >=) permet de spécifier une
restriction sur les valeurs correspondantes de l'expression. Si le mot-clé Is n'est pas indiqué, il est
automatiquement inséré. Vous pouvez aussi mixer les différents cas précédents. Enfin, vous pouvez
aussi indiquer des plages et des expressions multiples pour des chaînes de caractères. Dans l'exemple
suivant, Case correspond aux chaînes qui sont absolument identiques à " ttt ", aux chaînes comprises
entre "bbb" et "eee" dans l'ordre alphabétique, ainsi qu'à la valeur de " Nombre " :

Sélectionnez
'Exemple avec les virgules
Select Case N
Case 8, 9, 10
'Effectuer le code si N=8 ou N=9 ou N=10
End Select
'Exemple avec une plage de valeurs
Select Case N
Case 8 To 20
'Effectuer le code si N est dans la plage 8 à 20
End Select
'Exemple avec un opérateur de comparaison
Select Case N
Case Is >= 15
'Effectuer le code si N supérieur ou égal à 15.
End Select

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


39
CT Mumbere Nguramo Augustin
Select Case N
Case 3 To 6, 7 To 15, 200, 1654, Is > MaxNumber
'Effectuer le code si N, compris entre 3 et 15, si N = 200 ou N = 1654, est supérieur à MaxNumber
End Select
Select Case N
Case "ttt", "bbb" To "eee", Nombre
'Effectuer le code si N ="ttt" ou si N est compris entre "bbb" et "eee" (ordre alphabétique) ou si N = Nombre
End Select

III-C. Les boucles


Les boucles permettent de répéter un bloc d'instruction autant de fois qu'on l'a indiqué à la boucle. Elles
sont très utilisées par exemple pour faire des calculs itératifs (Méthode d'Euler) ou de lister le contenu
d'un tableau. Il en existe quatre types majeurs : celles avec " For - Next ", celles avec " Do - Loop ",
celles avec " While - End While " et celles avec " For Each - Next "
III-C-1. Avec "For - Next"
Structure générale :

Sélectionnez
For Variable = Debut To Fin
'Execute la boucle
Next Variable
For : Mot-clé permettant d'ouvrir la boucle.
To : Mot-clé signifiant " jusqu'à "
Next : Mot-clé pour fermer la boucle.
Variable : Variable qui va servir de compteur pour la boucle.
Debut : Début du compteur.
Fin : Fin du compteur.

Sélectionnez
'Exemple de boucle
Dim i As Integer
For i = 3 To 10
'Exécute la boucle pour i variant de 3 à 10
Next i
La variable i va s'incrémenter automatiquement de 1 à la fin de chaque boucle.

On peut aussi définir un pas, le compteur s'incrémente de la valeur du pas à chaque boucle :

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


40
CT Mumbere Nguramo Augustin

Sélectionnez
'Exemple de boucle
Dim i As Integer
For i = 3 To 10 Step 2
MsgBox(i.ToString) 'affiche 3 puis 5 puis 7 et enfin 9
Next i
On peut aussi utiliser un pas négatif mais cela est plus compliqué.
La variable de la boucle peut être déclarée en même temps que la boucle. De plus, la variable après le
Next est facultative.

Sélectionnez
'Exemple
For Test As Integer = 0 To 43
'boucle de 0 à 43
Next
Dernière chose, on peut quitter la boucle prématurément :

Sélectionnez
'Exemple de sortie de boucle
For Test As Integer = 0 To 43
If Test = 3 then Exit For 'Quand Test sera égale à 3 alors on sort…
Next

III-C-2. Avec "Do - Loop"


Structure générale :

Sélectionnez
Do
'Instructions
Loop Until Condition

Do
'Instructions
Loop While Condition
Do : Mot-clé qui ouvre la boucle.
Loop : Mot-clé qui ferme la boucle.
While : Mot-clé qui signifie " Tant que "

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


41
CT Mumbere Nguramo Augustin

Until : Mot-clé qui signifie " Jusqu'à ce que "


Condition : La condition pour rester dans un Loop While ou pour sortir d'un Loop Until.
Il faut préciser après le " Loop " une condition précéder de " While " ou " Until ". Dans le cas contraire, la
boucle est sans fin !

Sélectionnez
'Exemple avec Until
Dim i As Integer = 0
Do
i = i + 1 'incrémente i de 1
MsgBox(i.ToString) 'affiche la valeur de i
Loop Until i = 10 'Quand i = 10 on sort de la boucle.

'Exemple avec While


Dim Fichier As String
Do
'Liste les fichiers d'un répertoire
Loop While Fichier <> "NomDeMonFichier " 'Tant que Fichier n'est pas égal à NomDeMonFichier alors on boucle sinon on
sort.

III-C-3. Avec "While - End While"


Structure générale :

Sélectionnez
While Condition
'Execute la boucle
End While
While : Mot-clé permettant d'ouvrir la boucle.
End While : Mot-clé qui ferme la boucle.
Condition : La condition pour rester dans la boucle.

Sélectionnez
'Exemple :
Dim Compteur As Integer = 0
While Compteur < 20 'Dès que Compteur = 20, on sort de la boucle.
Compteur = Compteur + 1 'incrémente le compteur de 1
Msgbox(Compteur.ToString) 'affiche le compteur
End While

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


42
CT Mumbere Nguramo Augustin

III-C-4. Avec "For Each - Next"


Structure générale :

Sélectionnez
For Each Item In Collection
'boucle
Next Item
For : Mot-clé pour ouvrir la boucle.
Each : Mot-clé signifiant " Chaque ".
In : Mot-clé signifiant " Dans ".
Next : Mot-clé pour fermer la boucle.
Item : Objet à récupérer dans la collection.
Collection : Tableau qui contient des Objets.

Sélectionnez
'Exemple
Dim Var_Item As String
For Each Item As Object In MonTableau
Var_Item = Var_Item + Item 'Var_Item va contenir tous les éléments du tableau en admettant que le tableau soit déjà
remplit.
Next Item

'Autre exemple
Dim Chaine As String = "Toto va bien"
Dim Caractere As String
For Each Caractere In Chaine
Msgbox(Caractere.ToString) 'affiche chaque caractère de Chaine
Next
"For Each - Next" est donc très utile pour tester une chaîne de caractère.

III-D. Les opérateurs


Pour travailler avec les variables on utilise des opérateurs. Il en existe de trois sortes : les opérateurs
d'arithmétiques et de concaténation (mise bout à bout de chaîne de caractères), les opérateurs de
logiques et les opérateurs de comparaisons.
III-D-1. Les opérateurs d'arithmétique et de concaténation
Opérateurs d'arithmétique et de concaténation :

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


43
CT Mumbere Nguramo Augustin

Opérateur Opération réalisée par l'opérateur

+ Additionne deux nombres

- Soustrait deux nombres

* Multiplie deux nombres

Divise deux nombres et retourne un nombre à


/
virgule flottante (décimal)

Divise deux nombres et retourne un nombre


\
entier

Mod Divise deux nombres et retourne seulement le


(Modulo) reste

^ Elève à la puissance un nombre

& Additionne (concatène) deux chaînes

Sélectionnez
'Exemples
Dim x, y, Somme As Single
X = 10
Y = 15.4
Somme = X + Y 'Somme retourne 25,4

Dim Revenu, Taxes, Revenu_Reel As Integer


Revenu = 2000
Taxes = 2500
Revenu_Reel = Revenu - Taxes 'retourne -500

Dim a, b, c As Integer
a = 12
b=3
c = a Mod b 'c = 0 car la division tombre juste donc le reste = 0

Dim Prenom, Nom, NomComplet As String


Prenom = "Florent"
Nom = "Aspic"
NomComplet = Prenom & Nom 'retourne "FlorentAspic"

III-D-2. Les opérateurs de logique

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


44
CT Mumbere Nguramo Augustin

Les opérateurs de logique manipulent des valeurs 'True' ou 'False'.

Opérateurs Syntaxe Emploi

Var_1 And True si Var_1 et Var_2 sont


And (et)
Var_2 vraies

Var_1 Or True si une des deux est


Or (ou)
Var_2 vraie

Xor (ou Var_1 Xor True si une et une seule est


exclusif) Var_2 vraie

True si Var est faux et vice


Not (non) Not Var_1
versa

Sélectionnez
'Exemples
Dim a, b As Integer
Dim Var, Var_1 As String
a = 13
b = - 15
Var = "Cool"
Var_1 = "Snif"

If (a Or b) < 0 Then
'Evalue la condition si a ou b est négative : ici c'est Vrai
End If

If (a And b) > 0 Then


'Evalue la condition si a et b sont positifs : ici c'est Faux
End If

If Not Var = Var_1 Then


'Evalue la condition si Var est différent de Var_1 : Ici c'est Vrai
End If

III-D-3. Les opérateurs de comparaison


Les opérateurs de comparaison comparent deux nombres ou chaînes pour voir si ces nombres ou
chaînes sont égaux, différents, supérieurs ou inférieurs.

Opérateurs Signification

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


45
CT Mumbere Nguramo Augustin

> Strictement supérieur à

< Strictement inférieur à

>= Supérieur ou égal à

<= Inférieur ou égal à

<> Différent de

= Egal à

Sélectionnez
'Exemples
Dim Age, AgeMin, AgeMax As Integer
Dim EntreeBoiteDeNuit As Boolean

Age = 12
AgeMin = 16
AgeMax = 45

If AgeMin < Age AndAlso Age < AgeMax Then


EntreeBoiteDeNuit = True 'La condition est Vraie
End If

If Age < AgeMin Then


EntreeBoiteDeNuit = False 'La condition est Fausse
End If

If Age = AgeMin then


EntreeBoiteDeNuit = True 'La condition est Vraie
End If

If Age >= 46 Then


EntreeBoiteDeNuit = False 'La condition est Fausse
End If

III-E. Les constantes et énumérations


Les constantes sont des variables qui ne peuvent pas être la cible d'une assignation. C'est-à-dire que
leur valeur ne peut pas être modifiée. Pour déclarer une constante on utilise le mot-clé " Const ". Un
avantage majeur des constantes est qu'elles améliorent la lisibilité du code et son exécution.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


46
CT Mumbere Nguramo Augustin

Sélectionnez
'Exemples de constantes
Private Const Pi As Decimal = 3.14
Public Const Plat_Prefere As String = "Pates"

'Ensuite on peut les utiliser


Dim Rayon As Decimal = 5 'Soit un cercle de rayon 5
Dim AireCercle, PerimetreCercle As Decimal

AireCercle = Pi * Rayon ^ 2
PerimetreCercle = 2 * Pi * Rayon

MsgBox(Plat_Prefere) 'Affiche mon plat préféré !!


Les énumérations sont des structures qui permettent de créer une liste de constantes. Pour cela on
utilise le mot-clé " Enum "

Sélectionnez
'Exemple
Private Enum Erreur
Logique
Execution
Syntaxe
Grammataire
End Enum

'les constantes ainsi créées sont


Erreur.Logique
Erreur.Execution
Erreur.Syntaxe
Erreur.Grammaire
Exemple concret d'utilisation des constantes :

Sélectionnez
'On crée une énumération
Enum Action
Ajouter
Supprimer
Inserer
Selectionner

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


47
CT Mumbere Nguramo Augustin
End Enum

'Plus loin dans le code


Select Case Action
Case Action.Ajouter 'dans ce cas on ajoute quelque chose
'ici le bloc de code
Case Action.Supprimer 'dans ce cas on supprime un élément
'ici le bloc de code
Case Action.Selectionner 'ici on sélectionne un élément
'ici le bloc de code
Case Action.Inserer 'ici on insère un élément dans un tableau par ex
'ici le bloc de code
Case Else
MsgBox("Enumération non reconnue")
End Select
Les énumérations comme les constantes allègent le programme et le rendent plus clair.

III-F. Les tableaux


Un tableau regroupe des éléments de même type et les rend accessibles par un indice entier. Pour
créer un tableau, on procède comme ceci :

Sélectionnez
'Exemple création tableau
Dim Tableau(6) As Integer 'déclare un tableau de 7 entiers
Le premier élément d'un tableau est toujours à l'indice 0. Le dernier élément d'un tableau est toujours à
l'indice Length - 1 (dans l'exemple 7 - 1 = 6)
On peut modifier des valeurs dans le tableau.

Sélectionnez
'Exemple d'assignations
Tableau(2) = 3 'assigne la valeur 3 à l'élément d'indice 2
Tableau(0)= 98 'assigne la valeur 98 à l'élément d'indice 0
Tableau(7) = 3 'provoquera une erreur car l'indice est supérieur à 6
Le tableau contient donc :
98

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


48
CT Mumbere Nguramo Augustin

0
Pour assigner un élément du tableau à une variable, on procède comme ceci :

Sélectionnez
'Affectation à une variable
Dim Var As Integer
Var = Tableau(0) 'Var contient donc 98
Pour effacer un tableau et récupérer la mémoire allouée par le tableau :

Sélectionnez
'Efface le tableau
Erase Tableau
Tableau = Nothing
'Ces deux commandes sont équivalentes.
Pour réinitialiser le tableau (remise à zéro des éléments) :

Sélectionnez
'Réinitialisation du tableau de l'index 0 au dernier index du tableau
Array.Clear(Tableau, 0, Tableau.Length)
Pour parcourir un tableau, rien de plus simple. On utilise une boucle :

Sélectionnez
'Lister les éléments d'un tableau
Dim Tableau(5) As Integer
For Each Item As Object In Tableau
MsgBox(Item.ToString) 'affiche chaque valeur du tableau
Next Item

'une autre méthode


For i As Integer = 0 To Tableau.Length - 1
MsgBox(tableau(i).ToString)
Next

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


49
CT Mumbere Nguramo Augustin

Il existe des classes spéciales pour les tableaux 'ArrayList et SortedList' mais cela ne sera pas abordé
dans ce cours.
Le contrôle "CheckBox" (case à cocher)
La plupart des applications laissent une certaine marge de choix à l'utilisateur.

Le contrôle "CheckBox"(case à cocher) permet d'affecter à une option ou un paramètre une


valeur qui peut être Vrai ou Faux (True ou False) Les cases à cocher peuvent être rassemblées en
groupe, chaque case étant activable individuellement et sans incidence pour les autres cases du même
groupe. Vous pouvez utiliser la propriété "ToolTyp" qui permet d'adjoindre au contrôle un court texte
explicatif sous forme d'une Info-bulle lorsque le pointeur de la souris survole le contrôle un court instant.
Une nouveauté dans la version 6.0 de Visual Basic qui propose un contrôle "CheckBox" graphique.
Utilisez pour cela la propriété "Picture" pour affecter à la case à cocher une icône pour l'état "non
enfoncé, puis de la propriété "DownPicture" pour l'état "enfoncé" vous pouvez utiliser également la
propriété "DisabledPicture" pour l'état désactivé. Contrairement aux contrôles d'options boutons, la
case à cocher est dotée de 3 états, l'état désactivé qui correspond à la valeur "0", l'état activé = 1 et
l'état grisé = 2. C'est la raison pour laquelle, nous ne pourrons pas utiliser des valeurs booléennes pour
coder ce contrôle, nous utiliserons les valeurs cités précédemment.
Déterminer l'état de la case à cocher
Le code à utiliser est :

Sélectionnez
If CheckBox1.Value = 0 Then
'Instructions
Beep 'Emet un son sur le haut parleur du PC lorsque le "Beep" est activé
Else
'Instructions
Beep
End If

Les états possibles des contrôles Case à cocher

Valeur Description Constante

0 Désactivée(par défaut) vbUnchecked

1 Activée vbChecked

2 Etat intermédiaire vbGrayed

En règle générale, et si vous ne savez pas quelle instruction écrire ou dans le cas d'un traitement

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


50
CT Mumbere Nguramo Augustin

conditionnel, ou si vous ne savez pas quelle direction va prendre votre pointeur(surtout si vous utilisez
"Else" dans votre procédure), saisissez l'instruction "Beep" qui n'aura aucune influence sur votre
programme mais qui vous indiquera exactement ou se dirige votre pointeur, puis, si vous lancez
l'application et que vous entendez le Beep, vous aurez la confirmation que l'instruction aura été prise en
compte. Vous n'aurez plus qu'à remplacer "Beep" par les instructions définitives. Si vous voulez fixer en
interne l'état d'une case à cocher comme étant "non cochée", c'est à dire en écrivant du code, vous
écrirez l'instruction suivante :

CheckBox1.value = 0
Pour quelle soit cochée, vous écrirez :
CheckBox1.Value = 1
Pour quelle apparaisse en grisé, vous écrirez :
CheckBox1.Value = 2

Le texte affiché à coté de la case à cocher est déterminé par la propriété "Caption".
Vous pouvez modifier l'alignement du texte à droite ou à gauche avec la propriété "Alignment"

Exemple

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


51
CT Mumbere Nguramo Augustin
1. Ecrire un programme qui permet à l’utilisateur de saisir un montant en franc et de choisir la monnaie
de destination pour convertir (dollar s=500, euro =800, livre = 900) en affichant dans un listbox la monnaie
dollars

Code
Public Class checkbox

Private Sub chkdoll_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


chkdoll.CheckedChanged
If chkdoll.Checked = True Then
lblbdol.Text = Val(txtmont.Text) / 600
Cbodoll.Text = "Dollars"
Else
lblbdol.Text = ""
End If

End Sub

Private Sub chkEur_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


chkEur.CheckedChanged
If chkEur.Checked = True Then
lblEur.Text = Val(txtmont.Text) / 750
Else
lblEur.Text = ""
End If
End Sub

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


52
CT Mumbere Nguramo Augustin
Private Sub chkshill_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
chkshill.CheckedChanged
If chkshill.Checked = True Then
lblshill.Text = Val(txtmont.Text) / 0.8
Else
lblshill.Text = ""
End If
End Sub

Private Sub cmdeffacer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdeffacer.Click


txtmont.Text = ""
lblbdol.Text = ""
lblEur.Text = ""
lblshill.Text = ""
Cbodoll.Text = ""
chkdoll.Checked = 0
chkEur.Checked = 0
chkshill.Checked = 0
txtmont.Text = ""
End Sub

Private Sub checkbox_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Cbodoll.Items.Add("dollars")
Cbodoll.Items.Add("Euro")
Cbodoll.Items.Add("Shilling")

End Sub

End Class

2. Ecrire un programme qui permet à l’utilisateur de saisir un montant en franc et de choisir la monnaie de
destination pour convertir (C) en affichant le résultat dans les Labels.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


53
CT Mumbere Nguramo Augustin

II. Le contrôle "OptionButton"


Le contrôle "OptionButton" accepte deux états pour l'option Vrai ou Faux(True ou False). Ces

"OptionsButtons" ou boutons d'options peuvent être rassemblés en groupes de contrôles dans


une "Frame" ce type de contrôle bénéficie d'une sélection exclusive. Vous pouvez également comme le
contrôle décrit précédemment bénéficier de l'option graphique avec la propriété "Picture" en insérant
une image en position bouton sélectionné et d'une autre image en position bouton désactivée.
Déterminer l'état du bouton d'option
Les boutons d'options connaissent deux états, l'état cochée qui correspond à la valeur booléenne
"True" et l'état non cochée qui correspond à la valeur booléenne "False". Dans un groupe de contrôle
seul un bouton peut être coché.
Exploitation d'un événement utilisateur avec 2 boutons d'option :

Sélectionnez
Sub Option1_Click ( )
If Option1.Value = True Then
'Instructions si l'option1 est activée
Else
'Instructions si l'option2 est activée
End If
End Sub
Exploitation d'un événement utilisateur avec 3 boutons d'option :

Sélectionnez
Sub Option1_Click ( )
If Option1.Value = True Then
'Instructions si l' option1 est activée

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


54
CT Mumbere Nguramo Augustin
ElseIf
'Instructions si l' option2 est activée
ElseIf
'Instructions si l' option3 est activée
End If
End Sub
Vous pouvez également comme le bouton précédent utiliser l’option "InfoBulle" avec la propriété
"ToolTyp". On peut également affecter une valeur par l’intermédiaire du code, comme par exemple :
Option1.Value = 1 ou dans l’hypothèse d’affecter une valeur dans une zone de liste de fichiers pour
sélectionner une extension de fichier bien déterminée nous utiliserons le masque de recherche:

Sélectionnez
Sub Option1_Click ( )
Fichier1.Pattern = "*.exe"
End Sub

Exercice
Faire un programme en Visual basic qui permet de convertir le montant en dollars, en euro et en shilling aux taux
respectifs : dollar =500, euro =800, livre = 900 et affiche dans un label l’intitule de la monnaie.

Code
Public Class frmconversion

Private Sub cmdcalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcalc.Click

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


55
CT Mumbere Nguramo Augustin
If txtmont.Text = "" Then
MsgBox("Tu dois saisir le montant")

Else
If optdol.Checked = True Then
lblconv.Text = Val(txtmont.Text) / 600
lbldev.Text = "Dollars"

Else
If optEur.Checked = True Then
lblconv.Text = Val(txtmont.Text) / 750
lbldev.Text = "Euro"
Else
If optShill.Checked = True Then
lblconv.Text = Val(txtmont.Text) / 0.8
lbldev.Text = "shilling"

Else
lblconv.Text = ""
lbldev.Text = ""
optdol.Checked = False
optEur.Checked = False
optShill.Checked = False

MsgBox("choisir la devise s'il vous plait")


End If
End If
End If
End If

End Sub

End Class

Resultat

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


56
CT Mumbere Nguramo Augustin

Travail pratique

III. La zone de liste et zone modifiable


Le contrôle zone de liste affiche une liste contenant des entrées dont l’utilisateur peut sélectionner un

ou plusieurs éléments. Si le nombre d’éléments contenus dans la liste dépasse celui qui peut être
affiché, une barre de déplacement (ascenseur) s’affiche automatiquement.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


57
CT Mumbere Nguramo Augustin

Une zone de liste peut être créée en mode "Conception" comme décrit dans l'exemple exo2, dans ce
cas le remplissage de la zone de liste est réalisé par la procédure événementielle "Load" qui est
appelée lors du chargement de la feuille. En mode "Exécution" nous utiliserons la méthode "AddItem".

Sélectionnez
Objet.AddItem "Element"
L'argument "Objet" désigne le nom du contrôle, c’est à dire celui de la zone de liste.
L'argument "Element" est l’entrée qui doit être ajoutée.
Ex : lstZonedeliste.AddItem "Help System Restorer" L'application décrite montre l’utilisation d' une
zone de liste. Elle comprend une "TextBox", une zone de liste, deux "Label", 4 boutons poussoirs.
Nous avons utilisé dans ce module les "Méthodes" "RemoveItem" et "Clear" La méthode
"RemoveItem" nous permet après avoir sélectionné la ligne qui nous intéresse de pouvoir
sélectivement la supprimer. La méthode "Clear" quant à elle efface complètement le contenu de la liste.
Nous avons également utilisé les propriétés "ListCount" La propriété "List" est liée à la propriété
"ListCount", qui renvoie le nombre d'entrées de la liste. Dans l’exercice Exo2 la propriété "ListCount"
renvoie le nombre d'entrée que vous saisissez et rectifie le nombre indiqué lorsque vous effacez une ou
plusieurs entrées. Vous pourrez étudier tous les autres contrôles dans les cours que nous diffusons sur
notre site.
chap : MsgBox -inputbox- Instruction ou fonction
I. Introduction
Cette instruction très utilisée dans Visual Basic permet de poser une question à l’utilisateur au travers
d’une boîte de dialogue. Celle-ci peut être paramétrée en définissant le nombre de boutons poussoir,
l’icône de la boîte et le bouton par défaut, c’est à dire celui qui sera enfoncé quant vous appuyez sur la
touche "Entrée".

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


58
CT Mumbere Nguramo Augustin

La syntaxe de l’instruction MsgBox est la suivante :


Variable = MsgBox("Message", Type, "Titre de la fenêtre")
 Variable : Variable de type Entier(Integer) recevant la valeur du bouton.
 Message : Chaîne de caractères affichée comme message dans la boîte de dialogue.
 Type : Expression numérique qui contrôle les boutons et les icônes à afficher.
 Titre : Expression chaîne affichée dans la barre de titre de la boîte de dialogue.
Le paramètre Type représente l'addition de plusieurs constantes intégrées de Visual Basic.
Pour répondre à la question posée, MsgBox est utilisée en Instruction lorsque la syntaxe utilisée
n'attend pas une réponse du système par exemple :
Instruction:
MsgBox Message$, 16 Titre$ Dans ce cas nous avons utilisé une instruction de VB.
Fonction :
Dans le cas d’une fonction, (qui attend une réponse du système) nous écrirons :
Sélectionnez
T$ = "Attention" 'Titre du message
M$ = "Désirez-vous vraiment quitter le programme ?" 'Message à afficher
si votre message à afficher est plus long, vous pouvez utiliser la concaténation suivante,

Sélectionnez
M$ = M$ + " suite du message" (vous pouvez aussi utiliser le caractère "&" à la place du caractère "+")
Reponse% = MsgBox(M$, 4 + 32, T$)
et voici la réponse que vous pouvez éventuellement utiliser :
Sélectionnez
If Reponse% = 6 Then End 'Sortie du programme
J’utilise depuis Vb 3.0 la fonction précédente qui fonctionne sous toutes les versions connues à ce jour.
Nous allons les étudier en détail avec les tableaux suivants.
Les constantes pour les boutons :
Constante Chiffre Description

vbOKOnly 0 Affiche le bouton OK uniquement

vbOKCancel 1 Affiche les boutons Ok et Annuler

vbCancelRetryIgnore 2 Affiche les boutons Abandonner, Répéter et Ignorer

vbYesNoCancel 3 Affiche les boutons Oui, Non et Annuler

vbYesNo 4 Affiche les boutons Oui et Non

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


59
CT Mumbere Nguramo Augustin

vbRetryCancel 5 Affiche les boutons Répéter et Annuler

Les constantes pour les icônes :


Constante Chiffre Description

vbCritical 16 Affiche l'icône message critique

vbQuestion 32 Affiche l' icône requête d' avertissement

vbExclamation 48 Affiche l'icône message d' avertissement

vbInformation 64 Affiche l'icône message d' information

Les constantes pour le bouton par défaut :


Constante Chiffre Description

vbDefaultButton1 0 Le premier bouton est le bouton par défaut

vbDefaultButton2 256 Le deuxième bouton est le bouton par défaut

vbDefaultButton3 512 Le troisième bouton est le bouton par défaut

vbDefaultButton4 768 Le troisième bouton est le bouton par défaut

Chaque bouton lorsqu'il est activé, renvoie une valeur que l'on pourra interpréter au travers de la
variable. Si vous ne mettez pas le paramètre "Type" l' instruction MsgBox n'affichera que le bouton "OK"
Les constantes renvoyées par MsgBox :
Constante Chiffre Description

vbOk 1 OK

vbCancel 2 Annuler

vbAbort 3 Abandonner

vbRetry 4 Réessayer

vbIgnore 5 Ignorer

vbYes 6 Oui

vbNo 7 Non

Le code suivant montre un exemple de paramétrage de boîte de dialogue MsgBox avec retour de valeur
d’une variable
Sélectionnez
Private Sub Button_Supprime_Click ( )
Dim Sup
Sup = MsgBox("Veuillez confirmer la suppression du fichier", vbCritical + vbYesNo + 256, "Attention")
If Sup = vbYes Then
MsgBox "Suppression confirmée"

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


60
CT Mumbere Nguramo Augustin
End If
End Sub
Nous aurions pu écrire :
Sélectionnez
Sup = MsgBox("Veuillez confirmer la suppression du fichier", 16 + 4 + 256, "Attention")
Faites des essais avec toutes les combinaisons possibles ou bien téléchargez le module d’exemples qui
vous permettra de constater de visu toutes les combinaisons possibles de MsgBox
Voici les fenêtres que vous devez obtenir

Messagebox
Vous allez entrer vos premières instructions, pour donner un comportement à la fenêtre. Double-cliquez sur le bouton de la
fenêtre. Vous vous retrouvez sous un nouvel onglet, face à ce texte :

Public Class Form1


Private Sub Button1_Click(ByVal sender As System.Object, ByVal
✂ e As System.EventArgs) Handles Button1.Click
End Sub
End Class
Entre les lignes Private Sub […] et End Sub, saisissez le texte suivant :
MessageBox.Show("Bonjour " + TextBox1.Text)
Cela fait, générez votre programme modifié en appuyant sur [F5]. La fenêtre s’affiche à nouveau. Cette fois, entrez votre
prénom dans la TextBox puis cliquez sur le bouton. L’affichage qui en résulte est le suivant :

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


61
CT Mumbere Nguramo Augustin

Une boîte de dialogue est affichée ; elle contient le message "Bonjour" suivi de votre prénom. Cliquez sur OK et fermez la
fenêtre de votre programme. Analysons maintenant ce que vous avez fait

InputBox()
La fonction MsgBox() permet d'envoyer des messages a l'utilisateur, et donne la possibilité, à celui-ci de
répondre en cliquant sur des boutons de commande. La suite du code s'exécute en fonction du bouton
sélectionné. Mais il arrive que la question à poser ne se réponde pas par "oui", "non", ou autre. On peut
alors faire appel à la cousine de MsgBox() : InputBox() ! La fonction InputBox() est une de boîte de
message qui s'affiche avec un bouton "ok", "annuler" (comme MsgBox ), et une zone de texte ! (qui
permet à l'utilisateur de répondre par une chaine de caractères (comme son âge, adresse etc...) et non
de cliquer sur un bouton se limitant à "oui" ou "non".)Cette combinaison d'une boite de message et
d'une zone de texte est appelée boite d'entrée ( en anglais, input-->entrée, box--> boite). La boite
d'entrée n'affiche pas non plus d'icône.Voici son format : nomquelconque = inputbox("message", "titre", "defaut",
placement X, placement Y)
le "nomquelconque" doit être spécifié si l'on veut placer une instruction "if"....
"message" est l'argument spécifiant le message. (le message est situé entre deux guillemets "") "titre"
est l'argument spécifiant le titre de la boite d'entrée. (le titre est situé entre deux guillemets "") "defaut"
est l'argument indiquant la chaine de caractères qui apparait en premier dans la zone de texte. (defaut
est situé entre deux guillemets ""). Il est utilisé pour les reponses évidentes, comme ça l'utilisateur n'a
plus qu'a cliquer sur "ok". placement X et Y indique la position sur l'écran de la boite d'entrée. Je ne
m'attarderai pas dessus (et je vous les déconseille) car ils sont difficiles à maitriser...
L'argument "message" est obligatoire, les autres sont optionnels...
Voici comment afficher une boite d'entrée qui demande a l'utilisateur "comment il va", avec comme titre,
"question", et comme valeur par défaut "bien". Si l'utilisateur entre la valeur "bien" (valeur par défaut..)

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


62
CT Mumbere Nguramo Augustin

un message "moi aussi" apparait. S'il répond "mal" un message "dommage" s'affiche. S'il répond autre
chose, un message "plouf" apparait.
nomquelconque = InputBox("Comment vas-tu ?", "question", "bien")
'boite d'entrée...

If nomquelconque = "bien" then


'si l'utilisateur répond "bien" alors
'l'argument renvoyé est une chaine de caractères, et donc, est entre guillemets "".
MsgBox ("moi aussi")
Elseif nomquelconque = "mal" then
'si l'utilisateur répond "mal" alors
MsgBox ("dommage")
Else
'si l'utilisateur répond autre chose, alors
MsgBox ("plouf")
End if

Conclusion
Maintenant, vous maitrisez parfaitement la fonction MsgBox()! et presque autant la fonction InputBox()!
ainsi que l'instruction if !
Les boîtes de dialogues de Windows
III-G. Les options de codage
Il en existe seulement trois types dont deux sont très répandus. Ces options permettent un meilleur
codage et une meilleure compréhension du code. Le fait de les activer empêche le programmeur de
faire des erreurs de logique implicites (conversions implicites ou liaisons tardives par exemple). Voilà
comment les utiliser :
Sélectionnez
'Ces lignes de code doivent être écrites tout en haut de la feuille
Option Strict On 'active le mode Strict
Option Strict Off 'désactive le mode Strict
Option Explicit On 'active le mode Explicit
Option Explicit Off 'désactive le mode Explicit
Option Compare Binary 'mode binaire pour la comparaison de chaînes
Option Compare Text 'mode texte pour la comparaison de chaînes

'Si Option Strict Off


Dim a As Decimal = 5.987
Dim b As Integer
b = a 'a vaut 5. Il y a eu une conversion implicite de Decimal vers Integer. VB accepte.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


63
CT Mumbere Nguramo Augustin

'Si Option Strict On


Dim a As Decimal = 5.987
Dim b As Integer
b = a 'VB plante !!
'Il faut écrire
b = CInt(a)

'Si Option Strict Off


Dim a As Object = "Toto"
Dim b As Integer
b = a.Length 'a vaut 4. Il y a eu une liaison tardive. VB accepte.

'Si Option Strict On


Dim a As Object = "Toto"
Dim b As Integer
b = a.Length 'VB plante !!
'Il faut être strict et écrire :
b = CType(a, String).Length

'Si Option Explicit Off


a = "Toto" 'a est un String
b = 13 'b est un Integer
'VB accepte cela mais cela est très déconseillé !
'Exemple de problèmes causés avec les déclarations implicites de variables :
Dim Var 'Déclare Var implicitement
Varr = 10 'On croit avoir mis 10 dans Var mais en fait on créé une nouvelle variable nommée Varr et qui vaut 10 et Var vaut
toujours 0 !!

'Si Option Explicit On


a = "Toto" 'a est un String
b = 13 'b est un Integer
'Cela est tout simplement refusé par Visual Basic…

'Option Strict Off permet n'importe quoi. C'est du Basic au mauvais sens du terme.
'Option Strict On oblige à une grande rigueur. C'est du VB.Net
Je vous conseille de laisser Option Explicit à On, ce qui oblige à déclarer toutes les variables avant de
les utiliser Dans ce cas si vous tapez le nom d'une variable non déclarée, VB.NET génère une erreur.
Par défaut, l'Option Explicit est à On et l'Option Strict à Off pour Visual Basic 2005. En revanche, les
deux options sont désactivées par défaut sous Visual Basic 2003 !

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


64
CT Mumbere Nguramo Augustin

IV. L'interface utilisateur


IV-A. Présentation
Ici nous sommes dans la section 'Interface utilisateur'. On va apprendre à créer des éléments pour
rendre dynamique les programmes. Sachez que cette partie est très importante car pour rendre
agréable l'utilisation de votre programme, il faut avant tout créer une belle interface.

Pour créer un élément, il faut aller dans la boite à outils à gauche dans l'IDE (Integrated Development
Environment). Sélectionnez le composant à ajouter au formulaire (bouton, label, …) puis positionnez le
dans le formulaire.
Les contrôles présentés dans ce chapitre sont des contrôles de Visual Basic .NET Version 2005
(Framework 2.0). Il se peut que certaines propriétés n'existent pas avec la version 2003 de VB.NET.
Donc ne vous affolez pas si toutes les propriétés des tableaux n'apparaissent pas pour les différents
outils de la boîte à outils
IV-B. La Form
Les Forms sont des formulaires Windows. En programmation, on les appelle des " Windows Form ".
VB.NET génère automatiquement une Form lors de la création d'un projet. Pour créer une nouvelle
Form, cliquez sur 'Ajouter un formulaire' dans le menu 'Projet'. Comme chaque contrôle, les Forms
possèdent des propriétés (cf tableau). Pour afficher la boîte de propriétés, cliquez sur le contrôle puis
appuyez sur F4.
Tableau des propriétés les plus utilisées :
Propriété Description

BackColor Définis l'arrière plan du contrôle

BackGroundImage L'image en arrière plan du contrôle

Cursor Permet de changer le curseur lors du passage

Font La font (police) utilisée dans le contrôle

ForeColor La couleur du premier plan pour le texte

FormBorderStyle Comportement de la form (bordure et barre de titre)

Text Le titre de la form

AllowDrop Indique si on autorise le glisser / coller

ContextMenuStrip Associe un menu contextuel au contrôle

Enabled Indique si le contrôle est activé ou pas

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


65
CT Mumbere Nguramo Augustin

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels

WindowsState L'état de la form au démarrage (minimize...)

AcceptButton Le bouton d'acceptation du formulaire

CancelButton Le bouton d'annulation du formulaire

ControlBox Indique si le menu système est activée ou pas

HelpButton Indique si le bouton d'aide est activé ou pas

Icon Définit l'icône du contrôle

MainMenuStrip Définit le menu principal du formulaire

MaximizeBox Indique si le bouton d'agrandissement est activé

ShowIcon Indique si l'icône est visible

ShowInTaskBar Indique si le formulaire est visible dans la TaskBar

TopMost Indique si le formulaire est au premier plan

Bien sur il existe d'autres fonctions.


IV-C. La Console
La console est une fenêtre du type DOS. C'est assez archaïque comme interface mais c'est la définition
de la console. Dans une console on peut afficher uniquement du texte. Pour créer une application
console, allez dans 'Fichier' puis 'Nouveau Projet' suivit de 'Application Console'.

Sélectionnez
'Exemple de lignes de code utilisant la console
Dim LigneTapee As String = Console.In.ReadLine() 'permet de lire du texte
Console.ReadLine() 'marche aussi
Console.Out.WriteLine("Ligne à afficher") 'pour afficher du texte
Console.WriteLine 'est aussi accepté

'Petit programme en application console


Console.Out.Write("Tapez une ligne : ")
Dim LigneTapee As String = Console.In.ReadLine()
Console.Out.WriteLine("Je viens de taper : " & LigneTapee)

IV-D. Le Bouton

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


66
CT Mumbere Nguramo Augustin

Le bouton est le composant le plus important puisque c'est grâce à lui que l'utilisateur pourra interagir
avec le programme. Un bouton permet essentiellement de valider ou d'annuler une fonction.
Tableau des propriétés les plus utiles
Propriété Description

BackColor Définit l'arrière plan du contrôle

BackGroundImage L'image en arrière plan du contrôle

Cursor Permet de changer le curseur lors du passage de la souris

FlatStyle Le style du bouton

Font Le font (police) utilisé dans le contrôle

ForeColor La couleur du premier plan pour le texte

Text Le texte du bouton

TextAlign L'alignement du texte du bouton

AllowDrop Indique si on autorise le glisser / coller

ContextMenuStrip Associe un menu contextuel au contrôle

Enabled Indique si le contrôle est activé ou pas

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels

AutoSize Définit si le contrôle est dimensionné automatiquement

IV-E. Le Label
Un label est un élément permettant d'informer l'utilisateur d'une chose. Par exemple, pour indiquer à
l'utilisateur d'entrer son nom dans une TextBox, on utilise un 'Label'. Ils renseignent donc sur l'utilisation
du programme. Un label ne peut pas être modifié par l'utilisateur.
Tableau des principales fonctions du label :

Propriété Description

BackColor Définit l'arrière plan du contrôle

Image L'image affichée sur le label

Cursor Permet de changer le curseur lors du passage de la souris

FlatStyle Le style du bouton

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


67
CT Mumbere Nguramo Augustin

Font Le font (police) utilisé dans le contrôle

ForeColor La couleur du premier plan pour le texte

Text Le texte du bouton

TextAlign L'alignement du texte du bouton

AllowDrop Indique si on autorise le glisser / coller

ContextMenuStrip Associe un menu contextuel au contrôle

Enabled Indique si le contrôle est activé ou pas

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels

AutoSize Définit si le contrôle est dimensionné automatiquement


NB : Propriétés presque similaires aux boutons.

IV-F. La Textbox
Les TextBox sont des emplacements pour accueillir du texte (d'où le nom de TextBox). Elles sont très
utiles pour récupérer du texte. Par exemple dans MSN vous entrez vôtre login et vôtre mot de passe
dans des TextBox prévues à cet effet. Une TextBox peut donc être modifiée par l'utilisateur.
Tableau des différentes propriétés d'une TextBox :
Propriété Description

BackColor Définit l'arrière plan du contrôle

Cursor Permet de changer le curseur lors du passage de la souris

Font Le font (police) utilisé dans le contrôle

ForeColor La couleur du premier plan pour le texte

Text Le texte initial visible dans la TextBox

TextAlign L'alignement du texte

ContextMenuStrip Associe un menu contextuel au contrôle

Enabled Indique si le contrôle est activé ou pas

MaxLength Indique le nombre maximal de caractères dans la TextBox

Multiline Indique si la TextBox est multi ligne ou pas

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


68
CT Mumbere Nguramo Augustin

PasswordChar Caractère à afficher pour la saisie du mot de passe

ReadOnly Indique si la TextBox est en lecture seule

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels

AllowDrop Indique si on autorise le glisser / coller

IV-G. Les cases à cocher


Les CheckBox sont des cases à cocher. Elles permettent de savoir si l'utilisateur veut ou pas activer la
fonction. Il est possible aussi d'utiliser des CheckBox avec 3 états d'activation. (cf Tableau)
Tableau des propriétés des CheckBox
Propriété Description

Appearance Indique l'apparence du contrôle

BackColor Définit l'arrière plan du contrôle

BackGroundImage L'image en arrière plan du contrôle

CheckAlign Emplacement de la case à cocher

Checked Indique si la case est cochée

CheckState Indique l'état de la case à cocher

Cursor Permet de changer le curseur lors du passage de la souris

FlatStyle Le style du bouton

Font Le font (police) utilisé dans le contrôle

ForeColor La couleur du premier plan pour le texte

Text Le texte de la CheckBox

TextAlign L'alignement du texte

AllowDrop Indique si on autorise le glisser / coller

AutoCheck Indique si la case se coche automatiquement

ContextMenuStrip Associe un menu contextuel au contrôle

Enabled Indique si le contrôle est activé ou pas

ThreeState Indique si la case à 3 états d'activation

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


69
CT Mumbere Nguramo Augustin

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels


Les RadioButton sont identiques aux CheckBox. Cependant il ne peut y avoir qu'un seul RadioButton
activé contrairement aux CheckBox où il peut y avoir autant de cases cochées que de CheckBox. Les
propriétés sont identiques aux CheckBox. La seule différence est que les propriétés 'CheckState' et
'ThreeState' n'existent pas.
IV-H. La Combobox
Les ComboBox sont des menus déroulants. Elles permettent de choisir une option parmi plusieurs.
Exemple : Quelle est ta couleur préférée ? On utilisera une ComboBox pour afficher les réponses
possibles (Rouge, Bleu, Vert, Noir...)
Tableau des propriétés des ComboBox
Propriété Description

BackColor Définit l'arrière plan du contrôle

Cursor Permet de changer le curseur lors du passage de la souris

DropDownStyle Apparence de la zone du menu déroulant

FlatStyle Le style de la ComboBox

Font Le font (police) utilisé dans le contrôle

ForeColor La couleur du premier plan pour le texte

Text Le texte de la ComboBox

AllowDrop Indique si on autorise le glisser / coller

ContextMenuStrip Associe un menu contextuel au contrôle

DrawMode Indique si le code gère le dessin des éléments de la liste

Enabled Indique si le contrôle est activé ou pas

Sorted Indique comment sont triés les éléments de la liste

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels

Items Permet d'ajouter les éléments dans la liste déroulante

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


70
CT Mumbere Nguramo Augustin

Tag Données définies par l'utilisateur associées à l'objet

Exercice
1. Faire un programme qui permet d’effectuer les opérations : addition, soustraction, division et
multiplication. Le choix se fait dans le combobox qui appelle directement les inputs box afin de faciliter
l’entrée des termes a et b sources d’opérations. Le champ observation permet d’afficher l’opération
faite.

Code source
Public Class frmlistages
Dim a, b As Integer
Private Sub frmlistages_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cbooper.Items.Add("Addition")
cbooper.Items.Add("Soustraction")
cbooper.Items.Add("Division")
cbooper.Items.Add("Multiplication")
End Sub

Private Sub cbooper_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


cbooper.SelectedIndexChanged
If cbooper.Text = "Addition" Then
a = InputBox("Entrez la valeur de a")
b = InputBox("Entrez la valeur de a")
lblrepons.Text = Val(a) + Val(b)
lblobs.Text = "addition est l'operation selectionnee"
ElseIf cbooper.Text = "Soustraction" Then
a = InputBox("Entrez la valeur de a")
b = InputBox("Entrez la valeur de a")
lblrepons.Text = Val(a) - Val(b)
lblobs.Text = "La Soustraction est l'operation selectionnee"
ElseIf cbooper.Text = "Division" Then
a = InputBox("Entrez la valeur de a")
b = InputBox("Entrez la valeur de a")
lblrepons.Text = Val(a) / Val(b)
lblobs.Text = "La division est l'operation selectionnee"
ElseIf cbooper.Text = "Multiplication" Then
a = InputBox("Entrez la valeur de a")
b = InputBox("Entrez la valeur de a")
lblrepons.Text = Val(a) * Val(b)
lblobs.Text = "La Multiplication est l'opérations choisie"
Else
lblobs.Text = ""
lblrepons.Text = ""

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


71
CT Mumbere Nguramo Augustin
cbooper.Text = ""
End If
End Sub
End Class

2. Voici l’interface de conversion de monnaie par sélection de départ et monnaie d’arrivée par les
combobox.

Les details des objets sont ci-apres :

3. exerc

IV-I. Les listes


Il existe trois types de liste : les ListBox, les ListView et les TreeView.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


72
CT Mumbere Nguramo Augustin

La ListBox est le contrôle le plus facile à maîtriser. Il permet d'ajouter en ligne des éléments. Quand on
organise des dossiers ou fichiers avec Windows en mode 'Liste' on obtient le résultat dans une ListBox
(voir photo).

Une ListBox dans Windows XP


La ListView est plus complexe car elle permet plus de choses. En effet, on peut créer plusieurs
colonnes avec différents modes (détails, icones, grandes icones…). Quand on organise des dossiers ou
fichiers avec Windows en mode 'Détails' on obtient le résultat dans une ListView (voir photo).

Une ListView dans Windows XP


La TreeView est assez dur à manipuler dans la mesure où elle représente une arborescence avec
plusieurs niveaux de nœuds. Dans une TreeView, il y a un nœud racine, suivit de nœuds puis de sous

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


73
CT Mumbere Nguramo Augustin

nœuds, ce qui rend ce contrôle difficile d'accès aux débutants (comme je l'étais avant, je confirme que
j'ai galéré avec ce contrôle !). Dans Windows, cliquer sur 'Poste de Travail' puis 'Dossiers' et vous
obtenez une TreeView (voir photo).

Une TreeView dans Windows XP


Tableau des propriétés d'une ListBox
Propriété Description

BackColor Définit l'arrière plan du contrôle

Cursor Permet de changer le curseur lors du passage de la souris

Font Le font (police) utilisé dans le contrôle

ForeColor La couleur du premier plan pour le texte

AllowDrop Indique si on autorise le glisser / coller

DrawMode Indique si le code gère le dessin des éléments de la liste

ContextMenuStrip Associe un menu contextuel au contrôle

MultiColumn Indique comment doivent être affichées les données

Sorted Indique comment sont triés les éléments de la liste

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


74
CT Mumbere Nguramo Augustin

Size La taille du contrôle en pixels

Items Permet d'ajouter les éléments dans la ListBox

Tag Données définies par l'utilisateur associées à l'objet

Enabled Indique si le contrôle est activé ou pas

Soit cette interface

Code source
Public Class frmlisteameliorer

Private Sub cmdconv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdconv.Click


Select lstdep.Text
Case Is = "franc"
lbldep.Text = "FC"
Select Case lstarr.Text
Case Is = "franc"
lblarr.Text = "FC"
lblconv.Text = txtmont.Text
Case Is = "dollar"
lblarr.Text = "$"
lblconv.Text = txtmont.Text / 600
Case Is = "euro"
lblarr.Text = "EU"
lblconv.Text = txtmont.Text * 0.75 / 600
Case Else
lblarr.Text = ""
lblconv.Text = ""
MsgBox("Tu n'as choisi la monaie d'arrivée")
End Select
Case Is = "dollar"
lbldep.Text = "$"
Select lstarr.Text
Case Is = "franc"
lblarr.Text = "FC"
lblconv.Text = txtmont.Text * 600
Case Is = "dollar"
lblarr.Text = "$"
lblconv.Text = txtmont.Text
Case Is = "euro"
lblarr.Text = "EU"
lblconv.Text = txtmont.Text * 0.75

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


75
CT Mumbere Nguramo Augustin
Case Else
lblarr.Text = ""
lblconv.Text = ""
MsgBox("Tu n'as choisi la monaie d'arrivée")
End Select
Case Is = "euro"
lbldep.Text = "EU"
Select Case lstarr.Text
Case Is = "franc"
lblarr.Text = "FC"
lblconv.Text = txtmont.Text * 600 / 0.75
Case Is = "dollar"
lblarr.Text = "$"
lblconv.Text = txtmont.Text / 0.75
Case Is = "euro"
lblarr.Text = "EU"
lblconv.Text = txtmont.Text
Case Else
lblarr.Text = ""
lblconv.Text = ""
MsgBox("Tu n'as choisi la monaie d'arrivée")
End Select
Case Else
lbldep.Text = ""
MsgBox("Tu n'as pas choisi la devive de depart")
End Select
End Sub

End Class

Solution exercice en annexe


Private Sub cmdconv_Click()
Select Case cbodep.Text
Case Is = "franc"
lbldep.Text = "FC"
Select Case cboarr.Text
Case Is = "franc"
lblarr.Text = "FC"
lblconv.Text = txtmont.Text
Case Is = "dollar"
lblarr.Text = "$"
lblconv.Text = txtmont.Text / 600
Case Is = "euro"
lblarr.Text = "EU"
lblconv.Text = txtmont.Text * 0.75 / 600
Case Else
lblarr.Text = ""
lblconv.Text = ""
MsgBox "Tu n'as choisi la monaie d'arrivée"
End Select
Case Is = "dollar"
lbldep.Text = "$"

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


76
CT Mumbere Nguramo Augustin
Select Case cboarr.Text
Case Is = "franc"
lblarr.Text = "FC"
lblconv.Text = txtmont.Text * 600
Case Is = "dollar"
lblarr.Text = "$"
lblconv.Text = txtmont.Text
Case Is = "euro"
lblarr.Text = "EU"
lblconv.Text = txtmont.Text * 0.75
Case Else
lblarr.Text = ""
lblconv.Text = ""
MsgBox "Tu n'as choisi la monaie d'arrivée"
End Select
Case Is = "euro"
lbldep.Text = "EU"
Select Case cboarr.Text
Case Is = "franc"
lblarr.Text = "FC"
lblconv.Text = txtmont.Text * 600 / 0.75
Case Is = "dollar"
lblarr.Text = "$"
lblconv.Text = txtmont.Text / 0.75
Case Is = "euro"
lblarr.Text = "EU"
lblconv.Text = txtmont.Text
Case Else
lblarr.Text = ""
lblconv.Text = ""
MsgBox "Tu n'as choisi la monaie d'arrivée"
End Select
Case Else
lbldep.Text = ""
MsgBox "Tu n'as pas choisi la devive de depart"
End Select
End Sub

Tableau des propriétés d'une ListView


Propriété Description

BackColor Définit l'arrière plan du contrôle

BackGroundImage L'image en arrière plan du contrôle

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


77
CT Mumbere Nguramo Augustin

BorderStyle Indique le style de la bordure de la ListView

Cursor Permet de changer le curseur lors du passage de la souris

CheckBoxes Indique si des CheckBox sont visibles à coté des éléments

Font Le font (police) utilisé dans le contrôle

ForeColor La couleur du premier plan pour le texte

FullRowSelect Indique si toute la ligne est sélectionnée

GridLines Affiche un quadrillage autour des éléments en mode détails

View Définit la vue dans laquelle les éléments seront affichés

AllowDrop Indique si on autorise le glisser / coller

Columns Gère les colonnes de la ListView

ContextMenuStrip Associe un menu contextuel au contrôle

Items Gère les éléments de la ListView

Sorting Indique comment sont triés les éléments de la liste

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels

Tag Données définies par l'utilisateur associées à l'objet

Enabled Indique si le contrôle est activé ou pas

Tableau des propriétés d'une TreeView


Propriété Description

BackColor Définit l'arrière plan du contrôle

BorderStyle Indique le style de la bordure de la TreeView

Cursor Permet de changer le curseur lors du passage de la souris

CheckBoxes Indique si des CheckBox sont visibles à coté des éléments

Font Le font (police) utilisé dans le contrôle

ForeColor La couleur du premier plan pour le texte

AllowDrop Indique si on autorise le glisser / coller

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


78
CT Mumbere Nguramo Augustin

ContextMenuStrip Associe un menu contextuel au contrôle

DrawMode Indique si le code gère le dessin des éléments de la liste

FullRowSelect Indique si la surbrillance s'étend sur la largeur du TreeView

Nodes Gère l'ensemble des noeuds du contrôle TreeView

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels

Tag Données définies par l'utilisateur associées à l'objet

Enabled Indique si le contrôle est activé ou pas

IV-J. La Picturebox
Les PictureBox permettent d'afficher des images et de les redimensionner.
Tableau des propriétés d'une PictureBox
Propriété Description

BackColor Définit l'arrière plan du contrôle

BackGroundImage L'image en arrière plan du contrôle

Cursor Permet de changer le curseur lors du passage de la souris

Image L'image a affichée dans la PictureBox

ErrorImage Icone à afficher lorsque le chargement d'une image échoue

InitialImage Image à afficher pendant le chargement d'une autre image

ContextMenuStrip Associe un menu contextuel au contrôle

Enabled Indique si le contrôle est activé ou pas

SizeMode Manière dont l'image va être redimensionnée

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels

IV-K. La Progressbar
Les ProgressBar permettent de suivre l'évolution d'une application. Windows utilise de nombreuses
ProgressBar (lors de la recherche d'un fichier par exemple). Pour faire fonctionner une ProgressBar, il
faut spécifier une valeur pour la propriété Minimal et une autre valeur pour la propriété Maximal. Si vous

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


79
CT Mumbere Nguramo Augustin

souhaitez représenter un pourcentage d'avancement d'une opération, mettez 0 pour Minimum et 100
pour Maximum.
Tableau des propriétés d'une ProgressBar
Propriété Description

BackColor Définit l'arrière plan du contrôle

Cursor Permet de changer le curseur lors du passage de la souris

ForeColor La couleur du premier plan pour le texte

Maximum Limite supérieure de la plage que la ProgressBar utilise

Minimum Limite inférieure de la plage que la ProgressBar utilise

Style Définit le style de la ProgressBar

Value Valeur actuelle pour la ProgressBar

ContextMenuStrip Associe un menu contextuel au contrôle

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels

Tag Données définies par l'utilisateur associées à l'objet

Enabled Indique si le contrôle est activé ou pas

IV-L. Le Tabcontrol
Le TabControl est un outil très important et surtout bien pratique. En effet, il permet de mettre beaucoup
de choses dans peu d'espace puisqu'il gère cela en onglets. Dans un TabControl, il y a des TabPages.
Vous pouvez définir autant de TabPages que vous le souhaitez.
Tableau des propriétés d'un TabControl :

Propriété Description

Cursor Permet de changer le curseur lors du passage de la souris

Font La font (police) utilisée dans le contrôle

ImageList Objet qui permet de contenir des images pour les onglets

AllowDrop Indique si on autorise le glisser / coller

DrawMode Indique si l'utilisateur ou le système peint les légendes

HotTrack Indique si l'aspect des onglets change lors du survol de la

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


80
CT Mumbere Nguramo Augustin

souris

ContextMenuStrip Associe un menu contextuel au contrôle

MultiLine Indique si plusieurs lignes d'onglets sont autorisées

SizeMode Indique la façon dont les onglets sont redimentionnés

TabPages La liste des TabPages contenus dans le TabControl

Visible Indique si le contrôle est visible ou pas

Name Le nom du contrôle utilisé dans le codage

Size La taille du contrôle en pixels

Tag Données définies par l'utilisateur associées à l'objet

Enabled Indique si le contrôle est activé ou pas

IV-M. Les boîtes de dialogue


Les boîtes de dialogue sont des fenêtres utilisées par Windows pour exécuter une fonction précise. Il
existe en gros cinq boîtes de dialogue avec chacune un rôle spécifique :
a. L'OpenFileDialog permet de demander à l'utilisateur d'ouvrir un fichier. Cela est très utile pour
effectuer un transfert de fichier par exemple.
b. La FolderBrowserDialog est en fait une boite de dialogue qui permet de chercher un dossier
spécifique ou un disque dur. Par exemple, pour lister le contenu d'un dossier ou d'un lecteur, on
demande à l'utilisateur de choisir ce dossier ou lecteur et on utilise ce contrôle.
c. La ColorDialog est moins utilisée. Elle permet tout simplement d'affecter une couleur à un
élément à partir d'une boite de couleurs prédéfinies. Utile pour changer le fond d'écran d'un programme
par exemple.
d. La SaveFileDialog, comme son nom l'indique, permet tout simplement de sauvegarder un
fichier.
e. Enfin la dernière est la FontDialog qui affecte une certaine police à un texte. Très pratique pour
les logiciels de messagerie instantanée.
Le plus intéressant bien sur est de récupérer dans le code la sélection de l'utilisateur. Cela est
très simple :

Sélectionnez
'Exemples avec les boîtes de dialogues
Dim Selection As String
Dim Couleur As Color

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


81
CT Mumbere Nguramo Augustin
Dim MonFont As Font

FolderBrowserDialog.ShowDialog()
Selection = FolderBrowserDialog.SelectedPath 'récupère le chemin du dossier

OpenFileDialog.ShowDialog()
Selection = OpenFileDialog.FileName 'récupère le nom et le chemin du fichier

ColorDialog.ShowDialog()
Couleur = ColorDialog.Color 'récupère la couleur sélectionnée

FontDialog.ShowDialog()
MonFont = FontDialog.Font 'récupère le font (police, taille et style)
V. Le débogage
Le débogage est une étape très importante et fastidieuse. Elle permet de trouver et de corriger les bugs
du programme. De nombreux outils sont à notre disposition pour nous aider mais le débogage reste
encore une tâche difficile.
V-A. Les différents types d'erreurs
En programmation, il existe trois types d'erreurs possibles :
a. Les erreurs de syntaxe
b. Les erreurs d'exécution
c. Les erreurs de logique
Une erreur de syntaxe naît de la mauvaise orthographe d'une commande. Si vous tapez INTEGEER
au lieu de INTEGER, VB.NET n'a aucune idée de ce que INTEGEER signifie et il n'essaye même pas
d'exécuter le reste du programme. Les erreurs de syntaxes sont affichées dans la liste d'erreurs.
Lorsque VB.NET rencontre une erreur de syntaxe, il met gentiment dans la liste d'erreurs le mot mal
orthographié pour vous montrer exactement quel est le problème. Il suffit donc de corriger l'orthographe
de la commande et d'exécuter à nouveau le programme. Il suffit d'une seule erreur de syntaxe pour
empêcher le programme de s'exécuter. Lorsque votre programme s'exécute finalement pour la première
fois, vous savez que le programme ne possède aucune erreur de syntaxe.
Une erreur d'exécution est plus subtile qu'une erreur de syntaxe car elle ne se produit que lorsque
votre programme reçoit des données qu'il n sait pas vraiment gérer. Un programme peut être truffé
d'erreurs d'exécution, vous ne le saurez pas tant que vous n'avez pas exécuté le programme. Pour
déclencher une erreur d'exécution dans votre propre vie, allez au MacDo et, lorsque l'employé vous
demande ce qu'il peut faire pour vous, commander une crêpe. Du fait que l'employé attend de vous que

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


82
CT Mumbere Nguramo Augustin

vous commandiez quelque chose qui fait partie du menu des MacDo, il ne saura pas vous répondre et il
est probable qu'il en suivra une erreur d'exécution. (C'est une image mais c'est compréhensible).

Sélectionnez
'Exemple d'erreur d'exécution
Dim MonTableau As New ArrayList 'déclare un tableau
MonTableau = Nothing 'détruit le tableau
MonTableau.Items.Add(" Cool ") 'provoquera une erreur d'exécution car MonTableau n'existe plus puisqu'il vaut " nothing "
Sachez que même les grands programmes (MSN et autres) comportent des bugs qui sont des erreurs
d'exécution. Il est impossible de créer un gros programme sans aucune erreur. Les programmeurs
professionnels utilisent des méthodes permettant d'anticiper, détecter et corriger le plus d'erreurs
possibles.
Le type de bugs le plus délicat est dû à une erreur de logique. Une erreur de logique se produit
lorsque le programme ne fonctionne pas correctement parce que vous lui avez fourni de mauvaises
commandes. Par exemple, si vous avez des enfants adolescents, demander leur de ranger leur
chambre ou de faire la vaisselle. Ils s'acquitteront de la tâche mais pas forcément de la façon prévue.
Au lieu de bien nettoyer les assiettes, ils vont peut-être seulement les mettre sous l'eau froide, ou alors
mettre tout leur boxon sous leurs lits... Dans ces deux situations, l'adolescent a suivi vos instructions.
Vos instructions n'étaient tout simplement pas assez précises ! Un ordinateur n'est pas très différent
d'un adolescent !? (douteux). S'il peut trouver une échappatoire à vos instructions, il ne s'en privera pas
! Le problème est que comme vous pensez que vous avez donné à l'ordinateur la bonne marche à
suivre, vous n'avez aucune idée de pourquoi le programme ne fonctionne pas. Il faut maintenant trouver
l'endroit où les instructions ne sont pas assez précises et claires. Dans le cas d'un grand programme,
vous avez éventuellement à le relire entièrement ligne par ligne (quel plaisir).
V-B. Comment éliminer les bugs ?
Etant donné que les bugs sont inévitables et en plus invisibles à l'oeil nu, il faut pouvoir les détecter puis
comprendre ce qui les a provoqués afin de pouvoir les corriger. Une fois le bug localisé, il suffit de le
corriger mais attention en corrigeant un bug vous pouvez en avoir créés d'autres ! Donc je vous
conseille vivement de réécrire la partie du code qui contient le bug. En d'autres termes, le débogage est
loin d'etre une tâche facile. Trouver l'endroit où se cache le bug est la partie la plus difficile. Le moyen le
plus simple est d'exécuter le programme ligne par ligne mais cela reste assez fastidieux. Imaginez que
votre programme comporte 10 000 lignes de code, je vous vois mal examiner les lignes une par une ! Il
faut donc utiliser d'autres méthodes. Il convient de regarder la partie du programme où vous pensez
que le bug est susceptible d'agir. Par exemple, si votre fichier ne s'enregistre pas correctement, l'erreur

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


83
CT Mumbere Nguramo Augustin

se situe dans la partie du code qui traite de l'enregistrement du fichier.


Pour combattre les bugs, on peut mettre en place un piège à erreur. Un piège à erreur indique à
l'ordinateur : Voici un ensemble d'instructions génériques à suivre en cas de rencontre d'un problème
que tu ne sais gérer. Ces instructions génériques et simples permettent d'afficher un message à l'écran.
C'est toujours mieux que faire planter l'ordinateur !

Sélectionnez
'Exemple de piège à erreur dans VB.NET
Try 'Ouvre le piège
Dim a As Integer = 30
Dim b As Integer = 0

Dim Resultat As Decimal = a / b

Call CalculerPi()
Catch Ex As Exception 'Intercepte l'erreur en cas de pb
MsgBox(Ex.ToString) 'Affiche l'erreur : Ici Division par 0 impossible
End Try 'Ferme le piège
Dans cet exemple, le programme va planter car la division par 0 n'est pas possible en mathématiques.
Lorsque le programme va exécuter la ligne du calcul du résultat de la division, le code va passer
immédiatement dans le Catch et afficher le message d'erreur. Par conséquent, la fonction CalculerPi
ne sera pas exécutée. Vous comprenez donc que pour tester une partie de code, il suffit de copier ce
code entre le Try et le Catch. Il ne vous reste plus qu'à gérer l'erreur en l'affichant. Il existe d'autres
méthodes pour intercepter les erreurs. Par exemple, Visual Studio fournit des outils de débogage. Le
pas à pas consiste à exécuter le programme ligne par ligne en s'interrompant après chaque ligne. Vous
pouvez alors voir ce que le programme a réalisé et étudier le code. Si le programme fonctionne bien de
la façon dont vous le voulez, c'est que la ligne est correcte. Dans le cas contraire, il y a un bug que vous
venez de découvrir. Pour traverser un programme pas à pas, appuyer sur F11 pour un pas à pas
détaillé : la commande pas à pas détaillé traverse la totalité du programme ligne par ligne, y compris
les lignes dans les procédures du programme. L'autre option est d'utiliser un pas à pas principal en
appuyant sur F10 : Le programme traverse la totalité du programme mais à chaque fois que Visual
Basic rencontre une procédure, il exécute toutes les instructions dans cette procédure sans vous obliger
à visionner ligne par ligne la procédure (c'est donc plus rapide). Les commandes pas à pas détaillé et
pas à pas principal commencent l'exécution au début du programme et la poursuivent jusqu'à la fin.
Pour des gros programmes, cette méthode devient fastidieuse et compliquée. Pour sauter certaines
parties de votre programme dont vous savez déjà qu'elles fonctionnent, vous pouvez définir des points

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


84
CT Mumbere Nguramo Augustin

d'arrêt. Un point d'arrêt indique à Visual Basic d'exécuter le programme jusqu'à atteindre le point
d'arrêt. Pour mettre en place un point d'arrêt rien de plus simple, cliquer à gauche de la ligne où vous
souhaitez insérer une point d'arrêt. Visual Basic affiche un point rouge dans la marge de gauche pour
vous montrer à quelle ligne correspond le point d'arrêt. Pour supprimer un point d'arrêt, cliquer de
nouveau sur la ligne dans la marge. Si vous souhaitez supprimer tous les points d'arrêt d'un seul coup,
aller dans le menu déboguer puis cliquer sur effacer tous les points d'arrêt. La dernière méthode pour
intercepter les bugs est l'espionnage de variables. Cette fonction est très utile. Elle permet de vérifier
la valeur d'une variable à tout moment, comme ça vous pouvez contrôler la variable. Pour ajouter un
espion, vous devez d'abord déboguer le programme. Ensuite sélectionner la variable et faites un clique
droit puis sélectionner Ajouter un espion. L'espion apparaît dans la fenêtre des espions. Elle affichera la
valeur de la variable à chaque instant. Pour récapituler, pour combattre un bug, il faut le localiser, puis
le détruire. Pour détruire les bugs, vous disposez du pas à pas (principal ou détaillé), des points
d'arrêt (pour intercepter le code à un endroit précis), des espions (pour espionner des variables) et
des pièges à erreurs (pour gérer des erreurs).

Les menus
Dans ce chapitre, nous allons parler d'un élément important : les menus. Vous savez, les menus, la
barre en haut de votre navigateur favori par exemple, avec Fichier, Édition, etc. Et celle juste en dessous,
avec les images (la barre d'outils) !
Encore une fois, l'IDE nous mâche le travail ; vous allez voir !
Présentation des menus
Vous devez voir dans votre boîte à outils un sous-menu Menus et barres d'outils, semblable à la figure
suivante. Comme vous pouvez le constater, ces objets nous permettront de créer : des menus (1), une
barre d'outils (2), une barre de statut (3) et un menu contextuel (4) (menu que vous voyez s'afficher lors
du clic droit sur la souris).

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


85
CT Mumbere Nguramo Augustin

Il est possible de créer toutes sortes de menus


Passons tout de suite au menu le plus intéressant : la barre de menus (1) !
La barre de menus
Création graphique
Comme je vous l'ai dit, L'IDE va grandement nous mâcher le travail : un assistant est fourni avec pour
créer ces menus. Prenez l'objet MenuStrip et insérez-le sur votre feuille (feuille vide de préférence),
comme à la figure suivante.

Insérez l'objet MenuStrip sur votre feuille


Vous voyez donc que ce menu se place automatiquement en haut de votre feuille. Vous ne le voulez
pas en haut ? Vous êtes pénibles ! Pas de problème, une propriété permet de choisir la position dans la
feuille de ce menu (gauche, droite, etc.), ou un superbe objet : le ToolStripContainer.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


86
CT Mumbere Nguramo Augustin

Cette propriété est Dock, et comme notre IDE est gentil, il nous offre la possibilité de paramétrer cette
propriété en cliquant sur la petite flèche en haut à droite de notre menu, comme à la figure suivante.

Il est possible de paramétrer la propriété


Bon, passons au remplissage de ce menu !
Comme vous le voyez, lorsqu'il est sélectionné, le menu vous affiche un petit « Tapez ici » (non, ne
sortez pas votre marteau !), comme quoi c'est on ne peut plus facile !
La première « ligne » correspond aux menus principaux (comme Fichier, Édition…). Écrivez donc le nom
de votre premier menu (pour moi ce sera Fichier). Vous devez voir lors de l'écriture de ce premier menu
deux cases supplémentaires (qui sont également masochistes apparemment), celle du dessous
correspond au premier sous-menu de notre premier menu (Fichier -> Nouveau par exemple), la seconde
est celle qui nous permet de créer un second menu.
Ne grillons pas les étapes, remplissons déjà notre premier menu !
Pour moi ce sera Reset, et celui en dessous, Quitter.
Il y a encore des « Tapez » qui apparaissent, je fais quoi ?
Eh bien, ces cases permettent de créer des sous-menus qui vous offrent plusieurs choix.
Comme vous allez le voir, la possibilité de créer notre menu entièrement personnalisé est bien réelle ! je
crée un second menu (voir figure suivante), faites de même.

Créez un second menu


Puis, pour finir un petit label au centre de la feuille : LBL_TEXTE.
Événements
Maintenant, attaquons la gestion des événements !

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


87
CT Mumbere Nguramo Augustin

Ces événements seront créés grâce à l'assistant Visual Studio comme le clic sur un bouton : un double-
clic sur le sous-menu que vous voulez gérer, le code s'ajoute automatiquement :
Private Sub BonjourToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bonj
ourToolStripMenuItem.Click

End Sub
Faites cela pour tous les sous-menus (sinon à quoi ça sert de les créer).
Je peux le faire sur les menus comme Fichier aussi ?
Oui bien sûr, si vous en trouvez l'utilité !
Bon, voilà donc le code dûment rempli :
Public Class Form1

Private Sub ResetToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Res


etToolStripMenuItem.Click
Me.LBL_TEXTE.Text = ""
End Sub

Private Sub QuitterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Qui


tterToolStripMenuItem.Click
End
End Sub

Private Sub BonjourToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B


onjourToolStripMenuItem.Click
Me.LBL_TEXTE.Text = "Bonjour !"
End Sub

Private Sub AuRevoirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


AuRevoirToolStripMenuItem.Click
Me.LBL_TEXTE.Text = "Au revoir."
End Sub

Private Sub CiaoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ciao


ToolStripMenuItem.Click
Me.LBL_TEXTE.Text = "Ciao."
End Sub

Private Sub ByeByeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B


yeByeToolStripMenuItem.Click

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


88
CT Mumbere Nguramo Augustin
Me.LBL_TEXTE.Text = "Bye bye."
End Sub

Private Sub AstalavistaBabyToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Ha


ndles AstalavistaBabyToolStripMenuItem.Click
Me.LBL_TEXTE.Text = "Astalavista baby !"
End Sub

End Class
Eh oui, tant de lignes pour si peu ! Je pense que vous avez compris l'utilité ce que doit faire le
programme : lors du clic sur un sous-menu de Afficher, il affiche ce texte, lors du clic sur Reset, il efface,
et lors du clic sur Quitter, il quitte le programme (le End effectuant cette action).
Bon, vous vous souvenez des MsgBox ?
Eh bien, elles vont nous être utiles ici : nous allons mettre une confirmation de sortie du programme.
Je pense que vous êtes capables de le faire par vous-mêmes, mais bon, je suis trop aimable :
If MsgBox("Souhaitez-vous vraiment quitter ce magnifique programme ?", 36, "Quitter") = MsgBoxResult.Yes Then
End
End If
Pourquoi 36 en deuxième argument ?
Vous ne vous en souvenez pas ? Je vous redonne le tableau :

Membre Valeur Description

OKOnly 0 Affiche le bouton « OK » uniquement.

OKCancel 1 Affiche les boutons « OK » et « Annuler ».

AbortRetryIgnore 2 Affiche les boutons « Abandonner », « Réessayer » et « Ignorer ».

YesNoCancel 3 Affiche les boutons « Oui» , « Non » et « Annuler ».

YesNo 4 Affiche les boutons « Oui » et « Non ».

RetryCancel 5 Affiche les boutons « Réessayer » et « Annuler ».

Critical 16 Affiche l'icône « Message critique ».

Question 32 Affiche l'icône « Requête d'avertissement ».

Exclamation 48 Affiche l'icône « Message d'avertissement ».

Information 64 Affiche l'icône « Message d'information ».

DefaultButton1 0 Le premier bouton est le bouton par défaut.

DefaultButton2 256 Le deuxième bouton est le bouton par défaut.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


89
CT Mumbere Nguramo Augustin

Membre Valeur Description

DefaultButton3 512 Le troisième bouton est le bouton par défaut.

L'application est modale. L'utilisateur doit répondre au message avant de


ApplicationModal 0
poursuivre le travail dans l'application en cours.

Le système est modal. Toutes les applications sont interrompues jusqu'à ce


SystemModal 4096
que l'utilisateur réponde au message.

MsgBoxSetForeground 65536 Spécifie la fenêtre de message comme fenêtre de premier plan.


Et voilà votre programme qui affiche ce que vous voulez et qui vous demande une confirmation de
fermeture, comme le montre la figure suivante.

Le programme demande
confirmation avant de se fermer
Les différents contrôles des menus
Je viens de vous montrer un menu classique avec du texte comme contrôle, mais vous en voulez
sûrement plus. Eh bien, c'est parti : nous allons créer des combobox (listes déroulantes) et des textbox.
Dans le menu ??
Eh bien oui ! Vous ne devez pas en voir souvent, mais ça peut être utile !
Donc, pour avoir accès à ces contrôles supplémentaires, il faut cliquer sur la petite flèche disponible à
côté du « Tapez ici » (voir figure suivante).

« Tapez ici »
Vous voyez que s'offrent à vous les contrôles tant désirés ! Eh bien, personnalisons un peu notre menu
pour arriver à la figure suivante.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


90
CT Mumbere Nguramo Augustin

Ce que nous devons obtenir


Sachant que dans la combobox Message prédéfini j'ai remis les messages d'avant (vous devez vous servir
de la propriété collection de cette combobox, du côté design, pour en assigner les choix ou alors passer
par le code VB, au choix).
Schématiquement :
 Fichier
o Reset
o Quitter
 Affichage
o Message prédéfini
 Combobox
 Bonjour !
 Au revoir.
 Ciao.
 Bye bye.
 Astalavista baby !
o Message personnalisé
 Textbox
 Écrire
Ce qui est assez gênant avec cet assistant, c'est que les noms qui sont entrés automatiquement sont
assez coton à repérer ; avec une textbox, une combobox, ça passe, mais au-delà, aïe ! Alors prenez
l'habitude de les renommer : un tour sur les propriétés et on change : CB_MENU et TXT_MENU.
Bon, ensuite on utilise notre fidèle assistant pour créer les événements correspondants : sur le clic du
bouton Écrire et lors du changement de la combobox.
Si vous avez utilisé l'assistant pour créer l'événement de la combobox, lorsqu'elle est dans un menu,
l'événement est le Clic, il faut le changer :
Private Sub CB_MENU_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles C
B_MENU.SelectedIndexChanged
Supprimez les événements relatifs aux anciens sous-menus (Bonjour…), mais gardez ceux
correspondant aux sous-menus Reset et Quitter.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


91
CT Mumbere Nguramo Augustin

Écrivons maintenant notre code : côté combobox, on veut afficher le texte correspondant à l'item de la
combobox, l'événement SelectedItem sera utilisé, le SelectedValue n'étant pas disponible dans cette façon
d'utiliser la combobox.
Ce qui nous donne :
Private Sub CB_MENU_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles C
B_MENU.SelectedIndexChanged
Me.LBL_TEXTE.Text = Me.CB_MENU.SelectedItem
End Sub
Bon, pour notre bouton Écrire, ce n'est pas sorcier : on récupère la valeur de la textbox et on l'affiche ;
voilà le tout :
Public Class Form1

Private Sub ResetToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Res


etToolStripMenuItem.Click
'Efface le label
Me.LBL_TEXTE.Text = ""
End Sub

Private Sub QuitterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Qui


tterToolStripMenuItem.Click
'Fermeture avec confirmation
If MsgBox("Souhaitez-vous vraiment quitter ce magnifique programme ?", 36, "Quitter") = MsgBoxResult.Yes Then
End
End If
End Sub

Private Sub CB_MENU_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


CB_MENU.SelectedIndexChanged
'Écrit le texte de la combobox lors du changement d'index
Me.LBL_TEXTE.Text = Me.CB_MENU.SelectedItem
End Sub

Private Sub EcrireToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ecri


reToolStripMenuItem.Click
'Écrit le texte de la textbox lors de l'appui sur « Écrire »
Me.LBL_TEXTE.Text = Me.TXT_MENU.Text
End Sub
End Class
Et voici le rendu final à la figure suivante.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


92
CT Mumbere Nguramo Augustin

Notre rendu !
Comme vous voyez, le VB est assez facile à utiliser dans différentes situations puisque les propriétés
ne changent pas. Bon, maintenant que vous savez ça, on ne se repose pas sur ses lauriers, on avance.
La barre de statut
Au tour de la barre de statut. Il s'agit de la barre qui vous indique… le statut de l'application. À quoi va
nous servir cette barre ? Eh bien à afficher le statut de votre application par exemple, ou alors tout
simplement à mettre des boutons dessus ! Je vais vous montrer une manière d'utiliser à bon escient
cette barre, après, à vous de faire ce que vous voulez et de trifouiller toutes ses propriétés !
Créons déjà ladite barre : toujours dans le menu Menus et barres d'outils, vous choisissez StatusStrip. Vous
l'intégrez à la feuille, elle se place en bas (normal), vous pouvez changer en agissant encore une fois
sur la propriété Dock. Ajoutez deux contrôles : un label et une progressbar. La progressbar est
accessible, comme pour la combobox de la partie précédente, avec la petite flèche. Renommez-les :
LBL_STATUT, PGB_STATUT.

Nous allons nous servir de la progressbar comme indication d'avancement. Évidemment, ici, afficher un
label n'est pas sorcier, notre ordinateur ne va pas réfléchir plus d'une milliseconde (oui, même sous
Windows 3.1). Nous allons donc simuler une pause.
Pour utiliser cette progressbar comme indication, voici une astuce. Lors d'un transfert comme un
téléchargement, calculez la taille totale du fichier, le taux de transfert, ressortez le temps, et ajustez
votre progressbar à ce temps, et voilà comment s'en servir comme source d'indication. Mais bon ce
n'est pas pour tout de suite.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


93
CT Mumbere Nguramo Augustin

Recréons donc un petit timer pour simuler le temps d'attente (TIM_STATUT) et utilisons le même procédé
que lors du chapitre sur les timers. Nous allons donc faire progresser la barre et afficher dans le label le
statut. C'est un exercice que vous pouvez évidemment faire.
Voici donc une solution :
Public Class Form1

Private Sub ResetToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Res


etToolStripMenuItem.Click
'Efface le label
PauseFactice()
Me.LBL_TEXTE.Text = ""

End Sub

Private Sub QuitterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Qui


tterToolStripMenuItem.Click
'Fermeture avec confirmation
If MsgBox("Souhaitez-vous vraiment quitter ce magnifique programme ?", 36, "Quitter") = MsgBoxResult.Yes Then
End
End If
End Sub

Private Sub CB_MENU_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


CB_MENU.SelectedIndexChanged
'Écrit le texte de la combobox lors du changement d'index
PauseFactice()
Me.LBL_TEXTE.Text = Me.CB_MENU.SelectedItem

End Sub

Private Sub EcrireToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ecri


reToolStripMenuItem.Click
'Écrit le texte de la textbox lors de l'appui sur « Écrire »
PauseFactice()
Me.LBL_TEXTE.Text = Me.TXT_MENU.Text

End Sub

Private Sub PauseFactice()


LBL_STATUT.Text = "Chargement ..."

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


94
CT Mumbere Nguramo Augustin
PGB_STATUT.Value = 0
TIM_STATUT.Enabled = True
End Sub

Private Sub TIM_STATUT_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TIM_STATUT.T


ick
'Si la progressbar est arrivée au bout, on désactive le timer
If Me.PGB_STATUT.Value = 100 Then
Me.TIM_STATUT.Enabled = False
LBL_STATUT.Text = "Prêt"
Else
'Augmente de 1 la progressbar
Me.PGB_STATUT.Value = Me.PGB_STATUT.Value + 1
End If
End Sub

End Class
Bon, pour ce code, je ne me suis pas trop fatigué : j'ai copié le code du chapitre sur les timers. La «
pause » n'est pas effectuée donc le texte s'affiche pendant la progression. C'est un exemple, vous
pourrez utiliser les barres de chargement en situation réelle plus tard. L'idéal aurait été de placer un
sémaphore (un flag), le tout avec une boucle While. Le rendu se trouve à la figure suivante.

Notre barre de chargement


Alors ce code n'est pas dur à comprendre : j'ai mélangé le code de progression avec le code existant,
en ajoutant des repères grâce au label : le « Chargement…» et le « Prêt ». Comme d'habitude, essayez
de modifier ce code pour le rendre plus efficace et comme vous le souhaitez.
Le menu contextuel

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


95
CT Mumbere Nguramo Augustin

Alors, le menu contextuel est, comme je vous l'ai expliqué, le menu visible lors du clic droit. Nous allons
créer un contextmenu, toujours dans la suite de notre programme qui va déplacer le label qui nous sert à
afficher le texte.
Donc, toujours dans le menu de la boîte à outils : Menus et barres d'outils, vous prenez le ContextMenuStrip
et vous l'intégrez à la feuille. Une fois cela fait, créez un élément contenant le texte : « Déplacer le label
ici ». Ensuite, comme à l'accoutumée, on crée son événement correspondant. Dans cet événement,
nous allons récupérer la position du curseur et changer la propriété location du label :
Me.LBL_TEXTE.Location = Control.MousePosition
Control.MousePosition est la propriété de position de la souris (Control). Eh oui, même la souris a des
propriétés, vous en rêviez, n'est-ce pas ?
Et donc voilà, une fois tout le code bien agencé :
Public Class Form1

Private Sub ResetToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Res


etToolStripMenuItem.Click
'Efface le label
PauseFactice()
Me.LBL_TEXTE.Text = ""

End Sub

Private Sub QuitterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Qui


tterToolStripMenuItem.Click
'Fermeture avec confirmation
If MsgBox("Souhaitez-vous vraiment quitter ce magnifique programme ?", 36, "Quitter") = MsgBoxResult.Yes Then
End
End If
End Sub

Private Sub CB_MENU_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


CB_MENU.SelectedIndexChanged
'Écrit le texte de la combobox lors du changement d'index
PauseFactice()
Me.LBL_TEXTE.Text = Me.CB_MENU.SelectedItem

End Sub

Private Sub EcrireToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ecri


reToolStripMenuItem.Click

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


96
CT Mumbere Nguramo Augustin
'Écrit le texte de la textbox lors de l'appui sur « Écrire »
PauseFactice()
Me.LBL_TEXTE.Text = Me.TXT_MENU.Text

End Sub

Private Sub PauseFactice()


LBL_STATUT.Text = "Chargement ..."
PGB_STATUT.Value = 0
TIM_STATUT.Enabled = True
End Sub

Private Sub TIM_STATUT_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TIM_STATUT.T


ick
'Si la progressbar est arrivée au bout, on désactive le timer
If Me.PGB_STATUT.Value = 100 Then
Me.TIM_STATUT.Enabled = False
LBL_STATUT.Text = "Prêt"
Else
'Augmente de 1 la progressbar
Me.PGB_STATUT.Value = Me.PGB_STATUT.Value + 1
End If
End Sub

Private Sub DéplacerLeLabelIciToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles DéplacerLeLabelIciToolStripMenuItem.Click
'lors d'un clic droit et du choix de déplacement du label, on place le label aux positions de la souris.
Me.LBL_TEXTE.Location = Control.MousePosition
End Sub
End Class
Lors d'un clic et de la sélection, le label bouge. Ce programme était là pour vous montrer les utilisations
des différents menus, il est bien évidemment inutile (donc indispensable) !
 Il existe des menus contextuels, des barres de menus, des barres d'outils…
 Le menu contextuel apparaît lors du clic droit de la souris.
 Les menus sont réservés aux applications volumineuses et nécessitant une grande interaction
avec l'utilisateur.
Modele typique
Code source

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


97
CT Mumbere Nguramo Augustin

Public Class frmmenu

Private Property OpenFileDialog As Object

Private Sub OuvrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


OuvrirToolStripMenuItem.Click
OpenFileDialog1.ShowDialog()
End Sub

Private Sub ImprimerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


ImprimerToolStripMenuItem.Click
PrintDialog1.ShowDialog()
End Sub

Private Sub EnregistrerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


EnregistrerToolStripMenuItem.Click
SaveFileDialog1.ShowDialog()
End Sub

Private Sub FermerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


FermerToolStripMenuItem.Click
Me.Close()
End Sub

Private Sub PoliceToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


PoliceToolStripMenuItem.Click
FontDialog1.ShowDialog()
End Sub

Private Sub OperationToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


OperationToolStripMenuItem.Click
frmoperation.Show()
End Sub

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


98
CT Mumbere Nguramo Augustin
End Class

VI. La diffusion de l'application


VI-A. Comment créer une installation (Setup)
Dans cet exemple, le projet dont l'Install sera généré s'appelle Hello World. Une fois votre projet ouvert
et terminé de préférence, cliquez sur Fichier puis ajouter suivi de nouveau projet. Dans le volet de
gauche, dérouler le menu Autre types de projets puis choisissez Configuration et déploiement.
Sélectionnez ensuite dans le volet de droite, Assistant Installation

L'assistant d'installation s'ouvre. Il va vous guider à travers les étapes à suivre pour créer votre
installation. La page d'accueil s'affiche. Cliquez sur Suivant

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


99
CT Mumbere Nguramo Augustin

Choisissez l'option Créer un programme d'installation pour une application Windows (cochée par
défaut).
S'il s'agit d'une application Web, choisissez l'autre option. Ne cochez rien dans Voulez vous créer un
package redistribuable.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


100
CT Mumbere Nguramo Augustin

Dans la fenêtre suivante, sélectionnez la sortie principale du projet. Visual Studio générera un fichier
Exe pour votre application (dans certains cas cela peut être un fichier dll s'il s'agit d'un projet
bibliothèque de classe). Cliquez sur Suivant.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


101
CT Mumbere Nguramo Augustin

Ici, vous pouvez ajouter des fichiers supplémentaires à votre application. Par exemple, si votre
programme contient une icône, vous devez ajouter le fichier Ico manuellement via cette interface. Pour
cela, cliquez sur Ajouter puis cherchez votre fichier sur votre disque dur. Idem si vous souhaitez ajouter
un fichier Read Me. Une fois tous vos fichiers ajoutés, cliquez sur Suivant.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


102
CT Mumbere Nguramo Augustin

Un récapitulatif de votre installation s'affiche. Vérifiez vos choix. En cas d'erreur vous pouvez cliquer sur
Précédent sinon cliquez sur Terminer.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


103
CT Mumbere Nguramo Augustin

Voilà la création de l'installation est terminée ! Mais il reste quand même à configurer quelques
petites choses !
VI-B. Faire connaître son application
Vous apercevez un nouveau projet dans votre solution. Ceci est le projet de l'installation de l'application.

Cliquez sur Setup1 (le nom de votre installation) puis appuyez sur F4 (fenêtre propriétés).

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


104
CT Mumbere Nguramo Augustin

La ligne AddRemoveProgramsIcons permet d'affecter une icône qui s'affichera lors de la


désinstallation de votre programme. Dans Author, mettez le nom de votre société ou votre propre nom.
Dans Manufacturer, mettez votre nom. ProductName permet de donner un nom à votre programme
(exemple : Hello World). Mettez la valeur True dans RemovePreviousVersion (si vous faites des mises
à jour de votre programme, l'ancien programme sera effacé lors de l'installation de la mise à jour).
ProductName permet de donner un nom à votre installation genre Installation de Hello World. Enfin
dans Version, mettez le même numéro de version que dans votre programme. Exemple : Si la version
de votre programme est 1.2.3 alors mettez 1.2.3 dans la case version. Cliquer sur Oui en réponse au
message d'avertissement.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


105
CT Mumbere Nguramo Augustin

Le ProductCode à changé, cela est normal. En effet, pour détecter les versions d'un même
programme, le programme d'installation regarde le ProductCode de l'ancienne installation. Si vous
avez spécifié True dans RemovePreviousVersion alors le programme d'installation effacera
automatiquement l'ancienne version (pratique non ?) Faites un clic droit sur Setup1 et choisissez
Affichage et Interface Utilisateur.

Ici, ce sont les fenêtres de votre installation qui sont référencées. Ne touchez rien dans Installation
d'administration. Cliquez sur Bienvenue et faites F4. Vous pouvez ici modifier le texte de bienvenue ou
alors le copyright et même ajouter une bannière. Configurez le à votre guise ! Vous pouvez répéter
l'opération pour les fenêtres Dossier d'installation, Confirmer l'installation, Progression et Terminé. Une
option intéressante est l'ajout de nouvelles fenêtres. Pour cela, choisissez la catégorie où vous
souhaitez ajouter une boite de dialogue (Début, Progression ou Fin toujours dans Installer !!), faites un
clique droit et sélectionner Ajouter une boite de dialogue. Faites vos choix. Je n'expliquerai pas les
différentes boîtes de dialogue puisqu'elles sont expliquées dans l'explorateur de Visual Studio (cliquer
sur une boite de dialogue et la description apparaît en bas). De plus, les noms sont assez explicites.
Enfin, si vous souhaitez modifier l'ordre d'apparition des fenêtres lors de l'installation, clic droit sur la
boite de dialogue et sélectionner Monter ou Descendre selon votre convenance.
VI-C. Créer un raccourci pour votre application
Faites un clic droit sur Setup1 et choisissez Affichage puis Système de Fichier. Cliquez sur Dossier
d'application. Dans le volet de droite, faites un clic droit sur la sortie principale du projet et sélectionner
Créer un raccourci. Renommer votre raccourci puis glisser le dans Menu Programmes de l'utilisateur
et dans Bureau de l'utilisateur volet de gauche). Vous l'avez déjà compris, le raccourci s'affichera sur le
bureau de l'utilisateur (Bureau de l'utilisateur) et dans le menu démarrer (Menu Programmes de
l'utilisateur). Enfin, pour affecter une icône à votre raccourci, sélectionner le puis clic droit et aller dans

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


106
CT Mumbere Nguramo Augustin

Propriétés. Cliquez sur Aucun dans Icon et sélectionner Parcourir dans le menu déroulant. Aller
chercher votre icône ou ajouter la si cela n'est déjà fait. Ne toucher pas aux autres propriétés.
Si vous avez oublié d'ajouter un fichier à votre installation, pas de panique ! clic droit sur Setup1 (et oui
encore là !!) et faites Ajouter puis Fichier.
Voilà c'est vraiment fini, c'était si dur que ca ? Maintenant n'oubliez pas de générer votre projet. Rien
de plus simple, clic droit sur Setup1 (décidément y'en a marre...) et choisissez Générer. La génération
s'affiche dans la fenêtre de Sortie. La barre de statut vous informe que la génération à réussi.

Le setup est créé dans le dossier de votre solution et contient un fichier Msi et Exe. Celui que vous
distribuerez à vos amis est le fichier Msi.
Il existe deux modes de génération Debug et Release. Si votre application est en Beta-Test, choisissez
le mode Debug sinon si votre application est finie et ne comporte aucun bug, sélectionnez Release.
Pour changer le mode de génération, clic droit sur Setup1 puis Propriétés. En haut à gauche, dans
configuration, choisissez Release ou Debug. Faites une nouvelle génération puis prendre en compte
les modifications.

Les bases pour se connecter à une base de données Access avec


Vb.net
Introduction
Cette section explique les syntaxes pour se connecter à une BD Access, ajouter, modifier et supprimer
des données... C'est une version simplifiée de ma source qui, suite aux mises à jours, est devenue
moins compréhensible pour les débutants, à qui elle était adressée au départ...
Premier cas
Connexion avec assistant
Soit le model Physique suivant

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


107
CT Mumbere Nguramo Augustin

Creez les interfaces en vb.


Etapes :
1. Connexion
2. Importation de la base de données
3. Inserez les outils et commandes
Formulaire inscription des étudiants

Code y relatif
Public Class frminscription
Dim tot As Integer
Private Sub TetudiantBindingNavigatorSaveItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles TetudiantBindingNavigatorSaveItem.Click
Me.Validate()
Me.TetudiantBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Td2DataSet)

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles MyBase.Load
'TODO: cette ligne de code charge les données dans la table
'Td2DataSet.Tetudiant'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
Me.TetudiantTableAdapter.Fill(Me.Td2DataSet.Tetudiant)
tot = 0
For i As Integer = 0 To TetudiantDataGridView.Rows.Count - 1

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


108
CT Mumbere Nguramo Augustin
tot = tot + TetudiantDataGridView.Rows(i).Cells(5).Value
Next
txtsomme.Text = tot.ToString
End Sub

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


System.EventArgs) Handles cmddernier.Click
Me.TetudiantBindingSource.MoveLast()

End Sub

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


System.EventArgs) Handles cmdpremier.Click
Me.TetudiantBindingSource.MoveFirst()
End Sub

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


System.EventArgs) Handles cmdsuivant.Click
Me.TetudiantBindingSource.MoveNext()
End Sub

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


System.EventArgs) Handles cmdNew.Click
Me.TetudiantBindingSource.AddNew()
End Sub

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


System.EventArgs) Handles cmdprecedent.Click
Me.TetudiantBindingSource.MovePrevious()
End Sub

End Class

Formulaire operations

Code
Imports System.Data.OleDb
Public Class frmsousformulaire
Dim con As New OleDbConnection
Dim adpt As OleDbDataAdapter
Dim dtt As New DataTable
Dim tot As Integer
Private Sub TetudiantBindingNavigatorSaveItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles TetudiantBindingNavigatorSaveItem.Click

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


109
CT Mumbere Nguramo Augustin
Me.Validate()
Me.TetudiantBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.Td2DataSet)

End Sub

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


System.EventArgs) Handles MyBase.Load
'TODO: cette ligne de code charge les données dans la table
'Td2DataSet.Tetudiant'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
Me.TetudiantTableAdapter.Fill(Me.Td2DataSet.Tetudiant)
con.ConnectionString = "Provider=Microsoft.jet.oledb.4.0; data source=" &
Application.StartupPath & "\td2.mdb"
'il faut appeller la procedure
con.Open()
'creer la procedure d'avance avant de l'appeller. c'est celle-ci en appelle
Call affichergrille()
con.Close()
tot = 0
For i As Integer = 0 To datagrid.Rows.Count - 1
'les nombres de colonnes sont compte a partir de 0. c'est pourquoi ici
nous avons 0,1,2,3,4
tot = tot + datagrid.Rows(i).Cells(4).Value
Next
totvers.Text = tot.ToString
End Sub
Private Sub affichergrille()
'creation de la requete avec sql
adpt = New OleDbDataAdapter("select * from Tpaiement where Nummet ='" &
NummetTextBox.Text & "'", con)
' remplir le dtt
'pour les champs text il faut =' " & nomde chap en vb asssocie de propriete &
" ' ", la connection.
's'il s'agit d'un champs Numerique on aura: = " & nomde chap en vb asssocie de
propriete & , la connection.
adpt.Fill(dtt)
'grille prend le contenu de dtt
datagrid.DataSource = dtt

End Sub
Importation d’une requete access en vb
Un datagrid qui permet d’importer un requete dans laquelle on determine le solde de chaque
etudiant.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


110
CT Mumbere Nguramo Augustin

Etude de cas
Travail Pratique
Regle de gestion
1. Un étudiant est identifie par un numéro étudiant, a un nom, postnom, genre une confession religieuse,
date de naissance, une adresse.
2. Un étudiant effectue des opérations de paie au cours de l’année académique. Une opération est
identifiée par un code opération, a une date, une désignation et un montant versé.
3. Une section est identifiée par un code section, a un nom section
4. Un département est identifie par un code dpt, a un nom dpt.
5. Une promotion est identifie par un code promotion a un code promotion a un libelle, Montant
académique.
TD faire :
- le MCD, MLD et MPD.
- Importer la BD en vb.
- Créer les interfaces en vb
- Créer les commandes : Nouveau, Premier, Suivant, Dernier, Précédent, Supprimer, actualiser
- Instruire les différents codes
- Créer les menus

Interface en Vb

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


111
CT Mumbere Nguramo Augustin
Cette interface permet de calculer les versements effectués par un étudiant à la sélection de son numéro
matricule dans la liste des numéros matricules. A la sélection dans la liste, le nom et postnom et total versement
change selon le numéro matricule.
Les differents codes sont ci –apres :
Imports System.Data.OleDb
Public Class souformulaire
Dim con As New OleDbConnection
Dim da, daet As New OleDbDataAdapter
Dim ds, dset As New DataSet
Dim max, tot As Integer
Dim rech As New OleDbCommand

Private Sub TetudiantBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


TetudiantBindingNavigatorSaveItem.Click
Me.Validate()
Me.TetudiantBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.GestISCDataSet)

End Sub

Private Sub souformulaire_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


'TODO: cette ligne de code charge les données dans la table 'GestISCDataSet.Tetudiant'. Vous pouvez la déplacer ou la
supprimer selon vos besoins.
Me.TetudiantTableAdapter.Fill(Me.GestISCDataSet.Tetudiant)
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\gestISC.accdb"
con.Open()
daet = New OleDbDataAdapter("select Nummat from Tetudiant", con)
daet.Fill(dset, "gestISC")
max = dset.Tables(0).Rows.Count 'determination du maximum d'enregistremet dans la table
For i As Integer = 0 To max - 1
NummatComboBox.Items.Add(dset.Tables(0).Rows(i).Item(0)) 'remplissages de combobox par des enregidtrements
Next
con.Close()
Call AfficherNom() 'appel de la foction qui permet d'afficher le nom et postnom dans le label
Call remplirdtgrid() 'appel de la fonction qui permet de remplir le datagride en donnees issue de la table Toperation
Call calculertot() 'appel de la foction qui permet de calculer le total de versement
End Sub
Private Sub AfficherNom() 'fonction qui permet d'acceder au nom et postnom dans la base de donnees
con.Open()
rech.CommandText = "Select Nomet,Postnomet from Tetudiant where Nummat='" & NummatComboBox.Text & "'" 'cet sql
permet de selectionner le nom et le postnom par selection de Numero matricule dans le combobox
rech.CommandType = CommandType.Text
rech.Connection = con
Dim dbr As OleDbDataReader = rech.ExecuteReader 'declaration de data reader pour lire les donnees et l'executer
If dbr.Read Then
lblNom.Text = dbr(0) 'la position de Nom est la premiere , c'est la raison d'etre de de (0)
lblPostNom.Text = dbr(1) 'la position de PostNom est la deuxieme , c'est la raison d'etre de de (1)
End If
con.Close()
End Sub

Private Sub NummatComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles NummatComboBox.SelectedIndexChanged
Call AfficherNom() 'affichage de nom
Call remplirdtgrid() 'appel de la fonction remplissage de datagrid des donnnes
calculertot() 'appel de la foction calcul de total verse par etudiant selectionnee de combobox Numero etudiant
End Sub

Private Sub remplirdtgrid()


con.Open()
da = New OleDbDataAdapter("select * from Toperation where Nummat ='" & NummatComboBox.Text & "'", con)

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


112
CT Mumbere Nguramo Augustin
Dim dt As New DataTable
da.Fill(dt)
dtgDonnees.DataSource = dt
con.Close()

End Sub
Private Sub calculertot() 'creation de la fonction de calcul de la somme des versement
tot = 0
For i As Integer = 0 To dtgDonnees.Rows.Count - 1
'les nombres de colonnes sont compte a partir de 0. c'est pourquoi ici nous avons 0,1,2,3,4
tot = tot + dtgDonnees.Rows(i).Cells(4).Value
Next
totvers.Text = tot.ToString
End Sub

End Class

Deuxieme interface permet de d’afficher les enregistrements ainsi les commandes

Code de réalisation
Imports System.Data.OleDb
Public Class frminscription
Dim con As New OleDbConnection
Dim Enregistrer, Rechercher, Supprimer, Actualiser As New OleDbCommand

Dim x, max As Integer

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


'TODO: cette ligne de code charge les données dans la table 'GestISCDataSet.Tetudiant'. Vous pouvez la déplacer ou la
supprimer selon vos besoins.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


113
CT Mumbere Nguramo Augustin
Me.TetudiantTableAdapter.Fill(Me.ds.Tetudiant)
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\gestISC.accdb"
max = ds.Tables(0).Rows.Count
'max est une variable qui prend le maximum des lignes contenues dans le ds
x=0
End Sub

Private Sub btnSuivant_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSuivant.Click


TetudiantBindingSource.MoveNext()
End Sub

Private Sub btnPrecedent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrecedent.Click


TetudiantBindingSource.MovePrevious()

End Sub

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


TetudiantBindingSource.MoveFirst()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


TetudiantBindingSource.MoveLast()
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click


TetudiantBindingSource.AddNew()
End Sub

Private Sub btnenregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnregistrer.Click


con.Open()
Try
Enregistrer.CommandText = "insert into Tetudiant values('" & NummatTextBox1.Text & "','" & CodepromTextBox.Text & "','"
& NometTextBox.Text & "','" & PostnometTextBox.Text & "','" & GenreTextBox.Text & "','" & DatenaissDateTimePicker.Value.Date
& "','" & ConfessTextBox.Text & "','" & AdressTextBox.Text & "')"
Enregistrer.CommandType = CommandType.Text
Enregistrer.Connection = con
Enregistrer.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.AbortRetryIgnore + MsgBoxStyle.Critical, "Echec")
End Try

con.Close()

End Sub

Private Sub btnRechercher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRechercher.Click


Dim search = InputBox("Entrez ici le Matricule:", "Rechercher", "0", 300, 200)

con.Open()
Try
Rechercher.CommandText = "select * from Tetudiant where Nummat='" & search & "'"
Rechercher.CommandType = CommandType.Text
Rechercher.Connection = con
Dim dbread As OleDbDataReader = Rechercher.ExecuteReader
If dbread.Read Then
NummatTextBox1.Text = dbread(0)
CodepromTextBox.Text = dbread(1)
NometTextBox.Text = dbread(2)
PostnometTextBox.Text = dbread(3)
GenreTextBox.Text = dbread(4)
DatenaissDateTimePicker.Text = dbread.Item(5)
ConfessTextBox.Text = dbread(6)
AdressTextBox.Text = dbread(7)
Else

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


114
CT Mumbere Nguramo Augustin
MsgBox("Le matricule " & search & " n'est pas encore attribue", MsgBoxStyle.AbortRetryIgnore + MsgBoxStyle.Critical,
"Echec de recherche")
TetudiantBindingSource.MoveLast()
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.RetryCancel + MsgBoxStyle.Information, "Exception")
End Try
con.Close()

End Sub

Private Sub btnSupprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSupprimer.Click


con.Open()
Dim del = InputBox("Entrez le matricule de l'etudiant a supprimer:", "Supprimer", "0", 500, 300)
Try
If MsgBox("Voulez-vous vraiment supprimer l'etudiant numero :" & del & " ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question,
"Confirmation pour Suppression") = MsgBoxResult.Yes Then
Supprimer.CommandText = "delete from Tetudiant where Nummat='" & del & "'"
Supprimer.CommandType = CommandType.Text
Supprimer.Connection = con
Supprimer.ExecuteNonQuery()
MsgBox("Un etudiant est supprime avec succes")
TetudiantDataGridView.Refresh()
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()

End Sub

Private Sub btnActualiser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualiser.Click


con.Open()
Actualiser.CommandText = "update Tetudiant set Codeprom='" & CodepromTextBox.Text & "',Nomet='" & NometTextBox.Text
& "',PostNomet='" & PostnometTextBox.Text & "',Genre='" & GenreTextBox.Text & "',Datenaiss='" &
DatenaissDateTimePicker.Value.Date & "',Confess='" & ConfessTextBox.Text & "',Adress='" & AdressTextBox.Text & "' where
nummat='" & NummatTextBox1.Text & "'"
Actualiser.CommandType = CommandType.Text
Actualiser.Connection = con
Actualiser.ExecuteNonQuery()

con.Close()

End Sub

End Class

Nous vous présentons l’interface de calcul de total versement pour tous les etudiants

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


115
CT Mumbere Nguramo Augustin

Le code y relatif est le suivant

Imports System.Data.OleDb
Public Class operation
Dim tot As Integer
Private Sub ToperationBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles ToperationBindingNavigatorSaveItem.Click
Me.Validate()
Me.ToperationBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.GestISCDataSet)

End Sub

Private Sub operation_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


'TODO: cette ligne de code charge les données dans la table 'GestISCDataSet.Toperation'. Vous pouvez la déplacer ou la
supprimer selon vos besoins.
Me.ToperationTableAdapter.Fill(Me.GestISCDataSet.Toperation)
calcultotversgenral()
End Sub
Private Sub calcultotversgenral() 'creation de la foction de calcul de total general de paiement de tous les etudiants
tot = 0
For i As Integer = 0 To dtgdgen.Rows.Count - 1
tot = tot + dtgdgen.Rows(i).Cells(4).Value
Next
totgen.Text = tot.ToString

End Sub

End Class

Nous vous presentons l’interface de calcul de solde et autres

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


116
CT Mumbere Nguramo Augustin

Code

Imports System.Data.OleDb
Public Class consultation
Dim tot, tot2, totdett As Integer
Private Sub consultation_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: cette ligne de code charge les données dans la table 'GestISCDataSet.somme'. Vous pouvez la déplacer ou la
supprimer selon vos besoins.
Me.SommeTableAdapter.Fill(Me.GestISCDataSet.somme)
'TODO: cette ligne de code charge les données dans la table 'GestISCDataSet.soldecpte'. Vous pouvez la déplacer ou la
supprimer selon vos besoins.
totalfraisacadem()
totalvers()
montantcredit()
Dtgdsolde.Refresh()
End Sub
Private Sub totalfraisacadem()
tot = 0
For i As Integer = 0 To Dtgdsolde.Rows.Count - 1
tot = tot + Dtgdsolde.Rows(i).Cells(4).Value
Next
totFAc.Text = tot.ToString
End Sub
Private Sub totalvers()
tot2 = 0
For i As Integer = 0 To Dtgdsolde.Rows.Count - 1
tot2 = tot2 + Dtgdsolde.Rows(i).Cells(5).Value
Next
totvers.Text = tot2.ToString
End Sub
Private Sub montantcredit()
totdett = 0
For i As Integer = 0 To Dtgdsolde.Rows.Count - 1
totdett = totdett + Dtgdsolde.Rows(i).Cells(6).Value
Next
txtdette.Text = totdett.ToString
End Sub
End Class

Deuxieme cas de connexion

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


117
CT Mumbere Nguramo Augustin

Les bibliothèques
Il faut importer les biblio qui vont permettre d'utiliser ado.net : ( à mettre tout en haut )
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic

Déclaration des variables


Il faut déclarer les variables : (au dessus de form_load) '
'Déclaration de la variable pour la connection
Private cnx As OleDbConnection
'Déclaration de la variable pour la commande
Private cmd As OleDbCommand
'Déclaration de la variable pour le dataadapter
Private dta As OleDbDataAdapter
'Déclaration de la variable pour le dataset
Private dts As New Dataset
'Déclaration de la variable pour la requête
Private sql As String
'Déclaration de la variable pour la datatable
Private dtt As DataTable
'Déclaration de la variable pour le datarow
Private dtr As DataRow
'Déclaration de la variable pour le Nº de l'enregistrement
Private rownum As Integer
'Déclaration de la variable pour la connectionstring
Private cnxstr AsString
'Déclaration de la variable pour le commandbuilder
Private cmdb As OleDbCommandBuilder
'
Command (cmd) : permet par le biais d'une requête de récupérer tout ou partie des données de la
table. Dataadapter (dta) : reçoit les données de la commande (cmd) et les envoies au dataset (dts)
Datatable (dtt) : le dataset renvoie les données dans la datatable, qui va permettre de récupérer le nº
d'enregistrement sur lequel on est placé grâce au Nº de ligne (rownum) Commandbuilder (cmdb) : il va
récupérer les données modifiées et les renvoyer au dataadapter pour recréer le dataset avec les
nouvelles données.
Form_Load

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


118
CT Mumbere Nguramo Augustin

Dans form_load on va créer la connection, la commande, le dataadapter, le dataset et la datatable afin


de pouvoir ajouter, modifier, supprimer des données dans la table. Afin de ne pas devoir déplacer la
base de données on la place dans le répertoire bin du projet et on déclare la connection à la BD de
cette façon :
'ouverture de la connection (à partir du répertoire de l'application) sur la même ligne
cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\base.mdb;"
cnx = New OleDbConnection
cnx.ConnectionString = cnxstr
cnx.Open()

'Création de la requête sql


sql = "select table.* from table"
'Création de la commande et on l'instancie (sql)
cmd = NewOleDbCommand(sql)
'Création du dataadapter (dta) et on l'instancie (cmd)
dta = New OleDbDataAdapter(cmd)
'On instancie la commande (cmd) à la connection (cnx)
cmd.Connection() = cnx
'On charge le dataset (dts) grâce à la propriété fill du dataadapter (dta)
dta.Fill(dts, "table")
'On charge la datatable (dtt) grâce à la propriété tables du dataset (dts)
dtt = dts.Tables("table")

Remarque :
Concernant la requête sql : Select table.* from table, Table est le nom de la table et " table.* " signifie
sélectionner tous les champs de la table
Sélection et affichage des données
Pour pouvoir sélectionner et afficher des données on va se servir de la variable rownum qui va contenir
le Nº de ligne (ou d'enregistrement) sur lequel nous serons placés dans la datatable (dtt) et que ces
lignes vont de 0 (premier enregistrement) à rows.count - 1 (dernier enregistrement). Pour afficher un
enregistrement, dans des textbox , on utilisera la syntaxe suivante :
Me.txt1.text = dtt.Rows (rownum).Item("champ1")
Me.txt2.text = dtt.Rows (rownum).Item("champ2")
Pour se déplacer dans les enregistrements , on utilisera les syntaxes suivantes suivies de la syntaxe d'affichage données :
Premier : rownum = 0
Précédent : rownum -= 1
Suivant : rownum += 1
Dernier : dtt.Rows.Count - 1

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


119
CT Mumbere Nguramo Augustin

Pour vérifier si la table contient des enregistrements on utilisera cette syntaxe :


'si la table est vide alors
If rownum > dtt.Rows.Count - 1 Then

Remarque : Dans chaque bouton de navigation, il faudra utiliser une condition pour afficher les
données, car si l'on clique sur le bouton suivant et que l'on est sur le dernier enregistrement cela
génèrera une erreur.
Exemple pour le bouton précédent :
'si début du fichier ou table vide message et sortie de procédure
If rownum = 0 Orrownum > dtt.Rows.Count - 1 Then
MessageBox.Show etc....
Exit Sub
Else
'aller à la ligne précédente
rownum -= 1
'affichage des données dans les textbox
Me.txt1.text = dtt.Rows (rownum).Item("champ1")
Me.txt2.text = dtt.Rows (rownum).Item("champ2")
End if
Affichage du premier enregistrement
On va donc afficher le premier enregistrement, si la table n'est pas vide, en plaçant ce code dans le
form_load :

'si la table est vide alors


If rownum > dtt.Rows.Count - 1 Then
'Sortie de procédure
Exit sub
'Sinon affichage des données dans les textbox
Else
Me.txt1.text = dtt.Rows (rownum).Item("champ1")
Me.txt2.text = dtt.Rows (rownum).Item("champ2")
End If
'Ajouter un enregistrement
Pour ajouter un enregistrement on utilisera cette syntaxe :
'création d'une nouvelle ligne avec les données des textbox
dtr = dts.Tables("table").NewRow
dtr("champ1") = Me.txt1.Text

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


120
CT Mumbere Nguramo Augustin
dtr("champ2") = Me.txt2.Text
'ajout de la ligne dans le DataSet
dts.Tables("table").Rows.Add(dtr)
'création et exécution du commandbuilder pour mettre à jour le DataAdapter
cmdb = NewOleDbCommandBuilder(dta)
'mise à jour des données du dataadapter (dta) à partir du commandbuilder (cmdb)
dta.Update(dts, "table")
'on vide le dataset pour le recréer avec les nouvelles données
dts.Clear()
dta.Fill(dts, "table")
dtt = dts.Tables("table")
'

Modifier un enregistrement
Pour modifier un enregistrement on utilisera cette syntaxe:
'récupération de la ligne sur laquelle on est placés dans le datarow
dtr = dts.Tables("table").Rows(rownum)
'modification des données
dtr("champ1") = Me.txt1.Text
dtr("champ2") = Me.txt2.Text

'création et exécution du commandbuilder pour mettre à jour le DataAdapter


cmdb = NewOleDbCommandBuilder(dta)

'mise à jour des données du DataAdapter à partir du commandbuilder


dta.Update(dts, "table")

'on vide le dataset pour le recréer avec les nouvelles données


dts.Clear()
dta.Fill(dts, "table")
dtt = dts.Tables("table")
'
Supprimer un enregistrement
Pour supprimer un enregistrement on utilisera la syntaxe suivante:
'suppression de la ligne en cours
dts.Tables("table").Rows(rownum).Delete()
'création et exécution du commandbuilder pour mettre à jour le DataAdapter
cmdb = New OleDbCommandBuilder(dta)
'mise à jour des données du DataAdapter à partir du commandbuilder
dta.Update(dts, "table")

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


121
CT Mumbere Nguramo Augustin
'
Fermeture
Pour fermer les objets et les connections on utilisera ces syntaxes :
cnx = Nothing
dts = Nothing

Conclusion
Il ne vous reste plus qu'a gérer l'activation et la désactivation des boutons dans chaque procédure et autres
finitions (null , msgbox ,etc...). Nous esperons que l’application comme l’implication personnelle de chaque
etudiant est de grande necessité dans l’approfondissement de ces element de bases. En effet, loin de tenir ces
nottes sous forme de bible, nous sollicitons le genie de chaque apprenant de bien vouloir aller vers les sommets
hautement placés pour une confirmation individuelle.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


122
CT Mumbere Nguramo Augustin

Travaux Pratique

1. Ecrire un programme en Visual basic permettant d’entrer deux valeurs et d’en faire la somme, le
produit, la différence et division
2. Ecrire un programme en Visual basic qui permet de faire la somme de deux valeurs a et b avec
interaction utilisateur.
3. Ecrire un programme en basic qui permet de résoudre l’équation du premier degré.
4. Ecrire un programme VB qui permet à l’utilisateur de saisir le prix d’achat, le prix de vente, la
quantité vendu et affiche le bénéfice total réalisé. On devra prévoir d’effacer déjà saisie pour un
nouveau calcul et la fermeture du programme
5. Ecrire le code pour cette interface

6. Ecrire un programme qui permet de comparer les valeurs a et b en affichant : a est supérieur a b
et b est inferieur a A.
7. Ecrire un programme qui calcul la TVA au taux de 16%
8. Ecrire un algorithme qui demande a l’utilisateur d’entrer le montant en franc congolais, le taux en
dollars et en euro pour afficher : le montant converti en dollars est de : et aussi le :montant
converti en euro est de :
9. Ecrire un algorithme qui demande a l’utilisateur d’entrer une valeur y et n et afficher son
exponentiel
10. Ecrire un programme qui fait le division et le produit entre deux valeurs entrées avec interactivité
lorsque a est plus grand que b(division) a plus petit que b(produit).
11. Ecrire un programme qui vous demande votre nom et d’afficher Bjr monsieur +nom
12. Écrire un programme qui demande à l'utilisateur de taper la largeur, la hauteur et la longueur d'un
champ et qui en affiche la superficie et le cubage.
13. Écrire un programme qui demande à l'utilisateur de taper 5 entiers et qui affiche leur moyenne. Le
programme ne devra utiliser que 2 variables.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


123
CT Mumbere Nguramo Augustin

14. Écrire un programme qui demande à l’utilisateur de saisir 2 entiers A et B, qui échange le contenu
des variables A et B puis qui affiche A et B.
15. Ecrire un programme qui vous demande d’entrer votre dpt et affiche la faculté.
16. Ecrire un programme qui permet de d’entrez une valeur (de 1 a 7) et affiches les jours de la
semaine.
17. Ecrire un programme qui permet en entrant les nombre de1 à 12 d’afficher le mois correspondant
et le nombre de jours du mois.
18. Ecrire un programme qui vous demande d’entrez la première et dernière valeur pour afficher les
termes intermédiaires ainsi que leur somme.
19. Ecrire un programme de délibération. Vous déclarez 7 cours ainsi que leur pondération (max).
déterminez le pourcentage et la mention :- entre 0-49% échec, -entre 50-59 : double, entre 60-69
satisfaction, entre 70-79 distinction, entre 80-89 gde distinction, entre 90-99 élite et plus de 99 :
inconcevable.
20. Ecrire un programme de deliberation dont le formulaire aura aumoins 18 controles textebox
correspondant aux cours (cotes cours). La pondération est de 40points pour chaque cours
(uniforme). Dans le label observation ou décision s’affiche : échec lorsque pourcentage est entre 0
et 49, satisfaction entre 50 et 69, Distinction entre 70 et 79, Grande Distinction lorsque
pourcentage entre 80 et 89, elite entre 90 et 99 et invalide pour >99.
21. Avec des inputbox, écrire un programme d’affichage d’opérations effectuées en l’occurrence
l’addition, la soustraction, la division, la multiplication dans un msgbox.
22. Ecrire un programme qui permet d’afficher la racine carrée de terme entrée
23. Faire un programme qui permet d’afficher les mois qui ont 30, 31 ou 29 sitôt entré le nombre de
jours
24. Ecrire un programme en basic qui permet de calculer la TVA pour quinze éléments différents.
Cette TVA sera calculée par produit et le Net TVA qui sera le cumul.
25. Faire un programme qui affiche les deux grandes parties de la Bible et leurs différents livres.
26. Faire un programme qui, en entrant les valeurs de 1 a 10 affiche le commandement correspondant.
27. Ecrire un programme qui permet d’afficher les différents sacrements et précisant lesquels sont plus
d’une fois reçus
28. et le moins (une fois administrée).
29. Ecrire un programme qui permet d’entrer l’initial et affiche le nom de la commune.
30. Ecrire un programme qui permet de résoudre : a-l’equation du premier degré, b. l’équation du
second degré.
31. Ecrire un programme qui demande d’enter les valeurs A,B,C

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


124
CT Mumbere Nguramo Augustin

et calculer le théorème de Pythagore.


32. Ecrire un programme qui permet d’afficher : a la surface d’un carre, b. d’un rectangle, c. losange, d.
d’un parallélogramme, e d’un ellipse.
33. Ecrire un programme qui vous dit « bonjour Mr » et « Bienvenu dans cours » associe de votre nom.
34. Écrire un programme qui demande à l'utilisateur de taper le prix HT d'un kilo de tomates, le nombre
de kilos de tomates achetés, le taux de TVA (Exemple 5.5, 19.6,...). Le programme affiche alors le
prix TTC des marchandises.
35. Ecrire un programme qui demande à l’utilisateur de saisir les coordonnées de deux points du plan
A et B et qui affiche la distance entre A et B.
Indication 1: on pourra utiliser le théorème de Pythagore.
Indication 2 : dans le fichier, il y a une fonction sqrt qui calcule la racine carrée.
36. Faire un programme qui fait l’addition et division entre les termes a et b. si a>b alors il affiche a est
plus grand b et fait ainsi la somme. Si a<b il affiche a est plus petit que b et fait b/a.
37. Faire un programme qui permet d’afficher les mois et leurs jours du mois(30, 31 ou 29)
38. Faire un programme qui demande d’entrer une cote. Si cote >5 un message est « réussite » sinon
« échec »
39. Faire un programme qui permet de faciliter la délibération quand le pourcentage est <=49
« refuser », pourcentage=50> réussite
40. Résoudre l’équation du second degré en visual basic.
41. Le salaire annuel d'un employé dans une entreprise était de 24000 euros pour l'année 2000. Pour
chacune des années suivantes, ce salaire annuel a augmente de 2% auquel s'est ajouté une prime
annuelle de 100 euros. Faire un programme standard pour tout cas qui donne le salaire annuel de
l'employé pour l'année 2000+n .
42. Ecrire un programme en vb qui permet au point A est sur l'axe des abscisses et son abscisse est
égale à 3. Pour tout autre point M, d'abscisse x, situé sur l'axe des abscisses, on cherche à
déterminer la distance AM.
43. Ecrire un programme VB qui permet à l’utilisateur de saisir le prix d’achat, le prix de vente, la
quantité vendu et affiche le bénéfice total réalisé. On devra prévoir d’effacer déjà saisie pour un
nouveau calcul et la fermeture du programme.
44. Ecrire un programme en vb qui permet la Décomposition en facteurs premiers d'un entier positif
(<400000)
45. Ecrire un programme qui permet à l’utilisateur de saisir un montant en franc et de choisir la
monnaie de destination pour convertir (dollar =500, euro =800, livre = 900)

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni


125
CT Mumbere Nguramo Augustin

46. Donnez des variantes de l’exercice 43 en utilisant


- soit des listes simple ou
- des listes déroulantes

47. Faites une variante de l’exercice 44 de sorte que l’utilisateur peut convertir dans une ou plusieurs
devises à la fois en utilisant les cases a cocher.
48. En utilisant les listes déroulantes, faire l’exercice de conversion. Sitôt le choix de la monnaie, la
conversion se fait.

0820655230 Notes de cours G2 Gestion Informatique-ISC/Beni

Vous aimerez peut-être aussi