---
title: "Texte en Power Query : nettoyer, remplacer, découper"
description: "Espaces parasites, casse, remplacements, découpage : les fonctions de texte Power Query (M) qui fiabilisent vos jointures et vos segments, avec exemples."
url: "https://data-slconsulting.com/texte-power-query/"
lang: "fr-FR"
---

[Richard Ginier, fondateur](https://www.linkedin.com/in/richard-ginier/) · 18 août 2026

# Nettoyer du texte en Power Query

Un rapport faux commence souvent par un texte sale : « Paris », « paris » et « Paris » (avec un espace de fin) comptent pour trois villes différentes dans un TCD comme dans Power BI. Le nettoyage se fait en Power Query, une fois pour toutes, à l’actualisation. Voici les fonctions de texte que nous utilisons vraiment, regroupées par problème à résoudre. Chaque exemple se colle dans une **colonne personnalisée**, et la plupart existent aussi en bouton dans l’onglet Transformer (Format).

## Espaces et caractères invisibles

```
Text.Trim ( [Libellé] ) // retire les espaces en début et fin
Text.Clean ( [Libellé] ) // retire les caractères de contrôle (retours ligne…)
Text.Trim ( Text.Clean ( [Libellé] ) ) // les deux, l'enchaînement classique
```

Le duo Trim + Clean corrige la cause n°1 des doublons fantômes dans les segments et des jointures qui échouent. Les exports d’ERP et les copiés-collés d’Excel en sont truffés. Pour les espaces internes multiples (« Dupont Jean »), combinez avec un remplacement : `Text.Combine ( List.Select ( Text.Split ( [Libellé], " " ), each _ <> "" ), " " )`.

## La casse : majuscules et minuscules

```
Text.Proper ( [Nom] ) // Une Majuscule À Chaque Mot
Text.Upper ( [Code] ) // TOUT EN CAPITALES
Text.Lower ( [Email] ) // tout en minuscules
```

`Text.Proper` est parfait pour des noms propres saisis n’importe comment, avec une limite à connaître : il met aussi une majuscule après les apostrophes et traite « De La Fontaine » sans finesse. Pour les emails et les codes de jointure, imposez systématiquement `Text.Lower` ou `Text.Upper` des deux côtés de la relation : Power Query est sensible à la casse, « ABC123 » et « abc123 » ne se joignent pas.

## Remplacer et supprimer

```
Text.Replace ( [Tel], " ", "" ) // supprime tous les espaces
Text.Replace ( [Ref], "REF-", "" ) // retire un préfixe fixe
Text.Remove ( [Montant], {"€", " "} ) // retire une liste de caractères
Text.Select ( [Montant], {"0".."9", ",", "-"} ) // ne garde QUE ces caractères
```

`Text.Select` mérite d’être plus connu : plutôt que d’énumérer ce qu’on enlève, on décrit ce qu’on garde. Idéal pour extraire un montant d’une colonne qui mélange « 1 234,56 € » et « N/A », juste avant la conversion en nombre.

## Découper et extraire

```
Text.Split ( [NomComplet], " " ) // liste des morceaux
Text.BeforeDelimiter ( [Email], "@" ) // la partie avant @
Text.AfterDelimiter ( [Email], "@" ) // le domaine
Text.Start ( [Code], 3 ) // les 3 premiers caractères
Text.End ( [Code], 4 ) // les 4 derniers
Text.Middle ( [Code], 2, 5 ) // 5 caractères à partir du 3e
```

L’interface propose la même chose via **Fractionner la colonne** et **Extraire**, ce qui suffit dans la plupart des cas. Le code prend le relais quand la règle varie selon la ligne, par exemple un code dont la longueur du préfixe change : `Text.BeforeDelimiter` reste alors plus robuste qu’un nombre de caractères fixe.

## Chercher et tester

```
Text.Contains ( [Libellé], "avoir", Comparer.OrdinalIgnoreCase ) // contient ?
Text.StartsWith ( [Code], "FR" ) // commence par ?
Text.EndsWith ( [Fichier], ".xlsx" ) // finit par ?
Text.PositionOf ( [Libellé], "-" ) // position du caractère (-1 si absent)
Text.Length ( [Code] ) // longueur
```

Ces tests alimentent les colonnes conditionnelles : marquer les avoirs dans un journal de ventes, isoler les lignes françaises par leur préfixe, repérer les codes à la longueur anormale avant qu’ils ne cassent une jointure. Le troisième argument `Comparer.OrdinalIgnoreCase` rend le test insensible à la casse, ce qui évite bien des surprises.

## Nettoyage de texte : ce qui revient souvent

### Bouton de l’interface ou code M ?

Le bouton, tant qu’il fait exactement ce qu’il faut : il génère le même M et reste lisible pour la personne qui reprendra la requête. Le code devient nécessaire quand on enchaîne plusieurs transformations en une étape ou que la règle dépend de la ligne.

### Comment gérer les accents dans les jointures ?

Le plus sûr est de normaliser les deux colonnes avant la fusion : casse forcée avec Text.Lower, espaces nettoyés avec Text.Trim, et si besoin remplacement des caractères accentués un à un avec Text.Replace. Les jointures approximatives (fuzzy) sont l’autre option quand les écarts sont trop variés.

### Où trouver la liste complète des fonctions Text ?

Sur Microsoft Learn, section Text functions du langage M. Notre [référence Power Query & DAX](https://data-slconsulting.com/reference-power-query-dax/) recense celles qui servent au quotidien, avec leurs cas d’usage.

Chaque fichier nettoyé à la main est un fichier qu’il faudra renettoyer le mois prochain. Notre [calculateur du coût du reporting manuel](https://data-slconsulting.com/calculateur-cout-reporting/) chiffre ce que ces retraitements coûtent réellement à votre organisation.

**Sources.** Documentation officielle, consultée le 22 août 2026 : [liste des fonctions Text](https://learn.microsoft.com/fr-fr/powerquery-m/text-functions), [Text.Trim](https://learn.microsoft.com/fr-fr/powerquery-m/text-trim), [Text.Clean](https://learn.microsoft.com/fr-fr/powerquery-m/text-clean).

## Parlons de vos données.

30 minutes pour évaluer votre situation. Conseils concrets garantis, avec ou sans mission.

[Réserver un appel](https://data-slconsulting.com/contact/) ou 01 83 64 60 25

---

Version Markdown de https://data-slconsulting.com/texte-power-query/ (pour les agents IA : en-tête Accept: text/markdown, suffixe .md ou ?mode=agent). Index du site pour les agents : https://data-slconsulting.com/llms.txt. API publique : https://data-slconsulting.com/developers/. Contact : contact@data-slconsulting.com, 01 83 64 60 25.
