Supprimer dernière ligne

  • Supprimer dernière ligne

    Posté par Eric sur 12 novembre 2024 à 10h59

    Bonjour

    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 2 semaines, 5 jours 4 Membres · 5 Réponses
  • 5 Réponses
  • Pascal

    Membre
    12 novembre 2024 à 14h23

    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 semaines, 3 jours par  Pascal.
  • Eric

    Membre
    12 novembre 2024 à 16h03

    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

  • Sophie

    Membre
    14 novembre 2024 à 11h48

    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

  • ypicot

    Membre
    16 novembre 2024 à 13h50

    Bonjour

    Voici une solution pour supprimer la dernière ligne pour chaque salle.

    1. Trier la table par salle et par date
    2. 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”
    3. Ajouter une colonne personnalisée qui ajoute un numéro de ligne (un index) par salle
    4. Supprimer les colonnes en trop, ici “Salle” et “Table” (pas indispensable, mais c’est plus propre)
    5. Cliquer sur la double flèche pour développer la colonne NumLigne
    6. Créer un filtre quelconque. Il s’agit juste d’avoir une base, car nous allons la modifier la formule
    7. 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"

  • Eric

    Membre
    17 novembre 2024 à 12h07

    Merci à tous

    Tout est ok maintenant

Connectez-vous pour répondre.