Nettoyer les espaces invisibles d’un export Excel avec une macro
Lance la macro sur ta sélection et repars avec des cellules propres, espaces insécables, espaces de largeur nulle et sauts de ligne compris.
Un export collé depuis le web arrive avec des espaces en trop, mais aussi avec trois espaces invisibles et des sauts de ligne que SUPPRESPACE laisse en place. Notre macro Nettoyer_texte les retire tous, dans chaque cellule que tu sélectionnes, sans colonne d’aide ni collage en valeurs. Les formules de cette page traitent, elles, une colonne à la fois.
Réduire les espaces en trop avec SUPPRESPACE
Pour supprimer les espaces en trop dans une cellule, la fonction SUPPRESPACE retire ceux du début et de la fin du texte. Entre deux mots, elle réduit à un seul ceux qui se répètent, si bien qu’un nom, une adresse ou un libellé garde l’espace qui sépare ses mots. Comme toute formule, elle rend toutefois son résultat dans une autre cellule, qu’il faut ensuite coller sur la colonne d’origine.
Toute la page suit un même exemple, un export de clients collé depuis le web, où chaque ligne pose un problème différent. La feuille ci-dessous en montre le client, la ville et le montant, sans les colonnes C et D. Comme un espace ne se voit pas dans une cellule, la liste placée sous la feuille détaille, ligne par ligne, les caractères cachés.
L’export de clients, colonnes A, B et E
| A | B | E | |
|---|---|---|---|
| 1 | Client | Ville | Montant |
| 2 | Martin Dupont | Lyon | 1 250,00 |
| 3 | Sophie Bernard | Paris | 980,50 |
| 4 | Lucas Roux | Nantes | 2 400,00 |
| 5 | Emma Leroy | Bourg-en-Bresse | 1500 |
| 6 | Hugo Garnier | Marseille | 315,2 |
| 7 | Nina Faure | Bordeaux Cedex | 640 |
La ligne 2 cache deux espaces avant le nom, un espace après la ville et un espace insécable étroit entre les milliers.
La ligne 3 cache trois espaces entre le prénom et le nom, puis un espace insécable après le montant.
La ligne 4 cache un espace insécable entre le prénom et le nom, un autre avant la ville et un troisième entre les milliers.
La ligne 5 cache un espace insécable après le nom, et un autre après le code postal 01000 de la colonne C.
La ligne 6 cache un espace de largeur nulle après le nom.
Sur la ligne 7, la ville est écrite sur deux lignes avec Alt+Entrée.
Écrire la formule SUPPRESPACE dans une colonne voisine
La formule SUPPRESPACE s’écrit dans une colonne vide à côté des données, en F2, puis se recopie jusqu’en F7, parce qu’une cellule ne peut pas se nettoyer elle-même. Écrite dans A2, =SUPPRESPACE(A2) ferait en effet référence à sa propre cellule. Dans la colonne F, elle rend alors « Martin Dupont » et « Sophie Bernard » sans leurs espaces de trop, mais laisse en place les espaces insécables des lignes 4 à 6.
=SUPPRESPACE(A2)Rend « Martin Dupont », et NBCAR passe de 15 à 13 caractères, sans les deux espaces du début.
Coller le texte nettoyé en valeurs sur la colonne d’origine
Pour remettre les noms nettoyés à leur place, colle-les en valeurs sur la colonne A. Le collage spécial en valeurs recopie en effet le texte que la formule affiche, sans la formule elle-même, si bien que la colonne d’aide n’a plus de raison d’être. Un collage ordinaire serait ici un piège, car les formules collées sur la colonne A, après Ctrl+C comme après Ctrl+X, deviennent =SUPPRESPACE(#REF!) et n’affichent plus que #REF!.
- 01
Sélectionne les formules de F2 à F7, puis copie-les avec Ctrl+C.
- 02
Fais un clic droit sur A2, choisis Collage spécial, coche Valeurs dans la fenêtre qui s’ouvre, puis valide par OK.

Dans la fenêtre Collage spécial, l’option Valeurs ne colle que le résultat des formules. - 03
Supprime la colonne F, dont les formules ne servent plus.
Retirer tous les espaces d’un code ou d’une référence
Pour supprimer tous les espaces d’une cellule, même celui qui sépare deux mots, il faut passer par SUBSTITUE ou par Rechercher et remplacer. C’est ce qu’on attend d’un code article, d’une référence ou d’un numéro de téléphone, où SUPPRESPACE laisserait un espace entre deux blocs. SUBSTITUE écrit son résultat à côté, dans une colonne d’aide, alors que Rechercher et remplacer nettoie les cellules elles-mêmes.
Enlever chaque espace d’un texte avec SUBSTITUE
Pour enlever chaque espace d’un texte, SUBSTITUE le remplace par un texte vide, et comme elle traite toutes les occurrences, l’espace disparaît partout où il se trouve. Sur un nom, la formule colle pourtant le prénom au nom, comme sur la ligne de Sophie Bernard, ce qui la réserve aux codes et aux numéros.
=SUBSTITUE(A3;" ";"")Rend « SophieBernard », sans aucun des trois espaces qui séparaient les deux mots.
Remplacer un espace par rien avec Ctrl+H
Avec Ctrl+H, qui ouvre la fenêtre Rechercher et remplacer, il suffit de remplacer un espace par rien pour retirer d’un seul geste tous les espaces ordinaires de la sélection. Le résultat est celui de SUBSTITUE, mais obtenu sur place, puisque la fenêtre réécrit chaque cellule sélectionnée qui contient le texte cherché. Tu n’as donc ni colonne d’aide ni collage à faire, mais les espaces insécables restent, et la section suivante les traite.
- 01
Sélectionne les cellules à nettoyer, par exemple la colonne A, pour que le remplacement ne touche pas au reste de la feuille.
- 02
Appuie sur Ctrl+H pour ouvrir la fenêtre Rechercher et remplacer sur son onglet Remplacer.

L’onglet Remplacer, champs encore vides. Le bouton Remplacer tout est en bas à gauche. - 03
Tape un espace dans le champ Rechercher, laisse le champ Remplacer par vide, puis clique sur Remplacer tout.
Si tu veux seulement réduire les espaces doublés, sans coller les mots, tape plutôt deux espaces dans Rechercher et un seul dans Remplacer par. Clique ensuite sur Remplacer tout autant de fois qu’il le faut, soit deux fois pour les trois espaces qui séparent « Sophie » de « Bernard ». Un espace isolé en début ou en fin de cellule reste pourtant en place, et c’est là que SUPPRESPACE garde l’avantage.
Traiter l’espace insécable que SUPPRESPACE ne voit pas
Pour supprimer un espace insécable, il faut le désigner par son numéro, 160, soit dans une formule avec CAR(160), soit en tapant le caractère dans Rechercher et remplacer. SUPPRESPACE n’y peut rien, puisque l’aide de Microsoft précise qu’elle ne retire que l’espace ordinaire, le caractère 32, alors que l’espace insécable est couramment employé dans les pages web. Quand elle semble ne rien faire, c’est donc que le texte contient un espace qu’elle ne voit pas, comme l’espace insécable.
Prends « Lucas Roux », collé depuis le web avec un espace insécable entre le prénom et le nom. À l’écran, rien ne le distingue du même nom tapé au clavier, et pourtant les deux textes ne sont pas égaux pour Excel. Une RECHERCHEV qui cherche le nom tapé renvoie donc #N/A, comme si le client n’existait pas.
Repérer un espace invisible avec NBCAR et UNICODE
Un espace invisible se repère en deux temps, en le comptant d’abord avec NBCAR, puis en demandant son numéro à UNICODE. Pour « Emma Leroy », qui n’affiche que 10 caractères, NBCAR rend 11. Le caractère en trop est ici le dernier, que DROITE isole pour le passer à UNICODE.
=UNICODE(DROITE(A5;1))Rend 160, le numéro de l’espace insécable, là où un espace ordinaire rendrait 32.
Préfère UNICODE à CODE, qui rend bien 160 pour l’espace insécable, mais pas le numéro des deux autres espaces invisibles de l’exemple. Pour l’insécable étroit du montant de E2 comme pour l’espace de largeur nulle qui suit « Hugo Garnier », CODE rend en effet 63, le code du point d’interrogation. UNICODE donne au contraire leurs vrais numéros, 8239 et 8203, que la suite de cette section emploie.
Changer CAR(160) en espace ordinaire avant SUPPRESPACE
La formule sûre commence par changer chaque espace insécable en espace ordinaire, avec SUBSTITUE et la fonction CAR, qui désigne l’insécable par CAR(160). SUPPRESPACE n’a plus ensuite qu’à retirer les espaces en trop, comme celui qui suit « Emma Leroy ». Dans cet ordre, « Lucas Roux » garde l’espace qui sépare son prénom de son nom.
=SUPPRESPACE(SUBSTITUE(A4;CAR(160);" "))Rend « Lucas Roux », identique au nom tapé au clavier, que RECHERCHEV retrouve.
Méfie-toi de l’ordre inverse, =SUBSTITUE(SUPPRESPACE(A4);CAR(160);""), qui supprime l’espace insécable au lieu de le remplacer et rend donc « LucasRoux », les deux mots collés. Cet ordre ne convient qu’à un espace insécable placé au début ou à la fin du texte, et devient un piège sur une colonne de noms.
Nettoyer l’insécable étroit et l’espace de largeur nulle avec UNICAR
Pour l’insécable étroit et l’espace de largeur nulle, il faut UNICAR, qui les désigne par leur numéro, puisque la fonction CAR s’arrête à 255. Ces deux caractères invisibles résistent en effet à SUPPRESPACE, même précédée de SUBSTITUE et de CAR(160). Le premier, le caractère 8239, sépare les milliers du montant de E2, et le second, le caractère 8203, suit « Hugo Garnier » sans prendre aucune place à l’écran. Trois SUBSTITUE imbriqués traitent alors les trois espaces invisibles d’un coup, avant que SUPPRESPACE ne retire ce qui reste en trop.
=SUPPRESPACE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A6;CAR(160);" ");UNICAR(8239);" ");UNICAR(8203);""))Rend « Hugo Garnier », 12 caractères au lieu de 13, et donne le même résultat propre sur les noms des lignes 4 et 5.
Taper l’espace insécable avec Alt+0160 dans Ctrl+H
Pour traiter l’espace insécable sans formule, tape-le dans le champ Rechercher de la fenêtre que Ctrl+H ouvre, où il ressemble à un espace ordinaire. D’après l’aide de Microsoft, un caractère se tape en maintenant la touche Alt pendant qu’on tape son code sur le pavé numérique, 0160 pour l’espace insécable. Remplace-le ensuite par un espace, puis passe SUPPRESPACE, car le remplacement laisse un espace ordinaire devant « Nantes ». L’insécable étroit et l’espace de largeur nulle se traitent en revanche plus sûrement avec SUBSTITUE et UNICAR, qui les désignent par leur numéro sans qu’il faille les taper.
Retirer les sauts de ligne d’une cellule sans coller les mots
Pour retirer un saut de ligne sans coller les mots, change-le d’abord en espace avec SUBSTITUE et CAR(10), puis laisse SUPPRESPACE finir le travail. EPURAGE semble pourtant faite pour ça, puisqu’elle retire les caractères de contrôle, numérotés de 0 à 31 d’après l’aide de Microsoft. Le saut de ligne et la tabulation en font partie, mais elle les supprime sans rien mettre à leur place. « Bordeaux » et « Cedex », écrits sur deux lignes en B7 avec Alt+Entrée, deviennent ainsi « BordeauxCedex ».
=SUPPRESPACE(SUBSTITUE(B7;CAR(10);" "))Rend « Bordeaux Cedex » sur une seule ligne, là où =EPURAGE(B7) colle les deux mots.
Enlever les espaces entre les chiffres d’un nombre
Pour enlever les espaces entre les chiffres d’un nombre, regarde d’abord ce que la cellule contient vraiment, puisque l’espace des milliers n’est pas toujours un caractère. Un vrai nombre ne porte qu’un format d’affichage, alors qu’un montant collé depuis le web peut rester un texte, que SOMME ignore. La fonction ESTTEXTE permet de trancher, puisqu’elle rend VRAI pour un montant resté en texte. Dans l’exemple, =SOMME(E2:E7) rend ainsi 2 455,2, le total des trois seuls vrais nombres de la colonne.
Décocher le séparateur de milliers du format de cellule
Sur un vrai nombre, l’espace des milliers disparaît dès qu’on décoche une seule case, alors qu’aucune formule ne peut le retirer. Il ne vient en effet que du format de la cellule, et ne fait pas partie de sa valeur. Sélectionne les cellules, ouvre le format de cellule avec Ctrl+1, puis, dans la catégorie Nombre de l’onglet Nombre, décoche la case Utiliser le séparateur de milliers.
Convertir avec CNUM un montant collé en texte
Un montant resté en texte, que SOMME laisse de côté, se convertit avec CNUM, à condition d’en retirer d’abord les espaces insécables. Tant que l’insécable étroit sépare ses milliers, =CNUM(E2) renvoie en effet #VALEUR!, alors qu’un espace ordinaire ne gêne pas la fonction. CNUM lit ainsi le texte « 1 250,00 » comme le nombre 1 250.
=CNUM(SUBSTITUE(SUBSTITUE(E2;UNICAR(8239);"");CAR(160);""))Rend 1 250, un vrai nombre que SOMME additionne. Écrite dans une colonne libre, en F2, puis recopiée jusqu’en F4, elle rend aussi 980,5 et 2 400 pour les montants de E3 et E4.
Colle ensuite ces résultats en valeurs sur la colonne d’origine, comme tu l’as fait pour SUPPRESPACE. Après la macro de la section suivante, qui change les insécables en espaces ordinaires, =CNUM(E2) suffit à lui seul.
Nettoyer toute une sélection avec la macro Nettoyer_texte
Notre macro Nettoyer_texte supprime d’un seul geste les espaces en trop et les espaces invisibles vus plus haut, dans toutes les cellules sélectionnées. Elle change d’abord en espaces les deux espaces insécables, les sauts de ligne et les tabulations, puis retire l’espace de largeur nulle. EPURAGE et SUPPRESPACE finissent ensuite le travail directement dans chaque cellule, sans colonne d’aide ni collage. C’est donc la méthode d’un export entier, quand les colonnes à nettoyer sont trop nombreuses pour leur consacrer une formule chacune.
Dans l’aperçu, la colonne Caractères compte les caractères de chaque nom avec NBCAR, parce qu’un espace de trop ne se voit pas dans la cellule. La ligne 8 cherche la ville de « Lucas Roux » avec RECHERCHEV, qui renvoie #N/A avant la macro et « Nantes » après. Le code postal 01000, lui, garde son zéro, puisque la macro laisse chaque texte en texte.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Client | Ville | Code postal | Caractères |
| 2 | Martin Dupont | Lyon | 69003 | 13 |
| 3 | Sophie Bernard | Paris | 75011 | 14 |
| 4 | Lucas Roux | Nantes | 44000 | 10 |
| 5 | Emma Leroy | Bourg-en-Bresse | 01000 | 10 |
| 6 | Hugo Garnier | Marseille | 13001 | 12 |
| 7 | Nina Faure | Bordeaux Cedex | 33000 | 10 |
| 8 | Lucas Roux | Nantes |
Installer la macro dans un module neuf
Ouvre l’éditeur VBA avec Alt+F11 et colle le code dans un module neuf (menu Insertion, Module). Reviens à ta feuille, sélectionne les cellules à nettoyer, puis lance Nettoyer_texte avec Alt+F8.
Ne nettoyer que les cellules texte, sans toucher aux formules
Elle ne réécrit que les cellules texte qui ont besoin d’un nettoyage. Les formules, les nombres, les dates et les textes déjà propres restent tels quels, et relancée sur une sélection propre, elle annonce 0 cellule nettoyée.
Le résultat reste un texte. Elle le réécrit précédé de l’apostrophe qui force le texte à la saisie, invisible dans la cellule, si bien que 01000 garde son zéro, que 01/02 ne devient pas une date et que +33 6 12 34 56 78 ne devient pas une formule.
Un montant collé en texte reste donc un texte, mais sans ses espaces insécables, et =CNUM(E2) le convertit ensuite en 1 250.
Une cellule qui ne contenait que des espaces devient vide.
Elle coupe les événements le temps du nettoyage, si bien qu’une macro qui réagit aux changements de la feuille ne se déclenche pas à chaque cellule.
Elle annonce à la fin le nombre de cellules nettoyées. Sur une feuille protégée, elle s’arrête à la première cellule verrouillée, et son message en donne la raison.
Ctrl+Z ne rend pas le texte d’origine. Travaille sur une copie de la feuille si tu veux pouvoir revenir en arrière.
Connaître les limites de la macro avant de nettoyer un export
Elle ne remplace que les trois espaces invisibles de cette page, 160, 8239 et 8203, en plus des caractères de contrôle qu’EPURAGE retire. Un autre caractère invisible, comme l’espace fine, reste dans la cellule.
Un saut de ligne voulu disparaît aussi, et une adresse écrite sur deux lignes avec Alt+Entrée se retrouve sur une seule.
Une mise en forme posée sur une partie du texte ne survit pas à la réécriture, et un texte dont seul le premier mot est en gras devient gras en entier.
Une formule dont le résultat porte des espaces en trop n’est pas touchée, puisque c’est la formule elle-même qu’il faudrait corriger.
Elle ne convertit aucun texte en nombre. Les montants et les codes collés en texte le restent, et CNUM se charge ensuite des montants.
Choisir entre la formule, Ctrl+H et la macro
| Méthode | Ce qu’elle retire | Ce qu’elle laisse | Où va le résultat |
|---|---|---|---|
| SUPPRESPACE | Les espaces de début, de fin et répétés | Les espaces insécables, les sauts de ligne et les tabulations | Dans une colonne voisine, à coller en valeurs |
| SUBSTITUE, CAR et UNICAR, puis SUPPRESPACE | En plus, les trois espaces invisibles | Les sauts de ligne, sauf avec SUBSTITUE et CAR(10) | Dans une colonne voisine, à coller en valeurs |
| Rechercher et remplacer | Tous les espaces ordinaires, ou les espaces doublés en plusieurs passages | Les espaces insécables, et un espace isolé au début ou à la fin après deux espaces contre un | Sur place, dans la sélection |
| Macro Nettoyer_texte | Tout ce qui précède, sauts de ligne compris | Les autres caractères invisibles, et les textes restent des textes | Sur place, dans la sélection, sans Ctrl+Z |
Le bon choix dépend surtout de l’endroit d’où vient ton texte, et du nombre de fois où tu devras refaire le ménage. Pour une colonne de noms tapés à la main, SUPPRESPACE suffit, alors qu’un export copié depuis le web demande presque toujours de traiter aussi l’espace insécable, par SUBSTITUE et CAR(160). La macro devient la plus simple quand plusieurs colonnes sont touchées, ou que le même export revient chaque semaine. Un seul geste nettoie alors toute la sélection, sans colonne d’aide ni collage en valeurs.
Tu as peut-être encore une question
La formule pour supprimer les espaces en trop est =SUPPRESPACE(A2), qui retire les espaces du début et de la fin et réduit à un seul ceux qui se répètent entre les mots, tandis que =SUBSTITUE(A2;" ";"") retire tous les espaces ordinaires, même celui qui sépare deux mots. Pour un texte copié depuis le web, =SUPPRESPACE(SUBSTITUE(A2;CAR(160);" ")) retire aussi l’espace insécable.
Pour enlever les espaces au début d’une cellule, écris =SUPPRESPACE(A2) dans une colonne voisine, puis colle ses résultats en valeurs sur la colonne d’origine, en sachant que la fonction retire aussi les espaces de la fin et réduit à un seul les espaces répétés entre les mots. Si le premier caractère résiste, c’est souvent un espace insécable, que SUBSTITUE et CAR(160) remplacent.
TRIM est le nom anglais de SUPPRESPACE, si bien que dans un Excel en français la même formule s’écrit =SUPPRESPACE(A2), avec les mêmes effets, les espaces du début et de la fin retirés et les espaces répétés entre les mots réduits à un seul. En VBA, la fonction Trim ne coupe que les deux bouts, alors que WorksheetFunction.Trim réduit aussi les espaces doublés, et c’est elle que notre macro emploie.
Pour supprimer les espaces invisibles, repère d’abord leur numéro avec UNICODE, puis remplace l’espace insécable (160) et l’insécable étroit (8239) par un espace et supprime l’espace de largeur nulle (8203) avec SUBSTITUE, avant de passer SUPPRESPACE, ou lance notre macro Nettoyer_texte, qui fait les trois sur toute ta sélection. EPURAGE retire, elle, les sauts de ligne et les tabulations.
Pour aller plus loin
Tout ce dont tu as besoin pour faire tourner tes macros et progresser sur Excel se trouve ici.

Télécharge notre cours Excel complet en PDF
Télécharger
Ton cours Excel gratuit
3 chapitres pour apprendre les bases et découvrir l'automatisation.
Voir le cours
Entraîne-toi sur nos 63 exercices corrigés
S’entraîner
Les macros Excel et le VBA expliqués simplement
Lire le guide
Activer les macros quand Excel les bloque
Voir comment