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 |