IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

POWER Discussion :

Transposer multiples délimiteurs et champs en ligne


Sujet :

POWER

  1. #1
    Membre à l'essai
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2022
    Messages : 31
    Points : 16
    Points
    16
    Par défaut Transposer multiples délimiteurs et champs en ligne
    Bonjour,
    J'ai un gros souci et j'ai essayé de me débrouiller avec Power Query mais ne codant pas, j'arrive à mes limites pour remettre en forme des données:
    je dois remettre en bon état une "base de données" construite sur Excel qui comporte par ligne un champ id d'un objet, et plusieurs champs dans lesquels des valeurs ont été concaténées.
    Or je vais avoir besoin de "splitter" ces valeurs et de faire en sorte qu'elles correspondent à peu près - je dis malheureusement à peu près parce que je n'ai aucun moyen de savoir quelles valeurs correspondent entre chaque champ.
    Exemples de contenu des champs pour une ligne:
    id_unique: : chaise
    Composants: pieds | dossier ; siège
    Couleurs: bleu | rouge

    id_unique: : table
    Composants: pieds | dossier
    Couleurs: bleu | rouge | vert

    Tenant compte qu'il y a plusieurs composants et plusieurs couleurs et que ce n'est pas forcément le même nombre (fort probable qu'il y ait eu des oublis ou que certains composants possèdent plusieurs couleurs - mais dans ce cas comment savoir???), et qu'en plus le délimiteur diffère parfois (ici j'ai pris "|", on trouve aussi ";" )

    J'ai utilisé l'outil fractionner en ligne mais cela ne peut pas fonctionner car il mutlipliera autant de lignes que de délimiteurs et je ne pourrai pas faire la différence car il n'y aura pas de doublons

    Je voudrais arriver à ce modèle

    par ligne:
    chaise pieds bleu
    chaise dossier rouge
    chaise siège (vide)

    Je ne suis même pas sûre que cela soit possible! en attendant j'essaie de trouver une logique en me basant sur des simples pivot tables mais ce n'est pas la panacée

    Merci pour votre aide; si jamais il existe quelque chose de faisable

    Classeur1.xlsxClasseur1.xlsxClasseur1.xlsx

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 412
    Points : 16 254
    Points
    16 254
    Par défaut
    Bonjour

    Si j'ai bien compris : voir proposition ci-jointe
    Fichiers attachés Fichiers attachés
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2022
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    Bonsoir
    Merci pour votre tcd, mais ce n'est pas ça, dans la mesure où vous pouvez constater que les causes se voient toujours correspondre des catégories vides, et on constate toujours un décalage. en plus il faudrait le faire par id.
    Par contre comment avez-vous fait ce tcd, notamment pour splitter les valeurs séparées par les délimiteurs, et ensuite mettre les disturbance en colonnes alors qu'elles sont indiquées en lignes svp?
    Merci!

    Disturbances_PQ_AL.xlsx

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    Sauf catastrophe, ce que tu veux est possible en Power Query mais pas forcément trivial (fonction personnalisée un peu avancée pour gérer les cas null à différents niveaux; imbrication de listes ou tables dans des cases de la table principale):
    • j'ai par exemple dû créer une fonction personnalisée avec un "nullable text" en paramètre d'entrée; ça ne passe pas avec un paramètre de classe text à cause des cases vides; l'alternative aurait pu être de remplacer les cases vides (donc null) par du texte vide "" au préalable avant d'appliquer la fonction personnalisée que j'ai créée
    • j'ai remplacé le ";" par "|" en préambule pour n'avoir plus qu'un seul type de séparateur avant le fractionnement (action à répéter si tu as d'autres séparateurs à gérer)
    • j'ai ensuite fractionné chacune des trois colonnes dans elle-même en obtenant des listes à l'aide de la fonction personnalisée (chaque case contient donc une liste dans ces trois colonnes après application de cette fonction)
    • il reste ensuite "simplement" à appliquer la fonction Table.FromColumn dans chaque case d'une nouvelle colonne à partir des trois listes obtenues précédemment pour chaque ligne. Cette fonction a l'avantage de savoir concaténer en colonnes des listes n'ayant pas le même nombre d'éléments en mettant null dans les cases où il n'y a pas d'élément de liste correspondant. Chacune des cases de cette nouvelle colonne contient ainsi une table avec toutes les lignes attendues pour un ID donné.
    • puis on supprime les trois anciennes colonnes (contenant encore les listes) et on étend la nouvelle colonne pour recréer ces trois colonnes avec les lignes fractionnées.


    Maintenant, je ne suis pas certain d'avoir parfaitement compris le format que tu attends car ce que tu annonces comme étant des colonnes différentes est présenté sur des lignes différentes dans ton premier message.
    Donc quoi qu'il en soit, ce que tu veux est possible. Reste à savoir si ça correspond bien au fichier ci-dessous.

    Sinon, je t'invite à présenter un exemple de résultat attendu plus précis, dans une vraie table et non avec de simples espaces comme séparateurs.

    Disturbances_PQ_Bis.xlsx

  5. #5
    Membre à l'essai
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2022
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    Bonjour,
    Je vous remercie je vais regarder ça! dans mon précédent pot je mets un fichier joint dont un onglet comporte le résultat souhaité.

    Bien cordialement,

  6. #6
    Membre à l'essai
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2022
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    Prométhée 25, je n'avais aucune idée que cela puisse être possible d'avoir des tables dans des cellules. Cela correspond bien à ce que j'imaginais pouvoir faire mais je n'avais pas l'idée qu'on puisse créer des listes à partir des valeurs d'une cellule, et qu'ensuite il soit possible de la transformer en table. Même si je n'intègre pas bien tout, cela correspond à mon besoin - car on ne peut pas déterminer mieux puisqu'on ne peut pas savoir quelle est la relation entre la cause, la catégorie et l'effet. Seul l'identifiant d'origine fait le lien entre les 3.
    Merci beaucoup! !!!!!!!

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    Fonctionnellement, le langage M est extrêmement puissant et permet de faire à peu près tout ce que l'on veut (je dirais qu'il manque juste les expressions régulières qui me semblent indispensables dans un tel outil).
    En revanche, cela n'est pas forcément facile (il y a d'ailleurs souvent plusieurs chemins possibles et ce n'est pas toujours le meilleur qui me vient à l'esprit... ) et, selon le traitement, la question des performances peut se poser car ce n'est pas son point fort (notamment lorsque l'on référence d'autres requêtes ou que l'on récupère des fichiers Excel ou encore un grand nombre de fichiers quels qu'ils soient).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Champ multi-lignes idem LD choix multiples
    Par fclus dans le forum Modélisation
    Réponses: 1
    Dernier message: 05/06/2013, 15h06
  2. Multiplication du même champs autant créer une autre table?
    Par berceker united dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/08/2006, 14h15
  3. afficher la moyenne de 4 champs en ligne
    Par regis94 dans le forum Access
    Réponses: 6
    Dernier message: 22/02/2006, 17h56
  4. la moyen des champs sur ligne
    Par nah_wah dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 04/08/2005, 11h45
  5. CR9 - Récupérer valeurs multiples d'un champ paramètre
    Par CR9-Deb dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/07/2005, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo