VBA : Comment remplacer des caractères dans une chaîne
Vous pouvez utiliser la méthode Replace() dans VBA pour remplacer des caractères dans une chaîne.
Cette méthode utilise la syntaxe de base suivante :
Remplacer(expression, rechercher, remplacer, démarrer, compter)
où:
- expression : La chaîne dans laquelle vous souhaitez remplacer les caractères
- find : La chaîne à trouver
- replace : La chaîne à utiliser en remplacement
- start ( facultatif ) : La position de départ dans la chaîne à rechercher
- count ( facultatif ) : Le nombre de remplacements à effectuer
Les exemples suivants montrent comment utiliser cette méthode en pratique avec la liste de chaînes suivante dans Excel :
Exemple 1 : utiliser VBA pour remplacer toutes les occurrences de caractères dans une chaîne (sensible à la casse)
Supposons que nous souhaitions remplacer « ceci » par « CELA » dans chaque chaîne.
Nous pouvons créer la macro suivante pour ce faire :
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range("B" & i) = Replace(Range("A" & i), "this", "THAT") Next i End Sub
Lorsque nous exécutons cette macro, nous recevons le résultat suivant :
La colonne B affiche chacune des chaînes de la colonne A, chaque occurrence de « ceci » étant remplacée par « CELA ».
Notez que ce remplacement est sensible à la casse .
Autrement dit, chaque occurrence de « ceci » est remplacée mais chaque occurrence de « ceci » est laissée seule.
Exemple 2 : utiliser VBA pour remplacer toutes les occurrences de caractères dans une chaîne (insensible à la casse)
Supposons que nous souhaitions remplacer « ceci » (quelle que soit la casse) par « CELA » dans chaque chaîne.
Nous pouvons créer la macro suivante pour ce faire :
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range("B" & i) = Replace(LCase(Range("A" & i)), "this", "THAT") Next i End Sub
Lorsque nous exécutons cette macro, nous recevons le résultat suivant :
La colonne B affiche chacune des chaînes de la colonne A, chaque occurrence de « ceci » étant remplacée par « CELA ».
Notez que ce remplacement n’est pas sensible à la casse .
Autrement dit, chaque occurrence de « ceci » (qu’elle soit en majuscule ou non) est remplacée.
Nous avons pu effectuer ce remplacement insensible à la casse en utilisant la méthode LCase pour convertir d’abord chaque chaîne de la colonne A en minuscules avant de rechercher « ceci » dans chaque chaîne.
Exemple 3 : utiliser VBA pour remplacer les N premières occurrences d’un caractère dans une chaîne
Supposons que nous souhaitions remplacer uniquement la première occurrence de « ceci » (quelle que soit la casse) par « CELA » dans chaque chaîne.
Nous pouvons créer la macro suivante pour ce faire :
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range("B" & i) = Replace(LCase(Range("A" & i)), "this", "THAT", Count:=1) Next i End Sub
Lorsque nous exécutons cette macro, nous recevons le résultat suivant :
La colonne B affiche chacune des chaînes de la colonne A avec seulement la première occurrence de « ceci » remplacée par « CELA ».
Notez que nous avons utilisé Count:=1 pour remplacer uniquement la première occurrence d’une chaîne spécifique, mais vous pouvez remplacer 1 par n’importe quelle valeur que vous souhaitez remplacer les n premières occurrences d’une chaîne spécifique.
Remarque : Vous pouvez trouver la documentation complète de la méthode VBA Replace ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes à l’aide de VBA :
VBA : Comment compter les occurrences de caractères dans une chaîne
VBA : comment vérifier si une chaîne contient une autre chaîne
VBA : Comment compter les cellules avec un texte spécifique