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

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 !

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

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
 
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
 
Re

@de_hanstrapp
J'ai fait ceci
Fractionner.png



@JFL_XLD
Je savais bien qu'on pouvait avoir un code M plus clean 😉
 
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"
 
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
 
- 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

Réponses
12
Affichages
745
Réponses
38
Affichages
2 K
Retour