You are on page 1of 16

Ecole Nationale de commerce et de Gestion Tanger Semestre 5 2009/2010

Introduction la programmation VB Caractristiques du langage


Ancien BASIC (Beginner's All purpose Symbolic Instruction Code) Programmation par objets (briques logicielles) Programmation graphique (fentres, icnes, menus, souris) Programmation vnementielle (sollicitations : souris, clavier, autre vnement) Rutilisable (modules de code BASIC).

Structure gnrale

Plan du cours : Introduction la programmation VB De quoi dbuter Interactivit, variables et conditions Les structures conditionnelles Tableaux et boucles Traitement des chanes de caractres A retenir

Les objets manipuls sont appels des contrles (bouton de commande, bote de dialogue, zne de texte, zne d'image, etc. L'interface utilisateur cre est fentre. Une fentre est appele une feuille (Form). Une feuille est elle-mme un contrle. Au lancement feuille de dmarrage. Chaque contrle peut ragir des vnements qui lancent des suites d'instructions codes en BASIC. Des modules gnraux de code BASIC peuvent porter sur tout le programme. Ces modules sont rutilisables.

Brandon Heat

End Sub

Contrles et proprits
Un objet (contrle) peut possder un grand nombre de proprits par exemple sur sa forme, sa couleur, sa position dans la feuille, sa visibilit, etc. La plus importante est la proprit Name qui donne un nom au contrle. Ce nom permet de rfrencer le contrle. Syntaxiquement le nom d'un objet est spar de la proprit par un point

Exemple :
Sub cmdQuitter_Click() Unload Me End End Sub

Interface de dveloppement de VISUAL BASIC


objet . proprit = valeur Exemple 1 : Etiquette.CouleurDeFond = Bleu Exemple 2 : Affichage.Caption = "Bonjour" Exemple 3 : Image.Visible = True Exemple 4 : cmdQuitter.Enabled = False

Contrles et vnements
Le code d'un vnement associ un contrle forme une procdure vnementielle dont la syntaxe gnrale est :
Sub NomContrle_Evnement() Instruction 1 Instruction 2

De quoi dbuter Principaux objets et proprits essentielles

Proprits fixes au dpart (valeurs standard). Modifies par programmation objet.

De bonnes habitudes

Form (feuille). C'est le conteneur graphique des contrles de l'application. Proprits : Name, Caption, Picture

Ds qu'un objet est cr sur une feuille lui donner un nom significatif (proprit Name) Conseil N 1 :

CommandButton (bouton de commande) Utilisation : excute le code associ l'vnement click sur ce bouton. Proprits : Name, Caption Une Form est prfixe par frm N'utiliser que des lettres et des chiffres (exclure . - / _ "espace" etc.) o Majuscules initiales des diffrents mots o Prfixer selon la nomenclature suivante :
o

Label (tiquette) Un CommandButton est prfix par cmd Utilisation : affiche une sortie cran (texte, nombre, date) non interactive. Proprits : Name, Caption, BackColor, BorderStyle, Font, Alignment Un Label est prfix par lbl Une Image est prfixe par img Une TextBox est prfixe par txt etc.

Image (image) Utilisation : affiche des images en mode point (BitMap au format .BMP, .WMF, .ICO) Peut servir de bouton de commande (vnement click). Proprits : Name, Stretch, BorderStyle, Visible Exemples : lblAffichage, cmdEntreDesDonnes, imgFondEcran, frmFeuilleAccueil etc. Conseil N 2 : Dresser une table des proprits importantes : Objet Bouton Etiquette Feuille Name cmdQuitter Fin BackColor, Font BackColor, Picture Caption Autres proprits

TextBox (zone de texte) Utilisation : pour taper ou afficher du texte. Proprits : Name, BackColor, BorderStyle, Font

lblSortieRsultat (vide) FrmJeuDuLoto Jeu du LOTO

Dveloppement d'un projet


Rappel du cours prcdent
Spcification des besoins des futurs utilisateurs. Spcifications fonctionnelles : comment satisfaire aux besoins. Conception gnrale : division du logiciel en programmes. Conception dtaille : algorithme le plus adapt pour chaque programme. Assemblage des diffrents programmes. Codage l'aide du langage le plus adapt. Validation et qualification.

Exemples :
Private Sub cmdQuitter_Click() End End Sub

Private Sub cmdMonNom_Click() LblAffichage.Caption = "Mon nom est Personne." End Sub

Du point de vue technique :


Dans une programmation plus avance on pourra crire du code non li des vnements dans un module BASIC qui pourra tre rutilis pour un autre projet.

Prparer un dossier qui contiendra l'ensemble du projet (plusieurs fichiers). Dessin de l'interface graphique selon les fonctionnalits dsires. Projet multi-fentres fixer la feuille de dmarrage ou procdure Main(). Dresser la table des proprits essentielles. Enregistrer dans le dossier prvu cet effet.

Excution pour validation


Le mode cration permet de construire le projet (ou application). Le mode excution permet de vrifier si les fonctionnalits prvues sont convenables. Pour lancer l'excution : soit le bouton soit menu Excution - Excuter (F5). Pour arrter l'excution : soit le bouton soit menu Excution - Fin.

Implantation du code
N.B. Les objets ragissent divers vnements : Click, MouseUp, MouseDown, Change etc. Pour implanter le code (suite d'instructions produisant des actions prdfinies) li un vnement il suffit d'oprer un double-clic sur l'objet qui dclenche cet vnement. Ne pas oublier d'arrter un programme sinon toute correction est impossible (notamment pour un programme qui boucle)

Interactivit, variables et conditions Bote de dialogue - message


Dans un programme l'utilisateur et le concepteur dialoguent par l'intermdiaire de diffrents canaux (visuels, sonores) l'aide de messages interactifs ou non. On a l'habitude d'utiliser ces botes de dialogue dans des logiciels connus : bote de connexion rseau, Enregistrer, Imprimer etc. Pour afficher un message non interactif on utilise la bote de dialogue prdfinie MsgBox. Exemple :
MsgBox("Salut tout le monde !")

Syntaxe :
Dim <NomVariable> As <Type>

Pour la lisibilit du code on peut les commenter aprs une apostrophe ( ) Exemples :
Dim Taux As Single Taux de la TVA Dim Rponse As String Mot propos par le joueur

Pour viter tout problme il est prfrable dinitialiser les variables dclares.
Compteur = 0 Taux = 20,6

Cest un simple message affich dans une bote agrmente dun bouton OK. En fait cest plutt une fonction dont la syntaxe est beaucoup plus complexe (voir laide en ligne de VB - menu ? la droite de la barre des menus).

Le langage Basic utilise 7 types de donnes dont les plus utiliss sont le type String (chane de caractres), le type Integer (entier relatif) et le type Single (dcimal).

Porte d'une variable Notion de variable


Elles sont ncessaires pour stocker (conserver) une valeur dynamique et rutilisable. C'est en fait une simple zone mmoire qui porte un nom choisi par le programmeur pour faciliter sa programmation. Le nom de la variable est une adresse mmoire. Si lon veut une programmation cohrente il faut les dclarer avec leur type. Menu Outils - Options - onglet Environnement - choisir : "Requiert la dclaration des variables". On peut aussi crire la directive Option Explicit au dbut de la section des dclarations dun module. Si une variable est dclare au dbut de la procdure qui la manipule (Dim ou Private) elle nest alors valide que pour cette procdure. L'existence et la valeur de la variable disparaissent avec l'instruction End Sub. Toute rfrence cette variable en dehors de cette procdure provoquera une erreur de compilation. Si une variable est dclare dans la section des dclarations dun module elle est valide dans toutes les procdures du module. Une variable peut aussi tre dclare Public ou Global et sera alors valide pour toute lapplication.

Exemple :
Global MotInitial As String premier mot traiter

1. Sur une seule ligne : If condition Then instruction1 [Else instruction2] Condition est une expression dont la valeur est boolenne (True ou False).

Entre des donnes


Si l'utilisateur fournit une donne il faut la stocker dans une variable pour pouvoir la rutiliser autant de fois qu'on le veut. Le plus simple est dutiliser la bote de dialogue prdfinie InputBox qui est aussi une fonction et qui retourne une valeur de type Variant. Cette fonction a pour effet d'affecter une valeur une variable dment dclare. Exemple :
Valeur = InputBox("Entrez votre donne ?")

Si cette expression est une valeur numrique, la valeur 0 (zro) correspond False et toute autre valeur correspond True. Exemple :
If Moyenne >= 10 Then Dcision = "Admis" Else Dcision = "Refus"

2. Sous forme de bloc :


If condition Then [instructions] Else [instructions] End If

Alors la variable Valeur contient une donne du mme type que sa dclaration (String, Integer etc.) ou du type de la valeur entre ( viter)
NombrePropos = InputBox("Quelle est votre proposition ?")

Alors la variable NombrePropos contient un Integer si elle a t dclare Integer. Sa syntaxe complte est aussi assez dlicate (voir laide en ligne de VB).

Exemple :
If Moyenne >= 10 Then Admis = Admis + 1 MsgBox("Candidat admis")

Structure conditionnelle
Else

Les instructions excuter peuvent dpendre d'une condition. Il faut alors utiliser une structure dcisionnelle qui oriente le droulement du programme vers des blocs d'instructions dtermins. C'est la structure If Then Else End If

Ajourns = Ajourns + 1 MsgBox("Candidat ajourn") End If

Les structures conditionnelles Ncessit de ces structures


Le programmeur est trs souvent amen tester des valeurs et orienter le programme selon ces valeurs. L'utilisateur est parfois invit faire des choix que le programme doit prendre en compte.

2. Sous forme de bloc : Syntaxe : If condition Then


[instructions] Else [instructions] End If

Plusieurs structures dcisionnelles permettent ces traitements. Exemple : Il s'agit d'utiliser la structure la plus adapte au problme rsoudre.
If NombrePropos > NombreATrouver Then

Exemples :
o o o o Traitement d'un mot de passe. Essai de la part d'un joueur. Comptage des bonnes rponses. Choix d'un niveau de jeu.

MsgBox("Votre nombre est trop grand !") Essai = Essai + 1 Else MsgBox("Votre nombre est trop petit !") Essai = Essai + 1 End If ' Essayez de trouver ce qui manque dans ce test !

Structure If Then Else


Cette structure dcisionnelle revt 2 formes : 1. Sur une seule ligne : Syntaxe : If condition Then instruction1 [Else instruction2]
Condition est une expression dont la valeur est boolenne (True ou

Insuffisance de cette structure


Cette structure n'est vraiment valable que pour une alternative (2 possibilits). Pour traiter 3 possibilits il faudra imbriquer un autre If aprs l'instruction Else.

False). Si cette expression est une valeur numrique, la valeur 0 (zro) correspond False et toute autre valeur correspond True. Exemple : If MotDePasse <> "zizou" Then End 'assez brutal!

Exemple :
If NombrePropos > NombreATrouver Then MsgBox("Votre nombre est trop grand !") Else If NombrePropos < NombreATrouver Then MsgBox("Votre nombre est trop petit !") Else MsgBox("Gagn !") End If End If ' Essayez de trouver ce qui manque cette fois !

[Case Else Instructions] End Select ListeValeurs peut tre : - une suite de valeurs : 1, 3, 5, 7, 9 - une fourchette : 0 To 9 - une plage : Is >= 10 Une seule Expression (ou une simple variable) est teste au dbut puis est compare avec les listes de valeurs. A la premire concordance les instructions correspondantes sont excutes puis le programme sort de la structure. Si aucune concordance nest trouve les instructions place aprs le Else sont excutes. Exemple :
Select Case CodeASCIICaractre Case 65, 69, 73, 79, 85 MsgBox(" Cest une voyelle ") Case 66 To 90 MsgBox(" Cest une consonne ") Case Else MsgBox(" Ce nest pas une lettre ") End Select ' Essayez de trouver ce qui ne va pas dans ce test !

Au-del de 3 possibilits on a besoin d'une autre structure qui peut grer plusieurs cas.

Structure Select Case


Cest une extension du If Then Else Elle permet une programmation plus claire en vitant une trop grande imbrication de If successifs. Syntaxe : Select Case Expression Case ListeValeurs1 [Instructions] Case ListeValeurs2 [Instructions]

Structure Iif
C'est exactement la fonction IF d'EXCEL. Syntaxe : IIf (Condition, ValeurSiVrai, ValeurSiFaux) Exemple :
Dim Note As Single Dim Rponse As String Note = InputBox (" Tapez votre note ")

Le nombre de valeurs de types identiques est dclarer entre parenthses. Exemple 1 : Dim TabTemp(12) As Single
Numro Temprature

1 6

2 5,5

3 7

4 11,5

5 15

L'accs la case numro 3 se fait par TabTemp(3) qui vaut 7.

Exemple 2 : Dim TabMajuscules(65 to 90) As String


Rponse = IIf (Note >= 10, " Admis ", " Ajourn ") MsgBox (Rponse) Numro Majuscule

65 A

66 B

67 C

89 Y

90 Z

Il existe dautres outils dcisionnels (Switch, With, Choose ...) qui ne sont pas ncessaires pour un module de niveau 1.

Tableaux et boucles Structure de tableau


On a souvent besoin de travailler sur un ensemble de donnes. Un exemple gographique : les tempratures moyennes des 12 mois de l'anne. On pourrait dclarer 12 variables identiques :
Dim Temp1, Temp2, Temp3, Temp4, , Temp12 as Single

Boucles en nombre dfini


Cette boucle est utilise si lon connait lavance le nombre de fois quelle sera parcourue. Syntaxe :
For Compteur = Dbut To Fin [Step Incrment] Instructions [ ... Exit For] [Instructions]

On dispose d'une structure de donnes appele Tableau qui permet de conserver dans une seule "entit" plusieurs valeurs de mme type. Le nom du tableau est une variable qu'il est recommand de prfixer par Tab.

Next [Compteur]

Le test est effectu au dbut de la boucle. La variable numrique Compteur est incrmente chaque fin de boucle du nombre indiqu par lincrment. Si lincrment nest pas spcifi il est fix 1. Si la valeur de Fin est infrieure la valeur de Dbut lincrment est ngatif. La valeur de Compteur peut tre utilise (par exemple pour numroter le passage dans la boucle) mais ne doit pas tre modifie dans le corps de la boucle. Exemple :
For i = 1 To 50 TabInitial(i) = 0 Initialisation de chaque case 0 Next i

Dim TabTirageLoto(6) As Integer Dim Compteur As Integer For Compteur = 1 To 6 TabTirageLoto (Compteur)=Rnd * 48 + 1 Next Compteur

' Il y a une imperfection dans ce tirage des 6 numros du Loto !

Traitement des valeurs d'un tableau


On suppose rentres les 12 tempratures dans un tableau de Single appel TabTemp. On veut rechercher la temprature maximale dans ce tableau de 12 tempratures. Il s'agit donc de balayer ce tableau et de conserver la valeur maximale dans une variable. Au dpart on suppose que la temprature maximale est la premire du tableau.
Dim Compteur As Integer Dim TempMaxi As Single TempMaxi=TabTemp(1) For Compteur = 2 To 12 If TabTemp(Compteur)>TempMaxi Then TempMaxi=TabTemp(Compteur) Next Compteur

Remplissage d'un tableau


Pour remplir un tableau on le balaye avec une boucle For To Next (car le nombre de cases est connu l'avance). Exemple 1 :
Dim TabTemp(12) As Single Dim Compteur As Integer For Compteur = 1 To 12 TabTemp(Compteur)=InputBox("Temprature N " & Compteur) Next Compteur

Exemple 2 :

A la fin du processus la variable TempMaxi contiendra la valeur recherche.

Dclarations publiques et procdures publiques


Si une variable est dclare au dbut d'une procdure vnementielle par l'instruction Dim elle nest alors valide que pour cette procdure. L'existence et la valeur de la variable disparaissent avec l'instruction End Sub. Toute rfrence cette variable en dehors de cette procdure vnementielle provoquera une erreur de compilation. Si une variable est dclare avant toute procdure vnementielle par l'instruction Public elle est valide dans toutes les procdures de la feuille. Exemple :
Public NomDuJoueur As String cette variable sera utilisable ' dans toutes les procdures vnementielles de la feuille.

Exemple :
Public Sub SaisieTemprature() Temprature = InputBox("Taper une temprature") Somme = Somme + Temprature End Sub 'Cela prsuppose une dclaration initiale des variables publiques 'Temprature et Somme.

Cette procdure sera excute chaque appel par son nom : SaisieTemprature.

Les structures de contrle Prsentation du problme


Si le programme doit excuter un bloc d'instructions en nombre prdfini on utilise la boucle For To Next. Exemple :
For i = 1 To 49 TabLoto(i) = i chaque case contient son numro Next i

La dclaration d'un tableau ne "supporte" pas le mot rserv Public. Il faudra alors utiliser le mot rserv Dim mme si c'est une dclaration publique. Exemple :
Dim TabNotes(5) As Single Ce tableau sera utilisable dans 'toutes les procdures vnementielles de la feuille.

Si une procdure non-vnementielle est dclare avant toute procdure vnementielle par l'instruction Public elle sera utilisable dans toutes les proc. ev. de la feuille.

Si le nombre de passages dans la boucle est inconnu au dpart, mais dpend d'une condition dont la ralisation est imprvisible cette structure n'est pas adapte.

Exemple 1 : Demander le mot de passe tant que la rponse n'est pas le bon mot de passe. Demander le mot de passe jusqu' ce que la rponse soit le bon mot de passe. Exemple 2 : Demander la saisie d'une note tant que la rponse n'est pas un nombre entre 0 et 20. Demander la saisie d'une note jusqu' ce que la rponse soit un nombre entre 0 et 20.

Exemple :
Do While MotPropos <> MotDePasse MotPropos = InputBox("Donnez votre mot de passe") Loop

Cela prsuppose MotPropos initialis par une valeur autre que MotDePasse (par exemple la valeur par dfaut ""). Syntaxe deuxime version :
Do Instructions [... Exit Do] Do While Condition Instructions [... Exit Do] [Instructions] Loop [Instructions] Loop While Condition

Boucle tant que


Syntaxe premire version :

La condition est alors teste la fin de la boucle. Avec While (tant que) la boucle est rpte tant que la condition est vraie. Les instructions de la boucle sont donc excutes au moins une fois. Exemple :
Do MotPropos = InputBox("Donnez votre mot de passe") Loop While MotPropos <> MotDePasse

La condition est ici teste au dbut c'est dire lentre de la boucle. Avec While (tant que) la boucle est rpte tant que la condition est vraie. Si la condition nest pas vraie au dpart les instructions de la boucle ne sont pas excutes.

Cet exemple ne prsuppose aucune initialisation de MotPropos.

Boucle jusqu' ce que


Syntaxe premire version :
Do Until Condition Instructions [... Exit Do] [Instructions] Loop

Do Instructions [... Exit Do] [Instructions] Loop Until Condition

La condition est alors teste la fin de la boucle. Les instructions de la boucle sont donc excutes au moins une fois.

La condition est ici teste au dbut c'est dire lentre de la boucle. Avec Until (jusqu') la boucle est rpte jusqu' ce que la condition soit vraie. Si la condition est vraie au dpart les instructions de la boucle ne sont pas excutes. Exemple :
Do Until MotPropos = MotDePasse MotPropos = InputBox("Donnez votre mot de passe") Loop

Avec Until (jusqu') la boucle est rpte jusqu' ce que la condition soit vraie. Exemple :
Do MotPropos = InputBox("Donnez votre mot de passe") Loop Until MotPropos = MotDePasse

Cet exemple ne prsuppose aucune initialisation de MotPropos.

Cela prsuppose MotPropos initialis par une valeur autre que MotDePasse (par exemple la valeur par dfaut "").

Syntaxe deuxime version :

Boucle For Each Next


Cest une extension de la boucle For ... To Next. Syntaxe :
For Each Elment In Ensemble Instructions [ ... Exit For] [Instructions] Next [Elment]

Conclusion
Selon le problme traiter vous aurez le choix entre ces diffrentes structures de contrle. Il s'agira de choisir sinon la plus lgante du moins celle qui ne provoquera pas de disfonctionnement de votre programme.
' Trouver ce qui ne va pas dans les exemples suivants :

Exemple1 :
Dim MotPropos, Rponse As String Rponse = "Titanic" Do MotPropos = InputBox("Donnez votre rponse") Loop While MotPropos = Rponse

Ensemble est le plus souvent un tableau. Exemple :


Dim TabHasard(100) As Integer Dim Cellule As Integer Dim Rponse As String Randomize

Exemple2 :
For Each Cellule In TabHasard Dim Note As Single Cellule = Rnd * 100 + 1 Do Until Note >= 0 And Note <= 20 Next For Each Cellule In TabHasard Rponse = Rponse & Cellule & " Next MsgBox (Rponse) " Loop Note = InputBox("Taper une note entre 0 et 20")

Traitement des chanes de caractres Ncessit de ces traitements


Les donnes manipules par un programme sont essentiellement de type numrique ou chane de caractres. Si les types numriques sont trs utiliss par les programmes scientifiques, le type chane est incontournable pour des tudiants en Lettres et Sciences Humaines. Une variable chane de caractres se dclare de type String. Exemple 1 :
Dim MotPropos As String

A retenir

Les types de variables


On recommande fortement de dclarer les variables utilises dans le programme.

Integer : de -32 768 32 767 Long : de -2 147 483 648 2 147 483 647 Single : dcimaux en simple prcision : 39 chiffres significatifs Double : dcimaux en double prcision : plus de 300 chiffres significatifs ! String : de 0 65 535 octets Variant : de type nombre ou texte selon l'affectation faite

La variable contient alors une chane de longueur variable selon l'affectation qui suivra. Exemple 2 :
Dim Lettre As String * 1

Qualits d'un projet


Fiabilit : il doit donner les rsultats corrects attendus. Robustesse : il doit grer les erreurs de manipulation des utilisateurs. Convivialit : il doit tre agrable utiliser (souris, icnes, menus) Efficacit : il doit donner des rponses rapides et claires. Compacit : il doit occuper le moins de place possible en mmoire. Lisibilit : il doit tre structur en modules, comment, prsent clairement. Portabilit : il doit tre aisment transfrable sur une machine d'un autre type.

La variable contient alors une chane de longueur 1 c'est dire un seul caractre. Exemple 3 :
Dim Adresse As String * 30

La variable contient alors une chane de longueur 30. Si l'on n'affecte que 18 caractres dans une telle chane, le reste est rempli d'espaces. Si l'on affecte plus de 30 caractres le surplus est tronqu

Derniers conseils

Privilgier une tude descendante : du gnral au particulier. Rflchir la structure des donnes la plus approprie. Par exemple pour le jeu du PENDU utiliser un tableau TabTitres(1 To 10, 1 To 3) As String qui contiendra :

1. En ligne 1 les titres des films 2. En ligne 2 les squelettes (*******) 3. En ligne 3 une aide sous forme de texte ("C'est un western")

Rien ne sert de courir, il suffit de partir point

Utiliser des noms de variables significatifs :


NombreATrouver As Integer TitreIncomplet As String LettreInitiale As String*1

Brandon Heat

Initialiser les variables mme si VB le fait dans certains cas. Si ncessaire travailler sous forme de procdures publiques utilisables dans toute la feuille. Dfinir une interface utilisateur complte. Par exemple pour le jeu du PENDU prvoir un bouton pour "Ajouter une lettre" et un autre pour "Proposer une rponse".

Commenter le programme pour qu'il soit plus comprhensible en vue de modifications ultrieures et le rdiger clairement. Enfin : que le programme "Tourne" avant de soigner sa forme.

You might also like