Macros-commandes VBA/Architecture
Introduction
[modifier | modifier le wikicode]Le 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
[modifier | modifier le wikicode]Les procédures
[modifier | modifier le wikicode]Dé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
[modifier | modifier le wikicode]Dé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 | modifier le wikicode]- 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
[modifier | modifier le wikicode]La 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
[modifier | modifier le wikicode]Le 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
[modifier | modifier le wikicode]Type 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
[modifier | modifier le wikicode]Les 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
[modifier | modifier le wikicode]Les commentaires
[modifier | modifier le wikicode]Les 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
[modifier | modifier le wikicode]Le 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
[modifier | modifier le wikicode]Le 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
[modifier | modifier le wikicode]Le 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
[modifier | modifier le wikicode]Le 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
[modifier | modifier le wikicode]Bibliographie
[modifier | modifier le wikicode]- 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
[modifier | modifier le wikicode]Liens externes
[modifier | modifier le wikicode]