.HTMLBody = Replace - Envoi de Mail en VBA

Jara

XLDnaute Nouveau
Bonjour le forum,

Je viens demander votre aide concernant un code qui me permet d'envoyer un template de mail Outlook depuis Excel.
Ce template est en html et j'essaye de modifier un champs dans le corps de ce mail mais sans succès.

Pas de problème si je reste en texte brut mais avec le html, le code se déroule sans problème mais ne met pas à jour le template avec les informations.

Voici le bout de code qui me pose problème:

Code:
With MyItem
    .To = Worksheets("Listing").Range("J5")
    .Subject = "Your invoice N° " & Worksheets("Listing").Range("J6")
    .HTMLBody = Replace(.HTMLBody, "<<INTRO>>", Worksheets("Listing").Range("J7"))
    .Display
End With

La macro pour avoir une vue d'ensemble:

Code:
Sub mailEN()
Dim myOlApp As Outlook.Application
Dim MyItem As Outlook.MailItem
Dim template As String

template = ActiveWorkbook.Path & "\Templates\ENGLISH.oft"

Set myOlApp = CreateObject("Outlook.Application")
Set MyItem = myOlApp.CreateItemFromTemplate(template)

With MyItem
    .To = Worksheets("Listing").Range("J5")
    .Subject = "Your invoice N° " & Worksheets("Listing").Range("J6")
    .HTMLBody = Replace(.HTMLBody, "<<INTRO>>", Worksheets("Listing").Range("J7"))
    .Display
End With
Set MyItem = Nothing
Set myOlApp = Nothing
End Sub

Queluq'un saurait-il me dire où se trouve mon erreur?
Merci d'avance pour votre aide :)

Amicalement,

Jara
 

Jara

XLDnaute Nouveau
Re : .HTMLBody = Replace - Envoi de Mail en VBA

Merci de ta réponse DoubleZero!!

Mais mon problème est un peu différent.
En effet, je ne cherche pas à formater le texte de mon mail puisqu'il s'agit d'un Template qui contient des images, des liens hypertextes, etc..

Utiliser une macro qui ferait toute la mis en page de mon mail serait trop fastidieux.

Je cherche simplement à remplacer <<INTRO>> qui se trouve dans le corps de mon Template HTML par le texte de l'onglet "Listing", cellule J7. La mise en forme m'est égale. c'est le contenu qui m'intéresse.

Merci d'avance de ton aide^^

Jara
 

Staple1600

XLDnaute Barbatruc
Re : .HTMLBody = Replace - Envoi de Mail en VBA

Bonjour à tous, salut 00 ;)

Jara
Essaies avec ces modifs
With MyItem
.To = Worksheets("Listing").Range("J5").Text
.Subject = "Your invoice N° " & Worksheets("Listing").Range("J6").Text
.HTMLBody = Replace(.HTMLBody, "<<INTRO>>", Worksheets("Listing").Range("J7")).Text
.Display
End With

PS: test OK sur mon PC pour le remplacement mais sur un modèle qui n'est pas le tien et je suis pas sur que le mien soit formaté en HTML. j'ai juste créé un modéle quasiment vide avec cette ligne dans le corps du message:
<<INTRO>> TEST TEST et en J7 j'ai mis ce texte: corpsdumessage
Quand j’exécute ta macro avec les modificationss ci-dessus le remplacement se fait bien.

L'idéal serait donc que tu joignes ici une version anonymisée de ton *.oft (mais avec le format HTML de l'original)
Il serait ainsi plus aisé pour nous de faire des tests. ;)
 

Jara

XLDnaute Nouveau
Re : .HTMLBody = Replace - Envoi de Mail en VBA

Bonjour tout le monde et merci de votre aide :)

J'ai trouvé la réponse à ma question:

<<INTRO>> est à utiliser pour rempacer le texte au format brut.
Pour faire des modifs en html, il faut utiliser: #INTRO#.

Voici donc mon code modifié pour ceux que ça intéresse:

Code:
Sub mailEN()
Dim myOlApp As Outlook.Application
Dim MyItem As Outlook.MailItem
Dim template As String

template = ActiveWorkbook.Path & "\Templates\ENGLISH.oft"

Set myOlApp = CreateObject("Outlook.Application")
Set MyItem = myOlApp.CreateItemFromTemplate(template)

With MyItem
    .To = Worksheets("Listing").Range("J5")
    .Subject = "Your invoice N° " & Worksheets("Listing").Range("J6")
    .HTMLBody = Replace(.HTMLBody, "#INTRO#", Worksheets("Listing").Range("J7"))
    .Display
End With
Set MyItem = Nothing
Set myOlApp = Nothing
End Sub
 

Discussions similaires

Réponses
6
Affichages
343

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz