Macros-commandes VBA/Architecture

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Architecture
Icône de la faculté
Chapitre no 3
Leçon : Macros-commandes VBA
Chap. préc. :Pour démarrer
Chap. suiv. :Les types en VB
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Macros-commandes VBA : Architecture
Macros-commandes VBA/Architecture
 », n'a pu être restituée correctement ci-dessus.

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]

Pour aller plus loin, voir : Les types en VB.
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]

Pour aller plus loin, voir : Manipulation des variables.

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]

Pour aller plus loin, voir : Conditionnelles et boucles.

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]