Maitriser le B-A-BA du langage VBA

Cette formation est en cours de publication, un peu de patience. Bonne lecture ! 🙂


programmation-vba

Le langage VBA ou Visual Basic for Applications est le langage de programmation commun aux applications de la suite Microsoft Office : Word, Excel, Powerpoint ou encore Outlook.

Cette fonctionnalité d’automatisation permet d’exécuter un nombre (très) important d’opérations au moyen d’une seule commande. En effet, les programmes construits à l’aide de ce langage (les macros VBA) permettent de définir des objets (plage de cellules Excel, document Word, etc.), et de les faire interagir. Pour cette raison, VBA est donc ce que les développeurs appellent un langage de « Programmation Orientée Objet ».

 

I – Ouvrir l’environnement VBA en quelques clics

Afin de faire tes premiers pas et de construire tes premières macros VBA, il te faut avant toute chose commencer par afficher l’onglet développeur d’Excel. Pour ce faire, tu dois suivre le chemin : Fichier/Options/Personnaliser_le_ruban/Onglets_principaux ; et cocher alors la case « Développeur ».

A) Ton premier programme (sans code !)

Une fois cet onglet affiché dans le ruban Excel, tu peux désormais enregistrer ta première macro. Nous allons donc faire un premier exemple en créant un programme (très simple) dont l’objectif sera de sélectionner la cellule B2 de ta feuille Excel.

Pour cela, sélectionne par exemple la cellule C10 et lance l’enregistrement de ta macro en cliquant sur le bouton Enregistrement de l’onglet Développeur. Sélectionne ensuite la cellule B2, puis arrête l’enregistrement de la macro en cliquant sur le bouton       .

Lors du lancement de l’enregistrement, une fenêtre te demande d’entrer le nom que tu souhaites donner à ton programme. Attention, certaines règles sont à respecter pour nommer ta macro. En effet, le nom choisi ne doit pas commencer par un chiffre. Il ne peut pas non plus contenir un espace ou l’un des symboles suivants : @, #, $, !.

Une fois l’enregistrement terminé, tu peux retrouver ton programme en cliquant sur le bouton « Macros » de l’onglet développeur, puis lancer cette macro en cliquant sur « Exécuter ». Si tu as correctement enregistré ta macro, la cellule B2 de ta feuille Excel est sélectionnée automatiquement. Je le reconnais, ce programme ne présente pas un grand intérêt, mais il t’a permis de découvrir la fonction d’enregistrement et d’exécuter ta première macro VBA !

Afin de simplifier le lancement d’une macro, tu peux lui attribuer un raccourci clavier lors de sa création, ou l’affecter à un bouton de commande. Pour cela, il te suffit de dessiner un bouton grâce à la commande proposée dans l’onglet développeur. Puis d’effectuer un clic droit sur le bouton dessiné et de sélectionner « Affecter Macro ».

Enfin, tu peux également faire en sorte que ta macro soit accessible à partir du Ruban Excel. Un simple clic droit sur le ruban te permettra de le personnaliser et d’y ajouter tes macros.

B) Référence Absolue et Référence Relative

Tu auras peut-être remarqué la présence de la commande « Référence relative » aux côtés de la commande d’enregistrement.

En effet, par défaut, l’enregistrement est effectué en « Référence absolue », ce qui signifie que chaque cellule (ou plage de cellules) est figée. Il est toutefois possible de travailler en « Référence relative » ; tes sélections seront alors dynamiques et exprimées en fonction de la cellule active lors du lancement du programme.

Autrement dit, si ta cellule de départ n’aura aucune importance lors de l’exécution d’une macro en référence absolue, cette dernière aura une importance primordiale dans le cadre de l’exécution d’une macro en référence relative, puisque toutes les opérations seront exprimées à partir de cette cellule de départ !

A titre d’exemple, procède de nouveau à l’enregistrement de la macro de la page précédente en utilisant la référence absolue puis en faisant appel à la référence relative. Tu pourras alors afficher le code généré pour chaque enregistrement et comparer les codes générés en cliquant sur « Macros », puis en sélectionnant la macro et en cliquant sur « Modifier ».

A titre pédagogique, il est intéressant de procéder à l’enregistrement d’une macro pour analyser dans un deuxième temps le code généré par l’éditeur. Toutefois le code généré lors de l’enregistrement est souvent loin d’être optimisé, et il serait dommage de te limiter à cette fonction tant les possibilités offertes par la programmation directe sont importantes…

II – Créer une macro VBA par programmation

A) Création, sauvegarde et sécurité

Pour créer une macro sans faire appel à la fonction d’enregistrement, il te suffit de retourner dans l’onglet développeur et de cliquer sur « Macros », de donner un nom à ton programme et de cliquer sur « Créer ». C’est également via cette fenêtre que tu pourras supprimer les macros existantes.

NB : Une fois tes macros créées, pense à sauvegarder ton fichier en sélectionnant « Classeur Excel (prenant en charge les macros) » lors de l’enregistrement. Ton fichier sera alors enregistré avec l’extension « .xlsm ».

Par défaut, au lancement d’un fichier .xlsm contenant des programmes VBA, ton interface utilisateur te demandera si tu souhaites activer ou désactiver les macros. Il s’agit là d’un enjeu important pour la sécurité de ton ordinateur, tout particulièrement si ton document a été téléchargé sur le WEB.

En effet, les macros permettant d’automatiser toute une série de commandes, le lancement d’un programme malveillant pourrait nuire au bon fonctionnement de ton ordinateur. Reste donc attentif aux sources de tes fichiers et relis le code avant d’exécuter un programme inconnu.

B) Ouverture de Visual Basic Editor

Suite à la création d’une nouvelle macro par programmation, tu seras redirigé vers ton environnement de programmation : Visual Basic Editor. Cet éditeur est également accessible directement dans l’onglet développeur.

Barre d’outils de l’éditeur VBE

Pour quitter l’éditeur et retourner sur Excel, il te suffit de cliquer sur la croix verte de la barre d’outils ci-dessus. Cette interface VBE te permet d’accéder à la fenêtre de code ainsi qu’à de nombreuses fonctionnalités qui te seront présentées dans la suite de cette initiation.

III – Premières lignes de code

A) Paramétrage de l’éditeur

La fenêtre principale de l’éditeur te permet d’accéder au code de tes programmes. Tu peux afficher cette fenêtre en te rendant dans le menu de l’éditeur « Affichage > Code », ou grâce au raccourci clavier F7.

Par défaut, chaque bloc de code reconnu par l’éditeur dans la fenêtre de programmation sera affiché dans une couleur spécifique.

Bleu : Mots-clefs, Fonctions et Instructions VBA

Noir : Objets, Méthodes et Propriétés

Vert : Commentaires

Rouge : Erreurs

Tu peux bien entendu modifier les styles attribués à ces différentes parties du code en suivant le chemin : Outils > Options > Format de l’Editeur.

L’onglet Editeur présent dans cette même fenêtre (Outils > Options) te permet quant à lui de paramétrer la saisie du code. Certains outils tels que la vérification automatique de la syntaxe ou le complément automatique d’instructions pourront faciliter la rédaction de ton programme. Ces outils peuvent s’avérer particulièrement utiles pour tes débuts !

NB : Pour une meilleure lisibilité du code, une instruction VBA peut s’écrire sur plusieurs lignes en utilisant le symbole « _ » précédé d’un espace lors de chaque retour à la ligne. Les retraits ou tabulations permettent également de mettre en valeur certains passages du code et sont donc particulièrement utiles lorsqu’un programme comporte plusieurs morceaux de codes imbriqués les uns dans les autres.

B) Les Procédures

1) Qu’est-ce qu’une Procédure ?

Afin de bâtir ton programme, tu dois faire appel à des briques logicielles : les Procédures. Ces dernières permettent de décomposer une tâche complexe en une série de tâches plus petites et plus simples à exécuter. Une décomposition de ton programme en sous-espace te permet également de réutiliser facilement ces morceaux de code dans d’autres programmes.

3 types de procédures sont fréquemment utilisés en programmation VBA. Il s’agit des procédures Sub, des procédures Function et des procédures Property. Ces procédures pourront avoir un caractère Général ou Évènementiel (si l’exécution de la procédure est conditionnée à la réalisation d’un événement associé, par exemple un clic de l’utilisateur sur un bouton de commande).

2) Définir la portée d’une procédure

Si les procédures ont un statut Public par défaut et peuvent être appelées par tous les modules des projets Excel. Tu peux également choisir de limiter l’exécution d’une procédure au module qui la contient grâce à la portée Private. Le mot clef Static te permettra quant à lui de préserver les variables locales d’une procédure d’un appel à l’autre.

3) Définir les arguments d’une procédure

Les arguments permettent de transmettre des paramètres à la procédure sous forme de données. Pour déclarer un élément au sein d’une procédure, il te suffit de lui donner un nom.

Syntaxe d’une procédure Sub :

[Private / Public / Friend] [Static] Sub Nom_Procédure ([liste_arguments])

<Instructions>

End Sub

Syntaxe d’une procédure Function :

[Private / Public / Friend] [Static] Function Nom_Procédure ([liste_arguments]) [As <Type>]

<Instructions>

End Function

Notation : Les notations entre [crochets] correspondent à des arguments facultatifs utilisés pour modifier le comportement d’une procédure. La notation <Texte> indique quant à elle l’information que tu dois entrer (les signes < > ne devront cependant pas apparaître dans la version finale).

Il est à noter que ces fonctions VBA peuvent être utilisées depuis Excel en suivant le chemin : Onglet Formules > Insertion fonction > Liste « Ou sélectionner une catégorie » > Personnalisée, puis en sélectionnant la fonction concernée dans la fenêtre affichée. Lorsque vous cliquerez sur « Ok », une boîte de dialogue vous demandera alors d’entrer les arguments de la fonction.

B) Objets et modules VBA

A chaque ouverture d’un classeur Excel est associé un Projet regroupant l’ensemble des modules de codes par catégories ; ces modules contiennent à leur tour les procédures et fonctions enregistrées ou programmées par l’utilisateur. Tu peux afficher cette hiérarchie dans l’éditeur VBE en affichant la fenêtre Projet via le chemin : Affichage > Explorateur d’objets.

C) Commentaires et instructions

Suite à la création d’une macro, tu noteras l’apparition dans la fenêtre code de 2 premières lignes de codes correspondant à la déclaration d’une procédure Sub. Ces lignes permettent de délimiter le code qui sera exécuté lors du lancement de ta procédure, tes instructions seront donc à insérer entre ces deux lignes.

Pour bien comprendre le fonctionnement d’une instruction, tu peux à tout moment ajouter des commentaires à ton programme. Ces derniers n’auront aucun impact sur son exécution mais te permettront de donner des informations aux personnes qui pourraient être amenées à retoucher le programme par la suite. Lors de la rédaction de programmes complexes, ces commentaires te permettront également de te retrouver plus facilement dans ton code.

Pour insérer un commentaire dans ton programme, il te suffit de commencer ta ligne par une apostrophe ou par « Rem » ; lorsque reconnus par Excel, ces derniers s’afficheront en vert.

D) Les Variables

1) Définition et types de variables

Afin d’effectuer des opérations de calcul, de test ou de comparaison, le langage VBA utilise des variables permettant de stocker des valeurs intermédiaires. Le Nom de la variable permet de se référer à la valeur qu’elle contient, son Type permet quant à lui de déterminer la nature des données qu’elle peut stocker.

Les types de variables :

  • Numériques Entier (Byte, Integer et Long)
  • Numériques Réel (Single, Double, Currency et Decimal)
  • Chaînes de caractères (String)
  • Booléen (True, False)
  • Date
  • Variant (contient tous types de variables)

Si pour des programmes simples, l’utilisation du type Variant te permet de stocker n’importe quelle variable, garde toutefois à l’esprit que dans le cadre de programmes plus complexes il te faudra améliorer la calibration de tes variables. En effet, déclarer une variable simple dans un type Variant revient à mobiliser un paquebot pour transporter une petite caisse… Pense donc à optimiser ton moyen de transport (Type) par rapport à la charge à transporter (Variable).

2) Déclarer une variable

Pour déclarer une variable, tu dois utiliser l’instruction :

Dim <Nom_Variable> as <Type>

Par défaut, tu peux affecter une valeur à un nom de variable non déclarée, cette dernière sera classée en type Variant. Il s’agira alors d’une déclaration implicite.

Comme nous l’avons vu, tu peux également opter pour une déclaration explicite (et donc plus précise) en affectant un type à la variable. Ce type de déclaration aura pour effet d’accélérer l’exécution de ton programme ; il est par conséquent recommandé.

Pour imposer la déclaration explicite des variables, ajoute l’instruction Option Explicit en début de programme ou active l’option Déclaration des variables obligatoires en suivant le chemin Outils > Options > Onglet Editeur.

Enfin, afin de travailler avec des groupes de valeur, il est également possible de faire appel à des tableaux de valeurs. Ce type de valeur est déclaré via le modèle suivant :

Dim Nom_Tableau (indices) [As <Type>]

Si tu ne spécifies pas d’indice, il s’agira d’un tableau à dimension libre. Si tu précises un chiffre il s’agira d’un tableau avec un nombre d’éléments déterminé. Par défaut, la valeur du premier indice du tableau est égale à 0.

D) Les Constantes

Comme leur nom l’indique, les constantes permettent d’attribuer un nom explicite à une valeur. La déclaration des constantes s’effectue grâce au mot-clef Const.

Const Nom_Constante [As <Type>] = <valeur>

Certaines constantes sont déjà intégrées. Il s’agit des constantes utilisées par les objets Excel précédées des lettres « xl », des constantes utilisées par Visuel Basic précédées des lettres « vb » et des constantes Microsoft Office précédées des lettres « mso ».

E) Les instructions de base

Maintenant que tu en sais un peu plus sur l’environnement VBA et ses objets, il est temps d’apprendre à programmer des actions simples. Pour ce faire, nous devrons à chaque fois indiquer l’objet concerné puis l’action à effectuer.

1) Sélectionner une cellule ou un ensemble de cellules

Pour sélectionner une cellule, tu dois dans un premier temps indiquer la cellule concernée, puis appliquer l’action « Select ». Pour appeler une cellule, une ligne ou une colonne, nous utiliserons respectivement les mots clefs suivants : Range, Rows, Columns.

Quelques exemples :

  • ‘Sélection de la cellule B2

Range(« B2 »).Select

  • ‘Sélection des cellules B2 et C5

Range(« B2, C5 »).Select

  • ‘Sélection des cellules B2 à B10

Range(« B2 :B10 »).Select

  • ‘Sélection de la ligne 2

Rows(« 2 »).Select

  • ‘Sélection de la colonne G

Columns(« G »).Select

  2) Couper/Copier/Coller une cellule ou un ensemble de cellules

Sur le même mode, il est possible d’appliquer une action autre que la sélection grâce aux mots-clefs Cut (couper), Copy (copier), et Paste (coller).

Worksheets(« Nom_Feuille_Départ »).Range(« Plage_Données »).cut

Worksheets(« Nom_Feuille_Départ »).Range(« Plage_Données »).copy

Worksheets(« Nom_Feuille_Arrivée »).Range(« Plage_Données »).paste

  3) Opérations de mise en page

Voici quelques exemples d’instructions que tu pourras utiliser et personnaliser afin de gérer la mise en page de tes classeurs Excel.

  • ‘Changer la couleur de la cellule A1

Range(« A1 »).Font.Color = RGB(50,200,100)

  • ‘Gérer l’épaisseur des bordures de la cellule active

Activecell.Borders.Weight = 4

  • ‘Gérer l’épaisseur des bordures de la cellule active

Activecell.Borders.Color = RGB (50,200,100)

  • ‘Gérer la couleur des onglets d’un classeur Excel

Sheets(« Nom_Feuille »).Tab.Color = RGB(0,0,255)

NB : Les couleurs sont exprimées dans la charte graphique RVB (Red, Green, Blue).

 

  4) Les Opérateurs

Instructions permettant d’effectuer des calculs, des comparaisons ou des tests, les opérateurs peuvent être regroupés en 4 catégories : les opérateurs arithmétiques (+,-,*,/) ; les opérateurs logiques (AND, OR) ; les opérateurs de comparaison (<, =, >) ; et l’opérateur de concaténation (&).

  5) Les structures de décision

Très utiles dans la programmation VBA, les structures de décision permettent de tester une condition et de conditionner la réalisation d’une action au résultat obtenu lors du test. Il existe deux types de structures de décision, les structures en IF et les structures SELECT CASE.

La structure de décision IF permet d’exécuter une séquence d’instructions si la condition testée est vérifiée.

    

  Syntaxe d’une structure IF

IF <Condition_Testée> THEN

<instruction1>

<instruction 2>

ELSE

<instruction 3>

<instruction 4>

ENDIF

NB : L’utilisation de tabulation pour gérer les alignements n’a aucun effet sur l’exécution du code, mais cette dernière te permettra de te repérer plus facilement.

La structure de décision SELECT CASE exécute quant à elle une séquence d’instructions en fonction de la valeur d’une expression.

Syntaxe d’une structure SELECT CASE

SELECT CASE <Expression_Testée>

CASE <Liste_Expression1>

<Instruction 1>

CASE <Liste_Expression2>

<Instruction 2>

CASE ELSE

<Instructions>

END CASE

  6) Les Boucles

Les boucles de type DO … LOOP et WHILE … WEND permettent de répéter une action jusqu’à ce que la condition spécifiée soit réalisée.

La boucle DO … LOOP exécute un bloc d’instructions un nombre de fois déterminé.

  Syntaxe d’une boucle DO … LOOP

DO While <Conditions>

<Instructions>

Loop

La boucle WHILE … WEND exécute une série d’instructions dans une boucle tant que la condition testée est vérifiée.

  Syntaxe d’une boucle DO … LOOP

WHILE <Conditions>

<Instructions>

WEND

La boucle FOR … NEXT permet quant à elle, grâce à son compteur, d’effectuer une action un nombre de fois donné.

  Syntaxe d’une boucle FOR … NEXT

  FOR <Compteur> = <Indice_Départ> TO <Indice_Arrivée> [STEP <Pas>]

  <Instructions>

  NEXT

Enfin, l’instruction FOR EACH … NEXT permet de répéter l’action pour chacun des éléments d’une collection.

  Syntaxe d’une boucle FOR EACH … NEXT

  FOR EACH <Elément> IN <Groupe>

  <Instructions>

  NEXT <Elément>

   7) Les interactions utilisateur

Lors de son exécution, il est possible de faire communiquer une macro VBA avec l’utilisateur afin de lui demander ou de lui communiquer une information.

L’instruction Msgbox permet d’envoyer une information à l’utilisateur en lui demandant une action simple (Valider, OUI/NON).

  Syntaxe Msgbox

   MSGBOX (<Message> , [<Boutons>] , [<Titre>])

L’instruction InputBox permet quant à elle de demander à l’utilisateur d’entrer une valeur. Cette valeur peut par la suite être réutilisée par le programme afin d’effectuer des tests ou des calculs.

  Syntaxe InputBox

   INPUTBOX (Prompt, title, default, xpos, ypos, helpfile, context)

  1. E) Les Modules de type USERFORM

Une forme plus avancée d’interaction est également possible via la construction de formulaires utilisateurs. Ces modules de type USERFORM permettent en effet de placer des contrôles ActiveX (zones de texte, listes déroulantes, ou encore boutons de commande) et d’y associer du code VBA qui sera exécuté en fonction des actions réalisées par l’utilisateur.

Pour créer un formulaire USERFORM, il te suffit de te rendre dans VBE, de cliquer sur « Affichage » et de sélectionner « Insertion – Userform ». Un formulaire vide apparaîtra alors à l’écran et tu pourras le personnaliser grâce à la boite d’outils associée.

Dans un premier temps, tu peux ainsi construire l’apparence de votre formulaire en ajoutant des contrôles ActiveX ou en modifiant les propriétés du formulaires et de ses contrôles dans la fenêtre Propriétés (Affichage > Propriétés).

Une fois ton formulaire dessiné, tu peux ajouter du code VBA à tes contrôles ActiveX à l’aide d’un double-clic. Sélectionne dans un premier temps l’objet ActiveX concerné (ici CommandButton1), puis l’action qui devra déclencher l’exécution du code (ici Click). Entre ensuite tes instructions dans la fenêtre de code entre les bornes Sud et End Sub.

La première édition de cette Initiation à la Programmation VBA s’achève ici. Si tu as lu ce support avec attention et tenté de mettre en pratique les exemples présentés, tu peux légitimement ajouter une ligne « Notions VBA » sur ton CV. FÉLICITATIONS !

Pour aller plus loin et développer des connaissances plus approfondies sur la programmation VBA, je te recommande, l’ouvrage VBA EXCEL 2016.


logo-prorealtime

CRÉER UN COMPTE GRATUIT

 


Pour recevoir les prochaines publications New Trading il te suffit de compléter le formulaire ci-dessous :