
Faire écrire une macro ou une requête et la faire relire
Une macro qui supprime des lignes ne se rattrape pas avec Ctrl+Z. Une IA l'écrit en une minute : il reste à la faire relire, à la lancer sur une copie, puis à contrôler le résultat sur des lignes que vous connaissez.
Sommaire
Une macro installée dans la copie, un contrôle des nombres avant et après, et dix lignes vérifiées à la main.
- Il vous faut
- Excel avec la possibilité d'enregistrer des macros (fichier .xlsm), Claude, et une copie du classeur concerné. Dans notre exemple : une feuille « Commandes » de 480 lignes (A numéro, B fournisseur, C date, D montant hors taxes, E statut) et une feuille « Archive » de même structure.
Faire la copie et relever les chiffres de départ
Dupliquez le classeur dans l'explorateur de fichiers ou dans le Finder et travaillez uniquement dans la copie. Dans quatre cellules libres de la feuille Commandes (par exemple H2 à H5, au format Nombre), relevez et notez ces quatre nombres : =NBVAL(A2:A481) pour les lignes remplies, =NB.SI(E2:E481;"Annulée") pour les lignes à déplacer, =SOMME(D2:D481) pour le total des montants, et =NBVAL(Archive!A:A)-1 pour les lignes déjà dans Archive. Les montants de la colonne D doivent être des nombres : si la somme donne zéro, ils sont enregistrés comme du texte, et il faut les convertir avant de continuer. Adaptez les lettres et les numéros de ligne à votre classeur.
Expert : écrire la demande
Décrivez la structure sans coller aucune donnée : noms des feuilles, colonnes, valeurs possibles du statut, ce que la macro doit faire, et ce qu'elle ne doit jamais faire.
Écris-moi une macro VBA pour Excel. Situation : le classeur contient une feuille « Commandes » avec les titres en ligne 1 et environ 480 lignes de données. Colonnes : A N° commande, B Fournisseur, C Date commande (vraie date), D Montant hors taxes (nombre), E Statut. La colonne E contient « En cours », « Livrée » ou « Annulée ». Il existe une feuille « Archive » avec la même structure, qui contient déjà des lignes. Ce que la macro doit faire : déplacer vers la fin de la feuille « Archive » toutes les lignes de « Commandes » dont le statut est « Annulée », puis les retirer de « Commandes ». À la fin, elle affiche un message avec : le nombre de lignes de « Commandes » avant, le nombre de lignes déplacées, le nombre de lignes après. Contraintes : la macro ne doit rien écraser dans « Archive » ; elle ne doit pas dépendre d'un numéro de dernière ligne écrit en dur ; si une des deux feuilles n'existe pas, elle s'arrête avec un message clair avant de rien modifier. Ne touche à aucune autre feuille. Donne le code complet, puis explique en cinq lignes comment l'installer et la lancer, sans nom de menu si tu n'es pas certain de son libellé exact.
Ouvrez l'éditeur de macros (Alt+F11 sous Windows, Option+F11 sous Mac), ajoutez un module vide dans la copie, collez le code, mais ne lancez rien. Si un nom de menu donné par Claude ne correspond pas à ce que vous voyez, décrivez ce que vous voyez et demandez le geste.
Le code suit votre description, pas votre classeur. Si vous avez écrit « Annulée » et que le fichier contient « Annulé », ou « Annulée » suivi d'un espace, la macro peut ne pas trouver ces lignes, selon la façon dont elle compare les textes. Vérifiez les noms de feuilles et la liste des statuts réellement présents (un filtre sur la colonne E les montre).
Faire relire dans une conversation neuve
Ouvrez une nouvelle conversation : celle qui a écrit la macro la jugera correcte. Collez la consigne, puis le code à la place des crochets.
Tu relis une macro VBA écrite par quelqu'un d'autre, avant que je la lance sur un classeur de 480 lignes de commandes. Tu n'as pas écrit cette macro.
Ce qu'elle doit faire : déplacer vers la fin de la feuille « Archive » les lignes de la feuille « Commandes » dont le statut (colonne E) est « Annulée », puis les retirer de « Commandes », sans rien écraser dans « Archive ». Colonnes de « Commandes » : A N° commande, B Fournisseur, C Date commande, D Montant hors taxes (nombre), E Statut. Titres en ligne 1, données de la ligne 2 à la ligne 481.
Rends trois parties.
1. Ce que fait la macro, étape par étape, en français courant, en citant les lignes ou les instructions concernées. Rien d'autre que ce que le code contient.
2. Les cinq risques les plus importants au plus, un par ligne, sans tableau : ce qui pourrait supprimer, écraser ou laisser une donnée dans un mauvais état (erreur en cours de route, filtre actif, lignes masquées, cellules fusionnées, formules, statut écrit autrement). Pour chaque risque, dis s'il est réel dans ce code, ou si le code s'en protège, en citant l'instruction.
3. Un test à faire sur une copie : cinq vérifications précises à faire à la main avec des nombres que je peux contrôler dans Excel (par exemple avec NB.SI) ; pour les lignes ajoutées exprès, des numéros de commande qui commencent par TEST, et le résultat attendu pour chacune.
Réponds en moins de 400 mots. Ne réécris pas la macro. Si tu n'es pas sûr d'un comportement d'Excel, écris « à vérifier » plutôt que d'affirmer.
Code : [coller la macro ici]
Contrôlez aussi les formules de test de la relecture. Dans cet exemple, la première vérification utilise NB(...) sur la colonne des numéros de commande : cette fonction ne compte que les nombres, et elle renvoie zéro sur du texte. Il faut NBVAL. Une relecture trouve des risques réels, et elle se trompe elle aussi : ses formules se testent sur la copie avant de s'y fier.
Exécuter sur la copie avec des lignes piège
Dans la copie, ajoutez à la suite de Commandes les lignes proposées par la relecture : un statut correct, un statut écrit avec un espace à la fin, un statut sans accent, un statut autre, une ligne dont le montant est une formule, une ligne masquée. Relevez de nouveau les quatre nombres de l'étape 01 en tenant compte de ces lignes, puis faites le relevé de l'étape 05 (dix numéros à noter avant le lancement). Lancez ensuite la macro une seule fois.
Comparez avec le message final de la macro : le nombre de lignes déplacées doit égaler le nombre de lignes « Annulée » relevé avant, plus celles de vos lignes piège que la macro doit prendre d'après la relecture (statut qui ne diffère que par la casse ou par un espace de fin) et sans celles qu'elle doit laisser (accent manquant). Les lignes restantes dans Commandes doivent valoir le départ moins ce nombre, et Archive doit avoir gagné autant de lignes. Le total des montants de Commandes et d'Archive ensemble ne doit pas avoir changé.
Vérifier sur un échantillon
Un total correct peut cacher des lignes qui ont changé de place. Avant le lancement de l'étape 04, notez dix numéros de commandes annulées et dix numéros de commandes en cours, au hasard. Après le lancement, pour chacun, regardez dans Commandes puis dans Archive, avec Ctrl+F ou avec =NB.SI(A:A;"CF-0412") : les dix annulées sont une fois dans Archive et plus dans Commandes, les dix en cours sont toujours dans Commandes et absentes d'Archive. Ouvrez aussi trois lignes d'Archive et lisez chaque cellule : la date est une date, le montant un nombre, rien n'est décalé.
Si tout concorde, enregistrez l'original sous un autre nom (c'est votre sauvegarde), installez la macro dans l'original et lancez-la une fois. Gardez la sauvegarde au moins une semaine.
Pour une requête (Power Query), la méthode est la même : demandez à Claude les étapes ou le code de la requête, faites-le relire dans une conversation neuve, appliquez-le sur une copie, et comparez le nombre de lignes en entrée et en sortie, puis dix lignes que vous connaissez. Une requête ne modifie pas la source, mais un filtre ou une jointure mal réglés lui font perdre des lignes.
Qui fait quoi
| L'IA fait | Vous faites |
|---|---|
| Écrit la macro à partir de votre description | Décrivez les feuilles, les colonnes et les statuts réels |
| Relit le code dans une conversation neuve et liste les risques | Contrôlez ses formules de test, qui peuvent être fausses |
| Propose des lignes piège et les résultats attendus | Ajoutez-les dans la copie et lancez la macro une seule fois |
| Ne voit aucune de vos données | Comparez les nombres et dix lignes connues avant de toucher à l'original |
Ce que ce guide ne fait pas
Il ne remplace pas la lecture du code par une personne qui connaît VBA : si la macro touche à des fichiers externes, à des courriels ou à une base de données, faites-la relire par votre service informatique. Il ne couvre pas les classeurs partagés ou protégés, ni les macros qui s'exécutent à l'ouverture. Une macro modifie des données : conservez toujours la sauvegarde de l'original.
À lire ensuite
Une question sur ce guide ? Nous écrire