Lire l'article
Vous avez ajouté « Remise » dans votre classeur, enregistré, puis cliqué pour mettre à jour. Rien. Si la nouvelle colonne n'apparaît pas, vous n'êtes pas seul. Le tableau chargé est identique à hier, et votre TCD n'a toujours pas de champ Remise. Vous rouvrez pourtant le classeur : la colonne est bien là.
Bonne nouvelle : les données n'ont rien, c'est le traitement qui a figé la liste des colonnes à un moment de son histoire. Il y a quatre endroits où cela se produit, et chacun se corrige en une minute une fois trouvé. Tuto complet, cause par cause.
Ouvrez l'éditeur (Données > Requêtes et connexions, puis double-clic). Dans le volet de droite, cliquez sur la toute première étape, Source. Si Remise s'affiche ici, la source est bonne et le problème vient plus bas. Descendez alors, ligne après ligne, jusqu'à l'endroit où Remise disparaît : c'est là qu'il faut corriger.
Si Remise n'est même pas visible à Source, le problème est en amont : mauvais classeur, mauvaise feuille, ou une plage de cellules qui s'arrête avant la nouvelle colonne ajoutée (cause 2 ci-dessous).
Une astuce avant d'aller plus loin : ce que vous voyez est mis en cache. Cliquez sur Accueil > Actualiser l'aperçu pour être sûr de regarder la structure des données d'aujourd'hui, pas celle de la dernière ouverture.
C'est la cause la plus fréquente. Un jour, vous avez sélectionné les champs utiles et choisi Supprimer d'autres colonnes. Power Query a alors écrit dans la barre de formule :
= Table.SelectColumns(Source, {"Date", "Client", "Montant"})
Cette ligne ne dit pas « enlève Commentaire », elle dit « garde exactement ces trois-là ». Toute colonne supplémentaire arrivée depuis est ignorée, sans message.
Deux façons de résoudre :
"Remise". C'est rapide, mais il faudra recommencer à chaque ajout d'une colonne dans le classeur.Table.RemoveColumns, qui laisse passer tout ce qu'il ne connaît pas. Les prochaines colonnes entreront seules.Le même mécanisme se cache ailleurs : l'étape Réorganiser, Type modifié, ou un champ personnalisé qui utilise each pour parcourir des noms de colonnes figés. Vérifiez chacun d'eux.
« Premiers gestes sur Power Query », extrait de notre livre (référence en fin d'article), p. 118.
Si vous avez choisi d'importer les données à partir d'une plage de cellules (A1:F500) ou d'une plage nommée, PowerQuery lit exactement ces cellules. La colonne G ajoutée à droite n'en fait pas partie.
Le remède : dans le fichier source, sélectionner les données et les transformer en tableau structuré (Insertion > Tableau, ou Ctrl + L), puis donner un libellé clair au tableau (Création de tableau > Nom du tableau). Ce tableau s'étend tout seul quand on lui ajoute un champ ou une ligne. Dans le traitement, pointez ensuite sur ce tableau plutôt que sur la plage : à Source, remplacez Kind="Range" ou le nom de la plage par Kind="Table" et le nom du tableau.
Si la source est un fichier CSV, la question ne se pose pas : tout est lu. C'est le cas aussi pour des données web, tant que la page n'a pas changé de structure. Et si c'est une base, la source de données livre toujours l'intégralité de la vue.
Trois opérations conservent une liste figée sans que cela se voie :
Dans les trois cas, la correction se fait une fois, puis le traitement suit la source.
Il arrive que tout soit correct dans l'éditeur, et que la feuille Excel ne bouge pas. Trois vérifications :
« Concepts à ne pas confondre : Désactiver le chargement vs Ne pas inclure dans l'actualisation », extrait du même livre, p. 101.
Remise entre enfin, mais tout au bout, en dernière position, et sans type. C'est normal : Power Query la place là où la source la met, et Type modifié ne la connaît pas. Deux gestes pour ajuster :
Table.ReorderColumns limité, que vous pouvez compléter avec MissingField.Ignore pour qu'il tolère l'absence.Et si vous voulez renommer Remise en Remise_HT, faites-le dans Power Query, jamais dans le classeur d'origine : une modification du nom côté source casserait tout ce qui cite l'ancien nom. Notre article Colonne renommée à la source : réparer et blinder vos requêtes, traite ce cas symétrique.
Une fois la cause réglée, reste le réflexe de rafraîchir que personne ne fait. Deux options :
ThisWorkbook.RefreshAll, dans l'événement Workbook_Open, met tout à jour, requête Power Query et tableaux croisés compris. Décochez « Activer l'actualisation en arrière-plan » dans les propriétés si une macro doit utiliser le résultat juste après.Un dernier cas qui ressemble à un champ manquant : la mise à jour s'arrête sur une fenêtre demandant de définir des niveaux de sécurité des sources, et le tableau reste ancien. Cela arrive dès qu'un traitement combine deux sources (votre classeur et une seconde requête vers une base ou un site). Choisissez « Organisationnel » pour les deux, ou Fichier > Options > « Ignorer les niveaux » sur un classeur purement interne. Relancez ensuite : Remise apparaît.
Faut-il tout recréer pour voir la colonne ? Non, jamais. Créer un second traitement ne ferait que dupliquer le problème. Il suffit de corriger la ligne qui fige la liste.
Puis-je copier le traitement d'un classeur à l'autre ? Oui : clic droit > Copier, puis Coller dans l'autre classeur. Le code M suit, y compris la correction que vous venez de faire.
Remise apparaît, mais pas dans l'ordre d'origine, est-ce grave ? Non. L'ordre des champs n'a aucune incidence sur un tableau croisé ou un modèle. Ne réorganisez que si un lecteur humain lit le tableau chargé.
Pourquoi un filtre posé sur le tableau Excel disparaît-il à la mise à jour ? Parce que le tableau est reconstruit. Posez vos filtres dans Power Query, ou dans le tableau croisé, pas sur le tableau chargé.
Peut-on ajouter des colonnes calculées à côté du tableau chargé ? Oui, dans les cellules à droite du tableau vert, à condition qu'elles soient dans le tableau (Excel les conserve à la mise à jour) et non dans une plage voisine.
