VBA est merveilleux pour automatiser différentes choses dans le monde de Microsoft Office et se créer quelques beaux outils pour un travail plus efficace.
Un cas typique, qui n’apparaît pas seulement dans VBA mais aussi dans de nombreux autres langages de programmation, est le remplacement d’un texte par un autre texte. Le remplacement peut se faire intégralement ou seulement une Sous-chaîne (texte partiel) doit être remplacée dans la chaîne de caractères originale. Il peut s’agir par exemple d’une extension de fichier dans un nom de fichier, qui doit être remplacée.
La fonction de remplacement explique les paramètres
Pour cela, il existe dans VBA la fonction Replace, qui présente les paramètres et valeurs de retour suivants.

Expression
Find
Il s’agit du texte ou du fragment de texte (sous-chaîne) recherché, qui doit être trouvé dans le texte original.
Replace
Il s’agit du texte avec lequel le texte recherché doit être remplacé.
Start
Il s’agit d’un paramètre optionnel. On peut déterminer ici à quel endroit/position du texte original la recherche et le remplacement doivent commencer. Il s’agit d’une valeur numérique. La première lettre commence à 1, ce qui est un peu inhabituel, car dans d’autres langages de programmation, on commence toujours à zéro. La valeur par défaut est 1.
Count
Il s’agit également d’un paramètre facultatif. Si la sous-chaîne recherchée apparaît plusieurs fois dans le texte original, on peut définir ici combien de fois la sous-chaîne doit être remplacée. C’est pratique si l’on ne veut remplacer que la première occurrence d’une chaîne de caractères.
Compare
On a rarement besoin de ce paramètre numérique qui détermine la méthode de comparaison. La valeur par défaut suffit ici. Sinon, il y a
[-1] vbUseCompareOption
Si ce paramètre est utilisé, une instruction Option-Compare doit précéder la procédure concernée.
[0] vbBinaryCompare
Il s’agit de comparer la représentation binaire de la chaîne recherchée et de la chaîne parcourue.
[1] vbTextCompare
Une comparaison de texte est effectuée entre la chaîne recherchée et la chaîne parcourue.
[2] vbDatabaseCompare
Utilisé uniquement dans Microsoft Access pour les comparaisons au sein des bases de données.
Valeur de retour/Return
La valeur de retour est la nouvelle chaîne de caractères avec les paramètres remplacés.
Exemples d’utilisation de la fonction Replace en VBA
Exemple simple sans paramètres optionnels
Ici, toutes les sous-chaînes trouvées sont substituées par le texte à remplacer.
Sub privé ReplaceExample1()
Dim strOriginal As String
Dim strSearch As String
Dim strReplace As String
Dim strNew As String
strOrignal = "Ma grand-mère fait de la moto dans le poulailler!"
strSearch = "Moto"
strReplace = "Tricycle"
strNew = Replace(strOrignal, strSearch, strReplace)
'Sortie en fenêtre directe
Debug.Print strNew
Fin Sub
Output/Résultat: Ma grand-mère fait du tricycle dans le poulailler!
Remplacer uniquement un certain nombre dans la chaîne
Dans cet exemple, une seule occurrence du texte recherché est remplacée, car le paramètre optionnel Count a été défini.
Sub privée ReplaceExample2()
Dim strOriginal As String
Dim strSearch As String
Dim strReplace As String
Dim strNew As String
strOrignal = "Si tu donnes de l'opium à Opi, l'opium tuera Opi !"
strSearch = "Opi"
strReplace = "Omi"
strNew = Replace(strOrignal, strSearch, strReplace, Count:=1)
Debug.Print strNew
Fin Sub
Output/Résultat: Si tu donnes de l'opium à Mamie, l'opium tuera Opi!
Chercher dans la chaîne à partir d’une position donnée
Cet exemple montre comment une chaîne de caractères est recherchée à partir d’une certaine position (20) et comment les occurrences de la chaîne de caractères recherchée sont remplacées. Seule la chaîne à partir de la position de départ est alors renvoyée.
Private Sub ReplaceExample3()
Dim strOriginal As String
Dim strSearch As String
Dim strReplace As String
Dim strNew As String
strOrignal = "Si tu donnes de l'opium à Opi, l'opium tuera Opi !"
strSearch = "Opium"
strReplace = "Omi"
strNew = Replace(strOrignal, strSearch, strReplace, Start:=20)
Debug.Print strNew
Fin Sub
Output/Résultat: courage Mamie de tuer Papi!
Remplacer la dernière occurrence d’une chaîne de caractères
Les paramètres optionnels Count et Start ne sont pas particulièrement adaptés pour remplacer la dernière occurrence d’un caractère ou d’une chaîne de caractères, car on ne sait jamais quelle est la longueur de la chaîne orignal. Pour remplacer la dernière occurrence d’une chaîne de caractères dans une chaîne, il faut utiliser la fonction strReverse. Celle-ci retourne simplement la chaîne de caractères, comme si on la lisait à l’envers. Notre « Opi » devient alors « ipO ». On peut ainsi effectuer un remplacement à l’envers.
Sub privée ReplaceExample4()
Dim strOriginal As String
Dim strSearch As String
Dim strReplace As String
Dim strNew As String
strOrignal = "Si tu donnes de l'opium à Opi, l'opium tuera Opi !"
strSearch = "Opi"
strReplace = "Omi"
strNew = StrReverse(Replace(StrReverse(strOrignal), StrReverse(strSearch), StrReverse(strReplace), Count:=1))
Debug.Print strNew
Fin Sub
Output/Résultat: Si tu donnes de l'opium à Opi, l'opium tuera Mamie!