Avec Power Query et Claude, le partage des rôles est simple : Claude écrit le code M de la requête à partir d'une description précise de vos colonnes et de votre règle, Power Query rejoue ces étapes à chaque actualisation, sans IA. Claude écrit bien ce code, explique une erreur et repère des cas que vous n'aviez pas prévus. Il se trompe aussi de colonne, met parfois deux requêtes dans un même bloc, et ne voit pas vos extractions si vous ne les lui décrivez pas.
La méthode ci-dessous vient d'une formation Claude pour Excel menée chez Japcook, distributeur de produits alimentaires. Le cas : rapprocher le suivi des paiements de l'extraction des achats pour connaître, par référence, les quantités payées et pas encore livrées. Les prompts et le code M sont donnés sur des données fictives, à adapter à vos fichiers.
Ce que Claude fait bien, et moins bien, sur Power Query
Claude est utile sur Power Query pour une raison précise : une requête est une suite d'étapes écrites en langage M, et ce langage est bien documenté. Décrire le résultat voulu en français et obtenir le code complet est plus rapide que de cliquer chaque transformation dans l'éditeur, surtout quand on n'a jamais appris Power Query.
| Ce que Claude fait bien | Ce qu'il fait moins bien |
|---|---|
| Écrire une requête complète, commentée en français, à coller dans l'éditeur avancé | Choisir la bonne colonne quand deux en-têtes se ressemblent (un coût unitaire pris pour une quantité) |
| Expliquer un message d'erreur et corriger l'étape en cause | Séparer deux besoins : demandés ensemble, ils finissent dans un même bloc de code |
| Repérer, en lisant une copie des fichiers, des lignes qu'une règle trop simple ferait disparaître | Deviner une règle métier qui n'est écrite nulle part (ce que veut dire « livré » dans votre ERP) |
| Relire une requête existante et dire ce que fait chaque étape | Voir vos fichiers depuis l'add-in Excel : il ne lit que le classeur ouvert |
La conséquence pratique : Claude sert à écrire, expliquer et corriger la requête. La vérification du résultat reste à faire, avec un total calculé indépendamment. Si vous cherchez d'abord une vue d'ensemble des outils, notre comparatif de l'IA dans Excel en PME situe Copilot, Claude et ChatGPT.
Le cas : rapprocher paiements et achats pour suivre le stock en transit
Un distributeur qui importe par conteneurs paie souvent la marchandise avant de la recevoir, par lettre de crédit. Entre le paiement et l'arrivée en entrepôt, ces quantités sont du stock en transit : payé, pas encore disponible, à compter dans les prévisions d'achat.
L'information est répartie dans deux fichiers qui ne se parlent pas :
- le suivi des paiements, tenu par le service financier, qui dit quelles commandes sont payées, sans détailler les produits ;
- l'extraction des achats de l'ERP, qui donne les produits et les quantités de chaque commande, avec son statut (commandée, réceptionnée, facturée).
Le calcul attendu tient en une phrase : pour chaque référence, la somme des quantités des commandes payées et pas encore réceptionnées. Pour y arriver, la requête doit mettre les numéros de commande au même format dans les deux fichiers, écarter les lignes qui ne sont pas des produits (remise, transport), sommer par référence, et remplacer le résultat à chaque actualisation au lieu de l'ajouter au précédent.
Cas client : Japcook
Chez Japcook, distributeur de produits alimentaires, le responsable achats calculait ce stock en transit à la main toutes les deux semaines : filtrer les conteneurs payés et pas encore arrivés dans le suivi du service financier, ouvrir chaque commande dans l'ERP pour voir son contenu (jusqu'à quatre produits par conteneur), puis reporter les quantités dans son état de stock. C'était la tâche qui lui prenait le plus de temps.
Pendant la deuxième journée de formation, sur ses fichiers, nous avons trouvé la correspondance entre les deux sources : le numéro de pièce de l'extraction des achats est le numéro de commande du suivi, à une barre oblique près. Claude, à qui le responsable achats avait confié une copie des fichiers, a relevé des lettres de crédit payées sans date de livraison qu'un filtre sur la date aurait fait disparaître, ainsi qu'une confusion de colonnes entre les deux fichiers. La règle retenue : paiement effectué et commande encore au statut « commande » dans l'extraction, sans filtre de date.
La recherche commande par commande est remplacée par une requête Power Query écrite avec Claude. Deux autres requêtes ramènent le stock à date et à terme, et les lots en DDM courte. Le geste qui reste : déposer trois extractions dans leurs dossiers et cliquer sur Actualiser tout. Le jour même, une ligne retirée du suivi par le service financier s'est retrouvée dans le résultat à l'actualisation suivante.
Ce qui a coincé : une colonne mal choisie, une extraction de stock qui contenait des lignes de sous-total, un contrôle de confidentialité à régler. La consigne laissée : faire tourner les requêtes sur deux ou trois cycles, chiffres vérifiés, avant de s'y fier.
Écrire la requête avec Claude, étape par étape
La requête s'obtient en trois temps : faire décrire les fichiers, demander le code avec la règle écrite noir sur blanc, puis coller et itérer sur l'erreur. Demander le code directement, sans la première étape, est la cause la plus fréquente de requêtes qui pointent vers des colonnes qui n'existent pas.
1. Faire décrire les colonnes avant de demander le code
Joignez les deux fichiers (une copie, ou un extrait aux valeurs modifiées) et demandez d'abord une description. Les noms exacts des colonnes sont alors dans la conversation avant que la moindre ligne de code soit écrite, avec leurs particularités : retours à la ligne dans les en-têtes, numéros stockés en nombre ou en texte.
Je joins deux fichiers : « Suivi paiements.xlsx » (onglet « Suivi »), tenu par le service financier, et la dernière extraction des achats de notre ERP, « Achats.xlsx ». Décris-moi les colonnes de chaque fichier, exactement comme elles sont écrites, avec leur lettre. Indique aussi le format des numéros de commande dans chaque fichier. Ne modifie rien.
2. Demander la requête, avec la règle métier écrite
La demande nomme les fichiers, les colonnes avec leur lettre, et chaque règle. Elle dit aussi ce que Claude ne peut pas deviner : ici, que « BL » et « Facture » signifient que la marchandise est déjà rentrée.
Écris-moi une requête Power Query : le code M complet, à coller dans l'éditeur avancé d'Excel. Contexte : je suis acheteur chez un distributeur. Toutes les deux semaines, je calcule par référence les quantités payées mais pas encore livrées. Sources : - « Suivi paiements.xlsx », onglet « Suivi », lu sans être modifié. Le chemin en première ligne du code. - Le dossier « Exports achats » : prendre le fichier le plus récent dont le nom commence par « Achats ». Règles : - dans le suivi, garder les lignes où Statut paiement (E) vaut « Payé » ; - dans l'extraction, garder les lignes où Statut (F) vaut « Commande » (BL et Facture veulent dire déjà livré) ; - rapprocher N° pièce (C) de l'extraction avec N° commande (B) ou N° contrat (D) du suivi, après avoir retiré espaces, barres obliques, tirets et points ; - écarter les lignes de remise et de transport ; - sommer Quantité (H) par Référence (A), la référence toujours en texte. Format : une seule requête nommée « EnTransit », une étape par ligne avec un commentaire en français. Ajoute une colonne avec le nom du fichier lu. Dis-moi si tu as des questions avant d'écrire le code.
La dernière phrase compte. Sur ce type de demande, Claude revient souvent avec deux ou trois questions (que faire d'une commande payée absente de l'extraction ? d'une ligne sans référence ?) qui évitent une première version fausse. Si vous avez aussi besoin de modifier l'onglet qui lit la requête, faites-le dans une autre demande : mélanger ce qui relève de Power Query et ce qui relève du classeur produit des réponses confuses.
3. Coller la requête, actualiser, renvoyer l'erreur
Dans Excel sur Windows : Données, Obtenir des données, À partir d'autres sources, Requête vide. Sur Mac : Données, Obtenir des données (Power Query), Requête vide. Dans l'éditeur, Accueil, Éditeur avancé : tout effacer, coller le code, Terminé. Renommez la requête avec le nom donné dans le prompt, puis Fermer et charger.
Chaque étape du code apparaît à droite, dans la liste des étapes appliquées. Cliquer sur une étape montre la table à ce moment-là : c'est le moyen le plus rapide de voir où une ligne disparaît. Quand une étape est en erreur, le message exact (ou une capture d'écran) part dans la conversation, avec cette consigne :
L'actualisation s'arrête à l'étape « Types » avec ce message : [message ou capture]. Voici le code actuel de la requête : [code]. Explique-moi la cause avant de corriger, et ne modifie que l'étape concernée.
Pour modifier une requête des semaines plus tard, sans la conversation d'origine : Données, Requêtes et connexions, clic droit sur la requête, Modifier, puis Éditeur avancé. Copiez le code, collez-le dans une nouvelle conversation et décrivez le changement voulu.
Un exemple de code M complet, sur des données fictives
Voici le type de requête obtenu, réécrit sur des fichiers fictifs. Elle lit le suivi des paiements sans le modifier, prend la dernière extraction des achats d'un dossier, rapproche les deux par une clé nettoyée et somme les quantités par référence. Seules les deux premières lignes sont à adapter à votre poste.
// Requête « EnTransit » : quantités payées et pas encore livrées, par référence.
let
// 1. Où sont les fichiers (les deux lignes à adapter)
CheminPaiements = "C:\Partage\Finance\Suivi paiements.xlsx",
DossierAchats = "C:\Partage\Achats\Exports achats\",
// 2. Une seule règle pour mettre les numéros au même format :
// texte, majuscules, sans espaces, barres obliques, tirets ni points
NormaliserCle = (valeur as any) as nullable text =>
if valeur = null then null
else Text.Upper(Text.Remove(Text.From(valeur), {" ", "/", "-", "."})),
// 3. Le suivi des paiements, lu sans être modifié, lignes payées seulement
Paiements = Excel.Workbook(File.Contents(CheminPaiements), true, true){[Item = "Suivi", Kind = "Sheet"]}[Data],
Payees = Table.SelectRows(Paiements, each [Statut paiement] = "Payé"),
// 4. Les clés payées : N° commande ou N° contrat, nettoyées, sans doublon
ClesPayees = List.Buffer(List.Distinct(List.RemoveNulls(
List.Transform(Payees[#"N° commande"], NormaliserCle)
& List.Transform(Payees[#"N° contrat"], NormaliserCle)))),
// 5. La dernière extraction déposée dans le dossier (les fichiers ~$ sont exclus)
Fichiers = Table.SelectRows(Folder.Files(DossierAchats),
each Text.StartsWith([Name], "Achats") and Text.Lower([Extension]) = ".xlsx"),
PlusRecent = Table.First(Table.Sort(Fichiers, {{"Date modified", Order.Descending}})),
Achats = Table.SelectRows(Excel.Workbook(PlusRecent[Content], true, true), each [Kind] = "Sheet"){0}[Data],
// 6. Les lignes encore en commande (BL et Facture veulent dire déjà livré)
EnCommande = Table.SelectRows(Achats, each [Statut] = "Commande"),
// 7. On écarte les lignes qui ne sont pas des produits
MotsExclus = {"remise", "transport"},
SansParasites = Table.SelectRows(EnCommande, each
let d = if [Désignation] = null then "" else Text.Lower(Text.From([Désignation]))
in not List.AnyTrue(List.Transform(MotsExclus, (mot) => Text.Contains(d, mot)))),
// 8. Rapprochement : on garde les commandes dont le numéro figure parmi les clés payées
Rapprochees = Table.SelectRows(SansParasites, each List.Contains(ClesPayees, NormaliserCle([#"N° pièce"]))),
// 9. Les types : référence en texte, quantité en nombre lue au format français
Types = Table.TransformColumnTypes(Rapprochees, {{"Référence", type text}, {"Quantité", type number}}, "fr-FR"),
// 10. Somme par référence, puis le nom du fichier lu, pour le contrôle
ParReference = Table.Group(Types, {"Référence"}, {{"Quantité en transit", each List.Sum([Quantité]), type number}}),
AvecSource = Table.AddColumn(ParReference, "Fichier lu", each PlusRecent[Name], type text)
in
AvecSource
Trois choix de ce code méritent d'être compris avant de l'adapter :
- La clé est nettoyée par une seule fonction (
NormaliserCle), appliquée des deux côtés. Un « 2026/0145 » du suivi et un « 20260145 » de l'extraction deviennent la même clé. - Le rapprochement se fait par une liste de clés sans doublon, pas par une fusion de tables. Si une commande apparaît deux fois dans le suivi (deux échéances de paiement), une fusion dupliquerait ses lignes d'achat et doublerait les quantités. Ici, chaque ligne d'achat est gardée une seule fois.
- Le filtre des lignes parasites porte sur la désignation. Si votre ERP utilise des codes articles dédiés pour la remise et le port, filtrez plutôt sur ces codes : une désignation de produit qui contient le mot « transport » serait écartée à tort.
Le résultat se charge dans un tableau nommé comme la requête. Dans votre état de stock, une formule du type =SOMME.SI(EnTransit[Référence];[@Référence];EnTransit[Quantité en transit]) va chercher la quantité de chaque référence. À chaque actualisation, la table EnTransit est entièrement remplacée : une commande réceptionnée depuis la dernière fois n'y figure plus. La documentation Microsoft détaille les fonctions utilisées, notamment Folder.Files et Table.Group.
Pour un autre usage de Power Query, empiler des exports mensuels plutôt que rapprocher deux sources, voir notre article sur la consolidation des ventes et des objectifs avec Power Query.
Les pièges : types, clés, doublons, chemins, actualisation
Une requête Power Query peut tourner sans erreur et renvoyer un résultat faux. Les causes ci-dessous sont celles qui reviennent le plus souvent sur des extractions d'ERP, et la plupart ne déclenchent aucun message.
| Piège | Ce qu'on observe | Correction |
|---|---|---|
| Types de colonnes | Une référence 100050 en nombre dans un export, « 100050 » en texte dans l'autre : deux lignes pour le même produit | Forcer la référence en texte, et lire les nombres et dates avec la culture « fr-FR » |
| Clés mal formatées | Aucune correspondance, ou seulement une partie, alors que les commandes existent des deux côtés | Une seule règle de nettoyage appliquée aux deux colonnes, puis compter les lignes rapprochées |
| Doublons | Quantités doublées après une fusion, ou lignes de sous-total comptées avec les lignes de détail | Dédoublonner les clés avant le rapprochement, choisir une extraction sans sous-totaux |
| Chemins de fichiers | La requête marche sur un poste et pas sur l'autre, ou lit un ancien fichier resté dans le dossier | Chemin en première ligne du code, un dossier par extraction avec un seul fichier dedans, nom qui commence toujours pareil |
| Actualisation | Des formules qui ne trouvent plus la table, des données de test restées dans un fichier copié | Ne pas renommer la requête ni l'onglet lus par les formules, actualiser après chaque copie de classeur |
Deux messages surprennent souvent la première fois. Le contrôle de confidentialité apparaît quand une requête combine deux sources différentes (ici, un fichier et un dossier) : il se règle dans les options de requête, en donnant le même niveau de confidentialité aux deux sources internes. Le message « ce classeur comporte des liaisons » ne vient pas de Power Query, mais de formules qui pointent vers d'autres classeurs.
Et si le dossier est vide ou le fichier introuvable, l'actualisation échoue : la table garde ses données précédentes, elle n'est pas vidée. Sans actualisation, rien ne bouge, ce qui permet de garder l'état des mois passés dans des copies du classeur. Notre article sur le tableau Excel qui ne se met pas à jour détaille les autres causes de blocage côté classeur.
Vérifier le résultat avant de s'y fier
Une requête qui s'exécute sans erreur prouve seulement que le code est valide, pas que la règle est juste. Le contrôle se fait sur le résultat, avec des chiffres calculés indépendamment de la requête.
- Le nom du fichier lu. Après chaque actualisation, la colonne « Fichier lu » confirme que la requête a pris la bonne extraction, pas celle de la quinzaine précédente.
- Le contrôle croisé sur deux ou trois commandes. Choisir une commande payée et non livrée, filtrer l'extraction à la main sur son numéro, comparer les quantités avec celles de la requête. Faire de même avec une commande déjà livrée : elle ne doit pas apparaître.
- Les totaux. Comparer le nombre de commandes payées dans le suivi avec le nombre de clés rapprochées. Un écart s'explique ligne par ligne : commande payée absente de l'extraction, numéro mal saisi, commande déjà réceptionnée.
- Plusieurs cycles. Faire tourner la requête deux ou trois fois, en gardant le calcul manuel en parallèle, avant de s'y fier seul.
Claude peut aider sur ce contrôle, à condition de lui demander de vérifier et pas de confirmer : « voici le résultat de la requête et l'extraction, trouve les commandes payées qui n'apparaissent pas et explique pourquoi ». Notre méthode pour vérifier une réponse de Claude s'applique telle quelle aux chiffres d'une requête.
Ajouter le stock et les DDM courtes avec la même méthode
Une fois la première requête en place, les suivantes se construisent de la même façon : une extraction, un dossier, une requête par besoin. Chez Japcook, deux requêtes ont suivi celle du stock en transit, avec deux logiques différentes.
- Le stock à date et à terme, sommé par référence. Un même produit peut être sur plusieurs dépôts et plusieurs lots : la requête additionne, comme le faisait jusque-là un tableau croisé construit à la main.
- Les lots en DDM courte, sans agrégation. La date de durabilité minimale est propre à chaque lot : la requête garde les lots dont la DDM tombe sous le seuil choisi (quelques mois) et les valorise au prix de revient.
La différence entre les deux justifie deux requêtes séparées, et deux extractions distinctes. Une extraction de stock par lot présentée en arborescence ajoute une ligne de sous-total au-dessus des lots de chaque produit : sommée telle quelle, elle double le stock. Avant de modifier une requête parce que l'extraction change, décrivez à Claude pourquoi l'ancienne ne convient plus et demandez-lui les options possibles, plutôt que la correction directe. Le suivi des DDM courtes et de la couverture est détaillé dans notre article sur le suivi des DDM courtes dans Excel.
Ce geste toutes les deux semaines, déposer les extractions et actualiser, puis contrôler, est ce que nous construisons dans la formation Claude pour Excel en distribution, sur les fichiers de l'équipe achats ou commerciale.
Add-in Claude pour Excel ou Claude dans le navigateur, et la confidentialité
Le choix de l'outil dépend du nombre de fichiers. Au moment de nos formations (septembre 2026), l'add-in Claude pour Excel travaillait sur le classeur ouvert : formules, tableaux, onglets. Il ne créait pas de requête Power Query et ne voyait pas le dossier où l'on dépose les extractions. Nous détaillons ce qu'il fait et ne fait pas dans notre article sur les limites de l'add-in Claude pour Excel.
| Besoin | Outil |
|---|---|
| Une formule, un tableau, un onglet dans un seul classeur | L'add-in Claude pour Excel |
| Écrire ou corriger une requête qui lit plusieurs fichiers | Claude dans le navigateur ou l'application, dans une conversation ou un projet, puis le code collé dans Power Query |
| Faire lire un dossier entier pour repérer les colonnes et les anomalies | Cowork, dans l'application de bureau, sur un dossier de copies |
| Rejouer le même traitement à chaque nouvelle extraction | Power Query, sans IA, avec Actualiser tout |
La distinction compte au quotidien. Claude exécute une tâche de façon probabiliste : il peut se tromper, mais il signale aussi un fichier qui a changé ou une ligne inhabituelle. Power Query rejoue les mêmes étapes à l'identique, et ne signale rien. Repasser par Claude à chaque mise à jour serait plus long et plus risqué ; une fois la règle connue, la requête est plus fiable.
Côté confidentialité, quelques règles simples :
- Pour écrire le code, Claude n'a pas besoin de vos données : les noms de colonnes, leur format et quelques lignes aux valeurs modifiées suffisent.
- Un fichier partagé (le suivi du service financier, par exemple) n'est jamais confié à Claude en original, seulement en copie, puisqu'un projet ou Cowork peut modifier les fichiers. La requête Power Query, elle, lit l'original sans l'écrire.
- Vérifiez les conditions de votre abonnement : les offres Team et Enterprise relèvent des conditions commerciales d'Anthropic, les offres individuelles ont un réglage sur l'utilisation des conversations. En cas de doute, ne joignez pas de données clients ou de prix.
Questions fréquentes
Pour aller plus loin
Claude fait gagner du temps sur l'écriture de la requête, la lecture d'une erreur et la détection de cas imprévus. Le gain durable vient de Power Query, qui rejoue la règle à chaque extraction sans y repasser. Entre les deux, la vérification sur quelques commandes et sur les totaux ne se délègue pas.
- Formation Claude pour Excel : formules, base unique, Power Query et contrôles, sur les fichiers de l'équipe.
- Claude pour Excel, ce que l'add-in fait et ne fait pas : pour savoir quand rester dans le classeur et quand passer par une requête.
- Consolider ventes et objectifs avec Power Query : empiler des exports mensuels et les comparer aux objectifs.
- Suivre les DDM courtes et la couverture de stock dans Excel : les seuils, les formules et la synthèse à envoyer au commerce.
- IA dans Excel : Copilot, Claude ou ChatGPT : le choix de l'outil selon vos usages.