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 :

Language M, faire référence à des champs de l'étape précédente


Sujet :

POWER

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2023
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Avril 2023
    Messages : 34
    Points : 35
    Points
    35
    Par défaut Language M, faire référence à des champs de l'étape précédente
    Bonjour à tous

    une petite question, je bloque sur la sémantique en langage M

    j'ouvre un répertoire qui contient des fichiers Excel, et par des manipulation (tri par date la plus récente, ajout d'un index, sélection de l'index=1) donc il ne m'en reste plus qu'un fichier qui m'intéresse
    Nom : 1ligne.JPG
Affichages : 132
Taille : 32,7 Ko

    dans l'étape d'après je veux juste ouvrir ce fichier avec une commande du type
    Excel.Workbook(File.Contents([ETAPE PRECEDENTE].[Folder Path] & [ETAPE PRECEDENTE].[Name]), null, true)

    mais je ne sais pas faire référence à la ligne M précédente (les wizard demandent à passer par des paramètres et des fonctions, ce que je veux éviter)

  2. #2
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 417
    Points : 2 881
    Points
    2 881
    Par défaut
    Bonsoir

    C'est très simple.

    Il faut juste cliquer sur le bouton où il y a les deux petites flèches vers le bas à droite de la première colonne (celle qui s'appelle Content).

    Power Query va faire sa sauce (c'est à dire créer plusieurs requêtes et étapes auxquelles il ne faut pas toucher) et affichera le contenu du fichier (avec probablement un écran intermédiaire pour savoir quelle feuille ouvrir dans le classeur).

    En espérant que cela aide

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 255
    Points : 325
    Points
    325
    Par défaut
    Bonjour,
    Si j'ai bien compris, tu voudrais éviter toutes les étapes de transformation avec les fonctions intégrées nativement lors de l'appui sur la touche "Combiner" de la colonne "Content"...
    Pour cela, il suffit de transformer le fichier "binary" en "Table" comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    let 
    Source = Folder.Files(Excel.CurrentWorkbook(){[Name="CheminDossier"]}[Content]{0}[Column1]),
        // Récupère les fichiers inclus dans le répertoire inscrit dans une cellule nommée "CheminDossier"
        SelDernier = Table.SelectRows(Source, let latest = List.Max(Source[Date created]) in each [Date created] = latest),
        // Sélectionne le dernier fichier créé
        Transform = Table.TransformColumns(SelDernier, { "Content", each Excel.Workbook(_, true )}),
        // Transforme le binary en table
    ...
    Puis de développer la table
    Bonne journée

  4. #4
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 058
    Points : 2 525
    Points
    2 525
    Par défaut
    Bonjour
    il suffit normalement de cliquer sur le "binary" en vert pour ouvrir le fichier

    Sinon avec un code du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Excel.Workbook(Nom_Etape_Precedente{0}[Content])
    {0} pour la première ligne
    [Content] pour sélectionner la colonne


    Pour info, pour "faire référence à la ligne M précédente", il faut cliquer sur le "fx" à gauche de la formule M

    enfin pour ouvrir directement le fichier le plus récent il y a la fonction Table.Max (si ce fichier le plus récent est bien un fichier Excel évidemment)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Excel.Workbook(Table.Max(Source,"Date created")[Content])
    Stéphane

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2023
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Avril 2023
    Messages : 34
    Points : 35
    Points
    35
    Par défaut
    merci à tous,

    j'ai trouvé une solution, une fois que le fichier du répertoire a été filtré, on fait 4 étapes qui font affecter les champs "Binary" et "Attribute"
    Nom : ligneunique.JPG
Affichages : 66
Taille : 29,4 Ko

    = Table.SelectRows(#"Lignes filtrées", each [Attributes]?[Hidden]? <> true) - j'avoue que je ne sais pas à quoi ça peut servir

    = Table.AddColumn(#"Fichiers masqués filtrés1", "TableCible", each #"Transformer le fichier"([Content])) - le champ Binary est utilisé et devient le champ "TableCible" de type Table

    = Table.SelectColumns(#"Appeler une fonction personnalisée1", {"TableCible"}) - on supprime toutes les autres colonnes

    = Table.ExpandTableColumn(#"Autres colonnes supprimées1", "TableCible", Table.ColumnNames(#"Transformer le fichier"(#"Exemple de fichier"))) - ouverture de la table!!
    Images attachées Images attachées  

  6. #6
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 058
    Points : 2 525
    Points
    2 525
    Par défaut
    Citation Envoyé par Gilles777 Voir le message

    = Table.SelectRows(#"Lignes filtrées", each [Attributes]?[Hidden]? <> true) - j'avoue que je ne sais pas à quoi ça peut servir
    Bonjour
    Cette ligne ajoutée automatiquement par Power Query filtre les fichiers masqués (le champ "Attributes" est un record et le champ "Hidden" de ce record est un booléen)

    pourquoi les ?
    [Attributes] seul renvoie le contenu de ce champ et une erreur si le champ n'existe pas.
    [Attributes]? après permet d'éviter l'erreur : si le champ existe, il est retourné, sinon, on obtient un null

    Stéphane

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2023
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Avril 2023
    Messages : 34
    Points : 35
    Points
    35
    Par défaut
    merci Raccourcix pour toutes ces explications

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

Discussions similaires

  1. [AC-2010] Faire apparaitre des champs cachés
    Par Oreo_ dans le forum IHM
    Réponses: 8
    Dernier message: 06/05/2012, 22h19
  2. Réponses: 1
    Dernier message: 09/01/2012, 13h52
  3. Réponses: 3
    Dernier message: 09/06/2008, 18h59
  4. Réponses: 4
    Dernier message: 25/04/2007, 16h23
  5. [SELECT] Faire un select avec des champs vides
    Par MinsK dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/08/2005, 00h05

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