Vous êtes sur la page 1sur 16

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

1) Introduction la programmation Quest-ce que la programmation ? Squences dinstructions qui permettent de donner des ordres un ordinateur A quoi cela sert-elle ? Dvelopper des applications, automatiser rcurrentes, effectuer des calculs complexes des tches

Chap. Ch III Visual Basic

Quelques l l langages d programmation de i Pascal, Fortran, C, C++, JAVA, (Visual) Basic, Perl, PHP,

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

Diffrences principales entre les langages La syntaxe Langages squentiels, orient-objet L ti l langages l i t bj t Langages interprts, langages excuts Langages spcialement adapts A Internet (pages web): PHP, Perl, JAVA Aux simulations : Matlab, MAPLE, MATHEMATICA,

Pourquoi Visual Basic ? Lun des langages de programmation les plus performants et les plus simples utiliser Cr par John G. Kemeny et Thoams E. Kurtz en 1963 et devient vite un langage populaire Adapt sur PC par Bill Gates, au milieu des annes 70

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

VBA ou VB ou Visual Basic Visual Basic sest dvelopp partir du langage BASIC ( (Beginners g All-purpose p p Symbolic y Instruction Code) ) La terminologie autour de Visual Basic peut mener une certaine ambigut. VBA = Visual Basic pour Application Disponible avec MS Office (Excel, Access, Word) VB = Visual Basic Langage de programmation contenu dans MS Office mais galement intgr dans Visual Studio pour faire des applications indpendantes

Visual Basic en gnral Avantages Simplicit p Disponible dans MS Office Accs toutes les fonctions de Windows Systmes de fentres, botes de dialogue, API Inconvnients Pas trs rapide Dpend p beaucoup p des versions utilises de Windows et MS Office Cher si on veut tre en rgle

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

2) Pratique: 1er exemple ub c Sub afficher a c e _te te() Public texte() Dim i As Integer For i=1 To 2 MsgBox " FI GE!" Next i End Sub

Syntaxe de base Il faut toujours indiquer o se trouve le dbut et la fin du programme que lon l crit. it Indique le dbut

Public Sub nom_du_programme() squences dinstructions End Sub

commentaire

Indique la fin

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

10

3 ) Les Variables et Les constantes 3.1 ) Les Variables Les variables sont essentielles tous les programmes et tous les langages Elles permettent le stockage court terme des paramtres du programme. Souvent des valeurs numriques (5, 17.6, -3.121212) ou des caractres Plusieurs types de variables Correspondent des zones de mmoire de lordinateur En Visual Basic, on considre env. 12 types de variables. Les plus utilises : String pour stocker des chanes de caractres Integer pour stocker des valeurs entires Single pour stocker des valeurs dcimales simple Double pour stocker des valeurs dcimales Long pour stocker des grandes valeurs entires Boolean pour stocker soit un 0 soit un 1 (un bit)

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

11

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

12

Type Boolean Byte y Currency Date Double Integer Long Object Single String String*n Variant

Occupation mmoire Porte des valeurs True ou False 0 255 (28) -922 337 203 685 477.580 8 922 337 203 685 477.580 7 1er janvier 100 au 31 dcembre 9999 0:00:00 23:59:59 -1.797 693 134 862 32 E308 -4.940 656 458 412 47 E-324 8 octets 4.940 656 458 412 47 E-324 1.797 693 134 862 32 E308 2 octets -32 768 32 767 (216, sign) 4 octets -2 147 483 648 2 147 483 647 (232, sign) 4 octets Pointeur sur un objet 4 octets -3.402 823 E38 -1.401 298 E-45 1.401 298 E-45 3.402 823 E38 10 octets + taille de la La longueur (variable) de la chane est compose dau plus 2 chane 147 483 648 caractres Taille de la chane La taille de la chane, fixe par n, est comprise entre 1 et 65536 16 octets Une valeur parmi celles listes au-dessus, mise part String*n 2 octets 1 octet 8 octets 8 octets

Currency est un type de donnes, stock sur 8 octets, qui permet, notamment, des calculs montaires prcis dans le cas de nombres de moins de 4 dcimales. Variant est le type de donnes par dfaut pour les variable dont le type nest pas explicitement dclar et stocke nimporte quel type de donnes (except String*n), y compris les types dfinis par le programmeur.

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

13

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

14

En VB, il nest pas obligatoire de dclarer les variables, mais vivement conseill Syntaxe de dclaration: Public Sub prog_decla () Dim age As Integer Dim nom As String Dim revenu As Long End Sub

3.2 ) Les constantes Syntaxe [Public | Private] ] Const constname [ [As type] yp ] = expression p Private est utilis au niveau module pour dclarer les constantes uniquement disponibles dans le module dans lequel la dclaration est effectue. Ce mot cl nest pas autoris dans les procdures. Public est utilis au niveau module p pour dclarer des constantes disponibles pour toutes les procdures de lensemble des modules. Ce mot cl nest pas autoris dans les procdures.

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

15

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

16

4) Comment crer un type de donne ?

Const pi As Double = 3.14159 ' il est obligatoire d'assigner une valeur pi As Double = p pi*2 Const Deux_p Public Const RG = "Rouge"

Il est possible de crer ou de dfinir un nouveau type de donne Il suffit de rpertorier, entre les instructions Type et End Type, lensemble des variables pour dfinir un nouveau type, type Exemple Type Client Nom As String*15 Prnom As String*15 Age As Integer E d Type End T Utilisation Dim Untel As Client Untel.Nom = "Dupond" Untel.Prnom = "Lon" Untel.Age = 40

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

17

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

18

5) Les oprateurs arithmtiques en VB (de calcul) Les oprateurs de calcul permettent de modifier mathmatiquement la valeur d'une variable
Oprateur + * / \ ^ Mod & Dnomination addition soustraction multiplication division Division entire puissance Modulo Concatnation de chane Reste de la division Effet Ajout deux valeurs Soustrait deux valeurs Multiplie deux valeurs Divise deux valeurs Divise deux entiers Exe E mple 7+3 7-3 7*3 7/3 7\3 3^4 7%3 Rsultat 10 4 21 2.3333333 (double) 2 81 1 (reste de division de 7/3) "bonjour tous le monde "

6) Les oprateurs de comparaison Oprateur : gale (=) Compare deux valeurs et vrifie leur galit Exemple If (x=3) then Retourne 1 si x est gal 3 0 sinon Oprateur : diffrent (<>) Vrifie qu qu'une une variable est diffrente d d'une une valeur Exemple If (x<>3) then Retourne 1 si x est diffrent de 3 0 sinon

"bonjour " & "tous le monde "

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

19

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

20

Oprateur : infrieur strictement (<) Vrifie qu'une variable est strictement infrieure une valeur Exemple If (x<3) then Retourne 1 si x est infrieur 3, 0 sinon Oprateur : infrieur ou gale (<=) Vrifie qu'une variable est infrieure ou gale une valeur Exemple If (x<=3) then Retourne 1 si x est infrieur ou gal 3, 0 sinon

Oprateur : suprieur stricte ment(>) Vrifie qu'une variable est strictement suprieure une valeur Exemple If (x>3) then Retourne 1 si x est strictement suprieure 3, 0 sinon

Oprateur : suprieur ou gale (>=) Vrifie qu'une variable est suprieure ou gale une valeur Exemple If(x>=3) then Retourne 1 si x est suprieure ou gale 3, 0 sinon

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

21

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

22

7) Les oprateurs logiques (boolens)

En rsum
Danslalgbrestandard a=b cd e>f g<h ij kl EquivalentdansVisualBasic a=b c<>d e>f g<h i>=j k<=l

Ce type d'oprateur permet de vrifier si plusieurs conditions sont vraies: OU logique (Or) Vrifie si l lune une au moins des conditions est ralise ((condition1)Or(condition2)) quivalent ((condition1)OU(condition2)) ET logique (AND) Vrifie que toutes les conditions sont ralises ((condition1)And(condition2)) quivalent ((condition1)ET(condition2)) NON logique (Not) (retourne la valeur 1 si la variable Inverse l'tat d'une variable boolenne ( vaut 0, 0 si elle vaut 1) Not (condition) quivalent non (condition) Ou exclusif (Xor) si seulement une seule des deux conditions est vrai (l'un ou l'autre, mais pas les deux ) ((condition1)Xor(condition2)) quivalent ((condition1)ou exclusif (condition2))

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

23

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

24

8) STRUCTURES DE CONTRLE p 0 0 1 1 q 0 1 0 1 P Or q (p OU q) P And q (p ET q) Not p (non p) P xor q 0 0 1 0 1 0 1 1 1 1 0 1 0 0 1 0 Visual Basic propose : Trois types de structures de slection : If/Then, If/Then/Else, Select Case, six types de structures de repetition : While/Wend, Do While/Loop, D /L Do/Loop Whil While, Do Until/Loop, Do/Loop Until, For/Next.

p Xor X q = (p ( + q). ) (pq) ( )=pq+pq

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

25

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

26

Squence structure If/Then T


. . .

Slection structure While/Wend structure Select Case T T F T F


. . .

Rptition structure Do While/Loop T F

structure Do/Loop While

T F

F structure If/Then/Else F

structure Do Until/Loop

structure Do/Loop Until

structure For/Next

T F

T T

F F T F T

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

27

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

28

8.1) Structures de slection Structure de type If/Then Syntaxe : If note >= 10 Then deliberation = "Admis" End If Structure de type If/Then/Else Syntaxe : If note >= 10 Then deliberation = "Admis" Else deliberation = " Ajourne" End If

Structure de type If/Then/Elseif/Else Syntaxe : If Condition1 Then Instructions1 ElseIf Condition2 Then Instruction2 Else Instructions-finales End If

Sub saisir() Dim NomUtilisateur As String NomUtilisateur = InputBox("Saisissez votre nom") If NomUtilisateur = "Said" Then MsgBox ("Bonjour, Said ! En forme pour attaquer le travail ? ") ElseIf NomUtilisateur = "Ali" Then MsgBox ("Bonjour, Ali ! Prt attaquer le travail ? ") Else MsgBox ("Dsol, Je ne vous connais pas !") End If E d Sub End S b 'Abandon 'Ab d du d programme

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

29

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

30

Structure de type Select Case Syntaxe : Select Case variable Case Value 1 Instruction1 Case value2 Instruction2 Case Else Instructionp End Select

Exemple Select Case Pourcent Case Is >= 90 Lettre = "A" A Case 60 to 89 Lettre = "B" Case Else Lettre = "F" End Select

Select Case code_d_acces Case Is < 1000 M Message = "Accs "A refus" f " Case 1542, 1645 To 1689 Message = "Personnel technique" Case Else Message = "Accs refus" End Select

Notez qu qu'il il y a plusieurs faons d d'exprimer exprimer la condition du Case: avec les signes < et > il faut utiliser le IS on peut spcifier un range: 60 To 89 on peut spcifier des valeurs: 44, 46, 55, 62

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

31

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

32

8.2) Structures de repetition : Structure de type While/Wend

Structure de type Do While/Loop Syntaxe :

Syntaxe : S t While Condition instructions Wend Private Sub cmdBouton_Click() Dim produit As Integer produit = 2 While produit <= 1000 MsgBox produit produit = produit * 2 Wend End Sub

Do While condition Instructions excuter rptitivement Loop Exemple : Do While Nom <> "Fini" Nom = InputBox(("Saisissez votre nom ou tapez Fini pour quitter") MsgBox Nom Loop

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

33

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

34

Exemple : Private Sub cmdBouton_Click() Dim Di produit d it As A Integer I t produit = 2 Do While produit <= 1000 MsgBox produit produit = produit * 2 Loop End Sub

Structure de type Do/Loop While Syntaxe : Do Instructions excuter rptitivement Loop While condition Exemple : Sub cmpt() Dim compteur As Integer compteur t =1 Do MsgBox compteur & Space$(2) ' permet d'crire 1 2 3 4 10 compteur = compteur + 1 Loop While compteur <= 10 End Sub

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

35

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

36

Exemple : Sub temp() Dim Di Celsius C l i As A Double D bl Prompt = "Saisissez une valeur en degrs Fahrenheit" Do Ftemp = InputBox(Prompt, "Fahrenheit en Celsius") If Ftemp <> "" Then Celsius = Int((Ftemp + 40) * 5 / 9 - 40) MsgBox (Celsius), , "Temprature en degrs Celsius" End If Loop While Ftemp <> "" End End Sub

Structure de type Do Until/Loop Syntaxe : Do Until condition Instructions excuter rptitivement Loop Exemple : Private Sub produit() Dim produit As Integer produit d it = 2 Do Until produit > 1000 msgBox produit produit = produit * 2 Loop End Sub

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

37

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

38

Structure de type Do/Loop Until Syntaxe : Do D Instructions excuter rptitivement Loop Until condition Exemple : Private Sub prdt() Dim compteur As Integer compteur = 1 Do MsgBox compteur & Space$(2) ; compteur = compteur + 1 Loop Until compteur = 10 End sub

Exemple : Sub S b saisir() i i () Dim Nom As String Do Nom = InputBox("Saisissez votre nom ou tapez Fini pour quitter") If Nom <> "Fini" Then MsgBox Nom End If Loop Until il Nom = "Fini" i i End Sub

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

39

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

40

Structure de type For/Next Syntaxe : For variable = start To end Instructions excuter rptitivement Next Variable Exemple : Sub cmpt_for() cmpt for() Dim compteur As Integer For compteur = 1 To 20 Step 2 MsgBox compteur & Space$(2) ' permet d'crire 1 2 3 4 10 Next compteur End Sub

8.3) Instruction EXIT FOR Cette instruction permet d'interrompre la boucle et de sortir : Exemple : For i = 1 To 10 Nom = InputBox("Saisissez votre nom ou tapez Fini pour quitter") If Nom ="Fini" Then Exit For enf f if MsgBox Nom Next i

10

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

41

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

42

9) Les procdures de fonction Elles ont un nom, comprennent des arguments et retournent un rsultat 9. 1) Les procdures Sub Syntaxe : Sub NomProcedure ([arguments]) Instructions de la procedure End sub

Private Sub cmdPlusPetit_Click() Dim valeur1 As Long, valeur2 As Long, valeur3 As Long valeur1 = InputBox("donner la premiere valeur") valeur2 = InputBox( InputBox("donner donner la seconde valeur valeur") ) valeur3 = InputBox("donner la troisieme valeur") Call Minimum(valeur1, valeur2, valeur3) 'ou Minimum valeur1, valeur2, valeur3 MsgBox "La plus petite valeur est " & valeur1 End Sub Private Sub Minimum(min As Long, y As Long, z As Long) If y < min Then min = y End If If z < min Then min = z End If 'MsgBox "La plus petite valeur est " & min End Sub

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

43

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

44

9.2) Les procdures Function Syntaxe : Function NomFunction ([arguments]) [As Type] Instructions de la fonction End Function Les arguments sont spars par des virgules. La fonction retourne toujours une valeur porte par son nom.

Ce programme permet de multiplier deux nombres


Option Explicit 'Force les variables tre explicitement dclares Private Sub cmdMultiplier_Click() Dim valeur1 As Single, valeur2 As Single valeur1 = InputBox("donner la premiere valeur") valeur2 = InputBox("donner la seconde valeur") MsgBox "Le rsultat de la multiplication est : "&Multiplication(valeur1, valeur2) End Sub Private Function Multiplication(x As Single, y As Single) As Single Multiplication = x * y End Function

La valeur, retourne par la fonction Multiplication, est place dans le nom de la fonction (on parle de pseudo-variable).

11

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

45

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

46

9.3) Appel par valeur, appel par rfrence


Option Explicit 'Force les variables tre explicitement dclares Private Sub max_min() Dim Di valeur1 l 1 As A Double, D bl valeur2 l 2 As A Double D bl valeur1 = InputBox("donner la premiere valeur") valeur2 = InputBox("donner la seconde valeur") MsgBox "Le maximum est : "&Max(valeur1, valeur2) End Sub Function Max(A, B As Double) As Double Dim M As Double If A >= B Then M=A Else M=B End If Max = M End Function

Le passage des paramtres dune procdure peut se faire par valeur ou par rfrence (par adresse). adresse)

le mode de passage par dfaut est par rfrence.

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

47

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

48

9.3.a) par rfrence


Private Sub change() Dim Di a As A Double, D bl b As A Double, D bl c As A Double D bl a=5 b=9 MsgBox "av appel " & "a = " & a & " b = " & b Call echange(a, b) MsgBox "aprs appel " & "a = " & a & " b = " & b End Sub Private Sub echange(x As Double, y As Double) Dim tmp As Double tmp = x x=y y = tmp MsgBox "dans la pro echan " & "a = " & x & " b = " & y End Sub

9.3.b) par valeur


Private Sub change() Dim a As Double, b As Double, c As Double a=5 b=9 Av appel a = 5 b = 9 MsgBox "av appel " & "a = " & a & " b = " & b Dans la pro echan a = 9 b = 5 Call echange(a, b) Aprs appel a = 5 b = 9 MsgBox "aprs appel " & "a = " & a & " b = " & b End Sub Private Sub echange(ByVal x As Double, ByVal y As Double) Dim tmp As Double tmp = x x=y y = tmp MsgBox "dans la pro echan " & "a = " & x & " b = " & y End Sub

Av appel a = 5 b = 9 Dans la pro echan a = 9 b = 5 Aprs appel a = 9 b = 5

12

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

49

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

50

9.4) Exit Sub et Exit Function Linstruction Exit Sub (respectivement Exit Function) dans une procdure Sub (respectivement Function) provoque une sortie immdiate de la procdure.
Private Sub change() Dim a As Double, b As Double, c As Double a=5 b=9 MsgBox "av appel " & "a = " & a & " b = " & b Call echange(a, b) MsgBox "aprs appel " & "a = " & a & " b = " & b End Sub g ( y x As Double, , ByVal y y As Double) ) Private Sub echange(ByVal Dim tmp As Double tmp = x x=y y = tmp Exit Sub MsgBox "dans la pro echan " & "a = " & x & " b = " & y End Sub

10) LES TABLEAUX Un tableau peut se reprsenter comme tant un groupe conscutif (une srie) d demplacements emplacements mmoires de mme nom et de mme type

10.1) Leurs dclarations Syntaxe


Dim Nombre (5) As Integer Dclare un tableau Nombre constitu de six entiers.

Nombre (0) Nombre (1) Nombre (2) Nombre (3) (4) ) Nombre ( Nombre (5)

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

51

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

52

Les fonctions LBound (Nombre) et UBound (Nombre) retournent respectivement lindice le plus petit et lindice le plus grand du tableau, lindice tant de type Long.

La dclaration Dim Tab (-5 To 4) As String dclare un tableau Tab constitu de 10 chanes de caractres, caractres LBound (Tab) et UBound (Tab) sont respectivement gaux -5 et 4. Les tableaux peuvent tre multi-dimensionnels

Par dfaut, le plus petit indice dun tableau est gal 0


Le fait de spcifier une valeur pour le plus grand indice dun tableau, dans notre exemple 5, indique que le tableau est statique.

la dclaration Dim Tab3 (50 To 100, 8, 7 To 15) dclare un tableau Tab de dimension 3, LBound (Tab3, 3) est gal 7, UBound (Tab3, 1) est gal 50.

Par dfaut, , les six entiers du tableau sont gaux g 0


Nombre (0) = 55 permet de fixer la valeur 55 llment du tableau Nombre dindice 0.

13

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

53

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

54

Const nmax As Integer = 10 Sub main() Dim mat1(nmax, nmax) As Single Call lire_matt(mat1(), 3) Call affiche_matt(mat1(), 3) End Sub Sub lire_matt(mat() As Single, nlc As Integer) Dim i, j As Integer For i = 0 To nlc For j = 0 To nlc 'MsgBox "donner l'element " & i & j & " de la matrice" 'mat(i, j) = InputBox("donner l'element " & i & " " & j & " de la matrice") mat(i, j) = Cells(i + 2, j + 1).Value Next j Next i End Sub Sub affiche_matt(mat() As Single, nlc As Integer) Dim i, j As Integer For i = 0 To nlc For j = 0 To nlc 'MsgBox "donner l'element " & i & j & " de la matrice" Cells(i + 2, j + 1).Value = mat(i, j) Next j Next i End Sub

10.2) Les tableaux dynamiques Contrairement aux tableaux statiques dont le nombre maximum dlments est t fix. fi Le nombre dlments dun tableau dynamique peut varier durant le droulement du programme.

Dim Tab6 () As Double La taille d dun un tableau dynamique est spcifie en cours d dexcution excution l laide aide du mot cl ReDim (notons que la dimension du tableau ne peut pas tre modifie). ReDim Tab6 (10) alloue 10 lments Tab6.

Lire et crire une matrice

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

55

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

56

10.3) Passage de tableaux dans les procdures Pour passer tous les lments dun tableau en paramtre une procdure, il suffit de spcifier le nom du tableau suivi dune paire de parenthses vide. Par exemple, si le tableau Vect est dclar comme suit : Dim Vect(10) As double lappel Call Solt_Gauss(Vect( )) Pour passer un lment dun tableau une procdure Call PasserUnElement (Vect(5))

Pour une procdure recevant un tableau, la liste des paramtres de la procdure doit spcifier le passage dun tableau. Par exemple, P l lentte l de d la l procdure d S l G Solt_Gauss d devra scrire i comme suit : Private Sub Solt_Gauss(a( ) As Double) La procdure Solt_Gauss reoit un tableau de rel dans le paramtre a (la taille du tableau nest pas spcifie entre les parenthses).

14

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

57

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

58

11) LES CHANES Une chane dans Visual Basic a un type de donne String. Deux D types de d chanes h sont possibles ibl : Les chanes de longueur variable exemple : Dim ch As String ch = "02 41 abc" Les chanes de longueur fixe Dim NomVariable As String * TailleChane La chane (NomVariable) de longueur fixe (TailleChane)

exemple : Dim ch1 As String*5 ch = "02 41" Sub chaine() Dim ch1 As String * 5 ch1 = "Filire Ingnieur " MsgBox ch1 End Sub Rsultat : Fili

La fonction Len (pour length) est utilise pour dterminer la longueur dune chane. Exemple : Len ("02 41 abc") est gal 11.

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

59

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

60

11.1) Concatnation avec & et + Sub conct_chaine() Dim ch1, , ch2, , ch3, , ch4 As String g ch1 = "Filire Ingnieur " ch2 = "Gnie nergtique" ch3 = ch1 & ch2 ch4 = ch1 + ch2 MsgBox ch1 'Cells(2, 2).Value = ch1 MsgBox ch2 MsgBox ch3 ch3 et ch4 contiennent la chane MsgBox ch4 "Filire Ingnieur Gnie nergtique ". End Sub

Attention ! Les oprateurs & et + sont quivalents entre les chanes. L ili i de Lutilisation d lopration l i + entre des d oprandes d de d type diffrent, diff Par exemple ch = "bonjour" + 22 Erreur Par contre ch = "bonjour" & 22 Vrai

15

20/12/2012

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

61

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

62

11.2) Comparaison de chanes Pour comparer deux chanes la fonction StrComp et Les oprateurs <, <=, >, >=, =, <>. La comparaison entre deux chanes est base sur les diffrentes valeurs ASCII codant les chanes. StrComp (ch1, ch2) retourne 0 lorsque les chanes ch1 et ch2 sont gales, -1 si la chane ch1 est infrieure ch2, ch2 1 si la chane ch1 est suprieure ch2. Exemple, StrComp ("A", "B") est gal 1 car le code ASCII de A (= 65) est infrieur celui de B (= 66).

11.3) Manipulation de caractres dans une chane La fonction Mid$ (ch, pos, nb) retourne une sous-chane de la chane ch, constitue de nb caractres partir du caractre indiqu par la position pos (la position du premier caractre est gale 1). sous_ch = Mid$ ("programme", 2, 3) sous_ch = "rog" Permet aussi de remplacer une portion de chane par une autre. autre ch = "Bonjour monsieur" Mid$ (ch, 9, 1) = "M" change le contenu de ch en "Bonjour Monsieur".

Universit Hassan II - Mohammedia Facult des Sciences et Techniques

Visual Basic

J. Meziane

63

Const nmax As Integer = 1000 Sub main() Dim tx(nmax), ty(nmax) As Double Dim i, nbr As Integer nbr = 100 Call runge_k(tx(), ty(), nbr) Cells(2, 1).Value = "x" Cells(2, 2).Value = "y" Cells(2, 3).Value = "solexacte" For i = 0 To nbr Cells(i + 3, 1).Value = tx(i) Cells(i + 3, 2).Value = ty(i) Cells(i + 3, 3).Value = Exp(-tx(i)) Next i End Sub Function fct(x, y As Double) As Double fct = -y End Function

Sub runge_k(xt(), yt() As Double, n As Integer) Dim i As Integer Dim h, k1, k2, k3, k4 As Double h = 0.01 //1.0/(n 1); 0 01 '//1 0/(n-1); xt(0) = 0 yt(0) = 1 For i = 1 To n k1 = h * fct(xt(i - 1), yt(i - 1)) k2 = h * fct(xt(i - 1) + h / 2, yt(i - 1) + k1 / 2) k3 = h * fct(xt(i - 1) + h / 2, yt(i - 1) + k2 / 2) k4 = h * fct(xt(i - 1) + h, yt(i - 1) + k3) yt(i) = yt(i - 1) + (k1 + 2 * k2 + 2 * k3 + k4) / 6 xt(i) = xt(i - 1) + h Next i End Sub

Runge kutta

16