Initiation au VBA Excel

Le VBA c’est quoi ?

Il faut déjà comprendre son petit nom, VISUAL BASIC pour APPLICATIONS. Ce qui indique, contrairement aux idées reçues, qu’on ne l’utilise pas seulement avec Excel.

Il était initialement intégré à Excel, mais depuis Microsoft office 97, il s’applique aussi à Access, Word, PowerPoint…

Il permet de faire des animations, de faire des recherches dans des bases de données, des calculs itératifs, des graphiques, des interfaces graphiques…

Son gros avantage est le gain de temps sur les actions manuelles répétitives, surtout quand il s’agit de manipuler plusieurs fichiers pour récupérer/traiter des données.

Il est également un langage simple et facile d’utilisation. Et la correction automatique aide quand on débute ou que l’’on n’est pas très attentif.

Toutefois, pour pouvoir l’utiliser, il faudra le faire depuis une application hôte (Excel, Word, Power Point, Autocad,…). Nous allons vous montrer l’exemple avec Excel.

1

Le VBA comment ça marche ?

A partir de l’application (Excel), on ouvre l’éditeur (VBE) avec Alt+F11.

Le code va pouvoir s’écrire à différents niveaux en fonction de l’action sur laquelle il doit s’appliquer :

  • au niveau du classeur : à l’ouverture, à l’activation, au redimensionnement de la fenêtre…
  • au niveau de la feuille : à l’activation/désactivation, au recalcul des données (F9), …
  • dans un module pour les procédures et fonctions.

Il y a deux moyens pour écrire du code en VBA :

  • à l’aide d’une sous-routine (SUB) qui permet d’exécuter du code mais ne renvoie aucune valeur
  • à l’aide d’une fonction (FUNCTION) qui permet d’exécuter du code avec une valeur de retour

Chaque fonction ou sous-routine peut être définie publique ou privée en fonction de l’accessibilité qu’on veut lui donner.

Un ensemble de sous-routines associé à une action liée à la feuille ou au classeur est prédéfini. Pour y accéder, il faut sélectionner l’objet sur lequel on veut agir, ensuite l’action qu’on veut faire et la sous-routine est créée. Il n’y a plus qu’à la remplir…

2Exemple : affichage d’un message à l’ouverture du classeur

3

4

A partir de là, on va pouvoir manipuler les objets définis en VBA :

  • le classeur : ThisWorkbook = classeur actif, Workbooks(« Exo2.xlsm ») = classeur ayant pour nom “Exo2.xlsm” ; avec les méthodes basiques : .Close (fermeture), .Activate (activation), .SaveAs (enregistrement), …
  • la feuille : ThisWorkbook.Sheets(1) = 1ère feuille du classeur actif, ThisWorkbook.Sheets(« VBA1″) = feuille portant le nom « «VBA1 » du classeur actif ; avec les méthodes basiques : .Add (ajout), .Copy (copie), .Move (déplacement), .Delete (suppression), …
  • le range à travers :
  • une cellule : ThisWorkbook.Sheets(1).range(« B2 ») = cellule B2 de la 1ère feuille du classeur, ThisWorkbook.Sheets(1).Cells(2,2) = cellule à la deuxième ligne et deuxième colonne de la 1ère feuille du classeur actif.
  • un tableau : ThisWorkbook.Sheets(2).range(« A2:D9 ») = tableau de la cellule A2 à la cellule D9 de la 2ème feuille du classeur actif.un offset par rapport à une cellule ou un ensemble de cellules : ThisWorkbook.Sheets(1).range(« B2 »).Offset(1, -1) = cellule en bas à gauche de la cellule B2 de la 1ère feuille du classeur actif.
  • Avec les méthodes basiques : .Select (sélection), .Copy (copie), .PasteSpecial (collage), …

Il existe des objets particuliers : ThisWorkbook (classeur actif), ActiveCell (cellule active), Selection.End(xLToRight) (dernière colonne non vide à partir de la sélection), Selection.End(xLDown) (dernière ligne non vide à partir de la sélection)…

Toutes les propriétés et méthodes de chaque objet sont ensuite accessibles par complétion (Ctrl + Espace). On peut aussi en savoir plus avec l’aide en ligne (F1).

Exemple simple : macro commentaire qui ajoute du texte et un commentaire à la cellule M5 de la 2ème feuille du classeur actif.

5Voilà le résultat :

6

Truc à savoir : Comment faire pour débuguer ?

On peut mettre un point d’arrêt sur une ligne de code en cliquant dessus dans la barre de défilement de gauche (ou avec F9). A partir de là, on lance la macro (F5) qui s’arrête au point d’arrêt, et on peut faire du pas à pas (F8). La fenêtre d’espions nous permet de voir le contenu des variables à chaque étape.

Des interfaces graphiques en VBA ?

Mais oui !

En effet, le VBA est souvent utilisé pour créer des interfaces graphiques simples permettant d’interagir avec l’utilisateur.

Au-delà du MsgBox qui permet d’afficher un message ou de poser une question à l’utilisateur ou de l’InputBox qui permet à l’utilisateur d’entrer une valeur à réutiliser, il est possible d’utiliser un UserForm où on va pouvoir insérer différents types de contrôles : intitulé, zone de texte, zone de liste modifiable, case à cocher, bouton d’option, image, …

Les méthodes basiques du UserForm sont .Show et .Hide qui permettent de contrôler l’affichage du formulaire.

Exemple : Un premier formulaire demande la note de l’utilisateur, si elle est inférieure à 7, on affiche le message : « C’est très mauvais » ; si elle est supérieure à 7, on demande la tranche dans laquelle la note se situe et on affiche le message correspondant selon le tableau suivant :

7

UserForm1 :

8

Code associé :

9

UserForm2 :

10

Code associé :

11

Code du module pour lancer la macro :

12

A l’exécution, sélection de  « Inférieure à 7 » :

1314Sélection de « Supérieure à 7 » :

15Sélection de 18-20 :

16

En bref

Maintenant que vous avez une idée de ce que l’on peut faire en VBA, n’hésitez pas à vous familiariser avec ce langage et à vous l’approprier pour faciliter et améliorer votre utilisation d’Excel… Car l’étendue des possibilités reste encore à explorer !

2 thoughts on “Initiation au VBA Excel”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

1 × deux =