Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Python peut-il se substituer a Vba ?

+2 votes

Je suis developpeur de formation, avec une expérience vba. J'arrive tout juste dans l'univers Python.
J'aimerais connaître certains avantages/inconvénients de Python par rapport au VBA.
En gros, est ce qu'on peut substituer Python au VBA ?

demandé 16-Fev par R1D2

tu peut par contre lancer un code python, depuis vba, et même attaquer la base de donnée access, par odbc, en python.
l'avantage de python sur vba du coup s'en fera sentir,pour des tâches de fond, ou des tâches de type email (si par exemple tu n'as pas outlook), des services de récupération et de traitement de fichier sur un ftp.
J'ai développé pour un client (avant de connaitre python), un module de récupération de fichiers ftp, mais quand je vois le nombre de lignes de code vba et que je compare à python je pleure.
Sachant que python est piles incluses et vu le nombre de bibliothèques tierces, alors il y as pas photo.
Tu peut même faire, (quasiment) intégralement un access par exemple, en django et python.

2 Réponses

+8 votes

Le VBA est un langage embarqué exclusivement dans les applicatifs de bureautique Microsoft, il n'est pas fait en tant que tel pour être utilisé en dehors de ces environnements, et par voie de conséquence te limite clairement dans les possibilités qui te sont offertes avec (en gros, tu ne peux pas en tirer grand chose en dehors de ce pour quoi ça a été conçu).

Python est un langage complet, indépendant du système d'exploitation, sans barrière logicielle particulière et parfaitement apte à t'offrir toutes les possibilités pour créer les applications dont seule l'imagination sera ta limite... et c'est également le cas de la plupart des langages "autonomes" on va dire (C/C++, Java, C#.NET, etc...).

Pour résumer, dans le cadre des applications Microsoft, le seul langage qui permet de manipuler l'intérieur sera toujours VBA et uniquement VBA car il a été conçu pour ça, mais à contrario VBA ne te permettra jamais de faire ce qu'un véritable langage de développement peut faire et Python n'a pas volonté de se substituer à VBA et ne l'aura jamais.

répondu 16-Fev par debnet (962 points)
edité 18-Fev par boblinux

Pour résumer, dans le cadre des applications Microsoft, le seul
langage qui permet de manipuler l'intérieur sera toujours VBA

Et C# :)

Excellente réponse, j'aurais pas dis mieux. En termes plus techniques, Python appartient aux General Purpose Languages (GPL), là où VBA est un Domain Specific Language (DSL) pour l'environnement Windows.

D'une manière purement théorique et pour donner une réponse à la question : oui, de fait Python peut remplacer VBA, puisqu'on peut écrire un compilateur Python->VBA, ce qui consiste à réduire un GPL à un DSL. Après, à voir si ça vaut le coups. Généralement, il vaut mieux une bonne expertise et une mauvaise techno qu'une incompétence crasse avec une bonne techno.

+1 vote

il y a des modules en python pour manipuler chaque type de fichier: csv, xls, xlsx, doc, docx, ppt ...
ainsi tu peux te renseigner sur les modules csv, xlutils, xlrd, xlwt, openpyxl, python-pptx ...

exemple avec xlutils, xlrd, xlwt, voir http://sametmax.com/lire-et-ecrire-dans-un-fichier-xls/

xlwings permet d'exécuter du python depuis vba: http://docs.xlwings.org/en/stable/vba.html

avec pywin32 (et win32com) tu peux passer par les APIs COM: http://nbviewer.jupyter.org/github/sanand0/ipython-notebooks/blob/master/Office.ipynb

répondu 3-Mai par glickind (196 points)
...