Critere en fonction d'une colonne power query

Bonjour,

Je souhaiterais savoir si cela est possible d'indiqué 1 à chaque fois q'un critère est vérifier mais dans la 1ère ligne en dessous du critère

Je met en PJ ce que je souhaite, j'ai essayer des petites choses mais cela n'a rien donner

Dans mon exmple je veux qu'a chaque fois le mot "Date" est trouvé alors on met 1 en dessous sinon 0

Merci d'avance

19test.xlsx (8.65 Ko)

Hello,

Une proposition

@+

21test-7.xlsx (17.00 Ko)

Bonjour,

Merci mais bon j'ai mis un exemple trop simple

Je met en PJ mon exmple complet au moins si il y a une solution je pourrais l'utiliser

Je veux toujours 1 sur la 1ère ligne en dessous du critère "Date" mais adans la colonne fusionné il y a beaucoup plus de donnés

Merci d'avance

19test2.xlsx (15.13 Ko)

Hello,

Je n'ai rien changé à la requête ... Juste adapter la taille de ton tableau

@+

16test2-1.xlsx (23.76 Ko)

Bonjour à tous !

Une autre approche Power Query ?

let
    Source = Excel.CurrentWorkbook(){[Name="tSource"]}[Content],
    Traitt = let 
                a=List.Buffer(Source[Fusionné]),
                n=List.Count(a),
                r=List.Generate(
                                ()=>[c=0,v=0],
                                each [c]<n,
                                each [c=[c]+1, v= if a{c-1}="Date" then 1 else 0],
                                each [v]
                                )
            in r
in
    Traitt

Bonjour JFL,

Ta méthode est parfaite par contre je voudrais mettre ton code dans le miens au niveau de "CRITERE" avec ce que j'ai mis javais presque tout sauf les dâtes

let 
    dossierPDF=let
                    S = (Paramètre1 as binary) => let
                    in
                    Pdf.Tables(Paramètre1, [Implementation="1.3"])
                    in S,
    Source = Folder.Files(Excel.CurrentWorkbook(){[Name="DOSSIERWATERLOGIC"]}[Content]{0}[Column1]),
    #"filtre PDF" = Table.SelectRows(Source, each ([Extension] = ".pdf")),
    #"Filtre fichiers" = Table.SelectRows(#"filtre PDF", each [Attributes]?[Hidden]? <> true),
    Transform = Table.AddColumn(#"Filtre fichiers", "transf table", each DOSSIERWATERLOGIC([Content])),
    #"transf table développé" = Table.ExpandTableColumn(Transform, "transf table", {"Id", "Name", "Kind", "Data"}, {"Id", "Name.1", "Kind", "Data"}),
    #"Data développé" = Table.ExpandTableColumn(#"transf table développé", "Data", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16"}),
    #"Colonnes fusionnées" = Table.CombineColumns(Table.TransformColumnTypes(#"Data développé", {{"Column13", type text}, {"Column14", type text}, {"Column15", type text}, {"Column16", type text}}, "fr-FR"),{"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Fusionné"),
    #"Autres colonnes supprimées" = Table.SelectColumns(#"Colonnes fusionnées",{"Name", "Kind", "Fusionné"}),
    NBCAR = Table.AddColumn(#"Autres colonnes supprimées", "NBCAR", each Text.Length([Fusionné])),
    CRITERE = Table.AddColumn(NBCAR, "CRITERE", each if Text.Contains([Fusionné], "Annulation") then 1 else if (Text.Contains([Fusionné], "L00") and Text.Length([Fusionné]) = 53) then 1 else if (Text.Contains([Fusionné], "L00") and Text.Length([Fusionné]) = 8) then 1 else if (Text.Contains([Fusionné], "CRN") and Text.Length([Fusionné]) = 11) then 1  else if Text.Contains([Fusionné], "Total € TTC") then 1 else if (Text.Contains([Fusionné], "Total EUR TTC") and Text.Length([Fusionné]) > 14) then 1 else if (Text.Contains([Fusionné], "Facture N°") and Text.Length([Fusionné]) = 83) then 1 else if (Text.Contains([Fusionné], "/ 2023") and Text.Length([Fusionné]) < 13) then 1 else 0),
    #"Lignes filtrées" = Table.SelectRows(CRITERE, each ([CRITERE] = 1)),
    #"Colonnes fusionnées1" = Table.CombineColumns(#"Lignes filtrées",{"Name", "Fusionné"},Combiner.CombineTextByDelimiter("//", QuoteStyle.None),"Fusionné.1"),
    #"Doublons supprimés" = Table.Distinct(#"Colonnes fusionnées1", {"Fusionné.1"}),
    Traitement = Table.AddColumn(#"Doublons supprimés", "Résultat", each let 
                a=Text.AfterDelimiter([Fusionné.1],"//")
                in if Text.StartsWith (a,"Total") then Text.AfterDelimiter(a,"TTC") 
                else if Text.StartsWith (a,"Facture") then Text.BetweenDelimiters(a,"N°","sur") 
                else if Text.StartsWith (a,"BIC") then Text.AfterDelimiter(a,"at:")
                else if Text.Contains(a, "Annulation") then "Annulation" & Text.BetweenDelimiters(a, "Annulation", "suite")
                else a),
    #"Epuration Traitement" = Table.SelectRows(Traitement, each Text.Length([Résultat]) <= 28),
    #"Valeur remplacée" = Table.ReplaceValue(#"Epuration Traitement"," ","",Replacer.ReplaceText,{"Résultat"}),
    #"Colonne conditionnelle ajoutée" = Table.AddColumn(#"Valeur remplacée", "TRI ETIQUETTE", each if Text.Contains([Résultat], "Annulation") then 53 else if Text.Contains([Résultat], "CRN") then 83 else if Text.Contains([Résultat], "L00") then 53 else [NBCAR]),
    #"Fractionner la colonne par délimiteur" = Table.SplitColumn(#"Colonne conditionnelle ajoutée", "Fusionné.1", Splitter.SplitTextByDelimiter(".pdf", QuoteStyle.Csv), {"Fusionné.1.1", "Fusionné.1.2"}),
    #"Lignes triées" = Table.Sort(#"Fractionner la colonne par délimiteur",{{"Fusionné.1.1", Order.Ascending}, {"TRI ETIQUETTE", Order.Ascending}}),
    Résultat = List.Split(#"Lignes triées"[Résultat],4),
    Final = Table.FromRows(Résultat,{"DATE PIECE","MONTANT","CONTRAT","N° FACTURE"}),
    #"Doublons supprimés1" = Table.Distinct(Final, {"N° FACTURE"})
in
    #"Doublons supprimés1"

Merci d'avance pour ton aide

Bonjour à tous de nouveau !

Partant de votre classeur exemple, j'ai ajouté une ligne de commande (Étape "Final") pour intégrer la liste "Critère" à la table source.

Code de la requête (à adapter !) :

let
    Source = Excel.CurrentWorkbook(){[Name="tSource"]}[Content],
    Traitt = let 
                a=List.Buffer(Source[Fusionné]),
                n=List.Count(a),
                r=List.Generate(
                                ()=>[c=0,v=0],
                                each [c]<n,
                                each [c=[c]+1, v= if a{c-1}="Date" then 1 else 0],
                                each [v]
                                )
            in r,
    Final = Table.FromColumns( Table.ToColumns(Source) & {Traitt},Table.ColumnNames(Source) & {"Critère"})
in
    Final

Bonjour JFL,

Merci c'est parfait je vais essayer de comprendre et d'adapter

Merci encore et merci aussi a BAROUTE78 pour ta proposition

Cordialement,

Rechercher des sujets similaires à "critere fonction colonne power query"