
Supprimer dernière ligne
Supprimer dernière ligne
Posté par Eric sur 12 novembre 2024 à 10h59Bonjour
Je cherche en power query à supprimer la dernière ligne de chaque salle (ou alors la date la plus ancienne de chaque salle), dans mon tableau.
Je sèche.Merci de votre aide
ps : je ne sais pas comment mettre en fichier excel
.
Eric a répondu Il y a 3 mois 4 Membres · 5 Réponses- 5 Réponses
Bonjour,
Pour supprimer la date la plus récente dans Excel, vous pouvez trier vos données par “salles”, puis par “dates” décroissantes
Puis ajouter une colonne utilisant la formule : =SI(A2=A1; C1+1; 1)
Cela permet de comparer la “Salle” d’une ligne avec celle de la ligne précédente
Si elles sont identiques, on incrémente le numéro précédent de 1, sinon, on recommence à 1.Puis exclure toutes les numérotation égale à 1
Ou faire la meme chose dans PowerBi en DAX : Ajouter une colonne “Numérotation” :
Numérotation = RANKX( FILTER( ‘VotreTable’, ‘VotreTable'[Salles] = EARLIER(‘VotreTable'[Salles]) ), ‘VotreTable'[Dates], , DESC, DENSE )
(pour les dates les plus anciennes, modifier le tri dans Excel, ou remplacer DESC par ASC dans la formule DAX)
Cordialement
-
Cette réponse a été modifiée Il y a 3 mois, 1 semaine par
Pascal.
-
Cette réponse a été modifiée Il y a 3 mois, 1 semaine par
Merci
Ce forum est extra.
Mais savez vous comment transcrire la formule power bi (DAX) en power query (excel, je crois langage M), car c’est dans cet outil que je dois intégrer cette colonne.
Merci encore
S’il s’agit TOUJOURS de supprimer la dernière ligne, il suffit d’aller dans power query sous:
et sélectionner “supprimer les lignes du bas” après avoir trier par date
Bonjour
Voici une solution pour supprimer la dernière ligne pour chaque salle.
- Trier la table par salle et par date
- Fare un regroupement par salle, avec une sortie sur deux colonnes (et deux opérations) : une sur “toutes les lignes”, et une autre sur “compter les lignes”
- Ajouter une colonne personnalisée qui ajoute un numéro de ligne (un index) par salle
- Supprimer les colonnes en trop, ici “Salle” et “Table” (pas indispensable, mais c’est plus propre)
- Cliquer sur la double flèche pour développer la colonne NumLigne
- Créer un filtre quelconque. Il s’agit juste d’avoir une base, car nous allons la modifier la formule
- Dans la barre de formule, modifier l’expression du filtre pour ne garder que les lignes dont l’index est différent de NbLignesParSalle. Dans la capture ci-dessous, j’ai ajouté une condition pour ne pas supprimer la salle s’il n’y a qu’une ligne
A titre indicatif, voici le script dont je me suis servi. Il suffit de le coller dans l’éditeur avancé d’une requête vide pour voir les opérations en détail.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCk7MyUlVMFTSUTIw1c1PLlGK1UERNMMmaI5N0AJN0AgoaGiIRRDDImOQoCWaoAlIuwEWQewqoRbFAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Salle = _t, Date = _t]),
#"Type modifié" = Table.TransformColumnTypes(Source,{{"Salle", type text}, {"Date", type date}}),
#"Lignes triées" = Table.Sort(#"Type modifié",{{"Salle", Order.Ascending}, {"Date", Order.Ascending}}),
#"Lignes groupées" = Table.Group(#"Lignes triées", {"Salle"}, {{"Table", each _, type table [Salle=nullable text, Date=nullable date]}, {"NbLignesParSalle", each Table.RowCount(_), Int64.Type}}),
#"Personnalisée ajoutée" = Table.AddColumn(#"Lignes groupées", "NumLigne", each Table.AddIndexColumn( [Table], "Index", 1 )),
#"Colonnes supprimées" = Table.RemoveColumns(#"Personnalisée ajoutée",{"Salle", "Table"}),
#"NumLigne développé" = Table.ExpandTableColumn(#"Colonnes supprimées", "NumLigne", {"Salle", "Date", "Index"}, {"Salle", "Date", "Index"}),
#"Lignes filtrées" = Table.SelectRows(#"NumLigne développé", each ([Index] <> [NbLignesParSalle] or [NbLignesParSalle] = 1))
in
#"Lignes filtrées"Merci à tous
Tout est ok maintenant
Connectez-vous pour répondre.