Fonction de remplacement de toutes les occurrences d'un mot entier

A ma connaissance, il n'y a pas en excel de fonction qui permette de remplacer un mot entier par un autre mot. Les fonctions de remplacement permettent de remplacer une séquence de caractères par une autre sans notion de ce qui est un mot.

la fonction proposée identifie le mot en utilisant les expressions régulières et en respectant la casse du mot remplacé.

la fonction

Option Explicit

Function remplacemot(txt$, oldword$, newword$)
    ' H2SO4
    ' ******************************
    ' fonction de remplacement de toutes les occurrences d'un mot (oldword), identifié par des délimiteurs de mots, par un autre (newword) dans un texte donné (txt). la casse du mot remplacé est respectée.
    ' 28/3/2021
    ' v3.0 'simplification du code utilisation expression régulière.
    '*******************************
    Dim s$, re As Object
    s$ = txt
    Set re = CreateObject("vbscript.regexp")
    re.Global = True
    'mot inchangé
    re.Pattern = "\b" & oldword & "\b"
    s = re.Replace(s, newword)

    ' initiale est majuscule
    oldword = UCase(Left(oldword, 1)) & Mid(oldword, 2)
    newword = UCase(Left(newword, 1)) & Mid(newword, 2)
    re.Pattern = "\b" & oldword & "\b"
    s = re.Replace(s, newword)

    'tout le mot en majuscules
    oldword = UCase(oldword)
    newword = UCase(newword)
    re.Pattern = "\b" & oldword & "\b"
    s = re.Replace(s, newword)
    remplacemot = s

    Set re = Nothing
End Function

exemple qui illustre l'utilisation de la fonction et les problèmes que l'on peut rencontrer avec les fonctions standard replace VBA ou excel, une première ligne avec la fonction proposée et une autre avec la fonctions standard (replace vba ou substitute excel).

18remplacemotv3.xlsm (17.37 Ko)

Bonjour h2so4

Je n'ai pas compris ton post et ton exemple, heu comment dire ne m'aiguille pas plus

Sinon SUBSTITUE() ne fait pas le job ?

@+

Bonjour Bruno,

merci pour ton retour.

pour clarifier, voici un exemple :

je veux remplacer toutes les occurrences du mot mal (et pas les occurrences de mal au sein d'un mot) par bien dans la phrase suivante :

çà me rend malade d'avoir mal, et d'être mal assis en face de ce malotru "mal" fringué.

avec les fonctions standard la phrase devient

çà me rend bienade d'avoir bien, et d'être bien assis en face de ce bienotru "bien" fringué.

avec la fonction qui intègre une reconnaissance de mot par ses délimiteurs la phrase devient

çà me rend malade d'avoir bien, et d'être bien assis en face de ce malotru "bien" fringué.

Il est possible d'utiliser la fonction substitue mais il faut détecter [ mal ] puis [ mal,] puis ["mal"] pour faire les remplacements corrects dans cette phrase.

Salut h2so4

Et merci pour ton explication, c'est plus clair désormais, merci et beau boulot
(et hop dans ma bibliothèque de codes )

A mettre dans les téléchargements peut-être

@+

Excellent !!!

Merci beaucoup

Bonsoir H2s04,

Merci pour cette fonction très pratique qui date de 2021. Elle m'a épargné une heure de codage aujourd'hui.
J'ai constaté que certaines symboles ne fonctionnent pas mais sachant qu'ils ne sont pas parmi les caractères étendus du code ASCII, la fonction gagnerai donc à les gérer car on peut avoir besoin aussi de les remplacer dans un texte. Il s'agit des symboles suivants : "()[] / \ : " (parenthèses, crochets, slash et anti slash, deux points). En revanche, les signes de ponctuation comme la virgule, le point virgule, le point ou le trait d'union ", ; . - " fonctionnent.

Encore merci

Cordialement

bonjour,

J'ai constaté que certaines symboles ne fonctionnent pas mais sachant qu'ils ne sont pas parmi les caractères étendus du code ASCII, la fonction gagnerai donc à les gérer car on peut avoir besoin aussi de les remplacer dans un texte. Il s'agit des symboles suivants : "()[] / \ : " (parenthèses, crochets, slash et anti slash, deux points)

Merci pour ton commentaire.

Les symboles en question sont considérés comme des séparateurs de mots et ne peuvent donc pas être remplacés par cette fonction, car il y aurait ambiguïté. Aurais-tu un exemple de remplacement de ces caractères pour lequel la fonction de remplacement standard d'excel (ctrl-f) ne pourrait pas convenir ?

Rechercher des sujets similaires à "fonction remplacement toutes occurrences mot entier"