Microsoft 365 Épurer les lignes vides d'une cellule puis fractionner la cellule en plusieurs lignes

de_hanstrapp

XLDnaute Occasionnel
Bonjour le forum,

Dans le fichier exemple joint, je cherche à :
1/ supprimer toutes les lignes vides contenues dans les cellules de la colonne "C" pour arriver au résultat de l'onglet 2
2/ fractionner les lignes contenues dans les cellules pour arriver au résultat de l'onglet 3

J'ai cherché sur le forum mais dans les codes d'épurage trouvés, il ne prend jamais en compte la première ligne et pour spliter en plusieurs lignes on fait référence à un caractère alors que la il s'agit d'une tabulation.

Des idées ?

Merci par avance,

De_Hanstrapp
 

Pièces jointes

  • Exemple.xlsm
    14.9 KB · Affichages: 10

JFL_XLD

XLDnaute Junior
Bonjour à tous !
Une autre approche Power Query ?
Après insertion d'un tableau structuré feuille "INITIAL" nommé "tSource" :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="tSource"]}[Content],
    Fractt = Table.ExpandListColumn(Table.TransformColumns(Source, {{"PROGRAMME", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv)}}), "PROGRAMME"),
    Filtre = Table.SelectRows(Fractt, each ([PROGRAMME] <> "" and [PROGRAMME] <> " "))
in
    Filtre
 

de_hanstrapp

XLDnaute Occasionnel
Bonjour à tous !
Une autre approche Power Query ?
Après insertion d'un tableau structuré feuille "INITIAL" nommé "tSource" :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="tSource"]}[Content],
    Fractt = Table.ExpandListColumn(Table.TransformColumns(Source, {{"PROGRAMME", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv)}}), "PROGRAMME"),
    Filtre = Table.SelectRows(Fractt, each ([PROGRAMME] <> "" and [PROGRAMME] <> " "))
in
    Filtre
Merci JFL_XLD
 

Staple1600

XLDnaute Barbatruc
Re

@de_hanstrapp
J'ai fait ceci
Fractionner.png



@JFL_XLD
Je savais bien qu'on pouvait avoir un code M plus clean ;)
 

Staple1600

XLDnaute Barbatruc
Re

A la relecture, j'aurais du cocher [x] Lignes
Ce qui donne le code M suivant généré par l'Assistant PQ
(sans aucune modification manuelle de ma part]
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"JOUR", Int64.Type}, {"DISCIPLINE", type text}, {"PROGRAMME", type text}}),
    #"Fractionner la colonne par délimiteur" = Table.ExpandListColumn(Table.TransformColumns(#"Type modifié", {{"PROGRAMME", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "PROGRAMME"),
    #"Type modifié1" = Table.TransformColumnTypes(#"Fractionner la colonne par délimiteur",{{"PROGRAMME", type text}}),
    #"Lignes filtrées" = Table.SelectRows(#"Type modifié1", each ([PROGRAMME] <> "" and [PROGRAMME] <> " "))
in
    #"Lignes filtrées"
 

fanch55

XLDnaute Barbatruc
Salut à tous,
Pour le Fun et les aficionados des macros :

VB:
Sub Onglet3()
Dim Line As Variant, Li As Variant
Dim L As Integer
Dim FSource As Worksheet, FTarget As Worksheet
    Set FSource = Sheets("Initial")
    Set FTarget = Sheets("Feuil2"): FTarget.Cells.Delete
    L = 1
    For Each Line In FSource.UsedRange.Rows
        For Each Li In Split(Line.Columns("C"), vbLf)
            If Trim(Li) <> "" Then
                If FTarget.Rows(L).Columns("C") <> "" Then L = L + 1
                FTarget.Rows(L).Columns("A:B").Value = Line.Columns("A:B").Value
                FTarget.Rows(L).Columns("C") = Li
            End If
        Next
    Next
    FTarget.Columns.AutoFit
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 123
Membres
112 666
dernier inscrit
Coco0505