Power Query Power Query - Passage variable sur champs

Lolote83

XLDnaute Barbatruc
Bonjour,

Je continue d'apprendre l'utilisation de Power Query
Grâce à vous, j'ai réussi à passer certains paramètres en variable afin de pourvoir automatiser certaines données.
Aujourd'hui, je souhaitais faire la même chose, mais la variable est un champs.
Vous trouverez dans le fichier joint un exemple qui fonctionne et un qui malheureusement ne fonctionne pas (Exemple 1 et 2)
Merci à toutes celles et ceux qui se pencheront sur mon petit problème
La question posée se trouve aussi dans le fichier avec les tests effectués

Cordialement
Lolote83
 

Pièces jointes

  • PQ - TestFiltreContient.xlsx
    26 KB · Affichages: 3

Lolote83

XLDnaute Barbatruc
Re bonjour,
Merci, cela fonctionne. Y a-t-il une possibilité de ne pas tenit compte de "la casse". Que je saisisse par exemple "petit", "PETIT", "PeTit" ou "pETIt", cela fonctionne.
Je cherche de mon coté

@+ Lolote83
 
Dernière édition:

alexga78

XLDnaute Occasionnel
Re,

pour la cassse


PowerQuery:
let
A = each Excel.CurrentWorkbook(){[Name=_]}[Content],
B = Table.FirstValue,
C = Table.FromRecords(List.Select(Table.ToRecords(A("Tab_BASE")), each Text.Contains(Record.Field(_,B(A("ND_Champs"))), B(A("ND_Recherche2")),Comparer.OrdinalIgnoreCase)))
in C

Cordialement
 

Lolote83

XLDnaute Barbatruc
Re bonjour à tous.
Toujours dans la continuité d'apprendre, je souhaiterais réaliser une condition
Comme vous l'avez compris, je souhaite rechercher une expression dans un champs particulier (qui est passé en variable). Merci cela fonctionne.
Cependant, certains champs sont de type "chaine de caractères", d'autres de type "numérique".
Hors, en ayant rajouté la "casse" afin de mieux contrôler la variable, celle-ci fonctionne bien sur une chaine de caractères mais pas sur du numérique. J'aurais donc souhaité faire une condition comme le montre la copie d'écran ci-dessous.
1734777373823.png

Bien sur, cela ne fonctionne pas comme ça. Je ne trouve pas l'expression à écrire.
Dernière chose et ce serait un plus, la base de données contient donc du texte avec parfois des accents, parfois non (style "La porte est fermée", "La porte ne ferme plus", "Je suis tombé par terre", "La pluie tombe" ......)
Si je recherche le mot "porte", j'aurais bien 2 lignes, alors que si je recherche le mot "ferme", je n'aurais qu'une seule ligne de même que si je recherche "tombé". Au final, j'aurais aimé avoir les 2 lignes (ignorer les accents en fait)
Merci pour ceux et celles qui se pencheront sur ma problématique
Je vous souhaite à toutes et à tous de bonnes fêtes de fin d'année
@+ Lolote83
 

mromain

XLDnaute Barbatruc
Bonjour Lolote8 alexga, le forum,

Tu trouveras ci-dessous la requête modifiée :
PowerQuery:
 et
    listReplacements = let TxtReplacements = "éeàaèeùuâaêeîiôoûuëeïiÉEÀAÈEÙUÂAÊEÎIÔOÛUËEÏI" in List.Buffer(List.Transform({0 .. Text.Length(TxtReplacements)/2-1}, each {Text.Range(TxtReplacements,_*2,1), Text.Range(TxtReplacements,_*2+1,1)})),
    fnMultiReplace = (t as nullable text, r as list) as nullable text => List.Accumulate(r, t, (s, c) => Text.Replace(s, c{0}, c{1})),
    xChamps = Table.FirstValue(Excel.CurrentWorkbook(){[Name="ND_Champs"]}[Content]),
    xRecherche = Table.FirstValue(Excel.CurrentWorkbook(){[Name="ND_Recherche2"]}[Content]),
    Source = Excel.CurrentWorkbook(){[Name="Tab_BASE"]}[Content],
    TypesModifiés = Table.TransformColumnTypes(Source,{{"Nom", type text}, {"Prenom", type text}, {"Age", Int64.Type}}),
    LignesFiltrées = Table.SelectRows(TypesModifiés, each Text.Contains(fnMultiReplace(Text.From(Record.Field(_, xChamps)), listReplacements), Text.From(xRecherche), Comparer.OrdinalIgnoreCase))
in
    LignesFiltrées
  • l’étape listReplacements sert à définir la liste des caractères accentués et le caractère non accentué associé
  • l’étape fnMultiReplace sert à définir une fonction permettant d’effectuer plusieurs remplacements sur un texte
  • l’étape LignesFiltrées a été modifiée pour gérer le cas des données numériques (avec l’utilisation de la fonction Text.From) et le cas des accents (avec l’utilisation de la fonction fnMultiReplace)

A+
 

Discussions similaires

Réponses
13
Affichages
2 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
315 087
Messages
2 116 083
Membres
112 655
dernier inscrit
fannycordi