Creation d'un tableau Excel a partir d'une feuille de donnee

Bonjour à tous;

Je souhaiterais crer un tableau de deux colonnes à partir des donnés se trouvant dans le fichier joint.

Une première colonne avec les caractères situés après " id:''

et une deuxième colonne avec les caractères situés après " name:''

et changer de ligne après chaque paragraphe.

Merci beaucoup pour votre aide précieuse;

Leca

17go-term.zip (18.17 Ko)

Bonjour,

Je pense qu'il serait bon de mettre un fichier excel avec le résultat espéré.

Bonne fin d'apm

Bonjour,

Oui vous avez raison ^^

Voici le fichier excel.

Merci beaucoup

12go-term.xlsx (45.42 Ko)

Re-,

Euh, tu as oublié de mettre dans l'onglet "résult" ce que tu voulais obtenir... (c'est surtout cela qui nous intéresse)

@ te relire

Ok désolé si ce n'était pas clair.

Voici le nouveau fichier

Merci ;)

9go-term.xlsx (45.42 Ko)

Re-,

On va y arriver...

Qu'est-ce que tu voudrais sous ces 2 cellules (A1 et B1)?

image

Mets juste pour le 1er paragraphe

Décidement je ne suis pas doué.

Désolé pour la perte temps...

11go-term.xlsx (45.53 Ko)

Re-,

Ok, juste ces deux infos.

Tu confirmes que le fichier d'origine est bien un fichier *.txt?

(Ps, désolé, pas le temps pour ce soir, mais je suis sûr qu'un "powerqueriste" averti va prendre le relais)

Je regarderai demain, le cas échéant

Bonne soirée

Yes c'est un fichier .txt,

Merci beaucoup et vive la bretagne !!!

Bonjour à tous

Modifier le chemin dans la cellule jaune puis actualiser (clic droit dans le tableau de résultats)

18go-term-pq.xlsx (21.89 Ko)

Super, Merci infiniment!!!

Bonsoir à tous !

Une autre approche (légèrement plus courte) :

let
  Source = Csv.Document(
    File.Contents(Excel.CurrentWorkbook(){[Name = "Chemin"]}[Content]{0}[Fichier]), 
    [Delimiter = ",", Columns = 12, Encoding = 1252, QuoteStyle = QuoteStyle.None]
  ), 
  Filtre = Table.SelectRows(
    Source, 
    each Text.StartsWith([Column1], "id:") or Text.StartsWith([Column1], "name:")
  ), 
  ColSuppAutres = Table.SelectColumns(Filtre, {"Column1"}), 
  Fractt = Table.SplitColumn(
    ColSuppAutres, 
    "Column1", 
    Splitter.SplitTextByEachDelimiter({":"}, QuoteStyle.Csv, false), 
    {"Column1", "Column2"}
  ), 
  Index = Table.AddIndexColumn(Fractt, "Index", 0, 1, Int64.Type), 
  IndexEntier = Table.TransformColumns(
    Index, 
    {{"Index", each Number.IntegerDivide(_, 2), Int64.Type}}
  ), 
  Pivot = Table.Pivot(IndexEntier, List.Distinct(IndexEntier[Column1]), "Column1", "Column2"), 
  SuppIndex = Table.RemoveColumns(Pivot, {"Index"})
in
  SuppIndex

Bonjour à tous,

A la traine...

Autre méthode, à adapter à la source !

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    REC = Table.AddColumn(Source, "Personnalisé", each [
ID = try if Text.StartsWith([Colonne1], "id: ") then Text.AfterDelimiter([Colonne1], "id: ") else null otherwise null,

NAME = try if Text.StartsWith([Colonne1], "name:") then Text.AfterDelimiter([Colonne1], "name: ") else null otherwise null
]),
    REC_dvlp = Table.ExpandRecordColumn(REC, "Personnalisé", {"ID", "NAME"}, {"ID", "NAME"}),
    #"Rempli vers le bas" = Table.FillDown(REC_dvlp,{"ID"}),
    Concat = Table.AddColumn(#"Rempli vers le bas", "Concat", each [ID]& "" &[NAME]),
    #"Lignes filtrées" = Table.SelectRows(Concat, each ([Concat] <> null)),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Lignes filtrées",{"Colonne1", "Concat"})
in
    #"Colonnes supprimées"
13go-term-pq.xlsx (56.79 Ko)

Bonjour,

Pour le fun, une approche différente

let
    Fichier = Excel.CurrentWorkbook(){[Name="NomFich"]}[Content][Column1]{0},
    Source = Csv.Document(File.Contents(Fichier),1,{0},ExtraValues.Ignore,1252),
    Filtre = Table.SelectRows(Source, each [Column1] = "[Term]" or Text.StartsWith([Column1], "id: ") or Text.StartsWith([Column1], "name: ")),
    GroupBy = Table.Group(Filtre, {"Column1"}, {{"Tbl" , each _}} ,GroupKind.Local , (s,c) => Number.From(c[Column1] = "[Term]")),
    AjtRec = Table.AddColumn(GroupBy,"Records", each [ID = Text.AfterDelimiter([Tbl][Column1]{1}, "id: "), Name = Text.AfterDelimiter([Tbl][Column1]{2}, "name: ")])[[Records]],
    Expand = Table.ExpandRecordColumn(AjtRec, "Records", {"ID", "Name"}, {"ID", "Name"})
in
    Expand
13pq-lencal.xlsx (18.95 Ko)

Bonne journée

PS, JFL , si la version utilisée est réellement 2016...

Bonjour à tous !

@JB_ et cousinhub : L'idée d'utiliser un record est très astucieuse !

En condensant on obtient :

let
  Source = Csv.Document(
    File.Contents(Excel.CurrentWorkbook(){[Name = "Chemin"]}[Content]{0}[Fichier]), 
    1, 
    {0}, 
    ExtraValues.Ignore, 
    1252
  ), 
  Filtre = Table.SelectRows(
    Source, 
    each Text.StartsWith([Column1], "id:") or Text.StartsWith([Column1], "name:")
  ), 
  GroupBy = Table.Group(
    Filtre, 
    {"Column1"}, 
    {
      {
        "Tbl", 
        (x) => [
          ID   = Text.AfterDelimiter(x[Column1]{0}, "id:"), 
          Name = Text.AfterDelimiter(x[Column1]{1}, "name:")
        ]
      }
    }, 
    0, 
    (s, c) => if Text.Start(c[Column1], 2) = "id" then 1 else 0
  ), 
  TblFR = Table.FromRecords(GroupBy[Tbl])
in
  TblFR

Bonjour à tous de nouveau !

PS, JFL, si la version utilisée est réellement 2016...

Il y avait longtemps.....

RE,

Bonjour à tous !

@JB_ et cousinhub : L'idée d'utiliser un record est très astucieuse !

A plusieurs on peut accomplir de belles choses

Rechercher des sujets similaires à "creation tableau partir feuille donnee"