VBA à Python

 

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.

Installer Anaconda

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 .Écran Jupyter
New
Jupyter Créer un nouveau script Python

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 .

Exemple 1 - VBA - Bonjour tout le monde

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 SHIFTENTERpour l’exécuter :

Exemple 1 - Python - Hello World

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 SHIFTTABpour 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ération de lignes - VBA

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.

Voir aussi   Touches de raccourci Microsoft Excel

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îte de message Excel

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!")

MessageBox Python

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
Retour en haut