🎯 Situation

Chaque lundi matin, un analyste des opérations chez un de nos clients ouvrait quatre fichiers Excel — un par région — copiait les données dans un fichier maître, nettoyait les noms de colonnes qui ne correspondaient jamais, supprimait les lignes vides en haut de chaque fichier, et formatait le résultat avant de le charger manuellement dans Power BI.

Ça prenait environ 90 minutes. Chaque semaine. Pendant deux ans.

👉 La tâche était répétitive, source d'erreurs, et entièrement automatisable. C'est aussi le genre de tâche que les gens font pendant des années sans la remettre en question — parce qu'elle a toujours été faite comme ça, et que ça marche suffisamment.

Un script Python a tout changé.

⚠️ Challenge

Le processus manuel avait trois vrais problèmes qui s'accumulaient avec le temps.

📷 Le processus manuel

  • 90 minutes chaque lundi avant toute analyse
  • Les noms de colonnes variaient selon la région et la personne
  • Lignes d'en-tête vides dans deux des quatre fichiers
  • Le chiffre d'affaires était parfois du texte, parfois un nombre
  • Si l'analyste était absent — pas de rapport

❌ Ce qui se passait mal

  • 2 erreurs de copier-coller trouvées en T1 — détectées seulement parce qu'un manager a remarqué que le total ne correspondait pas
  • Une région avait changé son en-tête de colonne — le fichier maître était cassé silencieusement depuis 3 semaines
  • Intégration d'un nouvel analyste = 3 heures juste pour apprendre le processus de consolidation Excel
  • L'actualisation Power BI était manuelle — oubliée deux fois en 6 mois

Aucun de ces problèmes n'était catastrophique individuellement. Ensemble, ils représentaient un processus fragile et dépendant d'une seule personne, posé à la fondation du reporting hebdomadaire de l'entreprise.

🔍 Le script

Voici le code réel — légèrement simplifié, mais proche de ce qu'on a déployé. Il utilise pandas, la bibliothèque standard de manipulation de données en Python, et glob pour trouver les fichiers automatiquement :

import pandas as pd
import glob

# Read all 4 Excel files from a folder
files = glob.glob('data/*.xlsx')
df = pd.concat([pd.read_excel(f) for f in files], ignore_index=True)

# Standardize column names
df.columns = df.columns.str.strip().str.lower().str.replace(' ', '_')

# Clean and filter
df['date'] = pd.to_datetime(df['date'], errors='coerce')
df['revenue'] = pd.to_numeric(df['revenue'], errors='coerce').fillna(0)
df = df[df['date'].notna()]

# Aggregate by month and region
summary = df.groupby([df['date'].dt.to_period('M'), 'region'])['revenue'].sum().reset_index()
summary.columns = ['month', 'region', 'total_revenue']

# Export clean file for Power BI
summary.to_csv('output/monthly_revenue.csv', index=False)
print(f"Done. {len(summary)} rows exported.")

C'est 28 lignes. Ce qu'il fait :

  • Trouve tous les fichiers Excel automatiquement — déposer un nouveau fichier dans le dossier suffit pour qu'il soit traité au prochain lancement
  • Standardise les noms de colonnes — minuscules, sans espaces, sans espaces en fin — quel que soit le créateur du fichier
  • Gère les données sales — les valeurs de chiffre d'affaires non numériques deviennent 0, les dates non parsables sont supprimées proprement
  • Agrège et exporte — un fichier CSV propre que Power BI lit lors d'une actualisation planifiée
Le script tourne chaque dimanche soir via le Planificateur de tâches Windows — aucune intervention humaine. Le lundi matin, Power BI s'actualise depuis le CSV propre automatiquement. L'analyste arrive devant un dashboard déjà à jour. La tâche de 90 minutes a disparu.

✓️ Ce que ça a coûté et ce que ça a rapporté

Écrire et tester ce script a pris environ 3 heures. C'est un investissement unique.

  • Temps économisé : 90 min/semaine × 52 semaines = 78 heures/an rendues à l'analyste
  • Taux d'erreur : tombé à zéro pour les erreurs de consolidation — le script s'exécute correctement ou échoue bruyamment
  • Résilience : l'analyste peut être en vacances. Le rapport tourne quand même.
  • Intégration : un nouvel analyste doit comprendre un script, pas un processus Excel en 12 étapes
  • Extensibilité : ajouter une 5e région signifie déposer un nouveau fichier dans le dossier — rien d'autre ne change

Le seul coût récurrent : si la structure du fichier source change significativement (nouvelles colonnes, feuilles renommées), le script a besoin d'une petite mise à jour. En deux ans, c'est arrivé une fois.

💡 Synthèse

Python ne nécessite pas un background en data engineering pour être utile. Pour la plupart des tâches de consolidation de données qui se produisent selon un planning, 20 à 50 lignes de pandas suffisent pour automatiser l'intégralité du processus.

Le pattern qui fonctionne :

  • Identifier la tâche répétitive — tout ce qui se fait chaque semaine ou chaque mois avec les mêmes fichiers et les mêmes étapes est un candidat
  • Écrire le script une fois — se concentrer sur la lecture, le nettoyage, la transformation et l'export. Ne pas sur-ingénierer.
  • Le planifier — Planificateur de tâches Windows, cron macOS, ou un déclencheur cloud. Le faire tourner la nuit avant que les données soient nécessaires.
  • Connecter Power BI à l'output — un CSV propre ou une table de base de données, actualisé automatiquement
  • Ajouter une gestion d'erreur basique — le script doit envoyer une alerte si quelque chose se passe mal, pas produire silencieusement un fichier vide

La question n'est pas de savoir si Python vaut la peine d'être appris. C'est de savoir si 90 minutes de travail manuel chaque semaine — pendant des années — valent plus que 3 heures d'automatisation une seule fois.

👉 La meilleure automatisation est celle qu'on construit une fois et qu'on oublie.

30 lignes de Python qui tournent chaque dimanche soir, c'est exactement ça.