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"…
Sommaire
La syntaxe de la fonction Replace
La fonction a un nombre impressionnant de 6 paramètres: 3 obligatoires et 3 facultatifs mais ne vous laissez pas décourager! Son utilisation est assez simple et directe. Et il s'agit d'une fonction qui ouvre un large éventail de possibilités de travail avec des données textuelles en Excel…
x = Replace(TexteOriginal, TexteARemplacer, NouveauTexte, [PositionDebut], [NombreDeRemplacements], [TypeDeComparaison])
Dans l'éditeur VBA, les paramètres de la fonction Replace ont les noms anglais 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 leTexteARemplacer
dansTexteOriginal
(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 leTexteOriginal
.
Attention, le résultat que la fonction renvoie ne commence qu'à cette position (leTexteOriginal
sera "coupé" à droite!). Voir la section "Exemples" plus loin…
NombreDeRemplacements
("Count"): paramètre facultatif. Si leTexteARemplacer
se trouve plusieurs fois dans leTexteOriginal
, ce paramètre indique combien de fois il doit être remplacé à partir du début duTexteOriginal
(voir section "Exemples" plus loin). Si omis, toutes les occurrences duTexteARemplacer
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 être 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
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ù leTexteARemplacer
("Find") a été remplacé parNouveauTexte
("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ù leTexteARemplacer
a été supprimé (=> le texte à remplacer est remplacé par "rien"). - Si
TexteOriginal
("Expression") est vide ou le numéro dansPositionDebut
("Start") est supérieur à la longueur duTexteOriginal
, la fonction retournera comme résultat la valeurNothing
(valeur vide). - Si
NombreDeRemplacements
("Count") est égal à 0, le résultat de la fonction sera la copie du texte original…
- Si
Les exemples suivent pour montrer les différentes possibilités d'utilisation de cette fonction…
Exemples d'utilisation pratique de la fonction Replace en VBA
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 la fonction & résultat | Explication |
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" |
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 la 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, le nom de la fonction est un infinitif mais pas dans l'autre…
A quoi la fonction Replace peut-elle servir?
Cette fonction VBA vous servira le plus probablement en combinaison avec une boucle ou comme une partie de UDF (= une 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
- changer la structure des noms de fichiers ou des chemins de dossiers
- …
Pour aller plus loin en Excel et en VBA
Et voici quelques autres articles & tutoriels qui pourraient vous être utiles, notamment si vous travaillez avec des textes dans Excel et dans VBA:
- Toutes les fonctions Excel – liste de plus de 480 fonctions Excel avec des détails
- Toutes les fonctions VBA – toutes les fonctions disponibles dans VBA à un seul endroit
- Extraire une chaîne de caractères délimitée
- La page de la fonction Replace sur le site de Microsoft
- Comment utiliser RECHERCHEV en VBA (tutoriel)
- Tout sur le Tableau croisé dynamique Excel (TCD)
- Excel Online Gratuit – comment cela marche
Et vous voudrez peut-être savoir comment importer le texte à modifier à partir d'un fichier texte et ensuite exporter le résultat vers un (autre) fichier texte… Oui, tout ceci est possible en Excel. Grâce à VBA!
2 commentaires sur “Replace() – Fonction VBA pour remplacer du texte”
tres bien explique merci
Merci beaucoup pour cet effort consenti en français pour une meilleur approche des supports généralement en englais !