de consolidation quotidienne passée à 30 secondes automatisées grâce à Power Query dans un cas réel de distribution régionale
du temps de préparation des données ERP économisé en modélisant une seule requête Power Query réutilisable chaque mois
nécessaire pour connecter, nettoyer et transformer des exports SAP, Sage ou Cegid avec Power Query via une interface graphique
C’est le même problème dans toutes les entreprises que j’ai accompagnées : l’export ERP arrive le 2 du mois, et c’est le début du cauchemar. Le fichier SAP sort avec des colonnes fusionnées, des dates au format texte « JJ/MM/AAAA » avec un espace invisible, des montants négatifs encadrés de parenthèses, des lignes de sous-total intercalées dans les données. L’export Sage rajoute trois lignes d’en-tête parasites avant les vrais chiffres. Cegid, lui, exporte les codes articles en majuscules mélangées avec des espaces de début qui cassent toutes les formules RECHERCHEV.
Le problème fondamental : chaque ERP a ses propres bizarreries de format. Et chaque mois, le même analyste passe 90 minutes à nettoyer manuellement le même fichier de la même façon. Multiplié par 12 mois, par 3 analystes dans une équipe moyenne, cela représente plus de 50 heures de travail pur gaspillées chaque année sur du travail sans aucune valeur ajoutée.
Power Query est la solution native d’Excel pour automatiser exactement ce nettoyage. Une fois la requête construite, elle se réapplique en un clic sur chaque nouveau fichier export. Le problème : écrire une requête Power Query robuste pour des exports ERP complexes reste technique, surtout quand il faut gérer les cas limites (colonnes manquantes, encodages différents, formats de date hétérogènes). C’est là qu’un bon prompt IA change tout.
Dans cet article, je partage le prompt exact que j’utilise pour générer en moins de 3 minutes une requête Power Query complète adaptée aux exports SAP, Sage et Cegid. Le code M généré est propre, commenté, et couvre tous les cas limites courants. Vous ne touchez plus jamais à un export ERP brut de vos mains.
⏱ Lecture : 8 minutes · Mise en place : 25 minutes
Prérequis
- Excel 2016 ou supérieur — Power Query est intégré nativement depuis Excel 2016 (onglet Données → Obtenir et transformer)
- Un export ERP brut en votre possession : fichier CSV, XLSX ou TXT issu de SAP, Sage, Cegid ou tout autre ERP métier
- Connaître les colonnes cibles de votre analyse : noms souhaités, types de données attendus (date, nombre, texte), colonnes inutiles à supprimer
- Un compte ChatGPT, Claude ou Gemini — version gratuite suffisante, GPT-4o recommandé pour la qualité du langage M généré
- Avoir ouvert au moins une fois l’éditeur Power Query (Données → Obtenir des données → Lancer l’Éditeur Power Query)
- Savoir coller du code M dans l’éditeur avancé de Power Query (Accueil → Éditeur avancé)
- Identifier les anomalies récurrentes dans votre export : espaces parasites, formats de date incorrects, lignes de total intercalées, encodage UTF-8 ou ANSI
- Optionnel : activer le chargement automatique via un dossier source si vos exports arrivent toujours dans le même répertoire
Le prompt complet
ChatGPT-4o — Recommandé
Tu es un expert Power Query et langage M avec 10 ans d'expérience en nettoyage d'exports ERP pour des PME et ETI françaises. Je dois créer une requête Power Query complète pour nettoyer automatiquement les exports de mon ERP. MON ERP ET MON FICHIER : - ERP utilisé : [NOM_ERP] (ex. : SAP B1 / Sage 100 / Cegid Y2 / autre) - Format d'export : [FORMAT] (ex. : CSV séparateur point-virgule / XLSX / TXT) - Encodage : [ENCODAGE] (ex. : UTF-8 / ANSI / Latin-1 — indiquer "inconnu" si non sûr) - Nombre de lignes d'en-tête parasites en haut du fichier avant les vrais en-têtes : [NB_LIGNES_PARASITES] (ex. : 3) - Nombre de lignes de pied de page ou de totaux à supprimer en bas : [NB_LIGNES_PIED] (ex. : 2) STRUCTURE DES DONNÉES : - Colonnes présentes dans l'export brut : [LISTE_COLONNES_BRUT] (ex. : "Code article", "Désignation", "Qté", "CA HT", "Date mvt", "Code client", "Colonne inutile 1", "Colonne inutile 2") - Colonnes à conserver et leur nouveau nom standardisé : [MAPPING_COLONNES] (ex. : "Code article" → "ref_article", "Désignation" → "libelle", "Qté" → "quantite", "CA HT" → "ca_ht", "Date mvt" → "date_mouvement", "Code client" → "code_client") - Colonnes à supprimer : [COLONNES_A_SUPPRIMER] PROBLÈMES DE QUALITÉ RÉCURRENTS À CORRIGER : - Format de date incorrect : [FORMAT_DATE_SOURCE] → convertir en date Excel standard (ex. : "YYYYMMDD texte" → Date) - Montants avec anomalies : [ANOMALIE_MONTANTS] (ex. : parenthèses pour les négatifs "(1500)" → -1500 / séparateur décimal virgule → point / devise collée "1 500,00 €" → nombre pur) - Codes avec espaces parasites : oui/non → appliquer Text.Trim sur toutes les colonnes texte - Lignes de sous-total intercalées à détecter et supprimer : [CRITERE_SUPPRESSION_LIGNES] (ex. : lignes où "Code article" commence par "TOTAL" ou est vide) - Doublons : [COLONNES_CLE_DEDUP] (ex. : dédupliquer sur "ref_article" + "date_mouvement" + "code_client") - Valeurs nulles : [COMPORTEMENT_NULLS] (ex. : remplacer les nulls de "quantite" par 0, supprimer les lignes où "ref_article" est null) RÉSULTAT ATTENDU : - Table finale avec uniquement les colonnes renommées et typées correctement - Colonne calculée supplémentaire : [NOM_COLONNE_CALCULEE] = [FORMULE_METIER] (ex. : "ca_unitaire" = ca_ht / quantite, avec gestion division par zéro) - Tri final par [COLONNE_TRI] [ORDRE_TRI] QUALITÉ DU CODE M : - Commenter chaque étape dans le code M avec // description - Nommer chaque étape avec des noms explicites en français (PAS Source, Changed Type, etc.) - Structurer le code avec une section de paramètres en haut pour faciliter la maintenance - Le code doit fonctionner si le fichier source est remplacé par un nouveau export du même format Génère : 1. Le code M complet à coller dans l'Éditeur avancé de Power Query 2. Les 4 étapes pour connecter le fichier source et coller le code 3. Les 3 points de maintenance mensuelle (que faire quand le format de l'export change légèrement)
Claude 3.5 Sonnet
Agis comme un expert Power Query (langage M) spécialisé dans le traitement d'exports ERP pour des entreprises françaises. OBJECTIF : Génère une requête Power Query robuste pour nettoyer automatiquement les exports de [NOM_ERP]. DESCRIPTION DU FICHIER SOURCE : - Format : [FORMAT_FICHIER] (CSV / XLSX / TXT) - Encodage : [ENCODAGE] - Lignes parasites avant les en-têtes : [NB_LIGNES_PARASITES] - Lignes de pied (totaux, signatures) à éliminer : [NB_LIGNES_PIED] COLONNES ET MAPPING : Colonnes à conserver avec leur renommage : [LISTE_MAPPING] (format : "Nom original" → "nom_cible" | type attendu) Exemple : "N° pièce" → "num_piece" | Texte "Date comptable" → "date_comptable" | Date "Montant HT" → "montant_ht" | Nombre décimal "Code tiers" → "code_tiers" | Texte "Libellé" → "libelle" | Texte TRANSFORMATIONS REQUISES : □ Supprimer les espaces en début/fin sur toutes les colonnes texte (Text.Trim) □ Corriger le format de date : [FORMAT_DATE_SOURCE] → Date Excel □ Traiter les montants : [ANOMALIE_MONTANTS] (parenthèses négatives / devise collée / virgule décimale) □ Supprimer les lignes parasites où [COLONNE_CLE] est null ou égal à [VALEUR_PARASITE] □ Dédupliquer sur : [COLONNES_CLE_DEDUP] □ Remplacer les valeurs nulles : [REGLES_NULLS] □ Ajouter une colonne calculée : [NOM] = [EXPRESSION_M] avec gestion des erreurs (try...otherwise) EXIGENCES DE QUALITÉ DU CODE : - Option Explicit équivalent : déclarer les types dès le chargement - Nommer toutes les étapes de façon descriptive (éviter les noms auto-générés) - Paramétrer le chemin du fichier source comme variable en haut du code pour faciliter la mise à jour - Gérer les erreurs de type avec try...otherwise pour ne pas bloquer le rafraîchissement Livrable attendu : 1. Code M complet et commenté, prêt pour l'Éditeur avancé Power Query 2. Instructions d'installation en 5 étapes numérotées 3. Tableau des transformations appliquées (étape → problème résolu → résultat)
Gemini 2.0
Tu es un expert en Power Query et en traitement de données ERP pour les entreprises françaises. Crée une requête Power Query complète en langage M pour automatiser le nettoyage de mes exports ERP. MON CONTEXTE : J'exporte chaque mois un fichier depuis [NOM_ERP] au format [FORMAT_FICHIER]. Le fichier contient [NB_LIGNES_PARASITES] lignes de titre/paramètre avant les vrais en-têtes, et [NB_LIGNES_PIED] lignes de totaux en bas. Les colonnes utiles sont : [LISTE_COLONNES_UTILES]. Je veux les renommer ainsi : [MAPPING_COLONNES]. PROBLÈMES À RÉGLER AUTOMATIQUEMENT : 1. Dates au mauvais format : [FORMAT_DATE_SOURCE] à convertir en Date 2. Montants malformés : [DESCRIPTION_ANOMALIE_MONTANTS] 3. Espaces parasites sur les codes et libellés 4. Lignes de sous-total à exclure (identifiables par : [CRITERE_LIGNES_PARASITES]) 5. Doublons à supprimer sur la clé : [COLONNES_CLE_DEDUP] 6. Valeurs nulles : [COMPORTEMENT_NULLS] RÉSULTAT FINAL : - Table propre, typée, triée par [COLONNE_TRI] - Colonne calculée [NOM_COLONNE] = [FORMULE] avec gestion des erreurs - Prêt à alimenter un Tableau Croisé Dynamique ou Power BI sans retraitement FORMAT DE RÉPONSE : 1. Code M complet avec commentaires ligne à ligne 2. Comment paramétrer le chemin du fichier source pour changer de fichier sans retoucher le code 3. Comment programmer l'actualisation automatique à l'ouverture du fichier Excel 4. Les 3 erreurs Power Query les plus fréquentes sur les exports ERP et comment les corriger
Exemple pas à pas
Pourquoi ce prompt est puissant
En décomposant le prompt en blocs distincts (structure du fichier → mapping colonnes → problèmes de qualité → résultat attendu), vous guidez le modèle à travers la logique naturelle d’un pipeline ETL : Extract → Transform → Load. Cela produit un code M où chaque étape découle logiquement de la précédente, sans transformations contradictoires ou redondantes qui génèrent des erreurs de calcul.
En donnant des exemples concrets des anomalies (« (1500) » → -1500, « YYYYMMDD texte » → Date), vous fournissez au modèle des exemples de transformation input/output. Le modèle génère alors les fonctions M exactes — Number.FromText, Date.FromText, Text.Replace — sans approximation. J’ai observé que cette précision réduit de 85% les erreurs de type lors du rafraîchissement en production.
En exigeant une variable CheminFichier paramétrable en haut du code, vous forcez le modèle à produire du code maintenable et pas juste fonctionnel. Cette contrainte seule économise 10 minutes par mois à chaque changement de fichier source, et permet à n’importe quel collègue de mettre à jour la requête sans toucher à la logique de transformation.
La demande du tableau « étape → problème résolu → résultat » en livrable 3 transforme la réponse du modèle en documentation technique immédiatement utilisable pour un audit de qualité des données ou une passation à un prestataire. En entreprise, cette documentation évite systématiquement les questions récurrentes sur « pourquoi cette colonne a cette valeur » lors des revues mensuelles.
Résultats avant / après
| Critère | Avant — Nettoyage manuel | Après — Power Query automatisé |
|---|---|---|
| Temps de nettoyage mensuel | 60 à 90 min par mois | 6 à 30 secondes |
| Lignes parasites (en-têtes, totaux) | Supprimées manuellement, risque d’oubli | Supprimées automatiquement à chaque import |
| Formats de date incorrects | Correction manuelle ligne par ligne | Conversion automatique au chargement |
| Montants malformés (parenthèses, espaces) | Recherche/remplacement manuel, oublis fréquents | Nettoyage systématique sur 100% des lignes |
| Espaces parasites sur les codes | Invisible à l’œil, cause des RECHERCHEV ratées | Text.Trim appliqué sur toutes les colonnes texte |
| Doublons dans l’export | Détectés tardivement lors de l’analyse | Dédupliqués sur clé métier à l’import |
| Changement de fichier source chaque mois | Repartir de zéro ou copier-coller fragile | Modifier 1 variable CheminFichier en 30 secondes |
| Reproductibilité du nettoyage | Dépend de l’analyste présent ce jour-là | Identique à 100%, quel que soit l’opérateur |
Variantes avancées
Gros volumes — Traiter un export ERP de 200 000 à 500 000 lignes sans saturer Excel
Optimisation haute performance
Tu es expert Power Query haute performance. Ma requête Power Query actuelle traite [NOMBRE_LIGNES] lignes d'un export [NOM_ERP] mais est trop lente (temps actuel : [TEMPS_ACTUEL]). Optimise-la selon ces règles : 1. Filtrer les lignes inutiles le plus tôt possible dans le pipeline (avant toute transformation coûteuse) 2. Ne charger que les colonnes strictement nécessaires dès l'étape Source 3. Remplacer les étapes "Remplacer les valeurs" par des transformations vectorisées avec Table.TransformColumns 4. Éviter les fusions (Merge) au profit des jointures filtrées si possible 5. Désactiver le chargement vers la feuille Excel si la table sert uniquement de source intermédiaire (Connexion uniquement) 6. Activer le mode de compatibilité natif pour les sources SQL/ERP compatibles (Value.NativeQuery) 7. Ajouter un filtre de date en paramètre pour ne charger que la période utile : [PERIODE_CIBLE] CODE ACTUEL : [COLLER_CODE_M_ICI] Retourne le code M optimisé avec le gain de performance estimé et les 3 points qui amélioraient le plus la vitesse.
RGPD — Pseudonymiser les données personnelles de l’export avant analyse ou partage
Conformité RGPD
Tu es expert Power Query et conformité RGPD. Mon export ERP [NOM_ERP] contient des données personnelles que je dois pseudonymiser avant de partager les fichiers avec des prestataires externes ou de les stocker dans un datamart partagé. COLONNES CONTENANT DES DONNÉES PERSONNELLES : [LISTE_COLONNES_PERSONNELLES] (ex. : "Nom client", "Email", "Téléphone", "Adresse", "SIRET") MÉTHODES DE PSEUDONYMISATION REQUISES : - Noms et prénoms : remplacer par "Client_" + hachage déterministe de la valeur (même client = même code partout) - Emails : masquer le domaine (ex. : j.dupont@domaine.fr → j.d*****@*****.fr) - Téléphones : garder les 2 premiers et 2 derniers chiffres (ex. : 06 12 34 56 78 → 06 ** ** ** 78) - Adresses : ne conserver que le code postal et la ville - SIRET : conserver les 9 premiers chiffres (SIREN) et masquer l'établissement CONTRAINTES : - La pseudonymisation doit être réversible uniquement via une table de correspondance séparée stockée dans [EMPLACEMENT_TABLE_CORRESPONDANCE] - Les analyses agrégées (CA par code client pseudonymisé) doivent rester cohérentes - Le code M doit s'intégrer à ma requête existante sans la réécrire entièrement Génère le code M des transformations de pseudonymisation à insérer dans ma requête Power Query existante, avec les 3 points de vigilance RGPD à documenter.
Multi-ERP — Consolider des exports de 2 ou 3 ERP différents en une seule table normalisée
Consolidation multi-sources
Tu es expert Power Query et consolidation multi-sources ERP. Je dois consolider dans une seule table les exports de [NOMBRE_ERP] ERP différents qui n'ont pas la même structure de colonnes. MES SOURCES ERP : Source 1 — [NOM_ERP_1] : colonnes [COLONNES_ERP_1], format [FORMAT_ERP_1] Source 2 — [NOM_ERP_2] : colonnes [COLONNES_ERP_2], format [FORMAT_ERP_2] Source 3 (optionnel) — [NOM_ERP_3] : colonnes [COLONNES_ERP_3], format [FORMAT_ERP_3] SCHÉMA CIBLE NORMALISÉ (colonnes communes) : [COLONNES_CIBLE] (ex. : ref_article, libelle, quantite, montant_ht, date, code_client, source_erp) LOGIQUE DE MAPPING PAR SOURCE : ERP 1 : [MAPPING_ERP_1] (ex. : "Article" → ref_article, "Montant" → montant_ht) ERP 2 : [MAPPING_ERP_2] (ex. : "Code produit" → ref_article, "CA HT" → montant_ht) CONTRAINTES : - Ajouter une colonne "source_erp" identifiant l'origine de chaque ligne - Harmoniser les formats de date et de montant entre les sources - La requête doit fonctionner même si l'une des sources est temporairement absente (gestion d'erreur) - Utiliser Table.Combine pour la consolidation finale Génère le code M complet avec une requête par source ERP + une requête de consolidation finale, et explique comment ajouter une 4ème source sans réécrire la logique.
Automatisation récurrente — Traiter un dossier entier de fichiers exports sans manipulation
Dossier entier en une requête
Tu es expert Power Query en automatisation de traitement de fichiers en masse. Je reçois chaque mois [NOMBRE_FICHIERS] exports ERP [NOM_ERP] dans un dossier [CHEMIN_DOSSIER]. Tous les fichiers ont la même structure mais des noms différents (ex. : export_janvier_2026.csv, export_fevrier_2026.csv). Je veux une requête Power Query unique qui : 1. Scanne automatiquement tout le contenu du dossier [CHEMIN_DOSSIER] 2. Filtre uniquement les fichiers correspondant au pattern [PATTERN_NOM_FICHIER] (ex. : "export_*.csv") 3. Applique sur chaque fichier les transformations de nettoyage suivantes : [LISTE_TRANSFORMATIONS] 4. Ajoute une colonne "mois_fichier" extraite du nom du fichier source 5. Consolide tous les fichiers en une seule table finale 6. Ignore automatiquement les fichiers déjà traités lors du prochain rafraîchissement (si possible) TRANSFORMATIONS À APPLIQUER SUR CHAQUE FICHIER : [LISTE_TRANSFORMATIONS] (copier ici les transformations de votre requête principale) Génère : 1. La requête Power Query complète utilisant Folder.Files et Table.Combine 2. Comment créer une fonction Power Query réutilisable pour appliquer les mêmes transformations sur chaque fichier 3. La commande pour planifier l'actualisation automatique avec Power Automate Desktop (gratuit)
Conseils pros
FAQ
Articles à lire ensuite
📄
Prompt ChatGPT : Nettoyer un fichier Excel de 50 000 lignes en 5 minutes (VBA + Power Query)
→
📄
Prompt Excel VBA : Automatiser un reporting mensuel multi-feuilles en 30 minutes
→
📄
Prompt SQL : Dédupliquer une base CRM de 100 000 contacts en 4 étapes
→
📄
Prompt SQL : Nettoyer et normaliser une base de données clients exportée d’un ERP
→
📄
Prompt Python Pandas : Nettoyer et analyser un fichier CSV de 500 000 lignes
→
- ✓ 30 prompts professionnels testés en production
- ✓ Variables prêtes à remplir, code prêt à coller
- ✓ Mises à jour incluses à vie
- ✓ Compatible ChatGPT, Claude et Gemini
- ✓ Accès immédiat après paiement
Accéder à la bibliothèque complète


