VBA - Changer le format d'un mot s'il existe dans le corps du mail

Bonjour à tous !

J'ai depuis un bon moment une macro pour envoyer des emails à de nombreux utilisateurs et j'aimerais maintenant apporter une petite modification au corps du mail avant envoi -> changer les formats de certains mots s'ils se trouvent dans le corps du mail.

Mon corps de mail est basé sur un document Word, qui est ensuite transformé en HTML pour garder tous les formats. Dans la macro je remplace certains 'placeholders' de mon template Word par les valeurs qui sont stockées dans mon Excel pour chaque destinataire - chaque email est donc personnalisé en fonction des données que j'ai pour chaque destinataire de la liste. J'utilise donc au final: With OutMail .htmlbody = body - 'body' étant défini plus haut dans le code, incluant des body = Replace(body, 'un mot', 'un autre')

    With OutMail
         .to = email
         .cc = copy
         .subject = subject
         .htmlbody = body
         

Maintenant, je souhaite mettre en forme certains mots s'ils existent dans l'email - par exemple "débutant" en bleu et "intermédiaire" en orange. Idéalement j'aimerais pouvoir modifier la couleur, la police, la taille, et mettre en gras (selon les différents cas/mots). J'aimerais aussi pouvoir utiliser des symboles comme par exemple des flèches qui pourraient aussi être de différentes couleurs (vert si vers le haut, rouge si vers le bas) mais je ne suis pas sûre de comment les référencer dans la macro, avec les codes ascii certainement ?

J'ai trouvé la piste suivante qui me semble relativement facile à mettre en place - seulement je ne sais pas l'adapter pour appliquer cela dans le corps de mon email. Si j'execute ce code, alors le replacement se fait dans mon fichier Excel qui est ouvert et fait tourner la macro (ce qui est logique vu le 'Selection' non défini).

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting

With Selection.Find.Replacement.Font
        .Size = 20
        .Bold = True
        .Color = wdColorRed
End With

With Selection.Find
        .Text = "un mot"
        .Replacement.Text = "un autre"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = True
End With

Selection.Find.Execute Replace:=wdReplaceAll

Si quelqu'un peut m'éclairer - me guider sur comment faire que cette 'Selection' se fasse sur le corps du mail pour faire la mise en forme avant envoi ?

MERCI

Salut,

Je suis loin d'être un expert sur ce sujet, mais si tu veux remplacer dans le corp du message HTML je pense que tu dois inclure les balises dans ce style:

strMessageBody = Replace(strMessageBody, "Débutants", "<p style=""color:Orange;"">Débutants</p>", , , vbTextCompare)

Plus de détails sur le formatage ici

Rechercher des sujets similaires à "vba changer format mot existe corps mail"