Macros-commandes VBA/Architecture
Introduction
modifierLe langage VBA manipule différents concepts : des variables, des procédures, des fonctions, des affectations, des instructions séquentielles, des conditions, des boucles... Ces concepts sont représentés dans le code par de simples lignes de texte :
- les procédures et fonctions organisent les objets sur lesquels le travail repose ;
- les variables précisent les objets sur lesquels le travail repose ;
- les instructions animent les objets sur lesquels le travail repose ;
- les conditions testent les objets sur lesquels le travail repose ;
- les boucles automatisent le travail.
Structures de base
modifierLes procédures
modifierDéfinition : une procédure effectue un traitement (exécute une série d'instructions représentée par des lignes).
Structure :
Début déclarations de variables séquences d'actions Fin
Exemple :
' Cette macro affiche bonjour
Sub afficherMessageBonjour( )
MsgBox "Bonjour à tous !"
End Sub
- Appel de la procédure : afficherMessageBonjour => Résultat affiché à l’écran : Bonjour à tous !
Les fonctions
modifierDéfinition : une fonction effectue un traitement (exécute une série d'instructions) et de plus retourne une valeur typée à la fin de ce traitement, cette valeur pouvant être exploitée par une autre procédure, fonction ou application hôte
Structure :
Début déclarations de variables séquences d'actions renvoi d'une valeur Fin
Exemple :
' Cette fonction renvoie le carré d'un nombre passé en paramètre
Function renvoieUniquementUnCarre(monNombre as Long) As Long
renvoieUniquementUnCarre = monNombre * monNombre
End Function
- Appel de la fonction : monCarre = renvoieUniquementUnCarre(10) => Résultat : la variable monCarre prend la valeur 100
Les variables
modifier- Définition : les variables sont des boites nommées de stockage de valeurs qui évolueront au fur et à mesure que le programme se déroule.
- Déclaration : pour déclarer une variable, on écrit : DIM maVariable AS type où type précise l'objectif d'utilisation de la variable (INTEGER pour un nombre, STRING pour un texte, DATE pour une date...).
Une variable est une sorte de boîte qui va contenir une valeur. Elle peut être utilisée à tout moment en fonction de la portée que l’on souhaite lui attribuer. Il existe différents types de portée des variables, nous en retiendrons deux :
- Une variable globale est une variable que l’on peut utiliser dans tous les modules.
- Une variable locale est une variable déclarée dans une procédure d'un module.
Déclarer une variable
modifierLa déclaration d'une variable n’est pas obligatoire, mais elle est vivement recommandée.
Exemple ==> Dim monAge As Integer
- Dim : instruction de déclaration de la variable ;
- monAge : nom de la variable ;
- As: déclaration du type de la variable ;
- Integer : type de la variable choisi.
Nommer une variable
modifierLe nom des variables doit :
- commencer par un caractère alphabétique ;
- ne pas excéder 255 caractères ;
- ne pas contenir de caractères spéciaux (le caractère underscore _ est accepté).
Exemple ==> Dim LeçonVBA As String.
Typer une variable
modifierType de donnée | Plage |
---|---|
Byte (Numérique) | Nombre entier de 0 à 255. |
Integer (Numérique) | Nombre entier de -32 768 à 32 767. |
Long (Numérique) | Nombre entier de - 2 147 483 648 à 2 147 483 647. |
Currency (Numérique) | Nombre à décimale fixe de -922 337 203 685 477.5808 à 922 337 203 685 477.5807. |
Single (Numérique) | Nombre à virgule flottante de -3.402823E38 à 3.402823E38. |
Double (Numérique) | Nombre à virgule flottante de -1.79769313486232D308 à 1.79769313486232D308. |
String (Texte) | Texte. |
Date (Date) | Date et heure. |
Boolean | True (vrai) ou False (faux). |
Object | Objet Microsoft. |
Variant | Tout type de données (type par défaut si la variable n’est pas déclarée). |
Exemple ==> Dim monAge As Integer (permet l'affectation monAge = 22, interdit l'affectation monAge = "MOI" Exemple ==> Dim monNom as String (permet l'affectation monNom = "MOI")
Les opérateurs
modifierLes opérateurs sont, en informatique (comme en mathématiques ou en pratiques EXCEL) des outils identifiés par des symboles permettant des calculs ou des comparaisons entre des opérandes (appelés variables en VBA). Voici les différents opérateurs de VBA :
Opérateurs | Symboles | Utilités |
---|---|---|
Relationnels | "=,>,<,>=,<= , <>" | permettent d’effectuer des tests et de déclencher un traitement en fonction du résultat. Par exemple : si maDate >"20/01/2020" alors je fais quelque chose… sinon je fais autre chose… finsi (fin de comparaison) |
Arithmétiques | "+,-,*,/,mod" | permettent d’exécuter des opérations de calcul. Par exemple : monTotal = (100+50)/3, monReste = 100 Mod 24 |
Affectations | "=" | permettent d’effectuer des opérations de rangement dans des variables monNom = "Martin" => Résultat : monNom prend la valeur "Martin" |
Logiques | "not, or, xor, and, eqv" | permettent d’enchainer des opérations de comparaison. Par exemple : si a and b, not v |
Concaténations | "&" | Permettent d’effectuer des opérations de groupage de chaînes de caractères. Ex : nomComplet="Jules" &"-" & "Martin" => Résultat : nomComplet prend la valeur "Jules-Martin" |
Les instructions de base
modifierLes commentaires
modifierLes commentaires sont, en informatique, des lignes (ou portions de lignes) du code source ignorées par le compilateur ou l’interpréteur, car ils ne sont pas nécessaires à l’exécution du programme. Ils représentent un outil indispensable pour décrire de manière détaillée le traitement d'une macro. Les commentaires peuvent soit suivre une instruction sur la même ligne, soit occuper une ligne entière. Ces deux cas sont illustrés par le code suivant :
' Ceci est un commentaire commençant en début de ligne
monPrenom = "Bilbo" ' Ceci est un commentaire commençant en fin de ligne
Les affectations
modifierLe langage VBA, comme tous les langages informatiques ou automatiques, range des valeurs dans des variables, il utilise l'opérateur d'affectation "=".
age = 12
message = "coucou"
anniversaire = "12/12/2014"
Ici, la variable age recevra la valeur 12, la variable message recevra la valeur "coucou", la variable anniversaire recevra la valeur "12/12/2014".
Les instructions séquentielles
modifierLe langage VBA, comme tous les langages informatiques ou automatiques, exécute les instructions une par une
Range("E6").Select
age = 12
ActiveCell.FormulaR1C1 = age
Ici, la cellule E6 de la feuille courante sera sélectionnée, puis la variable age recevra la valeur 12, puis cette valeur 12 sera écrite dans la cellule E6.
Les instructions conditionnelles
modifierLe langage VBA, comme tous les langages informatiques ou automatiques, exécute ou non certaines instructions uniquement après un test.
IF (age = 18) THEN Range("E6").Value = "Vous êtes majeur(e)"
Ici, si la variable age est égale à 18, la cellule E6 recevra le libellé "Vous êtes majeur(e)".
Les boucles
modifierLe langage VBA, comme tous les langages informatiques ou automatiques, sait exécuter plusieurs fois certaines instructions.
FOR age = 1 to 18
IF (age < 18) THEN Range("E" & age).Value = "Vous êtes mineur(e)"
NEXT age
Ici, tant que la variable age sera inférieure à 18, les cellules E1 à E17 recevront le libellé "Vous êtes mineur(e)".
Annexes
modifierBibliographie
modifier- Greg Harvey et John Walkenbach, 2013, Excel 2013 et VBA Pour Les Nuls, FIRST, Hoboken
- Amelot M., 2011, VBA Excel 2010, ENI, St Herblain
- Bidault M., 2000, Excel et VBA, CAMPUS, Paris
Liens internes
modifierLiens externes
modifier