VBA à Python – 10 exemples simples Python vs VBA
La façon dont Microsoft évolue avec l’ introduction des scripts Officeil semble que le géant de Redmond n’envisage plus d’investir dans l’expansion de VBA, mais le laissera comme langage de script hors ligne désigné. Le défi est que même si les scripts Office deviendront plus matures, nous devons encore attendre un certain temps pour qu’ils soient entièrement pris en charge pour la version de bureau d’Excel. Pendant ce temps, VBA ne rajeunit pas et n’évolue pas étape par étape avec les principaux langages de science des données comme Python. Bien que je ne pense pas que VBA disparaisse dans les 10 prochaines années, Microsoft essaiera certainement d’attirer davantage d’utilisateurs sur les scripts Office. Mais pourquoi se limiter ? Je pense personnellement que les analystes d’aujourd’hui devraient se tourner vers des langages et des outils plus polyvalents pour traiter les données. Tandis que les scripts Office s’intégreront mieux à Excel et à la suite d’outils Microsoft tels que Power Automate,
Python est devenu au cours des dernières années le langage de prédilection d’une immense communauté de professionnels des données. Si vous cherchez à migrer vos scripts VBA vers Python, vous n’avez pas à attendre ! Vous pouvez commencer à développer vos scripts pour Excel en Python immédiatement, avec seulement quelques étapes supplémentaires. Laissez-moi vous expliquer pourquoi voudriez-vous envisager de le faire…
POURQUOI PASSER DE VBA À PYTHON ?
Ne vous méprenez pas, j’ai créé ma juste part d’outils et d’automatisations VBA. Si vous créez des applications basées sur Access, ce n’est peut-être pas l’alternative pour vous. Cependant, si vous utilisez VBA principalement pour créer des automatisations, le nettoyage des données, des rapports, je pense que vous apprécierez peut-être l’échange.
Python est le langage de programmation le plus populaire selon l’indice TIOBE . Il est apprécié des data scientists et des ingénieurs de données. La plupart des algorithmes d’apprentissage automatique sur Kaggle sont créés en Python. De même, Python est le langage principal utilisé pour extraire, transformer et charger les données utilisées dans les services cloud gérés comme Amazon Glue ou Azure Databricks. Investissez dans l’apprentissage d’un langage qui peut être plus polyvalent que juste pour Excel.
Python prend en charge de nombreux formats de données aujourd’hui, vous traitez peut-être des fichiers Excel. Cependant, qu’il s’agisse de CSV, d’Excel, de texte, d’avro, de json ou de tout autre type de fichier de données, cela ne devrait pas vraiment faire de différence pour vous en tant que développeur. Pourquoi se limiter au traitement des feuilles de calcul Excel alors qu’au lieu de cela, vous pouvez apprendre un langage qui vous aidera à traiter n’importe quel format de données à la place.
Python est un langage de programmation plus mature. Bien que VBA n’ait pas vu de mises à jour depuis 20 ans, Python en est à sa 3e version majeure, avec sa dernière version mineure 3.10 publiée à l’automne dernier. Chaque version apporte de nouvelles fonctionnalités et améliorations à Python.
MON PARCOURS DE PASSAGE DE VBA À PYTHON
Dans cet article, je vais essayer de donner aux développeurs VBA une comparaison rapide de quelques exemples de scripts pour des scénarios courants et comment ils peuvent être recréés en Python. Personnellement, j’ai commencé mon parcours de programmation à l’époque de C/C++/C#. J’ai commencé à faire plus de manipulation et de modélisation de données Excel pour découvrir que je ne pouvais pas le faire sans script. VBA était vraiment la seule alternative, car le faire en C # prenait beaucoup plus de temps et des langages comme Python n’étaient pas vraiment une alternative.
Cependant, au fil des années, à mesure que je m’orientais davantage vers l’ingénierie des données, j’ai apprécié la facilité avec laquelle vous pouvez traiter toutes sortes de fichiers de données à l’aide de Databricks ou de Python Pandas. Au cours des dernières années, Python a vu la bibliothèque Pandas évoluer et de nombreuses autres bibliothèques dédiées à Excel apparaissent telles que openpyxl . À ce jour, je pense que la question de savoir s’il faut utiliser VBA ou Python n’est plus un choix clair et nécessite de considérer chaque cas d’utilisation.
ANACONDA POUR LE DÉVELOPPEMENT PYTHON
Bien qu’il existe de nombreux IDE (environnements de développement intégrés) disponibles pour les développeurs Python, je suggère d’installer Anaconda. Anaconda est actuellement la plate-forme de distribution la plus populaire pour les développeurs Python et est livrée avec une distribution Python, l’IDE Spyder utilisé pour la science des données et Jupyter Notebooks – la principale plate-forme de bloc-notes pour le développement Python.
Téléchargez le package de distribution sur le site Web d’Anaconda pour votre système d’exploitation (Windows, Apple, Linux) et démarrez l’installation.
Une fois installé, vous pouvez décider si vous souhaitez continuer à coder dans Spyder IDE ou Jupyter Notebooks. Pour les débutants, je recommande Jupyter car il est plus verbeux et vous pouvez exécuter des morceaux de votre code tout en voyant leurs sorties.
Pour commencer, ouvrez Jupyter Notebooks. Au bout d’un moment, vous devriez être accueilli avec une fenêtre de navigateur dans laquelle vous serez accueilli par Jupyter : Créons maintenant notre nouveau fichier Script. Cliquez sur le bouton et sélectionnez Python 3 (ipykernel) . Voilà, vous devriez voir un onglet de navigateur ouvert avec un fichier python sans nom prêt à l’action. Vous devriez être prêt maintenant à jouer avec nos scripts. Si vous souhaitez vous familiariser avec Jupyter, je vous recommande de lire ce tutoriel .
New
EXEMPLE 1 : BONJOUR LE MONDE
Commençons par un exemple très simple tout en s’habituant à utiliser Jupyter Notebooks.
Bonjour le monde en VBA
Avec VBA, vous devez toujours déclarer une procédure Sub qui exécute votre code. Par conséquent, nous allons commencer par créer notre Main Sub et à l’intérieur, nous inclurons une simple instruction Debug.Print pour afficher nos Hellos dans la fenêtre de la console immédiate .
Bonjour le monde en Python
En Python, si vous exécutez du code à partir d’un IDE, vous pouvez simplement exécuter l’instruction d’impression suivante. Tapez simplement votre code dans la première cellule et appuyez sur SHIFT+ ENTERpour l’exécuter :
Si vous compilez vos fichiers, vous devrez spécifier la procédure principale en la définissant et en l’exécutant comme suit :
1
2
3
4
|
def main(): print ( "Hello World!" ) main() |
C’est une bonne pratique de toujours définir une procédure principale au fur et à mesure que vous vous habituez à créer des exécutables et des packages python plus complexes. Cependant, dans mes exemples ci-dessous, je veux garder le code simple et éviter de l’envelopper dans main .
EXEMPLE 2 : ÉCRIRE DANS UNE CELLULE
Dans notre prochain exemple, nous devrons créer un fichier Excel vierge, écrire une seule cellule et fermer le fichier.
Écrire dans une cellule en VBA
Dans VBA, nous devrons créer une nouvelle application Excel (ou utiliser celle existante), créer un nouveau classeur, ouvrir la première feuille de calcul et écrire du texte dans notre première cellule de feuille de calcul. Enfin, nous allons enregistrer notre fichier et fermer l’application Excel.
1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
|
Sub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace ... with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub |
Ce code est en fait très lourd car vous remarquerez qu’il faudra un moment pour voir la nouvelle application Excel se lancer.
Écrire dans une cellule en Python
En Python, nous nous rabattons généralement sur certaines bibliothèques qui nous permettent d’exécuter certaines opérations. Dans le cas d’Excel, si nous voulons avoir une expérience très similaire à l’utilisation de VBA, nous pouvons tirer parti de la bibliothèque openpyxl . Il est livré avec toutes les fonctionnalités fréquemment nécessaires que vous pouvez attendre de VBA. De plus, il est très léger car il fonctionne sur la structure XML des fichiers Excel (oui, les fichiers Excel sont en fait des packages de fichiers XML) au lieu d’avoir à lancer Excel pour exécuter les opérations pour nous. Ce qui se passe ci-dessous, c’est que nous créons un nouveau classeur, obtenons la première feuille de calcul active, enregistrons la chaîne et enregistrons notre nouveau fichier ou écrasons l’ancien.
1
2
3
4
5
|
import openpyxl as op wb = op.Workbook() ws = wb.active ws.cell( 1 , 1 ).value = "Hello there!" wb.save(r "C:\... \Test.xlsx" ) #Replace ... with your file location |
Appréciez à quel point le code est plus court ! Parce qu’il n’y a pas d’interopérabilité avec Excel, nous n’avons pas besoin de nous rappeler de fermer l’application elle-même – car elle n’a jamais été ouverte en premier lieu. En Python et en VBA, nous n’avons pas vraiment besoin de déclarer nos variables. Cependant, dans VBA, nous ne pourrons pas voir d’indices sur les méthodes et les attributs des variables si nous ne les déclarons pas. En Python, cependant, si vous définissez une variable, vous pouvez créer une nouvelle ligne dans Jupyter et cliquer TABaprès le point « . » pour voir les méthodes/attributs disponibles ou appuyez sur SHIFT+ TABpour obtenir la documentation de la méthode. Beaucoup plus pratique !
EXEMPLE 3 : MANIPULATION DE CHAÎNES
Dans de nombreux scénarios de script, nous utilisons souvent VBA pour effectuer des opérations sur des chaînes qui, autrement, seraient très fastidieuses en utilisant LEFT, RIGHT, FIND ou d’autres formules Excel. Comparons plusieurs exemples de manipulation de chaînes dans VBA et Python.
Manipulation de chaînes dans VBA
Habituellement, en utilisant les formules Excel, il est facile d’apporter des modifications à l’aide des fonctions standard GAUCHE, DROITE. Ce qui est plus difficile dans les formules Excel, c’est le fractionnement du texte. Ci-dessous un exemple simple en VBA :
1
2
3
4
5
6
7
8
9
dix
|
Dim full_name As String full_name = "tom_hardY@google.com" If InStr(full_name, "@" ) Then full_name = Split(full_name, "@" )(0) first_name = Split(full_name, "_" )(0) last_name = Split(full_name, "_" )(1) first_name = StrConv(Trim(first_name), vbProperCase) 'Tom last_name = StrConv(Trim(last_name), vbProperCase) 'Hardy |
Manipulation de chaînes en Python
Le code en python sera similaire, mais notez qu’au lieu d’exécuter des fonctions sur du texte, nos chaînes préparent en fait des méthodes pour diviser, mettre en majuscule et rogner le texte.
1
2
3
4
5
6
|
full_name = "tom_hardY@google.com" if full_name.find( "@" ) > 0 : full_name = full_name.split(sep = "@" )[ 0 ] first_name = full_name.split( "_" )[ 0 ] last_name = full_name.split( "_" )[ 1 ] first_name = first_name.strip().capitalize() #Tom last_name = last_name.strip().capitalize() #Hardy |
EXEMPLE 4 : ITÉRATION SUR LES LIGNES
Une tâche courante que vous effectuez dans VBA consiste à itérer sur un ensemble de lignes afin d’exécuter des tâches sur des lignes individuelles que vous auriez du mal à traiter à l’aide de formules Excel. Pour cet exemple, nous utiliserons le simple tableau Excel suivant. Ce que je veux, c’est parcourir les lignes et imprimer tous les noms et prénoms des personnes qui ont un revenu supérieur à 60 000.
Itérer sur des lignes dans VBA
Dans VBA, nous n’itérons souvent pas sur des lignes entières, mais plus souvent sur des lignes d’une colonne spécifique (comme une colonne id) afin de filtrer les modèles et ce n’est qu’alors que nous exécutons des tâches sur d’autres colonnes de cette ligne particulière.
Ci-dessous, je dois identifier toutes les cellules de revenu dans la colonne G, puis filtrer uniquement celles qui ont des valeurs. Ensuite dans la boucle, je vérifie si la valeur est supérieure à 60k et ignore la ligne d’en-tête. Pour imprimer le prénom et le nom, je compense la cellule de -5 et -4 colonnes respectivement pour capturer le prénom et le nom.
1
2
3
4
5
6
7
8
9
dix
11
|
Sub IterateRows() Dim cell As Range Dim ws As Worksheet Set ws = Sheets( "Sheet1" ) For Each cell In ws.Range( "G:G" ).SpecialCells(xlCellTypeConstants) If cell.Value > 60000 And cell.Row > 1 Then Debug.Print "First name: " & cell.Offset(, -5) & ", Last name: " & cell.Offset(, -4) End If Next cell End Sub |
Je dirais que c’est là que VBA est un peu maladroit car il y a beaucoup de marges d’erreurs ici. Vous pourriez dire que nous aurions pu appliquer un tableau au-dessus de l’ensemble de données ou appliquer un filtre. Cependant, tous ces éléments nécessitent des étapes supplémentaires.
Itérer sur des lignes en Python
En Python, nous nous rabattrons sur l’une des bibliothèques d’analyse de données les plus populaires – Pandas . Aujourd’hui, Pandas est apprécié des scientifiques des données et très polyvalent car il peut être appliqué à toutes sortes de types de fichiers et de schémas. La structure de données clé dans Pandas est un DataFrame – qui représente essentiellement une table avec des en-têtes.
Dans le code ci-dessous, nous commençons par importer des Pandas et charger le fichier et la feuille de calcul dans df qui est une variable avec notre DataFrame . Le DataFrame détecte par défaut la ligne d’en-tête (par défaut la première ligne). Nous pouvons utiliser iterrows pour parcourir chacune des lignes de notre DataFrame. Nous pouvons construire notre filtrage directement dans le DataFrame en utilisant simplement df[ df[« revenu »]>60000 , ce qui indique que nous voulons filtrer sur toutes les valeurs de revenu supérieures à 60 000.
1
2
3
4
5
6
7
8
9
|
import pandas as pd file_name = r "C:\...\Test.xlsx" #Replace ... with your path df = pd.read_excel(file_name, sheet_name = "Sheet1" ) for r in df[ df[ "income" ]> 60000 ].iterrows(): first_name = r[ 1 ][ "first_name" ] last_name = r[ 1 ][ "last_name" ] print (f "First Name:{first_name} Last Name:{last_name}" ) |
Ce qui est génial avec les DataFrames, c’est que vous pouvez les ajouter très facilement pour simplifier encore plus cette tâche en créant une série contenant uniquement les prénoms et noms filtrés comme ci-dessous. C’est une solution très élégante et plus simple que d’utiliser VBA.
1
2
3
4
5
6
7
8
9
|
import pandas as pd file_name = r "C:\...\Test.xlsx" #Replace ... with your path df = pd.read_excel(file_name, sheet_name = "Sheet1" ) df = df[df[ "income" ] > 60000 ] names = "First name:" + df[ "first_name" ] + ", Last name: " + df[ "last_name" ] for n in names: print (n) |
EXEMPLE 5 : INSERTION ET SUPPRESSION DE LIGNES
En règle générale, vous pouvez utiliser VBA pour insérer de nouvelles lignes de données dans des feuilles de calcul existantes ou supprimer des lignes existantes. Le problème avec VBA est que cela entraîne souvent des dépenses de calcul importantes par rapport à Python.
Insertion et suppression de lignes dans VBA
Comme indiqué ci-dessus, les insertions/suppressions peuvent prendre du temps dans VBA – en fonction du nombre de lignes de données que vous aurez sous les lignes insérées/supprimées. Cela est souvent dû au fait qu’Excel recompilera de nombreux calculs ou pour d’autres raisons.
1
2
3
4
5
6
7
8
9
|
Sub InsertDeleteRows() 'Delete row 10 Range( "10:10" ).EntireRow.Delete 'Insert a row above row 10 Range( "10:10" ).EntireRow.Insert xlUp End Sub |
Insertion et suppression de lignes en Python
Comme nous ne regardons peut-être pas une feuille de calcul structurée, nous nous rabattrons à nouveau sur la bibliothèque openpyxl . Contrairement à VBA, nous devons travailler sur un document fermé. Si nous voulons enregistrer nos modifications, nous devons terminer par save .
1
2
3
4
5
6
7
8
9
|
import openpyxl as op file_name = r "C:\...\Test.xlsx" #Replace ... with your path wb = op.load_workbook(file_name) ws = wb[ "Sheet1" ] ws.delete_rows( 10 ) ws.insert_rows( 10 ) wb.save(file_name) |
EXEMPLE 6 : AJOUTER ET SUPPRIMER DES FEUILLES DE CALCUL
Ajouter et supprimer des feuilles de calcul dans VBA
Dans VBA, nous devrons ajouter une feuille de calcul vierge à notre ActiveWorkbook (celui ouvert et visible), alors seulement pourrons-nous nommer notre feuille de calcul. Lors de la suppression de la feuille de calcul, nous pourrions rencontrer un problème dans lequel nous recevrons une fenêtre contextuelle nous demandant si nous voulons supprimer la feuille de calcul. Cela peut être désactivé à l’aide de l’ option DisplayAlerts mais nécessite une étape supplémentaire.
1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
|
Sub AddRemoveWorksheets() Dim wb As Workbook Dim ws As Worksheet Set wb = ActiveWorkbook 'Add worksheet Set ws = wb.Worksheets.Add ws.Name = "NewWorksheet" 'Find and remove worksheet Set ws = wb.Sheets( "NewWorksheet" ) ws.Delete End Sub |
Ajouter et supprimer des feuilles de calcul en Python
En Python, les deux opérations sont des oneliners.
1
2
3
4
5
6
7
8
|
import openpyxl as op file_name = r "C:\...\Test.xlsx" #Replace ... with your path wb = op.load_workbook(file_name) wb.create_sheet( "NewWorksheet" ) wb.remove_sheet( "NewWorksheet" ) wb.save(file_name) |
EXEMPLE 7 : FORMATAGE DES CELLULES
Formater des cellules en VBA
1
2
3
4
5
6
7
8
9
dix
11
|
Sub FormatCell() Dim cell As Range Set a1= Range( "A1" ) a1.Font.Bold = True a1.Font.Color = RGB(255, 0, 0) a1.Borders.LineStyle = xlDot a1.Interior.Color = RGB(0, 255, 0) End Sub |
Formater des cellules en Python
En Python, pour effectuer le formatage des cellules Excel, nous aurons besoin de quelques modules supplémentaires – Police, Couleur, Bordure et Côté. Une fois importé, le processus est assez similaire à la façon dont vous le feriez dans VBA.
1
2
3
4
5
6
7
8
9
dix
11
12
13
|
from openpyxl.styles import colors from openpyxl.styles import Font, Color, Border, Side from openpyxl import Workbook file_name = r "C:\...\Test.xlsx" #Replace ... with your path wb = op.load_workbook(file_name) ws = wb[ "Sheet1" ] a1 = ws.cell( 1 , 1 ) a1.font = Font(bold = True , color = "FF0000" ) bd = Side(style = 'thick' , color = "000000" ) a1.border = Border(left = bd, top = bd, right = bd, bottom = bd) wb.save(file_name) |
EXEMPLE 8 : INSTRUCTIONS CONDITIONNELLES
Déclarations conditionnelles dans VBA
1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
|
Sub ConditionalStatements() Dim num As Long num = 2 If num > 10 Then Debug.Print "Value greater than 10" ElseIf num > 5 Then Debug.Print "Value greater than 5" Else Debug.Print "Value less or equal to 5" End If End Sub |
Instructions conditionnelles en Python
1
2
3
4
5
6
|
num = 2 if num > 10 : print ( "Value greater than 10" ) elif num > 5 : print ( "Value greater than 5" ) else : print ( "Value less or equal to 5" ) |
EXEMPLE 9 : BOÎTES DE MESSAGE
Les boîtes de message sont un moyen simple d’informer vos utilisateurs de certains événements tels que la fin de l’exécution d’une macro ou leur poser de simples questions Oui/Non.
Boîtes de message dans VBA
En VBA, nous utilisons la fonction native MsgBox . Le problème est que pour les cases Oui/Non, nous devons nous rappeler que la fonction renverra un code VBA que nous devons comparer à l’aide de l’une des variables intégrées vbYes ou vbNo .
1
2
3
4
5
6
7
8
9
dix
11
12
13
14
|
Sub MessageBox() 'Information box MsgBox "Hello" , vbInformation, "Information" 'Yes / No question If MsgBox( "Do you like this tutorial?" , vbYesNo, "Question" ) = vbYes Then Debug.Print "They like it!" Else Debug.Print "They don't like it!" End If End Sub |
Boîtes de message en Python
Python n’est pas livré avec une fonction native Message Box. Au lieu de cela, vous devez importer une bibliothèque dotée de cette fonctionnalité. Je recommande d’utiliser tkinter car son utilisation est très similaire à la fonction MsgBox VBA.
1
2
3
4
5
6
7
8
9
dix
|
from tkinter import messagebox #Information box messagebox.showinfo( "Hello" , "Information" ) #Yes / No question if messagebox.askyesno( "Question" , "Do you like this tutorial?" ): print ( "They like it!" ) else : print ( "They don't like it!" ) |
EXEMPLE 10 : FONCTIONS
Comme dernier exemple, comparons comment vous pouvez créer des fonctions personnalisées dans VBA vs Python.
Fonctions en VBA
En VBA, nous devons toujours savoir clairement si nous définissons une sous-routine ou une fonction. Pour Functions, si vous souhaitez spécifier un nombre indéfini d’arguments, vous pouvez utiliser ParamArray .
1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
17
18
19
20
21
22
|
'A Function with 2 arguments Function AddNumbers(num1 as Long , num2 as Long ) as Long ret = num1+num2 AddNumbers = ret End Function 'A Function with undefined number of arguments Function AddManyNumbers( ParamArray values() as Variant ) as Long ret = 0 For Each v in values ret = ret + v next v AddManyNumbers = ret End Function Sub Test() Debug.Print AddNumbers 10, 20 'Result 30 Debug.Print AddManyNumbers 10, 20, 30 'Result 60 End Sub |
Fonctions en Python
En Python, nous n’avons pas besoin d’être explicites sur les sous-routines par rapport aux fonctions. Votre code principal ne s’exécutera que lorsqu’il ignorera les fonctions définies de haut en bas, comme indiqué ci-dessous. De plus, si vous souhaitez créer des fonctions avec des quantités d’arguments indéfinies, vous pouvez faire précéder votre argument de * (ou ** si vous souhaitez un dictionnaire au lieu d’une liste).
1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
17
18
|
#Function with 2 arguments def add_numbers(num1, num2): ret = num1 + num2 return ret #Function with many arguments def add_many_numbers( * args): ret = 0 for arg in args: ret = ret + arg return ret #Test functions print (add_numbers( 10 , 20 )) 'Result 30 print (add_many_numbers( 10 , 20 , 30 )) 'Result 60 |
PYTHON CONTRE VBA : CONCLUSIONS
Bien que je ne prétende pas cesser d’utiliser VBA entièrement dans vos scripts Excel, je pense qu’il est logique de commencer à envisager Python pour des tâches d’automatisation/de traitement de données plus complexes. Inversement, quand on me demande quel langage est un bon point de départ pour les analystes débutants, je leur recommande toujours de commencer par VBA . Avec Excel, vous obtenez un IDE intégré, vos scripts VBA peuvent être facilement partagés et appréciés par d’autres personnes sur votre lieu de travail. Permettez-moi de développer un peu plus pourquoi VBA peut encore être votre choix par défaut parfois :
Pourquoi préférez-vous toujours utiliser VBA ?
Vous devez toujours vous en tenir à VBA si vous êtes un développeur débutant et principalement un utilisateur d’Excel. Si vous n’avez pas une bonne maîtrise de la programmation et que vous ne créez quotidiennement que des scripts simples, généralement préenregistrés, je ne pense pas que le changement vous apportera beaucoup d’avantages.
Qu’est-ce qui manque à Python ?
- Python n’est pas intégré à Excel. Vous devez toujours envoyer vos scripts séparément et vous assurer que vos utilisateurs ont installé Python sur leurs postes de travail
- Python ne s’exécute pas sur des documents ouverts – dans VBA, vous pourriez être habitué à voir votre code en direct sur vos documents ouverts. Python manipule généralement des documents fermés, bien que vous puissiez essayer d’utiliser des bibliothèques d’interopérabilité, cependant, cela va à l’encontre de l’objectif d’utiliser Python
- Il n’y a pas d’enregistreur de macros Excel pour les scripts Python – si vous êtes débutant, je m’en tiendrai toujours à VBA, jusqu’à ce que vous en ayez une bonne compréhension
Quel est le bon moment pour passer à Python ?
Si vous êtes ingénieur de données/scientifique de données, Python a plus de sens dès le départ. Peu importe si vous avez besoin de traiter des fichiers Excel, csv ou json, les données sont des données. Dans de tels cas, tous les avantages de l’emballage de VBA avec des fichiers Excel, etc. n’ont pas vraiment d’importance.
- Python possède de nombreuses bibliothèques de données telles que numpy et pandas pour le traitement des données et les mathématiques. Cela inclut les bibliothèques ML/AI de science des données telles que scikit-learn vous permettant de créer des réseaux de neurones, des arbres de décision, etc.
- Les bibliothèques Python, telles que les pandas, fournissent généralement un support similaire pour tous les types de formats de données. Cela signifie que vous n’avez pas besoin d’apprendre différentes approches pour traiter les fichiers csv vs Excel, il vous suffit de vous familiariser avec les DataFrames
- Prise en charge du traitement parallèle – vous pouvez paralléliser vos boucles en quelques lignes seulement, ce qui augmente plusieurs fois les performances de vos scripts. VBA alors qu’il s’agit d’un thread unique par défaut et que l’exécution de gros scripts peut parfois prendre des heures
- Traitement de grands ensembles de données. VBA n’a pas été conçu pour traiter de grands ensembles de données et souvent même le stockage de données dans des tableaux de milliers peut entraîner des problèmes de mémoire ou des exceptions. Python peut facilement traiter des millions de lignes de données. Si vous avez besoin de traiter des téraoctets de données, vous pouvez utiliser des frameworks tels que Spark
- Travailler avec les API et le web scraping. Vous pouvez exécuter des appels Web à l’aide de XMLHttpObject, cependant, l’expérience ne sera pas aussi simple que d’utiliser la bibliothèque de requêtes Python, Scrapy , BeautifulSoup , etc. Surtout lorsque vous devez utiliser des jetons d’authentification. C’est précisément pour cette raison que Microsoft recommande les scripts Office