Replace() – Fonction VBA pour remplacer du texte


Fonction VBA Replace() permet de remplacer un texte par un autre dans une chaîne de caractères. En plus simple, elle vous permet, par exemple de remplacer "en cours" par "terminée" dans le texte "tâche en cours"…

Syntaxe de la fonction VBA Replace()

x = Replace(TexteOriginal, TexteARemplacer, NouveauTexte, [PositionDebut], [NombreDeRemplacements], [TypeDeComparaison])

Dans l'éditeur VBA, les paramètres de la fonction Replace() ont les noms suivants:

x = Replace(Expression, Find, Replace, [Start], [Count], [Compare])

L'explication des paramètres utilisés dans la fonction Replace()

  • TexteOriginal ("Expression"): le texte original dont on veut remplacer une partie (par exemple "trajet: Paris-Brest").
  • TexteARemplacer ("Find"): ceci est le texte que l'on veut remplacer (par exemple "Brest").
  • NouveauTexte ("Replace"): ceci est le nouveau texte qui remplacera le TexteARemplacer dans TexteOriginal (par exemple "Nice" – >>> "trajet: Paris-Brest" devient alors "trajet: Paris-Nice").
  • PositionDebut ("Start"): paramètre facultatif qui indique à partir de quel caractère le remplacement peut s'effectuer. Si omis, le remplacement se fera dans tout le TexteOriginal. Attention, le résultat que la fonction renvoie ne commence qu'à cette position (le TexteOriginal sera "coupé" à droite!). Voir la section "Exemples" plus loin…
  • NombreDeRemplacements ("Count"): paramètre facultatif. Si le TexteARemplacer se trouve plusieurs fois dans le TexteOriginal, ce paramètre indique combien de fois il doit être remplacé à partir du début du TexteOriginal (voir section "Exemples" plus loin). Si omis, toutes les occurrences du TexteARemplacer seront remplacées (ceci sera également le cas si la valeur est = -1).
  • TypeDeComparaison ("Compare"): paramètre technique (et facultatif) pour choisir entre recherche Textuelle et Binaire. En gros, ce paramètre détermine si la recherche doit ou pas sensible aux minuscules/majuscules. Deux valeurs sont disponibles:
    • vbBinaryCompare (ou sa représentation numérique = 0) – avec cette valeur, la recherche EST sensible aux majuscules et minuscules. Ceci est la valeur par défaut.
    • vbTextCompare (ou sa représentation numérique = 1) – avec cette valeur, la recherche N'EST PAS sensible aux majuscules et minuscules.

L'illustration pratique de toutes les possibilités se trouve plus bas, dans la section avec des Exemples d'utilisation.

Valeurs de résultat de la fonction Replace() en VBA

Selon le contenu de différents paramètres de la fonction, plusieurs résultats sont possibles. En voici la liste…

  • De manière générale, le résultat de la fonction Replace() est une chaîne de caractères qui correspond à TexteOriginal ("Expression") où le TexteARemplacer ("Find") a été remplacé par NouveauTexte ("Replace")
  • Dans certains cas particuliers, la fonction retourne les valeurs suivantes:
    • Si TexteARemplacer ("Find") est vide, la fonction retournera comme résultat la copie du texte original.
    • Si NouveauTexte ("Replace") est  vide, la fonction retournera comme résultat le texte original où le TexteARemplacer a été supprimé (=> le texte à remplacer est remplacé par "rien").
    • Si TexteOriginal ("Expression") est vide ou le numéro dans PositionDebut ("Start") est supérieur à la longueur du TexteOriginal, la fonction retournera comme résultat la valeur Nothing (valeur vide).
    • Si NombreDeRemplacements ("Count") est égal à 0, le résultat de la fonction sera la copie du texte original…

Les exemples suivent pour montrer les différentes possibilités d'utilisation…

Exemples d'utilisation de la fonction Replace()

Les exemples suivants vous permettront de vous faire une idée de différent cas qui peuvent se produire lors de l'utilisation de la fonction VBA Replace(). Chaque cas est décrit et expliqué.

Exemple de fonction & résultatExplication
Replace("ID-1258-FR-78″,"FR","EU")

= "ID-1258-EU-78"

Le cas le plus classique: On remplace "FR" dans la chaîne "ID-1258-FR-78" par "EU".
Replace("FR59 1257 2589 5478″," ","")

= "FR59125725895478"

La fonction Replace() peut être utilisée pour "supprimer" des caractères. Dans ce cas-ci, on supprime les espaces du n° de compte bancaire.
Replace("Ceci est un test.", "voiture", "avion")

= "Ceci est un test."

Si le texte qui doit être remplacé (ici "voiture") n'est pas retrouvé dans le texte d'origine comme c'est le cas ici, la fonction Replace() retourne la copie du texte d'origine.
Replace("Commande: 125 / Objets: 98, 111, 125, 128", "125", "C125", 1, 1)

= "Commande: C125 / Objets: 98, 111, 125, 128"

Un exemple qui utilise le paramètre "Count". Ici, on veut remplacer le n° de commande ("125") par une autre référence (ici "C125"). Pour éviter que le n° d'objet dans la commande soit impacté, on limite le nombre de remplacement à 1 (le 5ème paramètre – en rouge).
Replace("Ceci est un test: Mon premier test", "test", "essai", 19)

= "Mon premier essai"

Exemple de l'utilisation du paramètre "Start". Ici, on demande à la fonction Replace() de commencer le remplacement à partir du 19ème caractère du texte original. Attention! Le résultat ne sera pas "Ceci est un test: Mon premier essai" comme on pourrait s'y attendre! La fonction va "couper" les 18 premiers caractères comme le ferait la fonction Right. Le résultat sera donc: "Mon premier essai"
Replace("aaaa", "a", "x") = "xxxx"
Replace("aaaa", "a", "x", 1, 2) = "xxaa"
Autre exemple de l'utilisation du paramètre "Count": dans le premier cas (paramètre "Count" omis), tout les occurrences de "a" seront remplacées par "x". Dans le deuxième cas ("Count" = 2), seul les 2 premières occurrences de "a" seront remplacées par "x".
Replace("aaAA", "a", "X", 1, -1, 0) = "XXAA"
Replace("aaAA", "a", "X", 1, -1, 1) = "XXXX"
Exemple d'utilisation de paramètre "Compare": dans le premier cas ("Compare" égal à 0), la fonction est sensible à la casse. seul les "a" minuscules seront donc remplacés.

Dans le deuxième cas ("Compare" = 1), la fonction n'est pas sensible à la casse et donc les "a" seront remplacés peu importe s'ils sont en minuscule ou en majuscule.

Notez qu'il est possible d'utiliser comme valeur du paramètre "Compare"  vbBinaryCompare et vbTextCompare plutôt que les valeurs 0 et 1.

 

Pour une compréhension plus facile, les valeurs textuelles sont utilisées dans les exemples. Mais sachez que vous pouvez utiliser comme paramètres de la fonction Replace() des valeurs contenues dans des variables:

Replace(MonText, "a", MonNouveauCaractere)

ou même des références à des cellules:

Replace(ThisWorkbook.Sheets("Feuil1").Range("B2").Value, "a", ThisWorkbook.Sheets("Feuil1").Range("D2").Value)

Équivalent de fonction Replace() dans Excel

La fonction Replace() n'a pas d'équivalent exact parmi les fonctions disponibles directement dans les Classeurs Excel. En fait, il existe en Excel deux fonctions semblables (mais pas équivalents):

  • Fonction Excel SUBSTITUE()est très proche de la fonction VBA Replace(). Cependant, a) vous ne pouvez pas choisir si elle doit être ou pas sensible aux majuscules (paramètre "Compare"), b) le paramètre "Start" manque et c) l'argument no_position n'indique pas combien d'occurrences doivent être remplacées (comme "Count" dans Replace()) mais indique LAQUELLE des occurrences doit être remplacée.
  • Fonction Excel REMPLACER()permet de remplacer un nombre défini de caractères dans un texte commençant à un endroit défini dans ce texte. Son utilisation pourra coïncider avec la fonction VBA Replace() mais pourra également être très différente (par ex: remplacer dans le texte "abcd" 2 caractères à partir de 2ème par "oo" ). Elle sera donc plutôt utile avec les données structurés.

Attention à l'orthographe! 🙂  Dans un cas, c'est l'infinitif mais pas dans l'autre…

A quoi la fonction Replace() peut-elle servir?

Cette fonction vous servira le plus probablement en combinaison avec une boucle ou comme une partie de UDF (fonction Excel définie par l'utilisateur). Et dans quel cas? Probablement lors de modification de vos fichiers de données. Imaginez que vous avez une base de données de produits (avec des milliers de références) et vous devez:

  • changer le format des numéros d'articles
  • adapter le nom du fabricant dans les descriptions de produits

Pour aller plus loin / utilisation pratique

Et voici quelques autres articles & tutoriels qui pourraient vous être utiles, notamment si vous travaillez avec des textes dans Excel et dans VBA:

 


1 0

Pourrait vous intéresser

Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.