Ecrire une mail en VBA

Bonjour,

J'ai besoin de vos lumières.

Je souhaite générer via un bouton sous excel un modèle de mail dans lequel certaine partie du texte correspondent à des valeurs de certaines cellules de mon classeur. (tout est sur le même onglet).

Pour le moment j'ai ça :

Sub mail()

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

////
With OutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = """"
.HTMLBody = "Bonjour," & "<br><br>" & _
"Avec les dimensions actuelles nous trouvons via la formule Pythagore 4 pans coupés <b> FG HA BC & DE </b> de <FONT COLOR=RED> ceci est un texte en rouge </FONT>" & "<br>" & _

.HTMLBody


End With
////

Cela me lance un brouillon outlook qui fait :

"Bonjour,

Avec les dimensions actuelles nous trouvons via la formule Pythagore 4 pans coupés FG HA BC & DE de ceci est un texte en rouge"

Ce qui me convient parfaitement sauf que je ne sais pas comment remplacer 'ceci est un texte en rouge' par la valeur d'une cellule de mon fichier.

Sachant qu'après cela je souhaite ajouter du texte, puis une autre sélection de valeurs de cellule (pour former un modèle de mail personnalisé en fonction d'informations rentré dans un formulaire)

Pour faire court, ca ferai :

"Bonjour,

Avec les dimensions actuelles nous trouvons via la formule Pythagore 4 pans coupés FG HA BC & DE de (contenue cellule A12 / en rouge) à la place des (contenue cellule A13/en rouge) que vous m'avez annoncé."

J'imagine que ce n'est pas compliqué mais je ne trouve pas ma réponse.

Qqn pour m'aider s'il vous plait ?

.HTMLBody =replace( "Bonjour," & "<br><br>" & _
"Avec les dimensions actuelles nous trouvons via la formule Pythagore 4 pans coupés <b> FG HA BC & DE </b> de <FONT COLOR=RED> ceci est un texte en rouge </FONT>" & "<br>" ,"ceci est un texte en rouge", "le vrai texte en rouge")

c'est peut-être mieux d'utilisez <<Variable1>> au lieu de "ceci est un texte en rouge".

Bonjour BsALv,

merci pour ta réponse mais je ne suis pas certain de bien la comprendre.

Je m'étais mal expliqué dans mon exemple.

Concretement, voici le mail que je souhaite envoyer :

"Bonjour,

Avec les dimensions actuelles nous trouvons via la formule Pythagore 4 pans coupés FG HA BC & DE de 1.62 à la place des 1.85 que vous m'avez annoncé."

Sachant que le 1.62 est dans la cellule A:12 et le 1.85 est dans la cellule A:13.

Je ne sais pas si cela change qqch mais la deuxième valeur (A13) est entrée manuellement dans la cellule tandis que la première est le résultat d'une formule (A12).

Sauf erreur de ma part (ce qui est possible au vue de mes faibles capacités en VBA) je ne vois pas dans le code qui tu cites un moyen de copier coller le contenue de la cellule pour l'intégrer au corps de mon mail.

Merci

c'est chercher une manière de facilement changer vos variables et vos fonts/couleurs.

Je vous donne l'idée, le reste s'est à vous. Est-ce que vous faites cela déjà dans le rectangle ou par VBA ... ?

schermafbeelding 2022 04 28 192320
Sub Envoyer()

     Set sh = Sheets("envoi des mails")

     Set OutApp = CreateObject("Outlook.Application")     'outlook starten
     Set OutMail = OutApp.CreateItem(0)

     With OutMail
          .To = sh.Range("B2").Value     'emailadres ontvanger
          .CC = sh.Range("B5").Value
          .BCC = Join(Array(sh.Range("B6").Value, sh.Range("B7").Value), ";")
          .Subject = sh.Range("B1").Value
          tekst = sh.Shapes("MailBody").TextFrame2.TextRange.Characters.Text     'lees de tekst in die vorm uit
          tekst = Replace(tekst, "<<var1>>", Format(sh.Range("A12").Value, "0.00000"), , , vbTextCompare)
          tekst = Replace(tekst, "<<var2>>", sh.Range("A13").Value, , , vbTextCompare)
          tekst = Replace(tekst, "<<var3>>", sh.Range("A12").Address(0, 0), , , vbTextCompare)
          tekst = Replace(tekst, "<<var4>>", sh.Range("A13").Address(0, 0), , , vbTextCompare)
          tekst = Replace(tekst, vbLf, "<br>", , , vbTextCompare)
          tekst = Replace(tekst, "<<rouge>>", "<b><font size=""6"" font face=""calibri"" color=""red"">", , , vbTextCompare)
          tekst = Replace(tekst, "<<vert>>", "<b><font size=""6"" font face=""calibri"" color=""green"">", , , vbTextCompare)
          tekst = Replace(tekst, "<<normal>>", "</FONT></b>", , , vbTextCompare)
          .HTMLBody = tekst

     '.save   'sauvegarder
          .Display
     '.Send
     End With

     Set OutMail = Nothing

End Sub

c'est

bonjour,

Hallo BsAlv

une autre proposition (exemple mettre la valeur de la cellule D1 de la feuille active dans le corps du mail.

.HTMLBody = "Bonjour," & "<br><br>" & _
"Avec les dimensions actuelles nous trouvons via la formule Pythagore 4 pans coupés <b> FG HA BC & DE </b> de <FONT COLOR=RED>" & cells(1,4).value & "</FONT>" & "<br>" & _

Merci H2sO4, cette solution fonctionne parfaitement :)

Petit point d'amélioration dont je n'ai pas la réponse :

Comment faire pour que la valeur de la cellule que je met dans le corps du mail puisse avoir que 2 décimales ?

Cordialement,

Rechercher des sujets similaires à "ecrire mail vba"