Comment exploiter 1 donnée du titre

Accueil Forums Power Query Comment exploiter 1 donnée du titre

  • Ce sujet contient 8 réponse, 3 participant et a été mis à jour pour la dernière fois par VincianeB, le il y a 3 mois.
Affichage de 1 message (sur 9 au total)
  • Auteur
    Messages
  • #155907
    VincianeB
    Participant

    Bonjour,

    Il y a peu de temps que j’ai découvert Power Query et je me qualifie de débutante. Le peu que je connais me permet d’aider mes collègues, ce que j’apprécie.

    Je dois exploiter, avec Power Query, un dossier contenant de nombreux fichiers excel (+/- 400/jour).
    Ces fichiers sont tous constitués de la même manière.
    La ligne 1 contient les titres, à l’exception de la cellule A1 qui contient une donnée que je dois exploiter, tout comme les données contenues dans la colonne A, à partir de la ligne 2.
    Pourriez vous m’indiquer si cela est possible et si oui, comment ?

    Merci à vous

    Vinciane

    Attachments:
    You must be logged in to view attached files.
    #155916
    Daniel
    Participant

    Bonjour Vinciane, le Forum,

    Si j’ai bien compris la demande , qui est de propager sur toutes lignes du/des Fichier(s) la valeur contenue dans la cellule A1, je propose la requête suivante :
    ———————————————————————————————-
    let
    Source = Excel.CurrentWorkbook(){[Name=”Table1″]}[Content],
    ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“Colonne1”, type text}, {“Colonne2”, type text}, {“Colonne3″, type text}}),
    ValeurTXXX = ModificationTypeDonnees{0}[Colonne1],
    MAJEnteteCol1 = Table.PromoteHeaders( Table.ReplaceValue(ModificationTypeDonnees,”TXXX”,”A Déterminer”,Replacer.ReplaceText,{“Colonne1”})),
    AjoutValeurTXXX = Table.AddColumn(MAJEnteteCol1, “Personnalisé”, each Table.AddColumn(MAJEnteteCol1,”TXXX”, each ValeurTXXX)),
    SuppressionColonnes = Table.RemoveColumns(AjoutValeurTXXX,{“A Déterminer”, “idASD”, “N°Facture”}),
    DevelopperTable = Table.ExpandTableColumn(SuppressionColonnes, “Personnalisé”, {“A Déterminer”, “idASD”, “N°Facture”, “TXXX”}, {“A Déterminer”, “idASD”, “N°Facture”, “TXXX”})
    in
    DevelopperTable
    ———————————————————————————————-

    Il restera à définir l’entête de colonne de la colonne 1 que j’ai mis pour l’instant à la valeur “A Déterminer”.
    Ci-joint le fichier avec le résultat de la requête Power Query. D’autres solutions sont certainement possibles et d’autres membres ne manquerons pas de vous les communiquer.

    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    #155920
    Aline Clozel
    Participant

    Bonjour,
    Je rajouterais à ces explications qu’il est possible d’appeller un répertoire et non un seul fichier excel. Il faut choisir comme source de données un fichier et ensuite mettre en forme le traitement à partir de l’un d’entre eux. Ensuite le traitement s’appliquera à tout le contenu de ce dossier si les fichiers sont tous les mêmes.
    Est ce que ça vous aide ?

    #155922
    VincianeB
    Participant

    Bonjour Daniel,

    Merci pour votre réponse. Je m’en vais tester cela.
    Je me permets une question complémentaire.
    Vu le volume de fichiers à traiter en une fois (car contenu dans un répertoire), le fait qu’il s’agisse de feuille de calcul simple et non de tableau structuré dans chaque fichier pourrait-il être source d’erreur ?

    Merci pour votre complément d’informations

    Vinciane

    #155923
    VincianeB
    Participant

    Bonjour Aline,

    Merci pour vos précisions. Je pense effectivement que cela va m’aider.
    Je me permettrais de revenir vers vous si je coince.
    Belle journée

    Vinciane

    #155936
    Daniel
    Participant

    Bonjour Vincianne, Aline, le Forum,

    En complément de ma précédente réponse, je propose la requête suivante avec une fonction permettant de traiter les différents fichiers contenus dans un dossier. Je suis parti du principe que toutes les feuilles des fichiers portaient le même nom.

    Requête fonction fxImport
    let
    Source = (FileName,SheetName) => let
    Source = Excel.Workbook(FileName, null, true),
    Feuil1_Sheet = Source{[Item=SheetName,Kind=”Sheet”]}[Data],
    ModificationTypeDonnees = Table.TransformColumnTypes(Feuil1_Sheet,{{“Column1”, type text}, {“Column2”, type text}, {“Column3″, type text}}),
    ValeurTXXX = ModificationTypeDonnees{0}[Column1],
    MAJEnteteCol1 = Table.PromoteHeaders( Table.ReplaceValue(ModificationTypeDonnees,ValeurTXXX,”A Déterminer”,Replacer.ReplaceText,{“Column1”})),
    AjoutValeurTXXX = Table.AddColumn(MAJEnteteCol1, “Personnalisé”, each Table.AddColumn(MAJEnteteCol1,”TXXX”, each ValeurTXXX)),
    SuppressionColonnes = Table.RemoveColumns(AjoutValeurTXXX,{“A Déterminer”, “idASD”, “N°Facture”}),
    DevelopperTable = Table.ExpandTableColumn(SuppressionColonnes, “Personnalisé”, {“A Déterminer”, “idASD”, “N°Facture”, “TXXX”}, {“A Déterminer”, “idASD”, “N°Facture”, “TXXX”})
    in
    DevelopperTable
    in
    Source
    Fin de la requête fonction

    Requête d’importation des différents fichiers
    let
    Source = Folder.Files(“E:\Téléchargements\Vincianne”),
    #”Colonnes supprimées” = Table.RemoveColumns(Source,{“Extension”, “Date accessed”, “Date modified”, “Date created”, “Attributes”}),
    AppelFonctionfxImport = Table.AddColumn(#”Colonnes supprimées”,”Test”, each fxImport( [Content],”Feuil1″)),
    SuppressionColonnes = Table.RemoveColumns(AppelFonctionfxImport,{“Content”, “Folder Path”}),
    DeveloppementDonnees = Table.ExpandTableColumn(SuppressionColonnes, “Test”, {“A Déterminer”, “idASD”, “N°Facture”, “TXXX”}, {“A Déterminer”, “idASD”, “N°Facture”, “TXXX”})
    in
    DeveloppementDonnees
    Fin de la requête

    En espérant que cela t’aidera et répondra à ta demande
    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    #155942
    Aline Clozel
    Participant

    Bonjour Daniel,
    J’ai encore des soucis de compréhension pour la partie fonction.
    Est ce que tu peux nous expliquer ta partie requête fonction ? pas à pas ?
    Merci

    #155947
    Daniel
    Participant

    Bonjour Vinciane, Aline, le Forum,

    Explications de la requête fxImport, je les ai mis en regard de chaque ligne de la requête Power query

    // Parametres de la fonction Nom du fichier et nom dela feuille contenant les données
    (FileName,SheetName) => let
    // reçoit le contenu du fichier excel (en provenant de la colonne Binary de la requête principale)
    Source = Excel.Workbook(FileName, null, true),
    // On indique ou se trouve les données (dans quelle feuille)
    Feuil1_Sheet = Source{[Item=SheetName,Kind=”Sheet”]}[Data],
    // Modification du type de données, on les met tous en type text
    ModificationTypeDonnees = Table.TransformColumnTypes(Feuil1_Sheet,{{“Column1”, type text}, {“Column2”, type text}, {“Column3″, type text}}),
    // Récupération de la valeur contenue dans la 1ère ligne de données de la 1ère colonne
    ValeurTXXX = ModificationTypeDonnees{0}[Column1],
    // Ici changement de l’entête de la 1ère colonne car il contient la valeur de la 1ère ligne de données de la colonne 1 et on va ensuite promouvoir la 1ère ligne comme entêtes de données
    MAJEnteteCol1 = Table.PromoteHeaders( Table.ReplaceValue(ModificationTypeDonnees,ValeurTXXX,”A Déterminer”,Replacer.ReplaceText,{“Column1”})),
    // Pour chaque ligne des donnes du fichier en cours de traitement, on va ajouter la valeur contenue en ligne 1 colonne 1 que l’on a récupéré dans l’étape “ValeurTXXXX”
    AjoutValeurTXXX = Table.AddColumn(MAJEnteteCol1, “Périodes”, each ValeurTXXX)
    in
    AjoutValeurTXXX

    Requête adaptée et avec les commentaires en pièce jointe
    Cordialement
    Daniel

    Attachments:
    You must be logged in to view attached files.
    #155958
    VincianeB
    Participant

    Bonjour Daniel, Aline, le Forum

    Merci pour ces explications et exemple très précis.
    Hâte de rentrer au boulot pour tester cela.

    Excellente fin de semaine à vous

    Vinciane

Affichage de 1 message (sur 9 au total)
  • Vous devez être connecté pour répondre à ce sujet.