Notamment après l’import de données, on se retrouve parfois avec de multiples espaces entre les mots. Voici une fonction qui supprime efficacement ces espaces multiples en un.
La fonction en VBA
Const DoubleEspace As String = " "
Const Espace As String = " "
While InStr(1, Chaine, DoubleEspace, vbBinaryCompare) > 0
Chaine = Replace(Chaine, DoubleEspace, Espace, , , vbBinaryCompare)
Wend
ReduireEspaces = Chaine
End Function
A chaque passe de la boucle, un espace double est réduit en un.
Par exemple, pour réduire 3 espaces contigus en un, la boucle est exécutée deux fois. Dans la première boucle, 3 espaces contigus sont vus comme 2 espaces + 1 espace, d’où la réduction à 1 espace + 1 espace. La deuxième boucle trouve ensuite deux espaces contigus qui sont alors réduits en un.
Pour rappel, on supprime les espaces en début de chaîne grâce à la fonction LTrim(), les espaces en fin de chaîne par RTrim() et l’ensemble par Trim() (ou LTrim$, RTrim$, Trim$ pour une chaîne de type String).
Exemple d’utilisation
Dans la fenêtre Exécution de VBE :
?ReduireEspaces("Un espace sinon rien!")
@+
Philippe