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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *