Qu’est-ce que VBA? Le Langage des Macros Excel

Si vous avez déjà utilisé des macros dans Excel, vous avez utilisé Visual Basic pour Applications (VBA).  VBA est un code de programmation lisible par l’homme (et modifiable) qui est généré lorsque vous enregistrez une macro.  Lorsque vous exécutez une macro, c’est ce code qu’Excel lit pour reproduire vos actions.

Voici une série de questions fréquemment posées sur VBA, avec des réponses pour les nouveaux venus dans le domaine des macros Excel et pour les programmeurs expérimentés.

À quoi sert VBA dans Excel ?

VBA est utilisé pour écrire des macros, qui automatisent des tâches simples et complexes dans Excel.

Les utilisateurs de Microsoft Excel se retrouvent souvent à répéter la même série de tâches, encore et encore.  Il s’agit parfois de tâches mineures, comme le copier-coller de sous-ensembles de données dans différentes feuilles, et parfois de tâches plus complexes, comme le téléversement de données vers un site Web.  Avec VBA, des macros peuvent être programmées pour automatiser ce type de tâches, transformant une série d’opérations manuelles en un simple clic de bouton.

Comment commencer à utiliser VBA dans Excel ?

La façon la plus simple de commencer à utiliser les macros est de les enregistrer à l’aide de l’enregistreur de macros intégré à Excel.  L’enregistreur de macros génère du code VBA que vous pouvez lire et modifier, ce qui vous permet d’apprendre à coder vos propres macros à partir de zéro.

Pour plus d’informations, consultez l’article « Comment enregistrer une macro ».

Comment puis-je accéder au code VBA ?

L’éditeur VBA peut être ouvert à tout moment en appuyant sur le raccourci clavier ALT+F11.  De là, vous pouvez accéder au code de tous les classeurs ouverts.

Vous pouvez double-cliquer sur n’importe quel classeur, feuille ou objet de module dans la fenêtre de projet pour afficher le code VBA qu’il contient.  Les macros enregistrées apparaissent toujours dans les modules,  c’est à cet endroit que vous souhaiterez généralement écrire vos propres macros.

Pour plus d’informations sur la modification des macros, consultez l’article « Modification des macros Excel VBA ».

Que peut faire VBA ?

Tout d’abord: s’il y a quelque chose que vous pouvez faire manuellement dans Excel, c’est possible d’écrire du code VBA qui fait la même chose.  En apprenant les commandes (soit en utilisant l’enregistreur de macros ou des ressources en ligne), vous pourrez enchaîner plusieurs actions dans une seule macro.

Deuxièmement: vous pouvez utiliser VBA pour écrire des fonctions définies par l’utilisateur qui peuvent être utilisées dans les formules des feuilles de calcul – comme la fonction « =SOMME() », par exemple.  Bien qu’Excel dispose déjà d’une grande variété de fonctions, si vous souhaitez une fonction plus spécifique à votre secteur d’activité ou à votre lieu de travail, vous pouvez l’ajouter avec VBA.

Troisièmement: vous pouvez utiliser VBA pour ajouter de la logique (instructions If) et des boucles (actions répétées) à vos macros.  Cela signifie qu’une macro peut être plus qu’un enregistrement d’actions – elle peut être un véritable programme avec des répétitions et des prises de décision intelligentes.

Quatrièmement: VBA vous permet de créer des interfaces utilisateur, offrant aux utilisateurs un moyen plus facile d’interagir avec vos macros.  Ces interfaces peuvent être de simples boutons sur une feuille de calcul, ou des formulaires complexes avec des contrôles riches comme les « TreeViews » et les « FlexGrids ».

(L’article « Ajouter un bouton et affecter une macro dans Excel » est un bon point de départ).

Cinquièmement mais pas finalement : VBA vous permet d’exploiter presque toutes les ressources de votre ordinateur ou d’Internet en utilisant des bibliothèques DLL externes.  Vous pouvez automatiser bien d’autres choses qu’Excel de cette manière, comme l’accès aux services Web et aux bases de données, l’analyse des fichiers XML, l’interopérabilité avec d’autres applications Microsoft Office, et bien, bien, d’autres encore.

VB et VBA sont-ils identiques ?

Le langage VBA est identique à Visual Basic 6.0.  Si vous avez de l’expérience dans l’écriture de code VB6, vous pouvez écrire en VBA.

L’éditeur VB dans Excel est une version simplifiée de l’éditeur VB6, avec des capacités de débogage similaires et des composants tels que les fenêtres « Projet » et « Propriétés ».  L’éditeur de formulaire est également très similaire, bien qu’il présente certaines limitations (comme l’impossibilité de créer des tableaux de contrôle).

Visual Basic .NET est moins similaire à VBA.  Bien que ces langages partagent un grand nombre de mots-clés et de syntaxes, le code entre ces langages est moins interopérable.  Vous n’auriez pas à réécrire grand-chose (voire rien) pour transcrire une procédure de VB6 à VBA, mais vous ne pourriez pas faire de même avec VB.NET.

Quelle est la différence entre une macro et VBA ?

VBA est simplement le langage avec lequel les macros sont écrites.  Si votre macro est une histoire, VBA est la grammaire et le dictionnaire avec lesquels elle est écrite.

Quelle est la différence entre une macro et un script ?

Les scripts utilisent un sous-ensemble limité du langage Visual Basic et sont utilisés à des fins différentes.

Les macros sont stockées dans des fichiers de classeurs Excel et ne peuvent être exécutées qu’à partir d’Excel.  Elles sont généralement utilisées pour automatiser diverses fonctions Excel et ajouter des fonctionnalités supplémentaires aux classeurs.

Les scripts sont stockés dans des fichiers texte avec l’extension .VBS et peuvent être exécutés depuis Windows ou par d’autres programmes.  Les administrateurs système utilisent les scripts pour automatiser certaines tâches administratives sur un ordinateur ou un réseau.

Que fait un développeur VBA ?

Souvent, les personnes qui créent des macros ne sont pas des développeurs : ce sont des analystes, des traders, des comptables ou des scientifiques, qui ont reçu une formation en programmation et utilisent VBA de manière plus ponctuelle.

Les personnes qui se concentrent sur le développement VBA ont tendance à créer des outils plus raffinés – ils créent des compléments, des interfaces utilisateur avec des formulaires, des tableaux de bord interactifs, des générateurs de rapports, etc.

Pourquoi VBA est-il important ?

VBA est inclus en standard dans toutes les applications Microsoft Office, y compris Excel.  Excel est l’un des programmes les plus populaires au monde et est utilisé dans une grande variété de domaines et de lieux de travail, chacun ayant ses propres flux de travail et cas d’utilisation.

En n’utilisant pas l’automatisation, d’innombrables heures de travail sont gaspillées chaque semaine pour effectuer des tâches ennuyeuses et répétitives à une vitesse humaine.  L’automatisation avec VBA permet d’effectuer les mêmes tâches à la vitesse de l’ordinateur, ce qui permet aux utilisateurs de se concentrer sur les aspects importants de leur travail, d’être plus productifs – et peut-être de quitter le bureau un peu plus tôt!

VBA est-il un bon langage de programmation ?

VBA comporte les éléments de programmation typiques tels que les variables, les tableaux, les fonctions, les décisions et les boucles.  Sa syntaxe est facile à lire et il peut exploiter une grande partie de la puissance de Windows et d’autres services.

En revanche, la gestion des erreurs n’est pas très élégante dans VBA.  Alors que d’autres langages utilisent des blocs de code « try-catch-finally », VBA utilise des instructions « On Error » pour modifier le comportement des macros en cas d’erreur.

En outre, VBA ne peut pas être utilisé pour créer des programmes autonomes, des sites Web ou des services, et il ne peut pas s’interfacer avec des API de programmation plus récents comme la plate-forme .NET.

VBA est-il orienté objet ?

VBA offre une prise en charge limitée de certains concepts orientés objet :

  • Encapsulation : VBA prend en charge le masquage des données à l’aide de classes
  • Polymorphisme : le mot clé « Implements » permet aux programmeurs d’utiliser d’autres classes comme interfaces.

Cependant, au sens strict du terme, VBA n’est pas orienté objet.  Il manque notamment le concept d’héritage, ce qui limite sévèrement la possibilité d’étendre la fonctionnalité des types existants.