Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Power Query PowerQuery - Passer d'une liste1 à liste2 pour apprendre !!!!

  • Initiateur de la discussion Initiateur de la discussion Lolote83
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lolote83

XLDnaute Barbatruc
Bonjour à tous,
Toujours dans le souci d'apprendre à utiliser PowerQuery, je voudrais savoir s'il est possible de passer de la liste1 à la liste2
Ci-joint une copie d'écran. Je ne pense pas qu'un fichier soit réellement nécessaire.
Merci à toutes et à tous par avance

Cordialement
Lolote83
 
Solution
Bonjour @Lolote83, le forum,

2 propositions

PowerQuery:
let
A = Table.ToList(Excel.CurrentWorkbook(){[Name="Table1"]}[Content]),
B = List.TransformMany(List.Intersect({A, List.Transform(A, Text.Upper)}), each List.FindText(A, Text.Proper(Text.Range(_,0,3))),(x,y)=> {x,y}),
C = Table.FromRows(B, {"Type", "Liste"})
in C

PowerQuery:
let
A = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
B = Table.RenameColumns(A, {Table.ColumnNames(A){0}, "TYPE"}),
C = (x)=> Text.Upper(Text.Range(x,0,3)),
D = Table.Group(B, "TYPE", {"x", each Table.Skip(_)}, 0, (x,y)=> Value.Compare(C(x),C(y))),
E = Table.ExpandTableColumn(D, "x", {"TYPE"}, {"Liste"})
in E

Bonne journée à tous
Bonjoru @wDog66 ,
Merci pour ta réponse. J'avais simplement mis les couleurs afin que ce soit plus parlant pour les explications. Dans le fichier d'origine, aucune couleur n'est présente. Désolé, j'aurais dû le préciser au départ
Cordialement
Lolote83
 
Re,
Ca ne change rien à la problématique !
Rien en l'état n'indique que telle ou telle cellule doit être reprise en entête, à moins que vous ayez d'autres colonnes à gauche ou à droite 🤔
 
Bonjour @Lolote83, le forum,

2 propositions

PowerQuery:
let
A = Table.ToList(Excel.CurrentWorkbook(){[Name="Table1"]}[Content]),
B = List.TransformMany(List.Intersect({A, List.Transform(A, Text.Upper)}), each List.FindText(A, Text.Proper(Text.Range(_,0,3))),(x,y)=> {x,y}),
C = Table.FromRows(B, {"Type", "Liste"})
in C

PowerQuery:
let
A = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
B = Table.RenameColumns(A, {Table.ColumnNames(A){0}, "TYPE"}),
C = (x)=> Text.Upper(Text.Range(x,0,3)),
D = Table.Group(B, "TYPE", {"x", each Table.Skip(_)}, 0, (x,y)=> Value.Compare(C(x),C(y))),
E = Table.ExpandTableColumn(D, "x", {"TYPE"}, {"Liste"})
in E

Bonne journée à tous
 
Bonjour @alega78,
Voilà encore de quoi en apprendre sur PowerQuery.
Je vais essayer de décortiquer ce code afin d'encore plus m'approprier l'outils.
Bravo
@+ Lolote83
 
Re bonjour à tous.

J'ai essayé sur mon tableau réel, mais cela ne fonctionne pas. Je ne pensais pas que les données telles que je les ai écrites dans la copie du post#1 avaient une importance.
Ici, les listes sont des adresses mails.
Donc voici un fichier beaucoup plus représentatif du réel et en appliquant les solutions 1 et 2 de @alexga78 , je ne retrouve pas ce que je veux.

3 onglets :
- TEST_REEL avec la base originale et le résultat souhaité
- REQ_Exemple1 avec le résultat de la requête basé sur l'exemple 1
- REQ_Exemple2 avec le résultat de la requête basé sur l’exemple 2
Merci à vous tous par avance

Le temps de finir d'écrire, JHA est arrivé. Donc bonjour JHA. Je regarde
Cordialement
Lolote83
 

Pièces jointes

Re bonjour,

Merci @JHA,
Avec ta solution de création du groupe et le fusionnement des deux tables, cela fonctionne même sur ma base mail.
J'attends éventuellement une réponse de @alexga78 afin de voir si avec une base telle que définie dans le post#8 et ses solutions, cela reste possible.
Merci, merci merci.
J'en apprends tous les jours grâce à vous.

Cordialement
Lolote83
 
Bonjour à tous,
Pour se lancer dans PowerQuery et beaucoup moins pointu qu'alexga78, mais qui semble fonctionner
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tab_Mail"]}[Content],
    Typer = Table.TransformColumnTypes(Source,{{"Mail", type text}}),
    AjoutCol = Table.AddColumn(Typer, "Groupe", each if Text.Contains([Mail], "@") then null else [Mail]),
    Remplir = Table.FillDown(AjoutCol,{"Groupe"}),
    Filtrer = Table.SelectRows(Remplir, each Text.Contains([Mail], "@")),
    Réorganiser = Table.ReorderColumns(Filtrer,{"Groupe", "Mail"})
in
    Réorganiser
Cordialement
 
Re

les premiers codes prenait en compte les 3 premiers caractères: avec les données réelles cela ne fonctionne pas.

à tester


PowerQuery:
let
A = Table.RenameColumns(Excel.CurrentWorkbook(){[Name="Tab_Mail"]}[Content], {"Mail", "Groupe"}),
B = Table.Group(A, "Groupe", {"Mail", each List.Skip([Groupe])}, 0, (x,y)=> Byte.From( Text.Contains(y, "enseignants"))),
C = Table.ExpandListColumn(B, "Mail")
in C
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Power Query
Réponses
8
Affichages
245
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…