VBA : Comment supprimer des caractères dans une chaîne
Vous pouvez utiliser la méthode Replace() dans VBA pour supprimer des caractères d’une chaîne.
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 supprimer toutes les occurrences de caractères dans une chaîne (sensible à la casse)
Supposons que nous souhaitions supprimer « ceci » de chaque chaîne.
Nous pouvons créer la macro suivante pour ce faire :
Sub RemoveChar() Dim i As Integer For i = 2 To 8 Range("B" & i) = Replace(Range("A" & i), "this", "") 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 chaque occurrence de « ceci » supprimée.
Notez que cette macro est sensible à la casse .
Autrement dit, chaque occurrence de « ceci » est supprimée mais chaque occurrence de « ceci » est laissée seule.
Exemple 2 : utiliser VBA pour supprimer toutes les occurrences de caractères dans une chaîne (insensible à la casse)
Supposons que nous souhaitions supprimer « ceci » (quelle que soit la casse) de chaque chaîne.
Nous pouvons créer la macro suivante pour ce faire :
Sub RemoveChar() Dim i As Integer For i = 2 To 8 Range("B" & i) = Replace(LCase(Range("A" & i)), "this", "") 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 chaque occurrence de « ceci » supprimée.
Notez que ce remplacement n’est pas sensible à la casse .
Autrement dit, chaque occurrence de « this » (qu’elle soit en majuscule ou non) est supprimée.
Nous avons pu y parvenir 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 supprimer les N premières occurrences de caractère dans une chaîne
Supposons que nous souhaitions supprimer uniquement la première occurrence de « this » (quelle que soit la casse) de chaque chaîne.
Nous pouvons créer la macro suivante pour ce faire :
Sub RemoveChar() Dim i As Integer For i = 2 To 8 Range("B" & i) = Replace(LCase(Range("A" & i)), "this", "", 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 seule la première occurrence de « ceci » supprimée.
Notez que nous avons utilisé Count:=1 pour supprimer uniquement la première occurrence d’une chaîne spécifique, mais vous pouvez remplacer 1 par n’importe quelle valeur que vous souhaitez supprimer à la place des 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