Accueil
Fenêtre d'exécution
Les variables
Définition d'un type de variable
Option Explicit
Pas à pas avec F8
Le code VBA s’écrit dans:
- Les modules
- Les feuilles
- Le classeur
- Les formulaires
Les procédures et fonctions définies dans
des Modules sont accessibles de tout endroit du projet.
Pour créer un module: Insertion/Module.

Fenêtre d’exécution
On peut y travailler en Mode direct,
c'est à dire frapper des instructions qui sont exécutées
immédiatement.
Affichage/Fenêtre d'exécution
Si par exemple, si vous frappez : Print 5*7, le résultat
(35) est affiché immédiatement.

Les variables
Dans l'exemple ci dessous, nous plaçons dans une
variable x la valeur 123 et dans une variable y la valeur 456.
z=x+y calcule la somme des variables x et y et range
le résultat dans la variable z.
Le type des variables peut être déclaré.
Dim x,y,z As Integer
' Entier
Dim c As String
' Chaîne de caractères
Les variables sont initialisées avec des valeurs
nulles lors de leur déclaration. Les différents types
de variables sont :
Type |
Nombre octets |
|
Integer |
2 |
Nombres entiers compris entre -32768 et + 32767 |
Single |
4 |
Nombres entiers compris entre -2 147 483 648 et + 2 147 483 647 |
Double |
8 |
-1,79E308 et 1,79E308 |
|
|
|
|
|
|
|
|
|
Déclaration des types de variables
Sur l’exemple, la variable Prix est déclarée
comme Integer. L’instruction Prix = "Dupont"
provoque une erreur.
Sub essai()
Dim Prix As Integer
' Prix doit être un entier
Prix = "Dupont"
' Provoque une erreur à l’exécution
End Sub
Autres exemples:
Dim nom As String '
chaîne de caractères
Dim taux_tva AS Single ' avec décimales
Dim temp As Variant ' type quelconque
Option Explicit
Cette instruction rend obligatoire la déclaration
des variables.
Sur l’exemple, la variable ttal n’a pas été
déclarée. Une erreur est détectée par VBA.
Sans l’option explicit , cette erreur n’aurait pas été
détectée par VBA à la compilation
(ce genre d'erreur est détecté très rapidement à
la mise point)
Option Explicit
Sub essai()
Dim prix As Integer, qte As Integer, total As Integer
prix = 123 '
123 dans la variable Prix
qte = 5 '
5 dans la variable Qte
total = prix * qte
MsgBox ttal
' la variable ttal n'existe pas
End Sub
Excel écrit automatiquement Option Explicit
à chaque nouveau module si on coche dans le menu :
Outils / Options / Onglet Éditeur / Déclaration des variables
obligatoire
-En découpant au maximum un programme en procédures
et fonctions courtes, on diminue les risques d'erreur
de programmation.
-L'essentiel des bugs des programmes proviennent :
.des cas particuliers non testés.
.de variables globales. Les variables globales à
un module ou les variables publiques ne doivent être
utilisées qu'en cas de nécessité . D'une façon
générale, il faut utiliser le passage de paramètres.
Le VBA utilisé avec des Arrays et dictionnaires
est rapide. Ce qui ralenti, c'est l'accès aux cellules
ou aux objets des formulaires. Il faut éviter les boucles accédant
aux cellules ou objets des formulaires. Par exemple il faut:
-Lire en champ dans un Array, traiter l'Array et transférer un
Array dans un champ plutôt que d'écrire cellule par cellule.
-Utliser .List pour alimenter un ComboBox
ou LIstbox plutôt que Additem.
-Le réflexe fonction perso est un bon réflexe puisque les
fonction sont réutilisables par le programmeur mais aussi par des
utilisateurs qui ne pratiquent pas VBA et sont souvent beaucoup plus performantes
que les formules matricielles.
-L'algorithme utilisé est souvent fondamental (par ex la méthode
de tri).
Visibilité des variables
Par défaut, les variables ne sont connues que dans
la procédure où elles sont déclarées.
Pour qu'une variable puisse être partagée par plusieurs fonctions
ou procédures dans un module, il faut les déclarer dans
le module en dehors des fonctions ou procédures.
Dim a As Integer ' La variable ‘a’ est connue dans toutes
les procédures du module
Sub Essai
a=123
Essai2
End Sub
Sub Essai2
Msgbox a ' Affiche 123
End Sub
Aide en ligne
Pour connaître la syntaxe d'un mot clé :
- Frapper le mot clé.
- Le sélectionner en le noircissant.
- Appuyer sur la touche F1
Visibilité dans tout le projet
Pour que des variables puissent être partagées
dans tout le projet, il faut les déclarer avec l'option Public.
Public témoin As Integer
Définition d'un type
de variable
Le programmeur peut définir ses propres types de
variable.
Type Personne
Nom As String
age As Integer
End Type
Sub essai()
Dim a As Personne, b As Personne
a.Nom = "Dupont"
a.age = 30
b = a
MsgBox b.Nom & " " & b.age
End Sub
Sur cet exemple, nous trions un tableau:
Type Personne
Nom As String
age As Integer
End Type
Sub essai2()
Dim a(1 To 5) As Personne
Dim temp As Personne
a(1).Nom = "Dupont": a(1).age = 40
a(2).Nom = "Balu": a(2).age = 30
a(3).Nom = "Charlie": a(3).age = 20
a(4).Nom = "Durand": a(4).age = 25
a(5).Nom = "Campas": a(5).age = 35
'---- tri
For i = 1 To 5
For j = i To 5
If a(j).Nom < a(i).Nom Then
temp = a(j)
a(j) = a(i)
a(i) = temp
End If
Next j
Next i
'--
For i = 1 To 5
MsgBox a(i).Nom & " " & a(i).age
Next i
End Sub
ou
Tri
Array structure
Type Personne
T(1 To 3)
End Type
Sub essai()
n = 5
Dim a() As Personne: ReDim a(1 To n)
Dim temp As Personne
For i = 1 To n
For col = 1 To 3
a(i).T(col) = Cells(i
+ 1, col)
Next col
Next i
'---- Tri Bubble
For i = 1 To n
For j = i To n
If a(j).T(1) < a(i).T(1) Then
temp = a(j): a(j) = a(i):
a(i) = temp
End If
Next j
Next i
'-- transfert feuille
For i = 1 To n
For col = 1 To 3
Cells(i + 1, col + 5) = a(i).T(col)
Next col
Next i
End Sub
Pas à pas avec la touche
F8:
- Curseur sur la procédure , touche F8
Pour afficher la valeur d’une variable, déplacer le curseur sur
la variable (compteur sur l’exemple)

|