Visual Basic For Applications
Comment supprimer les espaces en trop dans Excel ?

Trois macros VBA pour supprimer les espaces en trop de vos documents Excel ou Word.

La macro VBA : un outil puissant pour nettoyer vos fichiers Excel et Word

Les espaces en trop dans des cellules Excel peuvent être difficilement identifiables surtout lorsque l’on travaille sur des fichiers avec un grand nombre d’informations. Les enlever permet d’avoir une base plus propre et plus facilement utilisable par une autre personne voire un autre métier (comme un graphiste qui va copier/coller les informations d’un fichier Excel dans sa création).

Plutôt que de contrôler les cellules de votre feuille une à une ou d’utiliser la fonction « remplacer par » et de prendre le risque d’en oublier nous vous proposons ici un code VBA simple permettant de supprimer tous les espaces en trop d’une chaîne de caractères.

Le code va enlever chaque espace à gauche (LTRIM), à droite (RTRIM) et à l’intérieur du contenu de la cellule grâce à la fonction « REPLACE() ». Le code permet de supprimer plus de 200 espaces superflus consécutifs…







Les macros VBA

Supprimer les espaces superflues dans une colonne spécifique d’Excel

Pour utiliser la macro VBA, il suffit de copier/coller le code dans l’éditeur, de sélectionner les cellules (en colonne et 1 seule colonne à la fois) à traiter, et de lancer la macro.

Sub espacessuperflus()
 
'Auteur : www.Indexmatch.fr
'Date : 10/2021
 
Dim counter As Long
Dim lastRow As Long
Dim column As Integer
 
counter = ActiveCell.Row
column = ActiveCell.column
lastRow = counter + Selection.Rows.Count - 1
 
    Do While counter <= lastRow
 
        Cells(counter, column).Value = RTrim(Cells(counter, column).Value) 'supprime chaque espace superflue à droite
        Cells(counter, column).Value = LTrim(Cells(counter, column).Value) 'supprime chaque espace superflue à gauche
 
        Cells(counter, column).Value = Replace(Cells(counter, column).Value, "      ", " ")   'en remplace 6
        Cells(counter, column).Value = Replace(Cells(counter, column).Value, "     ", " ")   'en remplace 5
        Cells(counter, column).Value = Replace(Cells(counter, column).Value, "    ", " ")   'en remplace 4
        Cells(counter, column).Value = Replace(Cells(counter, column).Value, "   ", " ")   'en remplace 3
        Cells(counter, column).Value = Replace(Cells(counter, column).Value, "  ", " ")   'en remplace 2
 
        counter = counter + 1
 
    Loop
 
End Sub

Pour l’ensemble d’une feuille Excel

Comme la macro précédente, pour l’utiliser il suffit de copier/coller le code dans l’éditeur et de lancer le programme. Un différent type de boucle a été utilisé pour pouvoir agir sur l’ensemble de la feuille : la macro peut avoir une durée d’exécution relativement importante en fonction du nombre de cellule active dans votre feuille.

sub espacessuperflus_total()
 
'Auteur : www.Indexmatch.fr
'Date : 12/2021
 
Dim counter As Long
Dim lastRow As Long
Dim column As Integer
Dim Cell As Range
Dim Adresse As String
Dim AdresseColumn As Integer
Dim AdresseRow As Integer
 
    Adresse = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address 'recherche la dernière cellule active de votre feuille.
    AdresseColumn = Range(Adresse).column
    AdresseRow = Range(Adresse).Row
 
    For Each Cell In Range(Cells(1, 1), Cells(AdresseRow, AdresseColumn))
 
        Cell.Value = RTrim(Cell.Value) 'supprime chaque espace superflue à droite
        Cell.Value = LTrim(Cell.Value) 'supprime chaque espace superflu à gauche
 
        Cell.Value = Replace(Cell.Value, "      ", " ")   'en remplace 6
        Cell.Value = Replace(Cell.Value, "     ", " ")   'en remplace 5
        Cell.Value = Replace(Cell.Value, "    ", " ")   'en remplace 4
        Cell.Value = Replace(Cell.Value, "   ", " ")   'en remplace 3
        Cell.Value = Replace(Cell.Value, "  ", " ")   'en remplace 2
 
    Next Cell
 
End Sub


Supprimer les espaces superflues dans Microsoft Word

Microsoft Word permet également d’utiliser du VBA pour automatiser certaines tâches.

Nous vous proposons donc ci-dessous un code aux fonctions similaires qui supprime les espaces en trop mais pour Microsoft Word. Contrairement à la macro VBA précédente, celui-ci ne traite pas les espaces en trop avant et après un mot ou caractère. Ce programme va traiter l’ensemble de votre document.

L’éditeur VBA s’ouvre de la même manière sous Word que sous Excel.

Sub espacessuperflusword()
 
'Auteur : www.Indexmatch.fr
'Date : 10/2017
 
    Selection.WholeStory 'sélectionne tout
 
    With Selection.Find 'en remplace 5
        .Text = "     "
        .Replacement.Text = " "
        .Execute Replace:=wdReplaceAll
 
    End With
 
    With Selection.Find 'en remplace 4
        .Text = "    "
        .Replacement.Text = " "
        .Execute Replace:=wdReplaceAll
 
    End With
 
    With Selection.Find 'en remplace 3
        .Text = "   "
        .Replacement.Text = " "
        .Execute Replace:=wdReplaceAll
 
    End With
 
    With Selection.Find 'en remplace 2
        .Text = "  "
        .Replacement.Text = " "
        .Execute Replace:=wdReplaceAll
 
    End With
 
End Sub
Notez nous !
[Moyenne : 4.9]