You are currently viewing VBA vs Python in Excel vs Office scripts: Quelle solution choisir pour augmenter les fonctionnalités d’Excel?

Depuis des temps immémoriaux 😉 lorsque vous arriviez au bout des possibilités offertes par les formules d’Excel, c’est vers VBA que vous vous tourniez pour créer des macros permettant aussi bien:

  • d’aller plus loin dans l’analyse de vos données dans Excel
  • que d’automatiser les interactions entre les différentes applications de Microsoft Office.

Depuis quelques années, Microsoft a ajouté plusieurs outils au tandem Excel/VBA:

  • outre Power Query pour l’extraction, la transformation et le chargement de données provenant de sources très diverses
  • il est désormais possible de développer des fonctionnalités additionnelles pour Excel grâce à Python et Office scripts en plus de VBA.

Mais pourquoi trois langages de programmation en parallèle? Lequel est le meilleur et les deux autres sont-ils appelés à disparaître? Les choses ne sont pas si simples…

visualisation de données dans Excel

1. VBA

Disponible en standard et sans installation supplémentaire sur toutes les versions d’Excel depuis plus de 30 ans, qu’elles tournent sur desktop ou online, VBA peut se targuer d’une belle base installée, d’une communauté importante, de ressources abondantes et de vastes capacités d’automatisation. C’est sa force, mais aussi sa faiblesse: à force de mettre son point d’honneur à assurer sa rétrocompatibilité, Microsoft s’est enfermé dans une solution qui ne pouvait que de moins en moins évoluer, restant néanmoins la plus utilisée dans Excel. Même si de loin en loin des rumeurs prétendent que Microsoft pourrait la supprimer, le cataclysme résultant serait tel que cette hypothèse, qualifiée récemment par un expert de «suicide pour Microsoft», est peu crédible, que ce soit à court ou moyen terme.

VBA permet de faire communiquer Excel avec les autres applications historiques de Microsoft Office, dont Word, PowerPoint et Outlook. Il n’est par contre plus compatible avec les nouveaux produits de Microsoft tels que Power Automate ou SharePoint, ou même des outils internes à Excel tels que Power Query ou Power Pivot. Certains vont jusqu’à signaler que VBA est trop puissant, sait faire trop de choses, ce qui le place parfois en porte à faux avec les mesures de sécurité récentes. Fondamentalement, VBA n’a pas été pensé pour des fichiers partagés et le travail en ligne. Il est important d’en tenir compte.

Paradoxalement, l’intelligence artificielle semble être une cause d’un regain d’intérêt pour VBA. Étant donné l’abondance de ressources disponibles sur internet, c’est le plus souvent des réponses en VBA qui sont fournies par les LLMs en réponses aux questions du type «Comment faire ceci ou cela dans Excel?». Le corollaire étant probablement aussi une seconde jeunesse pour des codes «spaghetti» et autres malformations, puisque c’était déjà à la base le reproche que les «vrais» développeurs faisaient à VBA…

2. Office scripts

Si vous ne connaissez pas Office scripts, dans cet article on vous dit tout ce qu’il faut pour démarrer:

https://3hibouks.be/actualite/office-scripts-un-soupcon-de-javascript-dans-vos-fichiers-excel/

Office scripts a été conçu pour le travail en ligne et sur fichiers partagés, et couvre principalement les interactions avec les objets constitutifs d’Excel (feuilles, cellules, etc.).

De base, Office scripts n’est pas conçu pour gérer les interactions avec d’autres applications, contrairement à VBA ou à Google Apps script, par exemple. Mais, à condition d’être prêt(e) à supporter le coût de l’abonnement supplémentaire, vous pourrez accéder à ces fonctionnalités en couplant Power Automate à Office scripts, une intégration qui fonctionne très bien.

Si vous voulez que l’exécution de votre script soit déclenchée par un «événement» (par exemple l’arrivée d’un email), vous devrez aussi passer par Power Automate. Office scripts n’est pas conçu pour traiter en direct ce type de déclencheur.

Office scripts ne permet pas non plus l’import d’autres librairies JavaScript. Par exemple, oubliez l’idée de travailler avec TensorFlow ou Keras, pour n’en citer que deux dans le domaine de l’intelligence artificielle.

Enfin, les ressources disponibles sur internet et la communauté dont vous pourriez vouloir solliciter le support sont nettement plus réduites que leurs équivalents pour VBA. Jusqu’à présent, en tout cas.

3. Python dans Excel

Pour Python dans Excel, c’est dans cet article-ci que nous vous indiquons comment procéder:

lien vers l'article sur Python dans Excel
https://3hibouks.be/actualite/intelligence-artificielle-python-et-excel-lunion-parfaite/

Grâce à des librairies telles que pandas, numpy, matplotlib, seaborn ou scikit-learn par exemple, Python dans Excel offre des possibilités plus impressionnantes pour la mise en ordre des données, leur visualisation très précise et personnalisée et leur analyse statistique que pour la manipulation des objets intrinsèques à Excel. Il faut quand même noter que, pour tout ce qui est extraction, transformation et chargement de données, Microsoft propose encore une autre solution, Power Query, très performante également.

Soutenu par une vaste communauté très dynamique, Python est assez facile à prendre en main, même pour un débutant.

Par contre, contrairement au tandem Office scripts/Power Automate, Python dans Excel est limité à l’environnement du fichier dans lequel il se trouve. Il ne peut ni accéder à d’autres fichiers ni sauvegarder à l’extérieur du fichier des données ou des images.

Comme toutes les versions d’Excel online, Python dans Excel tourne sur les serveurs (partagés) de Microsoft. Pour des ensembles de données très volumineux, ceci peut se traduire par des lenteurs, voire des quota de temps de calcul restrictifs. Le moyen de s’affranchir de ces contraintes est d’externaliser Python. Mais ceci demande la mise sur pied et la maintenance d’un environnement externe de développement. On est alors loin de la facilité promise par Python dans Excel.

Donc, quel est le meilleur choix?

Si vous travaillez avec VBA depuis des années, vous trouverez probablement les macros écrites dans ce langage plus lisibles que du code Python ou Office script. Votre perception pourrait être différente si vous ne connaissez encore aucun des trois. En fait, le choix entre les trois dépendra probablement plus du contexte que de leurs avantages et inconvénients respectifs.

Dégageons néanmoins quelques généralités:

  • Si vous avez l’habitude de VBA et si vous travaillez principalement sur une version desktop d’Excel sans besoin de partager vos fichiers, VBA reste probablement le meilleur choix pour vous. Même si cette solution ne reçoit plus aucune attention de la part de Microsoft, l’avis général est qu’elle devrait rester utilisable pour encore un certain temps.
  • Si vous travaillez principalement online et sur des fichiers partagés, vous ne devriez pas négliger les nouvelles options: Office scripts et Power Automate si vous travaillez principalement dans l’écosystème de Microsoft, Python dans Excel si vous voulez avoir accès par exemple à toutes les librairies d’intelligence artificielle.

Combinaisons pour le meilleur de deux mondes

Ou alors, vous pouvez aussi combiner différentes solutions. Par exemple:

  • Python dans Excel pour les traitements complexes de données et les visualisations très précises + Office scripts/Power Automate pour les connexions avec des applications externes et les sauvegardes de données ou d’images
  • Utiliser un bouton créé avec VBA pour lancer l’exécution d’un script Python
  • Ou, au contraire, lancer l’exécution d’une macro VBA à partir d’un script Python.

Bref, Microsoft a bien enrichi la boîte à outils d’Excel depuis VBA. Il vous reste juste à identifier la meilleure combinaison pour vous, dans votre configuration et pour les types de problèmes que vous devez traiter.