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 ... ?
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,