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

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

Une solution avec PowerQuery
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"JOUR", Int64.Type}, {"DISCIPLINE", type text}, {"PROGRAMME", type text}}),
    #"Tableau croisé dynamique des colonnes supprimé" = Table.UnpivotOtherColumns(#"Type modifié", {"JOUR", "DISCIPLINE"}, "Attribut", "Valeur"),
    #"Fractionner la colonne par délimiteur" = Table.SplitColumn(#"Tableau croisé dynamique des colonnes supprimé", "Valeur", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), {"Valeur.1", "Valeur.2", "Valeur.3", "Valeur.4", "Valeur.5", "Valeur.6", "Valeur.7", "Valeur.8", "Valeur.9", "Valeur.10", "Valeur.11", "Valeur.12"}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Fractionner la colonne par délimiteur",{{"Valeur.1", type text}, {"Valeur.2", type text}, {"Valeur.3", type text}, {"Valeur.4", type text}, {"Valeur.5", type text}, {"Valeur.6", type text}, {"Valeur.7", type text}, {"Valeur.8", type text}, {"Valeur.9", type text}, {"Valeur.10", type text}, {"Valeur.11", type text}, {"Valeur.12", type text}}),
    #"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(#"Type modifié1", {"JOUR", "DISCIPLINE", "Attribut"}, "Attribut.1", "Valeur"),
    #"Lignes filtrées" = Table.SelectRows(#"Supprimer le tableau croisé dynamique des autres colonnes", each ([Valeur] <> null and [Valeur] <> "") and ([Attribut.1] <> "Valeur.1")),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Lignes filtrées",{"Attribut.1"})
in
    #"Colonnes supprimées"
Il doit y avoir un code M plus simple
Celui-ci a été obtenu avec l'Assistant PQ

Voici le résultat obtenu dans Excel
 
Bonjour @Efgé 😉

Pour coller plus au résultat à obtenir
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"JOUR", Int64.Type}, {"DISCIPLINE", type text}, {"PROGRAMME", type text}}),
    #"Tableau croisé dynamique des colonnes supprimé" = Table.UnpivotOtherColumns(#"Type modifié", {"JOUR", "DISCIPLINE"}, "Attribut", "Valeur"),
    #"Fractionner la colonne par délimiteur" = Table.SplitColumn(#"Tableau croisé dynamique des colonnes supprimé", "Valeur", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), {"Valeur.1", "Valeur.2", "Valeur.3", "Valeur.4", "Valeur.5", "Valeur.6", "Valeur.7", "Valeur.8", "Valeur.9", "Valeur.10", "Valeur.11", "Valeur.12"}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Fractionner la colonne par délimiteur",{{"Valeur.1", type text}, {"Valeur.2", type text}, {"Valeur.3", type text}, {"Valeur.4", type text}, {"Valeur.5", type text}, {"Valeur.6", type text}, {"Valeur.7", type text}, {"Valeur.8", type text}, {"Valeur.9", type text}, {"Valeur.10", type text}, {"Valeur.11", type text}, {"Valeur.12", type text}}),
    #"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(#"Type modifié1", {"JOUR", "DISCIPLINE", "Attribut"}, "Attribut.1", "Valeur"),
    #"Lignes filtrées" = Table.SelectRows(#"Supprimer le tableau croisé dynamique des autres colonnes", each ([Valeur] <> "" and [Valeur] <> " ")),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Lignes filtrées",{"Attribut", "Attribut.1"}),
    #"Colonnes renommées" = Table.RenameColumns(#"Colonnes supprimées",{{"Valeur", "PROGRAMME"}})
in
    #"Colonnes renommées"
 
Merci Staple1600.
J'essaie de suivre la démarche via powerquery mais je bloque assez vite...
Comment procèdes-tu pour fractionner par délimiteur (tu es dans quelle colonne à ce moment la ? Valeur ?
 
Re, Bonjour @mapomme


@de_hanstrapp
J'ai fait un peu de ménage
PowerQuery:
let
  Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
   #"Fractionner la colonne par délimiteur" = Table.SplitColumn(Source, "PROGRAMME", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), {"PROGRAMME.1", "PROGRAMME.2", "PROGRAMME.3", "PROGRAMME.4", "PROGRAMME.5", "PROGRAMME.6", "PROGRAMME.7", "PROGRAMME.8", "PROGRAMME.9", "PROGRAMME.10", "PROGRAMME.11", "PROGRAMME.12"}),
    #"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(#"Fractionner la colonne par délimiteur", {"JOUR", "DISCIPLINE"}, "Attribut", "Valeur"),
    #"Lignes filtrées" = Table.SelectRows(#"Supprimer le tableau croisé dynamique des autres colonnes", each ([Valeur] <> "" and [Valeur] <> " ")),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Lignes filtrées",{"Attribut"}),
    #"Colonnes renommées" = Table.RenameColumns(#"Colonnes supprimées",{{"Valeur", "PROGRAMME"}})
in
    #"Colonnes renommées"

Pour tester, voici comment tu peux procéder
Depuis ton classeur exemple
Obtenir les données/A partir d'autres sources/Requête vide
Ce qui te mène dans PowerQuery
Là sur l'onglet Accueil, choisir Editeur avancé
Puis copier/coller le code M de mon dernier message
Tu dois obtenir ceci

Ensuite il te reste plus qu'à cliquer sur Fermer et Charger

@Efgé
Merci pour le fichier exemple.
Ce m'a remis les yeux en face des trous 😉
 
Merci Staple1600, je souhaitais simplement comprendre quelle manip tu as utilisée pour intégrer le séparateur #(If) car je n'y arrive pas.
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…