« Macros-commandes VBA/Manipulation des variables » : différence entre les versions

Contenu supprimé Contenu ajouté
My Husband & I Came across a Well Known Site & Were Lookin for Opionions?
m Révocation des modifications de 209.118.181.20 (discussion) vers la dernière version de JackBot
Ligne 1 :
{{Chapitre
I just got a free credit report at freecredit-report.net and it's just like advertised, Free! Just cancel within the trial period :)
|niveau=14
| titre = Manipulation des variables
| idfaculté = informatique
Are there any other credit sites that offer the same?
| numéro = 4
| précédent = [[../Les types en VB/]]
thx
| suivant = [[../Conditionnelles et boucles/]]
}}
 
JK
== Déclaration des variables ==
=== Syntaxe ===
 
Une variable VB doit porter un nom commençant par une lettre et '''ne devant pas comporter''' certains caractères spéciaux :
* espace
* ! (réservé aux Single)
* <nowiki>#</nowiki> (réservé aux Double)
* % (réservé aux Integer)
* $ (réservé aux String)
* & (réservé aux Long)
* @
 
Chaque fois que l'on voudra utiliser une nouvelle variable, il est fortement conseillé de la '''déclarer''' dans la feuille de code pour signaler au compilateur avec quoi il travaille et quelle place allouer à la mémoire pour gérer ces variables.
 
{{exemple
| contenu =
<source lang="vb">
Dim Nom As String
Dim Age As Integer
</source>
déclare une chaîne de caractères <tt>Nom</tt> et un entier <tt>Age</tt>
 
<source lang="vb">
Dim B1, B2, B3 As Boolean
</source>
déclare trois booléens <tt>B1</tt>,<tt>B2</tt> et <tt>B3</tt>.
}}
 
=== Portée ===
 
Une variable VB peut avoir trois portées différentes.
 
* Le niveau procédure, le plus fin, qui permet de limiter l'existence de la variable à la fonction ou procédure en cours.
* Le niveau formulaire permet l'accès à la variable à toutes les procédures d'un même formulaire.
* Le niveau projet permettant d'accéder au contenu de la variable dans toute l'application.
 
 
{{exemple
| contenu =
<source lang="vb">
Dim Nom As String
</source>
placé en début d'une procédure, déclare une chaîne de caractères <tt>Nom</tt> pour la procédure courante uniquement.
 
<source lang="vb">
Dim Nom As String
</source>
placé en début de formulaire, déclare une chaîne de caractères <tt>Nom</tt> pour toutes les procédures de celui-ci.
 
<source lang="vb">
Public Nom as String
</source>
placé dans un module, déclare une chaîne de caractères <tt>Nom</tt> pour tout le projet.
}}
 
== Opérations possibles sur les variables ==
=== Affectation ===
 
Pour donner une valeur à une variable, on utilise le signe =
 
{{exemple
| contenu =
<source lang="vb">
Dim x As Integer
Dim y As Boolean
 
x = 3
y = True
</source>
 
<tt>x</tt> vaut 3 et <tt>y</tt> vaut Vrai
}}
 
=== Opérations mathématiques ===
 
* Les opérations usuelles (addition, soustraction, multiplication, division) s'écrivent en VB avec leurs symboles usuels.
 
{{exemple
| contenu =
<source lang="vb">
a = 52
b = 8
 
c = a + b 'c vaut 60
d = a - b 'd vaut 44
e = a * b 'e vaut 416
f = a / b 'f vaut 6,5
</source>
}}
 
* Pour le type '''Integer''', le reste de la division euclidienne est accessible avec l'instruction '''Mod'''
 
{{exemple
| contenu =
<source lang="vb">
a = 52
b = 8
c = a Mod b 'c vaut 4
</source>
}}
 
* VB dispose également par défaut d'une petite bibliothèque de fonctions mathématiques standard :
 
{| class="wikitable"
! Nom !! Description
|-
|Cos
|Cosinus de l'angle (en radians)
|-
|Sin
|Sinus de l'angle (en radians)
|-
|Tan
|Tangente de l'angle (en radians)
|-
|Exp
|Exponentielle (en base e)
|-
|Log
|Logarithme népérien
|-
|Sqr
|Racine carrée
|}
 
Ces fonctions retournent un résultat du type Double.
 
==== Arrondir un nombre ====
Il existe par défaut quatre fonctions pour arrondir :
<source lang=vb>
Sub arrondir()
a = "5,5"
MsgBox Int(a) ' 5
MsgBox Fix(a) ' 5
MsgBox Round(a) ' 6
MsgBox Format(a, 0) ' 6
End Sub
 
Sub arrondir2()
a = "5,4"
MsgBox Int(a) ' 5
MsgBox Fix(a) ' 5
MsgBox Round(a) ' 5
MsgBox Format(a, 0) ' 5
End Sub
</source>
 
===== Au supérieur =====
<source lang=vb>
a = 1,33
msgbox round(a+0.5)
</source>
 
===== À l'inférieur =====
<source lang=vb>
a = 1,66
msgbox round(a-0.5)
</source>
 
=== Opérations logiques ===
 
Les opérations logiques se font en temps normal sur des variables de type <tt>Boolean</tt>.
 
VB connaît les principales opérations :
* <tt>Not</tt> : opérateur NON
* <tt>And</tt> : opérateur ET
* <tt>Or</tt> : opérateur OU
* <tt>Xor</tt> : opérateur OU exclusif
 
{{exemple
| contenu =
<source lang="vb">
Dim a, b As Boolean
a = True
b = False
 
c = a And b 'c contient False
d = a Or b 'd contient True
e = a Xor b 'e contient True
f = Not a 'f contient False
</source>
}}
 
=== Comparaison ===
 
VB sait comparer :
* deux variables numériques
* deux chaînes de caractères, l'ordre étant celui du codage ASCII
 
Les opérateurs de comparaison sont les suivants :
 
{| class="wikitable"
! Opérateur !! Signification
|-
|<
|Inférieur
|-
|>
|Supérieur
|-
|<=
|Inférieur ou égal
|-
|>=
|Supérieur ou égal
|-
|=
|Égal
|-
|<>
|Différent
|}
 
{{exemple
| contenu =
<source lang="vb">
c1 = "minuscule"
c2 = "VisualBasic"
c3 = "Zanzibar"
 
b1 = c2 < c3 'b1 contient True
b2 = c1 < c3 'b2 contient False : dans l'ordre ASCII, les majuscules sont avant les minuscules
 
a = 12
b = 12
c = a <> b 'c contient False
c = a = b 'c contient True
</source>
}}
 
=== Opérations sur les chaînes de caractères ===
==== Longueur de la chaîne ====
La longueur d'une chaîne de caractères est accessible grâce à l'instruction '''Len'''.
 
{{exemple
| contenu =
<source lang="vb">
a = "abcdefghi"
b = Len(a) 'b contient 9
</source>
}}
 
==== Concaténation ====
 
Concaténer deux chaînes de caractères est l'opération qui consiste à les mettre bout à bout. De manière très intuitive, cette opération peut se faire en VB grâce à deux opérateurs : + et &.
 
{{exemple
| contenu =
<source lang="vb">
a = "abcd"
b = "efgh"
c = a + b 'c contient la chaîne "abcdefgh"
</source>
}}
 
==== Suppression des espaces latéraux ====
 
VB dispose de trois fonctions permettant de s'affranchir des espaces inutiles aux extrémités des chaînes de caractères :
* '''LTrim$''' (L comme Left), qui retire les espaces inutiles à '''gauche''' de la chaîne
* '''RTrim$''' (R comme Right), qui retire les espaces inutiles à '''droite''' de la chaîne
* '''Trim$''', qui retire les espaces inutiles à '''droite et à gauche''' de la chaîne
 
{{exemple
| contenu =
<source lang="vb">
a = " abcd "
b = " efgh "
c = a + b
 
a1 = LTrim$(a) 'a1 contient la chaîne "abcd "
b1 = RTrim$(b) 'b1 contient la chaîne " efgh"
c1 = Trim$(c) 'c1 contient la chaîne "abcd efgh"
</source>
}}
 
==== Changement de casse ====
 
Il existe deux fonctions qui permettent d'harmoniser la casse d'une chaîne :
* '''LCase$''' (comme Lower Case), qui permet d'obtenir la chaîne en '''minuscules'''
* '''UCase$''' (comme Upper Case), qui permet d'obtenir la chaîne en '''majuscules'''
 
{{exemple
| contenu =
<source lang="vb">
a = "BlAbLa"
b = LCase$(a) 'b vaut "blabla"
c = UCase$(a) 'c vaut "BLABLA"
</source>
}}
 
==== Extraction d'une sous-chaîne ====
 
On peut facilement extraire des sous-chaînes en VB de trois manières :
* '''Left$''': permet d'extraire les caractères les plus à gauche de la chaîne
* '''Right$''': permet d'extraire les caractères les plus à droite de la chaîne
* '''Mid$''': permet d'extraire une sous-chaîne intérieure
 
{{exemple
| contenu =
<source lang="vb">
a = "123456789"
b = Right$(a, 5) 'b contient les 5 caractères les plus à droite de a, c'est-à-dire "56789"
c = Left$(a, 2) 'c contient les 2 caractères les plus à gauche de a, c'est-à-dire "12"
 
d = Mid$(a, 3, 4) 'd contient 4 caractères à partir du troisième, c'est-à-dire "3456"
'Attention aux paramètres : Mid$(chaîne, départ, longueur)
</source>
}}
 
==== Recherche d'une sous-chaîne ====
 
VB permet de trouver la position de la première occurrence d'une chaîne dans une autre chaîne grâce à l'instruction '''InStr'''.
 
{{exemple
| contenu =
<source lang="vb">
t1 = "45"
t2 = "w"
s = "123456789"
 
b1 = InStr(s, t1) 'b1 vaut 4 car "45" commence au quatrième caractère de s
b2 = InStr(s, t2) 'b2 vaut 0 car "w" est introuvable dans s
</source>
}}
 
==== Valeur numérique ====
 
L'instruction '''Val''' permet d'extraire un nombre présent au début d'une chaîne de caractères.
 
{{exemple
| contenu =
<source lang="vb">
a = "23"
b = "17.5 ans"
y = "taratata"
 
c = Val(a) 'c vaut 23
d = Val(b) 'd vaut 17.5
z = Val(y) 'z vaut 0
</source>
}}
 
=== Opérations sur les dates ===
Quand on manipule des dates, pour éviter de convertir et rechercher si nous devons changer de mois le 30 ou le 31, il existe des fonctions prédéfinies<ref>http://www.commentcamarche.net/contents/vbscript/vbs-fonctions-date.php3</ref> :
# DatePart() : extrait une partie de date (jour, heures...)
# DateAdd() : ajoute une durée.
# DateDiff() : calcule une différence entre deux dates.
 
== Influence du typage sur le contenu des variables ==
 
Contrairement à d'autres langages, VB fait preuve d'un certain laxisme envers le typage des variables. Ce peut être un avantage comme un inconvénient.
 
{{exemple
| contenu =
<source lang="vb">
Dim a As Integer
Dim b As Integer
 
a = 2.51
b = 2.49
</source>
 
Après l'exécution de ces lignes, <tt>a</tt> contiendra en réalité 3 et <tt>b</tt> contiendra 2.
}}
 
Toutefois, cette souplesse se manifeste avec '''certains opérateurs''' et pas d'autres.
 
{{exemple
| contenu =
<source lang="vb">
Dim s As String
Dim a As Integer
Dim b As Double
 
a = 14
b = 17.2
s = "a+b vaut " & (a + b) & " !"
</source>
 
Avec '''&''', s contient "a+b vaut 31.2 !"
 
<source lang="vb">
Dim s As String
Dim a As Integer
Dim b As Double
 
a = 14
b = 17.2
s = "a+b vaut " + (a + b) + " !"
</source>
 
Avec '''+''', on obtient l'erreur d'exécution 13 : Types incompatibles
}}
 
== Variables publiques connues ==
Certaines variables sont propres aux logiciels, par exemple dans Excel : ''xlDown, xlUp, xlToLeft, xlToRight'' renvoient toujours les limites de la feuille courante (respectivement en bas, haut, gauche et droite).
 
== Références ==
<references/>
 
{{Bas de page
| idfaculté = informatique
| précédent = [[../Les types en VB/]]
| suivant = [[../Conditionnelles et boucles/]]
}}