Power Query Copier étapes transformation tableau

Etoto

XLDnaute Barbatruc
Bonjour,

Est-ce possible de copier les étapes appliquées sur un tableau dans PQ vers un autre tableau. Faire que le tableau fasse exactement les même étapes de transformation sur un autre tableau.

Est-ce possible ? Parce que j'ai un tableau sur chaque mois d'une année et je voudrais savoir si y'a un moyen d'éviter de faire de répétitions.

PS : J'essaie de mettre mon fichier en ordre avant de vous le joindre.
 
Solution
RE
VB:
let
    Source = Web.Page(Web.Contents("https://www.sfl.ch/fr/superleague/calendrier/saison/archiveseason/202122/sorting/date/")),
    #"Lignes filtrées" = Table.SelectRows(Source, each ([Source] = "Table")),
    #"Autres colonnes supprimées" = Table.SelectColumns(#"Lignes filtrées",{"Caption", "Data"}),
    Source2 = Table.ExpandTableColumn(#"Autres colonnes supprimées", "Data", {"Column1", "Column2", "Column3", "Column4", "Column5"}, {"Column1", "Column2", "Column3", "Column4", "Column5"}),
    #"Fractionner la colonne par délimiteur" = Table.SplitColumn(Source2, "Column1", Splitter.SplitTextByEachDelimiter({"#(tab)"}, QuoteStyle.Csv, true), {"Column1.1", "Date"}),
    #"Valeur remplacée" = Table.ReplaceValue(#"Fractionner la colonne...

chris

XLDnaute Barbatruc
Bonjour

Vous compliquez inutilement les choses il me semble

  • on peut copier une requête,
  • on peut passer un nom de fichier en paramètre à une requête
  • une requête peut s'appliquer à un ensemble de tableaux
  • on peut transformer une requête en fonction et l'appliquer à d'autres tableaux
  • ...
alors quel intérêt de passer par du VBA ?
 

Wayki

XLDnaute Impliqué
Bonjour

Vous compliquez inutilement les choses il me semble

  • on peut copier une requête,
  • on peut passer un nom de fichier en paramètre à une requête
  • une requête peut s'appliquer à un ensemble de tableaux
  • on peut transformer une requête en fonction et l'appliquer à d'autres tableaux
  • ...
alors quel intérêt de passer par du VBA ?
L'intérêt est que l'enregistreur de macro transpose les actions effectuées dans PQ.
Je ne connais pas le langage M et je ne suis pas super calé non plus avec cet outil, j'ai juste les bases.
Du coup j'amène une solution avec ce que je sais faire, et ce que j'ai pu déjà expérimenter :)
A +
 

chris

XLDnaute Barbatruc
RE

En plus les tables ne sont pas homogènes selon les mois
  • Novembre et Décembre pas d'info buts
  • Avril : la colonne contenant la date n'est pas au même format
  • Janvier, Février, Mars, Avril, Mai : même PB sur la date + pas d'infos buts
donc déjà il faut traiter autrement les colonnes où on récupère date et buts.
A part cela a requête actuelle peut aussi être nettement simplifiée...

Est-il utile d'avoir autant de tableaux que de mois, plutôt qu'un tableau unique après l'indication de la période (Caption sur la source) ?
 
Dernière édition:

merinos

XLDnaute Accro
Salut le fofo,


Pourquoi faire simple quand on peut faire compliqué?

J'ai un fichier qui possède un certain nombre de tables IDENTIQUES AU NIVEAU DE LA STRUCTURE.

je crée un query qui se connecte a ce document.
j'alimine les étapes autres quela connection ce qui me montre le contenu du fichier (sheets, tables, named ranges,...)

Je filtre pour garder les tables.
je les ouvre et C'EST FINI...

PS: les tableaux de ton fichier ne sont pas semblables... et ne peuvent pas être mis ensembles.
 

Pièces jointes

  • compil 12 mois.xlsx
    16.7 KB · Affichages: 3
  • one year 12 tables.xlsx
    17.5 KB · Affichages: 3
Dernière édition:

Etoto

XLDnaute Barbatruc
Bonjour à tous,
Désolé, j'avais des cours hier.
Est-il utile d'avoir autant de tableaux que de mois, plutôt qu'un tableau unique après l'indication de la période (Caption sur la source) ?
Le problème est que sur le site source, les données sont séparées par mois. Et j'avais demandé sur un autre fil comment faire pour fusionner des requêtes et j'ai eu une solution par VBA venant de @Lolote83. Je sais pas s'il existe une solution depuis PQ directement. Parce que c'est mon objectif final de fusionner les tableaux et j'ai la macro de @Lolote83 qui le fait.
Ci-joint ma proposition,
Il faut entrer un nom de requête qui n'existe pas déjà en premier lieu,
Puis rentrer le numéro de la table correspondante dans un second temps,
Le tableau vient se greffer à la suite du précédent.
Super, je vais tester tout de suite.
je crée un query qui se connecte a ce document.
j'alimine les étapes autres quela connection ce qui me montre le contenu du fichier (sheets, tables, named ranges,...)

Je filtre pour garder les tables.
je les ouvre et C'EST FINI...
Je vais aussi voir ta proposition. Merci
#"Type modifié" = Table.TransformColumnTypes(Data10,{{"Column1", type text}, {"Column2", type time}, {"Column3", type text}, {"Column4", type time}, {"Column5", type text}}),
avec la virgule à la fin
et non
#"Type modifié" = Table.TransformColumnTypes(Data10,{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}})
Super. Merci
 

Etoto

XLDnaute Barbatruc
Re,

Je vous transmet mes résultats :

Pour le code de @MP59, j'ai une erreur "Expression.SyntaxError : Jeton Comma attendu."

Code:
let
    Source = Web.Page(Web.Contents("https://www.sfl.ch/fr/superleague/calendrier/saison/archiveseason/202122/sorting/date/")),
    Data10 = Source{10}[Data],
    #"Type modifié" = Table.TransformColumnTypes(Data10,{{"Column1", type time}, {"Column2", type time}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}})
    #"Derniers caractères insérés" = Table.AddColumn(#"Type modifié", "Derniers caractères", each Text.End([Column1], 8), type text),
    #"Colonnes permutées" = Table.ReorderColumns(#"Derniers caractères insérés",{"Column1", "Derniers caractères", "Column2", "Column3", "Column4", "Column5"}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Colonnes permutées",{"Column1"}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Colonnes supprimées",{{"Derniers caractères", type date}}),
    #"Colonnes supprimées1" = Table.RemoveColumns(#"Type modifié1",{"Column2"}),
    #"Colonnes renommées" = Table.RenameColumns(#"Colonnes supprimées1",{{"Column3", "Equipe dom"}, {"Column5", "Equipe ext"}, {"Derniers caractères", "Date"}}),
    #"Colonnes permutées1" = Table.ReorderColumns(#"Colonnes renommées",{"Date", "Equipe dom", "Equipe ext", "Column4"}),
    #"Premiers caractères insérés" = Table.AddColumn(#"Colonnes permutées1", "Premiers caractères", each Text.Start(Text.From([Column4], "fr-CH"), 2), type text),
    #"Colonnes renommées1" = Table.RenameColumns(#"Premiers caractères insérés",{{"Premiers caractères", "But dom"}}),
    #"Derniers caractères insérés1" = Table.AddColumn(#"Colonnes renommées1", "Derniers caractères", each Text.End(Text.From([Column4], "fr-CH"), 2), type text),
    #"Colonnes renommées2" = Table.RenameColumns(#"Derniers caractères insérés1",{{"Derniers caractères", "But ext"}}),
    #"Type modifié2" = Table.TransformColumnTypes(#"Colonnes renommées2",{{"But dom", Int64.Type}, {"But ext", Int64.Type}}),
    #"Colonnes supprimées2" = Table.RemoveColumns(#"Type modifié2",{"Column4"})
in
    #"Colonnes supprimées2"

Pour le fichier de @Wayki, c'est parfait ! Tu saurais comment faire une macro pour après fusionner les tableaux ou pas ?

Merci à vous tous.
 

Etoto

XLDnaute Barbatruc
Encore re, (désolé)

J'ai remarqué qu'après 2022, les date savaient un "*" à la fin. J'i donc modifié les étapes, voici les nouvelles qui se trouvent sur la requête de la feuille "Après 2022". Encore merci à tous pour votre aide ! Si il existe pas de solution, je peux recréer les étapes manuellement, cela me dérange pas.
 

Pièces jointes

  • Pq XLD.xlsm
    53.1 KB · Affichages: 2

Etoto

XLDnaute Barbatruc
Pour le code de @MP59, j'ai une erreur "Expression.SyntaxError : Jeton Comma attendu."

J'avais pourtant bien précisé : avec la virgule à la fin.
Ha ! Cette virgule 🤣 🤣 J'avais pas compris que tu parlais de cette fin. Je pensais que tu parlais de la virgule à la fin du "type time". Désolé, j'ai été un peu stupide ! Et ça fonctionne nickel !! Faut juste que je l'adapte au post 23. C'est fonctionnel pour chaque mois du coup ?

EDIT : C'est bon, j'ai réussi. Je reviens ici si je rencontre d'autres problèmes. Merci à tous !
 

Etoto

XLDnaute Barbatruc
Bonjour

Mais avec PowerQuery justement c'est beaucoup plus simple de récupérer d'un coup l'ensemble des mois que découper comme tu l'as fait.

Aucun besoin de VBA comme la plupart du temps avec PowerQuery à part une ligne si on veut actualiser automatiquement dans certains cas...
Alors, j'aimerai bien connaître la méthode parce que j'ai eu que la version VBA moi, pas PQ.
 

chris

XLDnaute Barbatruc
RE
VB:
let
    Source = Web.Page(Web.Contents("https://www.sfl.ch/fr/superleague/calendrier/saison/archiveseason/202122/sorting/date/")),
    #"Lignes filtrées" = Table.SelectRows(Source, each ([Source] = "Table")),
    #"Autres colonnes supprimées" = Table.SelectColumns(#"Lignes filtrées",{"Caption", "Data"}),
    Source2 = Table.ExpandTableColumn(#"Autres colonnes supprimées", "Data", {"Column1", "Column2", "Column3", "Column4", "Column5"}, {"Column1", "Column2", "Column3", "Column4", "Column5"}),
    #"Fractionner la colonne par délimiteur" = Table.SplitColumn(Source2, "Column1", Splitter.SplitTextByEachDelimiter({"#(tab)"}, QuoteStyle.Csv, true), {"Column1.1", "Date"}),
    #"Valeur remplacée" = Table.ReplaceValue(#"Fractionner la colonne par délimiteur","*","",Replacer.ReplaceText,{"Date"}),
    #"Fractionner la colonne par délimiteur1" = Table.SplitColumn(#"Valeur remplacée", "Column4", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"But Dom", "But Ext"}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Fractionner la colonne par délimiteur1",{"Column1.1", "Column2"}),
    #"Valeur remplacée1" = Table.ReplaceValue(#"Colonnes supprimées","-","",Replacer.ReplaceText,{"But Dom", "But Ext"}),
    #"Type modifié" = Table.TransformColumnTypes(#"Valeur remplacée1",{{"Column3", type text}, {"Column5", type text}, {"Date", type date}, {"But Dom", Int64.Type}, {"But Ext", Int64.Type}}),
    #"Colonnes renommées" = Table.RenameColumns(#"Type modifié",{{"Column3", "Equipe dom"}, {"Column5", "Equipe ext"}}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Colonnes renommées",{"Date", "Equipe dom", "Equipe ext", "But Dom", "But Ext"})
in
    #"Colonnes permutées"

c'est tout
 

Etoto

XLDnaute Barbatruc
RE
VB:
let
    Source = Web.Page(Web.Contents("https://www.sfl.ch/fr/superleague/calendrier/saison/archiveseason/202122/sorting/date/")),
    #"Lignes filtrées" = Table.SelectRows(Source, each ([Source] = "Table")),
    #"Autres colonnes supprimées" = Table.SelectColumns(#"Lignes filtrées",{"Caption", "Data"}),
    Source2 = Table.ExpandTableColumn(#"Autres colonnes supprimées", "Data", {"Column1", "Column2", "Column3", "Column4", "Column5"}, {"Column1", "Column2", "Column3", "Column4", "Column5"}),
    #"Fractionner la colonne par délimiteur" = Table.SplitColumn(Source2, "Column1", Splitter.SplitTextByEachDelimiter({"#(tab)"}, QuoteStyle.Csv, true), {"Column1.1", "Date"}),
    #"Valeur remplacée" = Table.ReplaceValue(#"Fractionner la colonne par délimiteur","*","",Replacer.ReplaceText,{"Date"}),
    #"Fractionner la colonne par délimiteur1" = Table.SplitColumn(#"Valeur remplacée", "Column4", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"But Dom", "But Ext"}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Fractionner la colonne par délimiteur1",{"Column1.1", "Column2"}),
    #"Valeur remplacée1" = Table.ReplaceValue(#"Colonnes supprimées","-","",Replacer.ReplaceText,{"But Dom", "But Ext"}),
    #"Type modifié" = Table.TransformColumnTypes(#"Valeur remplacée1",{{"Column3", type text}, {"Column5", type text}, {"Date", type date}, {"But Dom", Int64.Type}, {"But Ext", Int64.Type}}),
    #"Colonnes renommées" = Table.RenameColumns(#"Type modifié",{{"Column3", "Equipe dom"}, {"Column5", "Equipe ext"}}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Colonnes renommées",{"Date", "Equipe dom", "Equipe ext", "But Dom", "But Ext"})
in
    #"Colonnes permutées"

c'est tout
Super ! Pour éviter de faire une bourde, je place ce code dans l'éditeur de quel tableau ?
 

Discussions similaires

Réponses
15
Affichages
493

Statistiques des forums

Discussions
312 198
Messages
2 086 145
Membres
103 130
dernier inscrit
FRCRUNGR