J'ai testé l'automatisation du même rapport Excel avec VBA, Python, Zapier et un agent IA — voici ce qui s'est passé
Un comparatif terrain : une tâche Excel réelle, quatre outils d'automatisation. Temps de mise en place, code, difficultés et résultats pour chaque approche.
Je passe beaucoup de temps à parler d'automatisation Excel. Alors j'ai décidé d'arrêter de parler et de tester. Une tâche, quatre outils, chronomètre en main. Pas de résultats arrangés.
Voici ce qui s'est réellement passé.
La tâche
Chaque mois, notre équipe opérationnelle reçoit cinq fichiers de ventes régionaux — Nord, Sud, Est, Ouest et Centre. Chacun est un classeur Excel avec une feuille "Ventes" contenant les colonnes date, produit, unités vendues et chiffre d'affaires. La tâche :
- Consolider les cinq fichiers dans un classeur récapitulatif unique
- Ajouter une ligne de totaux en bas
- Calculer la répartition par région (chiffre d'affaires total par région)
- Exporter le récapitulatif en PDF
- Envoyer par email à l'équipe de direction
Ce n'est pas un exercice théorique. Des milliers d'équipes font exactement cela chaque mois. Ça prend environ 45 minutes à la main — plus si un fichier est en retard ou mal formaté.
Voyons comment chaque outil s'en sort.
Tentative 1 : VBA
Temps jusqu'au résultat fonctionnel : 3 heures 20 minutes
J'ai ouvert l'éditeur Visual Basic et je m'y suis mis. Voici le cœur du code :
Sub ConsolidateRegionalSales()
Dim folderPath As String
Dim fileName As String
Dim wbSource As Workbook
Dim wsSummary As Worksheet
Dim nextRow As Long
folderPath = "C:\Reports\Regional\"
Set wsSummary = ThisWorkbook.Sheets("Summary")
nextRow = 2
fileName = Dir(folderPath & "*.xlsx")
Do While fileName <> ""
Set wbSource = Workbooks.Open(folderPath & fileName)
Dim lastRow As Long
lastRow = wbSource.Sheets("Sales").Cells(Rows.Count, 1).End(xlUp).Row
wbSource.Sheets("Sales").Range("A2:D" & lastRow).Copy _
Destination:=wsSummary.Range("A" & nextRow)
' Ajouter le nom de la région en colonne E
wsSummary.Range("E" & nextRow & ":E" & nextRow + lastRow - 2).Value = _
Replace(Replace(fileName, ".xlsx", ""), "_Sales", "")
nextRow = nextRow + lastRow - 1
wbSource.Close SaveChanges:=False
fileName = Dir
Loop
' Ajouter la ligne de totaux
wsSummary.Range("C" & nextRow).Formula = "=SUM(C2:C" & nextRow - 1 & ")"
wsSummary.Range("D" & nextRow).Formula = "=SUM(D2:D" & nextRow - 1 & ")"
wsSummary.Range("A" & nextRow).Value = "TOTAL"
End Sub
C'est la partie consolidation. Il fallait encore du code séparé pour la répartition par région, l'export PDF et l'envoi par email via Outlook. La macro complète faisait environ 120 lignes.
Points de friction
- Le débogage était lent. Les messages d'erreur VBA sont cryptiques. Un nom de feuille incorrect m'a coûté 40 minutes.
- Les chemins de fichiers sont en dur. Déplacez les fichiers dans un autre dossier et la macro casse.
- L'email nécessitait l'automatisation Outlook. C'est une couche supplémentaire de références COM et d'alertes de sécurité.
- L'export PDF fonctionnait — mais le formatage était incohérent selon les versions d'Excel.
- Personne d'autre ne peut maintenir ça. Quand je pars, cette macro devient un mystère.
Verdict
VBA fait le travail si vous avez la patience de l'écrire et de le déboguer. Mais c'est fragile, lié à une machine, et suppose que la personne qui maintient le code connaît VBA. Pour un indépendant, ça peut aller. Pour une équipe, c'est risqué.
Tentative 2 : Python (openpyxl + smtplib)
Temps jusqu'au résultat fonctionnel : 2 heures 10 minutes
Python était plus naturel. J'ai utilisé openpyxl pour manipuler Excel et smtplib pour l'email.
import openpyxl
from pathlib import Path
from openpyxl.utils.dataframe import dataframe_to_rows
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
folder = Path("./regional_reports/")
summary_wb = openpyxl.Workbook()
summary_ws = summary_wb.active
summary_ws.title = "Summary"
summary_ws.append(["Date", "Product", "Units", "Revenue", "Region"])
for file in folder.glob("*.xlsx"):
region = file.stem.replace("_Sales", "")
wb = openpyxl.load_workbook(file)
ws = wb["Sales"]
for row in ws.iter_rows(min_row=2, values_only=True):
summary_ws.append(list(row) + [region])
# Ajouter les totaux
last_row = summary_ws.max_row
summary_ws.append([
"TOTAL", "",
f"=SUM(C2:C{last_row})",
f"=SUM(D2:D{last_row})",
""
])
summary_wb.save("consolidated_report.xlsx")
Puis un script séparé pour la conversion en PDF (qui nécessite soit win32com sous Windows, soit LibreOffice en mode headless sur les autres plateformes) et un autre bloc pour l'envoi par email.
Points de friction
- La conversion PDF est un casse-tête. Il n'existe pas de méthode propre et multiplateforme pour convertir un .xlsx en PDF avec Python. J'ai fini par faire appel à LibreOffice — ce qui implique d'installer LibreOffice sur chaque machine qui exécute ce script.
- La configuration email est laborieuse. Identifiants SMTP, mots de passe d'application, paramètres TLS — ça fonctionne, mais il m'a fallu 30 minutes pour que tout soit au point.
- Les dépendances.
openpyxl,smtplib(intégré, au moins), LibreOffice. Chacun est un point de défaillance potentiel. - Pas de planification intégrée. Il faut cron (Linux/Mac) ou le Planificateur de tâches (Windows) pour l'exécution mensuelle.
Verdict
Python est plus flexible que VBA et le code est plus lisible. Mais la chaîne d'outils est plus lourde. Il faut Python installé, des bibliothèques gérées, et un moyen de planifier l'exécution. Parfait si vous avez un développeur dans l'équipe. Excessif sinon.
Tentative 3 : Zapier
Temps jusqu'au résultat fonctionnel : 1 heure 45 minutes
Zapier promet l'automatisation sans code. J'ai configuré un Zap avec ces étapes :
- Déclencheur : Planification — le 3 de chaque mois à 9h
- Action 1 : Google Drive — trouver les fichiers dans le dossier "Regional Reports"
- Action 2 : Formatter — parser les données Excel
- Action 3 : Google Sheets — écrire les données consolidées dans une nouvelle feuille
- Action 4 : Gmail — envoyer la feuille en pièce jointe
Points de friction
- Zapier ne lit pas les fichiers .xlsx nativement. Il a fallu d'abord les convertir en Google Sheets — ce qui signifiait soit un import manuel, soit une étape de conversion supplémentaire. Ça m'a coûté 30 minutes.
- Pas de vrai traitement Excel. Zapier déplace des données entre applications. Il ne calcule pas de totaux, ne crée pas de formules, ne formate pas de tableurs. J'ai dû passer par Google Sheets comme intermédiaire pour la consolidation proprement dite.
- La logique "parcourir 5 fichiers" était pénible. Les fonctions de boucle de Zapier existent mais ne sont pas intuitives. J'ai fini avec un Zap multi-chemins qui semblait surdimensionné pour une tâche aussi simple.
- L'export PDF nécessitait encore une étape supplémentaire. J'ai utilisé une intégration tierce de Zapier pour convertir la Google Sheet en PDF. Encore une dépendance et un point de défaillance potentiel.
- Le coût monte vite. Ce Zap utilise 6 à 8 tâches par exécution. Au tarif Zapier, c'est acceptable pour un rapport — mais passez à 10 rapports et vous êtes sur un plan à 50 €+/mois.
Verdict
Zapier est excellent pour connecter des applications — "quand X se passe dans l'App A, fais Y dans l'App B." Mais consolider et traiter des données Excel, ce n'est pas ce pour quoi il a été conçu. J'ai passé plus de temps à contourner ses limites qu'à résoudre le problème.
Tentative 4 : Reflexion (Agent IA)
Temps jusqu'au résultat fonctionnel : 12 minutes
J'ai connecté mon OneDrive (où se trouvent les fichiers régionaux) et j'ai tapé ceci :
"Le 3 de chaque mois, récupère les cinq fichiers de ventes régionaux dans le dossier 'Regional Reports' sur OneDrive. Consolide toutes les feuilles Ventes dans un classeur récapitulatif unique avec une colonne Région. Ajoute une ligne de totaux. Crée une répartition du chiffre d'affaires par région. Exporte en PDF et envoie par email à direction@entreprise.com avec l'objet 'Récapitulatif Ventes Mensuel — [Mois Année]'."
Reflexion a posé deux questions de clarification :
- "La répartition par région doit-elle être une feuille séparée ou une section en bas du récapitulatif ?"
- "Dois-je inclure les totaux d'unités dans la répartition ou uniquement le chiffre d'affaires ?"
J'ai répondu : feuille séparée, chiffre d'affaires uniquement.
Il a exécuté un test avec les fichiers du mois précédent. Le résultat contenait le récapitulatif, la répartition, les totaux — le tout bien formaté. Le PDF ressemblait exactement à ce que je produirais manuellement.
J'ai approuvé, et le workflow était planifié.
Points de friction
- Honnêtement, pas grand-chose. Le plus gros ajustement était de faire confiance au résultat sans avoir écrit la logique moi-même. L'étape de validation humaine a aidé — je pouvais voir exactement ce qui serait envoyé avant l'envoi.
- Je voulais ajuster le formatage du PDF. J'ai dit à Reflexion "mets l'en-tête en bleu foncé avec du texte blanc" et il a ajusté. Mais il a fallu que je le demande — il n'a pas deviné mes préférences esthétiques.
Verdict
Douze minutes du début à une automatisation planifiée et récurrente. Pas de code, pas de dépendances, pas de maintenance à prévoir. Le résultat était identique à ce que je produirais à la main.
Les résultats
| VBA | Python | Zapier | Reflexion | |
|---|---|---|---|---|
| Temps de mise en place | 3h 20m | 2h 10m | 1h 45m | 12 min |
| Code/config requis | ~120 lignes VBA | ~80 lignes Python + LibreOffice | Zap 6 étapes + contournement Google Sheets | Prompt en langage naturel |
| Compétence technique requise | Maîtrise VBA | Python + CLI + cron | Faible (mais logique Zapier) | Aucune |
| Export PDF | Intégré mais incohérent | Nécessite LibreOffice | Intégration tierce | Intégré |
| Envoi email | Automatisation COM Outlook | Configuration SMTP | Intégration Gmail native | Intégré |
| Planification | Manuelle ou Planificateur de tâches | Cron / Planificateur de tâches | Intégrée | Intégrée |
| Gestion des changements de format | Casse | Casse | Casse | S'adapte |
| Charge de maintenance | Élevée | Moyenne | Moyenne | Faible |
| Coût mensuel | Gratuit (votre temps) | Gratuit (votre temps) | 20-50 €/mois | Tarification à la tâche |
Ce qui m'a surpris
VBA était le plus pénible. Je m'attendais à de l'ennui, mais le cycle de débogage — écrire, exécuter, erreur, deviner, corriger, relancer — était vraiment épuisant. Les développeurs modernes oublient à quel point l'IDE VBA est mauvais.
Python était le plus satisfaisant à écrire — mais uniquement parce que je connais déjà Python. Si ce n'était pas le cas, cette tentative aurait été la plus longue de loin. Et le problème de conversion PDF n'a pas de solution propre.
Zapier était le plus frustrant. Pas parce que c'est mauvais — c'est excellent dans ce qu'il fait. Mais ce qu'il fait, c'est connecter des applications, pas traiter des données. Essayer de l'utiliser pour de la consolidation Excel, c'est comme utiliser un tournevis comme marteau.
Reflexion était le plus rapide, et de loin — et la qualité du résultat égalait ou dépassait les autres. Les questions de clarification posées étaient exactement celles qu'un assistant compétent poserait.
Quel outil pour qui
Utilisez VBA si vous le maîtrisez déjà, le classeur est autonome, et vous êtes la seule personne à devoir l'exécuter ou le maintenir.
Utilisez Python si vous avez des compétences de développeur dans l'équipe, vous avez besoin d'une flexibilité maximale, et vous êtes à l'aise avec la gestion des dépendances et la planification.
Utilisez Zapier si votre automatisation consiste principalement à connecter des applications — envoyer des notifications, synchroniser des données entre plateformes, déclencher des actions. Mais n'essayez pas de lui faire faire du traitement de données lourd.
Utilisez un agent IA comme Reflexion si vous voulez le chemin le plus court entre "j'ai besoin d'automatiser ce rapport" et "c'est automatisé." Pas de code, pas de maintenance, pas de courbe d'apprentissage. Particulièrement adapté aux équipes sans développeur et aux workflows qui évoluent. Pour un aperçu détaillé de la gestion Excel par Reflexion, consultez Comment Reflexion automatise vos rapports Excel mensuels.
La vue d'ensemble
La vraie différence n'est pas la vitesse — c'est ce qui se passe le mois suivant. VBA, Python et Zapier me demandent tous de maintenir l'automatisation. Si un nom de fichier change, si une colonne est ajoutée, si quelqu'un renomme une feuille — je suis en mode débogage.
Avec un agent IA, je décris l'intention : "consolider les données de ventes régionales." L'agent se charge de la mécanique. Quand cette mécanique change, il s'adapte. Ce n'est pas un simple confort — c'est un modèle de maintenance fondamentalement différent.
Si vous faites encore ce genre de travail à la main, n'importe lequel de ces outils vous fera gagner du temps. Mais si vous voulez le configurer une fois et passer à autre chose, le choix est clair. Pour des modèles éprouvés applicables quel que soit l'outil choisi, consultez Excel Reporting : 7 modèles d'automatisation. Et si vous êtes dans la distribution, découvrez 5 rapports Excel que tout distributeur devrait automatiser en priorité.
Vous voulez voir comment fonctionnerait votre rapport spécifique ? Envoyez-nous un fichier exemple et nous créerons une cartographie d'automatisation gratuite pour votre workflow. Ou essayez Reflexion gratuitement et automatisez votre premier rapport en quelques minutes.
Lectures complémentaires
- Automatiser les rapports Excel sans écrire de VBA — Pourquoi les agents IA remplacent les macros
- Agents IA vs Power Query vs Power Automate — Comparatif détaillé de la pile d'automatisation Microsoft
- Excel Reporting : 7 modèles d'automatisation — Modèles éprouvés pour toute approche d'automatisation
- Comment Reflexion automatise vos rapports Excel mensuels — Tutoriel étape par étape
reflexion