[Expert] Match Export CSV sans accent
#1 Fonction FnSansAccents
Ajouter dans une requête vide powerquery la fonction suivante et la nommer "FnSansAccents":
(texte as nullable text) as nullable text =>
let
// Liste des caractères accentués et leur équivalent
Source = "àáâãäåçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸ",
Cible = "aaaaaaceeeeiiiinooooouuuuyyAAAAAACEEEEIIIINOOOOOUUUUYY",
// Processus de remplacement caractère par caractère
Resultat = if texte = null then null else List.Accumulate(
{0..Text.Length(Source)-1},
texte,
(state, current) => Text.Replace(state, Text.At(Source, current), Text.At(Cible, current))
)
in
Resultat#2 Requête URL_SAL
Changer la requête URL_SAL pour neutraliser tous les accents en remplaçant l'intégralité du contenu de la requête avec ce code :
let
// --- Définition de la fonction de nettoyage (interne) ---
FnSansAccents = (texte as nullable text) as nullable text =>
let
Source = "àáâãäåçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸ",
Cible = "aaaaaaceeeeiiiinooooouuuuyyAAAAAACEEEEIIIINOOOOOUUUUYY",
Resultat = if texte = null then null else List.Accumulate(
{0..Text.Length(Source)-1},
texte,
(state, current) => Text.Replace(state, Text.At(Source, current), Text.At(Cible, current))
)
in
Resultat,
// --- Ta requête d'origine ---
Source = Csv.Document(AzureStorage.BlobContents("https://pkstdataeuwdls01.blob.core.windows.net/lake/p/sharepoint/salarie.csv?sp=r&st=2024-02-21T11:15:32Z&se=2026-09-30T18:15:32Z&spr=https&sv=2022-11-02&sr=b&sig=o6h4J5PW8dxw7T6en3qBhKqJXdANLNV%2Fq3%2BKa2%2FcEPo%3D"),[Delimiter=",", Columns=14, Encoding=65001, QuoteStyle=QuoteStyle.None]),
#"En-têtes promus" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Colonnes supprimées" = Table.RemoveColumns(#"En-têtes promus",{""}),
#"Type modifié avec paramètres régionaux" = Table.TransformColumnTypes(#"Colonnes supprimées", {{"ClePersonne", Int64.Type}}, "en-US"),
// --- Application sur les colonnes NOM et PRENOM ---
#"Accents Supprimés" = Table.TransformColumns(
#"Type modifié avec paramètres régionaux",
{
{"Nom", FnSansAccents, type text},
{"Prenom", FnSansAccents, type text}
}
)
in
#"Accents Supprimés"#3 Requête export_csv
Ajouter la fonction dans la requête "export_csv". Apres avoir identifier l'étape "Texte en majuscule" et "Requête fusionnées", remplacer les deux étapes par ce bloc de code :
//
#"Texte en majuscules" = Table.TransformColumns(#"Colonnes permutées",{{"Nom", Text.Upper, type text}, {"Valeur", Text.Upper, type text}}),
#"Ajout Nom sans accent" = Table.AddColumn(#"Texte en majuscules", "NomSansAccent", each
let
Source = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝŸ",
Cible = "AAAAAACEEEEIIIINOOOOOUUUUYY"
in
List.Accumulate({0..Text.Length(Source)-1}, [Nom], (state, current) => Text.Replace(state, Text.At(Source, current), Text.At(Cible, current))), type text),
#"Requêtes fusionnées" = Table.NestedJoin(#"Ajout Nom sans accent", {"NomSansAccent"}, Salariés, {"NomPrenom"}, "sal_id_nom", JoinKind.LeftOuter),
//