Power Query [résolu] Créer une fonction a appliquer sur une colonne "table"

merinos

XLDnaute Accro
Bonjour les fous de Query,

Je cherche a savoir s'il est possible de créer une fonction qui s'appliquerait sur une colonne dont le contenu est de type "table".

Comme demo et pour simplifier j'ai voulu faire une fonction qui ajoute un index a la table . puis appliquer cette fonction à un colonne.

j'y arrive pas.

GRRR .

Ce serait pratique

Merci de votre attention.
Merinos
 

Pièces jointes

  • PQ TEST fonction sur table.xlsx
    35.6 KB · Affichages: 7

Hasco

XLDnaute Barbatruc
Repose en paix
bonjour,

Votre fonction :
= (datatable as table) as table => Table.AddIndexColumn(datatable, "Index", 0, 1, Int64.Type)

Dans le fichier ci-dessous elle est appelée dans l'étape de groupement par mois

Au fait, nous avons la même version d'excel, mais lorsque j'ai ouvert votre fichier, excel m'a notifié que votre version de power query était plus récente que la mienne ?
 

Pièces jointes

  • PQ TEST fonction sur table.xlsx
    35.7 KB · Affichages: 3
Dernière édition:

merinos

XLDnaute Accro
Salut @Hasco,

Cela je sait le faire. le problème est par exemple si je veux importer le contenu de feuilles de certains classeurs...
Et comme je dois effectuer plein de transformations sur chaque feuille, je voulais pouvoir le faire directement sur des tables: (colonne data= le contenu de la feuille)

1673804701280.png


Comme en plus les données sont structurée par un nabot de jardin, ... je dois importer plusieurs info selon des procedures differentes.

Si toutes mes feuille avaient la même structure, je pourrais faire autrement. Mais là il y a une fois 2 colonnes entre 2 groupes de données, une autre fois 1 , parfois 3 ...

Parfois les données d'une sous table ont 4 colonnes , parfois 6...

Donc je ne peux mettre "musée" avec "chenil"...

C'est pourquoi je voulais pouvoir appliquer une /des fonction(s) à la colonne "Data" (soit feuille par feuille.)



Merci de ton aide,
Merinos.
 

Pièces jointes

  • exemple data.xlsx
    23.3 KB · Affichages: 2

Hasco

XLDnaute Barbatruc
Repose en paix
Re

je ne vous comprends pas ou mal : pourquoi nous avoir donné un fichier exemple au premier post, qui ne correspondait pas à ce que vous avez besoin ?

Là vous nous mettez une image du résultat d'une requête mais dans votre fichier "exemple data.xlsx" il n'y a pas de requête !!!!

Et qu'est-ce que vous voulez exactement : ajouter une colonne d'index (ou autre traitement ) à chaque groupe de données c'est ça ?

Donnez-nous quelque chose qui reflète la réalité de ce que vous faites, requêtes et données sinon on va encore répondre à côté.
 

merinos

XLDnaute Accro
re

Désolé si je me suis mal exprimer.

Ma question est de savoir s'il existe une technique qui permet d'appliquer une fonction à une clonne qui contient des ensembles de data....

et comme j'avais pas bien mis mes lunettes, j'avais pasvu que vous employez ma fonction lors du groupement.

Code:
let
    Source = Excel.CurrentWorkbook(){[Name="Calendrier"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Dates", type date}, {"Mois (text)", type text}, {"jour (text)", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Mois (text)"},
                       {{"data", each fctn_add_index(_),
                          type table
                          [ Dates=nullable date,
                           #"Mois (text)"=nullable text,
                           #"jour (text)"=nullable text,
                           Index= Int64.Type
                           ]
                        }})
in
    #"Grouped Rows"

Si je restructure votre code... il me montre ce que j'obtiens hors de ma fonction...

Donc la reponse était correcte. Je m'excuse et cours m'acheter de nouvelles lunettes.

A+
Merinos

PS : a propos de la version d'Excel / PowerQuery...
Le jour ou je comprendrais Mickeysoft, ...
À la maison j'ai office 2021 ,
Au bureau une version ancienne de 365
Et aussi une version 2016 avec SAS
1673808470953.png
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re

Je comprends mieux,

Voici un exemple de requête dans le fichier joint (Requête1) qui à partir des premières lignes de chaque feuille du fichier, extrait les tables contenues dans la feuilles.
Voir le contenu des tables de la colonne Data, après appel à la fonction d'extraction.

La requête interroge le fichier comme un fichier externe alors vérifier le contenu de la cellule nommer "Fichier"

Cordialement
Merci pour le version, je vais comparer

[Edit] voir requête finalisée dans le fichier du post#10 [/Edit]
 
Dernière édition:

merinos

XLDnaute Accro
Super merci.

Avec cela je devrais m'en sortir.

Je vais appliquer une premiere fonction pour avoir les titres de chaque groupe (avec un index INDEXgroupe) puis une deusième fois pour avoir les données dessous (et en les groupant, je peux leur donner le même INDEXgroupe) et joindre les deux.

Je sais quoi faire demain,

Au plaisir.
Mérinos.
 

merinos

XLDnaute Accro
@Hasco ,

Non surement pas pour rien. C'est même vachement bien fait.

Demain je ne travaille pas, Mais mardi j'emploie cela.
J'ai 4 fichier d'une vingtaine de feuilles. il s'agit de données de consommation de plusieurs commues.

On doit recupérer le passé. Comme ils ont tous mis plus/moins la même chose, avec ce que vous avez donné, je sais que faire. Je retrouve les mêmes colonnes , les entêtes etant la 5° colonne. Cela va marcher.

Peut-être pas aussi bien que vous, je suis toujours en admiration devant votre code.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Voici un dernier trait où les tables sont normalisées, et sans colonnes vides.
Par contre ce que vous voulez faire de toutes ces tables, ça, c'est votre travail.

Cordialement
 

Pièces jointes

  • exemple data.xlsx
    31.6 KB · Affichages: 8

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 870
dernier inscrit
Dethomas