VBA (Visual Basic for Application) est le langage qui permet de programmer les applications MS Office. Il est basé sur un des premiers langages de programmation : le Basic (acronyme pour Beginner's All-purpose Symbolic Instruction Code, littéralement « Code d'instruction symbolique multi-usages du débutant »), ce qui fait que VBA est abordable par des débutants.

Remarque :

  • Tous les exemples de ce chapitre seront basés sur Excel, mais ils pourront facilement être transposables au niveau deWord, Access etc... Car VBA est commun à toute la suite Office.

Référence :
https://fr.wikipedia.org/wiki/Visual_Basic_for_Applications
https://fr.wikipedia.org/wiki/BASIC

 

Environnement de programmation

Afficher les extensions des fichiers

Lorsque l’on se trouve dans l’explorateur Windows : Il est plus clair, lorsque l’on programme, de savoir tout de suite à quel fichier l’on a affaire (ex : connaitre le format d’un fichier image), afficher les extensions permet cela.
Par défaut, les extensions ne sont pas affichées au niveau de l’explorateur Windows.

Pour afficher les extensions :

  • Ouvrir l’explorateur Windows,
  • Cliquer sur l’onglet Affichage,
  • Cocher la case à cocher Extensions de noms de fichiers.

Avec ou sans VBA

Les fichiers Excel, Word et PowerPoint peuvent être avec ou sans code VBA. Pour programmer en VBA : il faut que les fichiers aient l’extension .xlsm pour Excel, docm pour Word et .pptm pour PowerPoint.
Les fichiers avec les extensions .xlsx (Excel), .docx (Word) et .pptx (PowerPoint) ne peuvent avoir de code VBA, ceci par mesure de sécurité.
Comme cela : à première vue l’on sait tout de suite si le fichier est sécurisé (sans code VBA).
Pour obtenir un fichier acceptant le code VBA : il faut d’abord créer un fichier .xlsx, l’ouvrir, puis l’enregistrer sous le format .xlsm.

Remarques :

  • L’on ne peut pas changer un fichier .xlsx en xlsm juste en changeant le nom de son extension, il faut créer un fichier .xlsx, puis l’enregistrer sous .xlsm.
  • Les anciens formats .xls (Excel), .doc (Word) et .ppt (PowerPoint) (format Excel 97/2003) acceptaient le code VBA, il n’y avait pas alors de formats différents : avec et sans code VBA.
  • Les fichiers .accdb (Access) acceptent le code VBA (il n’existe pas un format de fichier Access sans code VBA).
  • Macros : souvent au niveau de Word, Excel et PowerPoint les fonctions du code VBA sont aussi appelées macros, mais au niveau d’Access macros signifie autre chose : les macros Access ne sont plus du code VBA mais un principe d’enchainement de fonctions pouvant plus facilement être utilisé par un non programmeur, à l’aide de listes déroulantes de fonctions.

Accéder

Pour accéder à l’environnement de développement :

  • Par les touches de raccourci :
    • Ouvrir un document
    • Appuyer en même temps sur les touches ALT+F11
  • Par le ruban :
    • Afficher l’onglet Développeur
      (Ceci n’est à faire qu’une fois pour l’application concernée)
      • Ouvrir la fenêtre : Fichier/Options/Personnaliser le ruban,
      • Activer l’onglet développeur, en cochant la case à cocher correspondante,
      • Cliquer sur le bouton OK.
    • Sélectionner l’onglet Développeur,
    • Cliquer sur le bouton Visual Basic.

Paramétrer

Forcer la déclaration des variables : il est essentiel pour une bonne programmation de déclarer les variables, par défaut l'environnement VBA de chaque application Office ne force pas la déclaration (afin de faciliter la vie des débutants).

  • Ouvrir le menu Outils,
  • Cliquer sur la ligne Options…,
  • Sélectionner l’onglet Editeur,
  • Cocher la case Déclaration des variables obligatoires,
  • Cliquer sur le bouton OK.

Remarque :
Lorsque l’on récupère un fichier qui a été développé, sans forcer la déclaration des variables, mettre l’instruction Option Explicit dans la partie déclarative de chaque module (tout en haut), puis compiler le projet afin de détecter toutes les variables non déclarées, si possible leur donner le bon type sinon leur donner le type variant (c’est ce que VBA fait lorsqu’une variable n’est pas déclarée : il lui attribue le type Variant).

Référence :
https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/option-explicit-statement

MZ-Tools

Voir le chapitre : \Outils\MZ-Tools\

Paramétrer

Le paramétrage de MZ-Tools est extrêmement vaste et riche, et j’utilise très peu de l’ensemble des fonctionnalités de MZ-Tools :

  • Ouvrir le menu MZ-Tools,
  • Cliquer sur l’élément Options…,

Le nom d'utilisateur

  • Ouvrir l’onglet Options personnel,
  • Cliquer sur l’élément Général,
  • Cliquer sur l’option Utiliser ce nom utilisateur,
  • Entrer les initiales du nom du programmeur (ex : HC),
Remarque :
Selon moi, il est préférable de commenter avec les initiales plutôt que le nom complet, cela parasite moins la lecture des commentaires, inutile de rappeler chaque fois le nom de l’auteur.

Les raccourcis claviers

  • Cliquer sur l’élément Raccourcis claviers,
  • Ajouter autant de raccourcis claviers sur les fonctions MZ-Tools que désirés,
  • Exporter les raccourcis dans un fichier xml (afin de pouvoir les réimporter dans une autre session ou ordinateur),
  • Cliquer sur le bouton Valider.

La date

  • Rouvrir les options de MZ-Tools,
  • Ouvrir l’onglet Options d’équipe,
  • Cliquer sur l’élément Général,
  • Cliquer sur l’option Utiliser ce format de date : ,
  • Entrer le format dd/MMM/yyyy,
  • (Ex : 12/Févr./2020 : afin qu’un lecteur anglophone ne confonde pas le mois et les jours)

Les entêtes de modules

  • Cliquer sur l’élément En-têtes des éléments de code,
  • Supprimer tous les entêtes prédéfinis,
  • Ajouter les entêtes : Entête Modules Access et Entête Modules Excel,

  • Dans le champ description saisir le nom de l’entête de module,
  • Dans le cade S’applique à : Cocher les cases à cocher : Classe et Module,
  • Saisir le texte du modèle de l’entête,
  • S’aider du bouton Insérer, afin d’insérer des variables prédéfinies,
  • Ne pas mettre un auteur spécifique à l’entête (l’entête utilisera l’auteur de l’option personnel),
  • Cliquer sur le bouton Valider,
  • Activer l’entête en fonction du logiciel Office utilisé.

Remarques :
  • La différence entre Access et Excel c’est qu’Access lors de la création d’un module ajoute automatiquement Option Compare Database, tandis que ne le fait pas Excel, ici donc on rajoute Option Compare Text afin que toutes les fonctions de comparaison de texte, par défaut, ne fassent pas de différence entre les minuscules et les majuscules (Si l’on souhaite que les comparaisons des chaines de caractères soient strictes en faisant la différence entre les minuscules et le majuscules : il faut mettre : Option Compare Binary).
  • Comme MZ Tools est commun à Office : ne pas oublier d’activer le bon entête en fonction du logiciel Office utilisé.

L'entête de procédures

  • Ajouter l’entête Entête Procédures,
  • Dans le champ description saisir le nom de l’entête de procédure,
  • Dans le cadre S’applique à :
    Cocher les cases à cocher : Propriété (GEt/Let/Set), Function, Sub Constructeur et Destructeur,
  • Saisir le texte du modèle de l’entête,
  • S’aider du bouton Insérer, afin d’insérer des variables prédéfinies,
  • Ne pas mettre un auteur spécifique à l’entête (l’entête utilisera l’auteur de l’option personnel),
  • Cliquer sur le bouton Valider,

Valider le paramétrage

  • Cocher la case à cocher : Pour les éléments de code qui ont un corps, insérer l’en-tête sous la déclaration,
  • Exporter les entêtes dans un fichier Xml (pour restauration sur une autre session ou un autre ordinateur),
  • Cliquer sur le bouton Valider.

Les gestionnaires d’exceptions

  • Rouvrir les Options d’équipe :
  • Cliquer sur l’élément Gestionnaires d’exceptions,
  • Supprimer tous les Gestionnaires d’exceptions prédéfinis,
  • Ajouter le gestionnaire d’exception : Error.

  • Ajouter le gestionnaire d’exception : Error :
  • Dans le champ description saisir le nom du gestionnaire d’exception,
  • Saisir le texte du modèle,
  • S’aider du bouton Insérer, afin d’insérer des variables prédéfinies,
  • Ajouter un raccourci clavier,
  • Ne pas mettre un auteur spécifique à l’entête (l’entête utilisera l’auteur de l’option personnel),
  • Cliquer sur le bouton Valider.

Valider le paramétrage

  • Exporter le gestionnaire d’exception dans un fichier Xml (pour restauration sur une autre session ou un autre ordinateur),
  • Cliquer sur le bouton Valider.

Agencer

J’agence l’éditeur de VBA en affichant les trois fenêtres suivantes : Explorateur de Projets, Propriétés et Fenêtre Exécution.

  • Ouvrir le menu Affichage,
  • Cliquer sur l’élément Fenêtre Exécution,
  • Ouvrir le menu Affichage,
  • Cliquer sur l’élément Explorateurs de projet,
  • Ouvrir le menu Affichage,
  • Cliquer sur l’élément Fenêtre Propriétés,
  • Positionner ces trois fenêtres selon ses propres convenances.