VBA Excel pour envoi mail outlook

C@thy

XLDnaute Barbatruc
Bonsouar le forum,

j'ai écrit une macro Excel qui envoie des mails via outlook.

Je souhaiterais dans le corps du message faire une mise en forme : certains mots en gras, d'autres en rouge, et en plus incorporer une image (dans le corps du message).

Savez-vous comment on fait ça??

Merci pour votre aide.

Bibises et bonne soirée

C@thy
 

Roland_M

XLDnaute Barbatruc
Re : VBA Excel pour envoi mail outlook

bonsoir

si tu peux t'inspirer de ce classeur exemple !?
il envoie un range de données avec image dans le corps d'un message
ou en pièce jointe !?

mais ceci sur Outlook Express 6 !

voir code dans Module1 !
bien entendu avoir des bases sur vb sinon . . .
 

Pièces jointes

  • EnvoiMail OutlookExpress.zip
    19.7 KB · Affichages: 3 020
  • EnvoiMail OutlookExpress.zip
    19.7 KB · Affichages: 3 104
  • EnvoiMail OutlookExpress.zip
    19.7 KB · Affichages: 3 160
Dernière édition:

JNP

XLDnaute Barbatruc
Re : VBA Excel pour envoi mail outlook

Salut C@thy, Roland M :),
De mémoire (à tester), le problème se trouve du côté de OLMail.Body (OLMail étant la variable objet qui représente le mail dans la macro) qui doit charger le corps de message en texte brut. Il faudrait essayer OLMail.HTMLBody à la place qui devrait prendre du HTML et mettre les balises HTML qui vont bien, ou
Code:
OLMail.BodyFormat = olFormatRichText
avant et essayer de coder du RTF.
Bon courage :cool:
 

JNP

XLDnaute Barbatruc
Re : VBA Excel pour envoi mail outlook

Re :),
En retournant sur ce fil où nous avions étudié le problème, un fichier test en PJ. Mais ça va pas être simple, même en récupérant les balises en concaténation :p...
Il y a peut-être plus simple, mais je ne suis pas sûr qu'on puisse récupérer une présentation dans les cellules :eek:.
Par contre sous 2007 (et il me semble que c'était déjà le cas en 2003), il est possible sous Word de faire du publipostage électronique, ce qui te permettrait, sans aucun macrotage, d'envoyer un courier type modulable (comme tout publipostage) en fonction d'un bête data tiré d'Excel ;).
Personnellement, je choisirais plutôt cette voie :rolleyes:...
Bonne journée :cool:
 

Pièces jointes

  • MailHTML.xls
    35 KB · Affichages: 2 105

C@thy

XLDnaute Barbatruc
Re : VBA Excel pour envoi mail outlook

Oh merci Jean-Noël, tu es un vrai chouchou ;),
je galère dur sur ce truc qui était pour hier (sans rire!),
on m'a donné généreusement encore 3 heures supplémentaires pour le boucler, donc je vais explorer la piste que tu me fournis.

Bisous bisous

C@thy
 

Hulk

XLDnaute Barbatruc
Re : VBA Excel pour envoi mail outlook

Hello tout le monde,

Puisque ce matin je suis dans les mails :D, je me permets de proposer le code ci-dessous, un petit poil plus... compréhensible... :D

Activez la référence Microsoft Outlook 11.0 Object Library, puis un CommandButton sur la feuille voulue.
Code:
Private Sub CommandButton1_Click()
    
    Dim OlApp As Outlook.Application
    Dim OlItem As Outlook.MailItem

    Set OlApp = CreateObject("Outlook.application")
    Set OlItem = OlApp.CreateItem(olMailItem)

    With OlItem
        .To = "xxxxxxx@xxxxx.xx"
        .CC = "xxxxx.xxxx@xxxxxxx.xxx"
        .Subject = "Test"
        .BodyFormat = olFormatHTML
        .HTMLBody = "<HTML><body>Ce <b>mot</b> est en gras.<p>" _
        & "Ce " & "<u>mot</u> est souligné.<p>" & "Ce " _
        & "<FONT COLOR=RED>mot</FONT> est en rouge.<p>" _
        & "Ce " & "<i>mot</i> est en italique.<p>" & _
        "<b><i><u><font color=green>Ce format est vert, gras, italique et souligné !</font></u></i></b></body><HTML>"
        .Display 'Ou .Send
    End With

End Sub
Je ne sais plus où et à qui j'ai pioché ce code, mais chapeau et merci à l'auteur !
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : VBA Excel pour envoi mail outlook

Merci à toi, Hulk, tu fais aussi avancer le Schmilblick.

Mon gros souci c'est encore et toujours l'insertion d'une image dans le corps du sujet,

et qui plus est le fait que le contenu du message soit du variable :

Votre identifiant est : adupont-adc code à aller chercher dans la liste des codes, à droite de la colonne qui contient la liste des adresses e-mail.

Je suis encore sur ce foutu truc, sais pas à quelle heure je vais terminer... si j'y arrive.

Merci à vous tous

C@thy
 

C@thy

XLDnaute Barbatruc
Re : VBA Excel pour envoi mail outlook

Je suis sur la méthode html :
Sheets("Mailing").Select
login = ActiveSheet.Range("C" & i)
mdp = ActiveSheet.Range("D" & i)
nom = Split(ActiveSheet.Range("B" & i), "@")(0)
dest = ActiveSheet.Range("B" & i)
Ficjoint = "C:\guide e-formation.doc"

Set appOutlook = CreateObject("outlook.application")
'Crée un nouveau message
Set message = appOutlook.CreateItem(olMailItem)

With message
.Subject = "e-formation"
.HTMLBody = "<HTML><body>Bonjour,<p>" _
& "Pour vous connecter : Ce lien n'existe plus <p>" _
& "<b>Votre identifiant</b> :" & Cells(i, 3) <p>" _ '*************ERREUR*****
& "<b>Votre mot de passe</b> pour votre première connexion : bidule!"
.Recipients.Add (dest)
.Attachments.Add RepName
.Send
End With

Damned!!!

C@thy
 
Dernière édition:

Guiv

XLDnaute Occasionnel
Re : VBA Excel pour envoi mail outlook

Bonjour C@thy, les autres,
Je suis ce fil avec intérêt, mais de loin faute de temps.
Petite contribution:
Autre truc : comment mettre des "":

.HTMLBody = "<HTML><body>vous êtes inscrit(e) au module "trucmuche",<p>" _

Je propose : double apostrophe avant et après ''trucmuche". En tout cas ça marche dans une msgbox par exemple, alors que les guillemets font planter...
Cordialement,
Guiv
 

suistrop

XLDnaute Impliqué
Re : VBA Excel pour envoi mail outlook

Bonjour,

Pour ajouter une image :
dons ton corps de mail HTML:
Code:
corps_mail_html = "<IMG  height=171 src=cid:myident width=610>"
Ensuite dans la fonction d envoie de mail :

Code:
Sub EnvoyerMail(ByVal AdresseMail As String, ByVal Copie As String, ByVal ObjetMail As String, ByVal CorpsMail As String, ByVal AttachMail As String)
'il vaut mieux avoir ouvrir outlook au préalable
dossier = ThisWorkbook.Path
'Dans la barre de tache : outil/reference selectionner :Microsoft Outlook 11.0 library

'envoi de mail automatique
'initialisation des objets
  ' create new Outlook MailItem
  Set objApp = CreateObject("Outlook.Application")
  Set l_Msg = objApp.CreateItem(olMailItem)
  ' add graphic as attachment to Outlook message
  ' change path to graphic as needed
  Set colAttach = l_Msg.Attachments
  Set l_Attach = colAttach.Add(dossier & "\BDD_apres\Titre_mail.PNG")
  l_Msg.Close olSave
  strEntryID = l_Msg.EntryID
  Set l_Msg = Nothing
  ' *** POSITION CRITICAL *** you must dereference the
  ' attachment objects before changing their properties
  ' via CDO
  Set colAttach = Nothing
  Set l_Attach = Nothing
    
  ' initialize CDO session
  On Error Resume Next
  Set oSession = CreateObject("MAPI.Session")
  oSession.Logon "", "", False, False
  
  ' get the message created earlier
  Set oMsg = oSession.GetMessage(strEntryID)
  ' set properties of the attached graphic that make
  ' it embedded and give it an ID for use in an <IMG> tag
  Set oAttachs = oMsg.Attachments
  Set oAttach = oAttachs.Item(1)
  Set colFields = oAttach.Fields
  Set oField = colFields.Add(CdoPR_ATTACH_MIME_TAG, "image/jpeg")
  Set oField = colFields.Add(&H3712001E, "myident")
  oMsg.Fields.Add "{0820060000000000C000000000000046}0x8514", 11, True
  oMsg.Update
  
  ' get the Outlook MailItem again
  Set l_Msg = objApp.GetNamespace("MAPI").GetItemFromID(strEntryID)
  ' add HTML content -- the <IMG> tag
  'l_Msg.HTMLBody = "<IMG align=baseline border=0 hspace=0 src=cid:myident>"
  'l_Msg.Close (olSave)
  'l_Msg.Display
'fin du test ajout image

'construction du mail
With l_Msg
    .To = AdresseMail
    .BCC = Copie '.BCC si on veut pas que sur le mail soit affiché les copies ou CC si on veut pas cacher
    .Subject = ObjetMail
    .HTMLBody = CorpsMail
    .SentOnBehalfOfName = "MOI"
    .Display
End With
'attente de 2 secondes le temps que tous les pcs aient le tps de réagir
Attendre (3)
'simulation d'appui des touches du clavier
SendKeys "%v", True

'réinitialisation des variables
Set objMail = Nothing
Set objOL = Nothing
End Sub
Tu met l addresse de ton image dans ici dans la procédure ci dessus :
Code:
Set l_Attach = colAttach.Add(dossier & "\BDD_apres\Titre_mail.PNG")
Bon courage
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 183
Membres
103 152
dernier inscrit
Karibu