PowerQuery : conserver les données saisies dans Excel et liées à une requête externe

Le problème est un peu complexe à expliquer simplement.

Supposons par exemple que vous ayiez à extraire des données de votre ERP pour y ajouter des informations spécifiques pour un rapport. L'idéal pour vous serait d'ajouter ces informations dans Excel, en face de la ligne correspondante. Et le plus important, il faut que ces informations soient conservées à chaque rafraichissement de l'extraction de l'ERP.

C'est ce que permet cette procédure.

Cliquez sur le lien ci-dessous pour télécharger le fichier exemple.

Voici la vidéo. Le tutoriel pas à pas se trouve ici :

https://www.xlerateur.com/divers/2019/10/09/gerer-lajout-manuel-de-donnees-dans-une-table-liee-a-un-fichier-externe-9865/

Source : https://exceleratorbi.com.au/self-referencing-tables-power-query/

Pour marque-pages : Permaliens.

31 réponses à PowerQuery : conserver les données saisies dans Excel et liées à une requête externe

  1. pbastres@antola-cooperation.com dit :

    C’est effectivement un cas de figure que l’on rencontre très régulièrement en entreprise, permettra de gagner du temps de ressaisie sur n’importe quel suivi dont une partie des données est sous ERP

  2. Guichard dit :

    Bonjour Gaetan : Merci pour ce post très intéressant . Le principe fonctionnent t’il également avec de formules ? Je suppose que oui !!!

  3. pbastres@antola-cooperation.com dit :

    Ne semble pas fonctionner avec une formule, je pense qu’il faut créer une colonne calculée dans powerquery

  4. Gaetan Mourmant dit :

    Oui, effectivement, on ne peut pas ajouter une formule dans la colonne commentaire. Elle sera remplacée par sa valeur (on peut remplacer le type de données par any pour conserver une valeur numérique). Personnellement, j’évite au maximum d’ajouter une formule valide sur une seule ligne, car en terme de structure de données, ca n’est généralement pas une bonne pratique, mais je suis conscient de certaines exceptions. Une des raisons est la tendance à recopier des formules sur toute la colonne, et donc de prendre le risque d’écraser des données manuelles. Donc, soit on a uniquement des données manuelles, soit on a uniquement une formules. SI on doit gérer les deux, en général, j’ajoute une colonne de saisie manuelle et une colonne de formule testant si la saisie manuelle a été faite ou pas.

    Par contre, ajouter une nouvelle colonne avec une formule sur toute la colonne semble fonctionner correctement. Cette nouvelle colonne ne fait pas partie de la table chargée dans PowerQuery.

  5. Gaetan Mourmant dit :
  6. O2L dit :

    très bonne découverte et explication

  7. Laurent dit :

    Bonjour,
    Merci pour ce tuto.
    Attention, il y a une grosse limite à cela :
    Puisque l’on parle par exemple de données venant d’un ERP, une ligne peut très bien apparaître, puis disparaître pour réapparaître (par exemple suite à filtre). Dans ce cas le commentaire est perdu à tout jamais.
    Dans l’exemple il suffit, dans le fichier csv, de supprimer la ligne ayant fait l’objet d’un commentaire, d’actualiser les données, puis de remettre cette ligne dans le csv et d’actualiser à nouveau, le commentaire est perdu; ce qui est tout d’une certaine manière logique mais peut finalement nous poser des soucis de suivi.
    Laurent

  8. Gaetan dit :

    Bonjour Laurent
    Oui, entièrement d’accord. Je pense que je vais regrouper les limites de cette approche.
    Comme vous l’avez mentionné, c’est effectivement une lmite logique, mais pas forcément évidente au départ.
    Merci
    Gaetan

  9. Katell dit :

    Bonjour,

    je souhaite appliquer cette méthode cependant lors de la fusion des requêtes, toutes mes lignes sont identiques. Je perds toutes mes données sauf une que j’ai en centaine de lignes.

    De plus, je n’arrive pas à fixer les commentaires associés à la ligne. Je crois que mon programme est trop chargé et je ne sais pas où placer le code que vous proposez pour ne pas mettre en péril toutes mes données.

    Merci d’avance

    Katell

  10. Brice dit :

    extra ! merci 🙂

  11. Yoann dit :

    Bonjour,
    super explication !
    je rencontre un problème car ma source de données ne donne pas de numéro a la suite mais un horodateur ( en effet je me sert d’un formulaire google pour que mes employé face leurs pointages )
    j’aimerai pouvoir y ajouter un commentaire afin de savoir si la secrétaire a saisi les heur ou pas

  12. Gaetan dit :

    Bonjour Yoann,
    Peut être pouvez vous transformer dans PQ l’horodateur en numérique (non testé).

  13. Charlotte dit :

    Génial ! Merci beaucoup ! Je me doutais que ça existait mais je n’aurais jamais réussi à le trouver seule sans votre post.
    Cela promet du temps de travail optimisé et des opérationnels sasisfaits 🙂

  14. Stephane dit :

    Bonjour,
    sauriez-vous me dire si la même chose est envisageable avec un tableau issue d’une requête via Microsoft Query qui va pointer sur une table SQL via ODBC?

  15. Gaetan Mourmant dit :

    Bonjour Stephane, je ne suis pas certain, il faudrait essayer. On peut regarder ensemble, vous pouvez me contacter par email.

  16. Luc dit :

    Bonjour Gatean,
    Comme toujours, merci encore pour fournir des solutions concrêtes !
    Y a t il depuis, avec les évolutions Excel ces derniers temps, une procédure simplifiée ?

  17. Gaetan Mourmant dit :

    Bonjour, cela fait un moment que je n’ai pas regardé. Je n’ai rien vu passer sur ce sujet, mais ca serait intéressant de regarder à nouveau.

  18. Extra
    Merci
    J’ai élargi le périmètre de Power BI
    qui devient également un outil de “saisie”

  19. Nora GUNKEL dit :

    Bonjour, je trouve votre vidéo simple et très bien expliquée !
    Malheureusement un message d’erreur apparait lorsque j’enregistre le nouveau code modifié. Le message d’erreur est le suivant : “Expression.Error : Désolé… Nous n’avons pas trouvé la colonne « Nom » de la table.” (à savoir que la colonne “Nom” est la première du tableau)
    J’ai essayé plusieurs fois avec des tableaux et des informations différentes en reprenant pas à pas la vidéo mais il y a toujours ce message d’erreur. A savoir que je n’ai absolument pas touché aux informations de la requête, ni le contenu du tableau, ni l’en-tête (je n’ai pas modifié le nom de la colonne).
    Savez-vous pourquoi ce message d’erreur apparaît et avez-vous une solutions ?
    Merci d’avance pour votre aide

  20. Gaetan Mourmant dit :

    Bonjour, dans la colonne Nom, vous avez quels types de données (numérique, texte, etc).
    Sinon, sans voir les données, je ne sais pas trop.

  21. GUNKEL dit :

    Bonjour, la colonne est en texte mais je viens de changer et c’est le même problème. Est-ce que je pourrais vous envoyer les documents ?

  22. Nora GUNKEL dit :

    C’est bon, j’ai trouvé mon erreur. J’avais quand même loupé une étape. Lorsque j’ai modifié le nom de la deuxième source, je ne l’ai pas modifié sur la ligne du dessous.
    Désolé pour le dérangement
    En tout cas, la vidéo est très bien faite, bien expliqué. Bravo !

  23. Garen dit :

    Bonjour Gaetan, merci beaucoup pour ces explications fournies, ça a solutionné mon problème de colonnes libres ajoutées à du retraitement Powerquery.

  24. Sarah P. dit :

    Bonjour Gaetan,
    Tout d’abord bravo et merci pour ce tuto dont je me sers régulièrement 😉
    Pour aller plus loin, est-ce qu’il est envisageable de conserver des lignes (et leur contenu) ajoutées au tableau après traitement Powerquery, et qui ne disparaitraient pas quand on relance la requête ?

  25. Yohann dit :

    Bonjour Gaetan,
    Merci pour ton tuto qui m’a bien aidé !

    par contre, je n’arrive pas à supprimer définitivement les colonnes dupliquées en toute fin de processus. en effet, j’ai mes colonnes ajoutées + des doublons disposés un peut n’importe comment sur lesquelles sont reportées mes données ajoutées lorsque j’actualise. j’ai passé en revue l’ensemble du processus pour voir si je pouvais agir dessus mais je ne trouve pas. à présent, quand je consulte les champs disponibles dans l’étape “Requêtes Fusionnées” : il y a l’ensemble des doubles. par contre rien dans l’éditeur PQ (tout semble comme attendu)

  26. Gaetan Mourmant dit :

    Sarah, je vous ai contacté par email.
    Yohann, sans voir les données, ca va etre un peu difficile de répondre à la question. Par expérience, ca vaut le coup de refaire le processus de zéro. C’est compliqué et c’est facile de louper une étape. On peut regarder ensemble, je vous envoie un email.

  27. Yohann dit :

    Bonjour Gaetan,

    En effet, c’est sûrement dû à un petit paramètre que j’aurai loupé dans le processus. je test à nouveau.

    merci en tous cas !

  28. Yohann dit :

    Bonjour Gaetan,
    j’ai tout repris à 0 et bien suivi chaque étape méticuleusement mais j’obtiens la même chose : Mes colonnes manuelles en doublon réapparaissent à chaque actualisation. D’ailleurs, les données fraichement inscrites se reportent sur la colonne doublon correspondante… peut-être une piste ?

  29. Bruno Corrao dit :

    Bonsoir et merci pour cette solution que je vais essayer de mettre en pratique. En effet, on me demande d’exporter des données via une base de données en SQL dont certaines colonnes seront renseignées manuellement lorsque POWER QUERY aura permis la transformation dans un fichier EXCEL. Bien entendu, mes collègues veulent garder leurs saisies lors de l”actualisation. Je me lance sans l”aventure dès demain. Merci encore.

  30. Kelly DEAN dit :

    Bonjour, comment cela fonctionne si l’on a besoin de 3 colonnes commentaires qui seront saisies manuellement et dont on souhaite conserver les données lors du rafraîchissement de la requête ?

  31. Gaetan Mourmant dit :

    Bonjour Kelly,
    J’ai fait une mise à jour de cette technique que vous pouvez trouver ici et qui explique comment gérer plusieurs colonnes, y compris des colonnes de formule.
    https://www.xlerateur.com/divers/2024/02/08/conserver-les-donnees-lors-dune-liaison-entre-des-donnees-externes-de-type-csv-et-powerquery-14117/
    Cordialement

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.