Joindre un fichier et coller une image dans un mail en vba

Résolu/Fermé
BCDLM Messages postés 12 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 26 août 2015 - Modifié par pijaku le 20/08/2015 à 16:33
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 10 nov. 2015 à 08:34
Bonjour,
Après plusieurs recherches et étant toujours coincé dans ma macro, je me tourne vers vous.

Je souhaiterai automatiser l'envoi d'un mail sous IBM Lotus Notes. Jusque là rien de bien compliqué, mon code ci-dessous fonctionne bien (il créer un format du mail en binaire).
 Dim envoyerA As String, envoyerCc As String, Subject As String
     
    ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
    envoyerA = "xxxx@xxx.xx"
    ' Indiquer ici le sujet de l'e-mail :
    Subject = "Test"
     
    Dim s As Object
    Dim docMail As Object
    Dim body As Object
    Dim stream As Object
    Dim att As Object
    
    Set s = CreateObject("Notes.NotesSession")
    Set Db = s.CurrentDatabase
    s.ConvertMIME = False
     
    'création du mail
    Set docMail = Db.CreateDocument
    With docMail
        .Form = "Memo"
        .SendTo = envoyerA
        .Subject = Subject
        .From = s.COMMONUSERNAME
    End With
     
    Set stream = s.CreateStream
    Set body = docMail.CreateMIMEEntity
    Call stream.writeText("Bonjour,<br /><br /> Blablabla")
    
    Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT)
         
    Call docMail.SEND(False)
    Set docMail = Nothing
    Set body = Nothing
    Set stream = Nothing


Je souhaiterai donc ajouter une image dans le corps du texte ainsi qu'y joindre un fichier excel.
J'ai fais plusieurs recherche sur internet mais je n'arrive pas à trouver le bon code...

Merci d'avance pour votre aide.
A voir également:

6 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
20 août 2015 à 16:24
Bonjour,

Voici un exemple d'envoie avec 2 pièces jointes:
Image et classeur.

A adapter:

'Après avoir ajouté la référence "Microsoft CDO for Windows 2000 Library" dans l'éditeur VBA Outils- Références
Sub mail_en_direct()
Const cdoBasic = 1
Dim admail As String, i As Integer
Dim messmail As String, secours As String
Dim expediteur As String
Dim Fichier As Variant
Dim chemin As Variant
 
    Fichier = Application.GetOpenFilename("Fichiers Image (*.jpg), *.jpg")
    chemin = Application.GetOpenFilename("Classeurs Excel (*.xls), *.xls")
   
      expediteur = InputBox("Adresse mail de l'Expéditeur", "ADRESSE ELECTRONIQUE", "monadresse@mail.fr")
      admail = InputBox("Adresse mail du destinataire", "DESTINATAIRE", "adressedest@mail.fr")
      messmail = "Bonjour,"
   With CreateObject("CDO.Message")
   If Err Then
      secours = MsgBox("Problème de CDO non installé sur le serveur")
      Exit Sub
   Else
      .From = expediteur
      .To = admail 'destinataire
     '.Bcc = ""
      .Subject = "Bonjour"
      .TextBody = messmail
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = expediteur
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "ton passeport windows live mail"
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'attention mettre votre adresse messagerie
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
      .Configuration.Fields.Update
      .AddAttachment Fichier 'chemin image jointe
      .AddAttachment chemin  'chemin classeur joint
      .Send
      If Err Then MsgBox "Le message n'a pas pu être expédié.Fermez et réessayez."
   End If
   On Error GoTo 0
End With
 MsgBox "Message envoyé avec pièces jointes"
End Sub

0
BCDLM Messages postés 12 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 26 août 2015
20 août 2015 à 17:55
Bonjour,

Merci pour votre réponse.

La macro bug sur le .Send. J'imagine que c'est à cause du serveur de messagerie que je n'arrive pas à trouver dans mon entreprise... Comment puis-je le trouver ?

De plus j'ai essayé d'adapter votre code au mien mais il ne marche pas non plus. Sauriez-vous pourquoi?

Dim envoyerA As String, envoyerCc As String, Subject As String

' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
envoyerA = "xxxx@xxx.xx"
' Indiquer ici le sujet de l'e-mail :
Subject = "Test"

Dim s As Object
Dim docMail As Object
Dim body As Object
Dim stream As Object
Dim att As Object

Set s = CreateObject("Notes.NotesSession")
Set Db = s.CurrentDatabase
s.ConvertMIME = False

'création du mail
Set docMail = Db.CreateDocument
With docMail
.Form = "Memo"
.SendTo = envoyerA
.Subject = Subject
.From = s.COMMONUSERNAME
End With

Set stream = s.CreateStream
Set body = docMail.CreateMIMEEntity
Call stream.writeText("Bonjour,<br /><br /> Blablabla")

Call body.AddAttachment("J:\maphoto.jpg") 'bug ici
Call body.AddAttachment("J:\mon fichier.xlsx")

Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT)

Call docMail.SEND(False)
Set docMail = Nothing
Set body = Nothing
Set stream = Nothing
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
20 août 2015 à 18:18
Voir cette ligne et corriger l'adresse messagerie

.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'attention mettre votre adresse messagerie

Allez dans votre messagerie:
Comptes
Propriétés
Serveur
Courrier sortant(SMTP)

Je suis avec Windows Live Mail
Pour les entreprises, je ne sais pas!
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
21 août 2015 à 07:57
Avec ton code, essaie ceci:

Sub envoimail()
Dim envoyerA As String, envoyerCc As String, Subject As String 
 ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message : 
 envoyerA = "xxxx@xxx.xx" 
 ' Indiquer ici le sujet de l'e-mail : 
 Subject = "Test" 

 Dim s As Object 
 Dim docMail As Object 
 Dim body As Object 
 Dim stream As Object 
 Dim att As Object 
Dim Fichier As Variant
Dim chemin As Variant

 Set s = CreateObject("Notes.NotesSession") 
 Set Db = s.CurrentDatabase 
 s.ConvertMIME = False 

 
    Fichier = Application.GetOpenFilename("Fichiers Image (*.jpg), *.jpg")
    chemin = Application.GetOpenFilename("Classeurs Excel (*.xlsx), *.xlsx")
   
      expediteur = InputBox("Adresse 
 'création du mail 
 Set docMail = Db.CreateDocument 
 With docMail 
 .Form = "Memo" 
 .SendTo = envoyerA 
 .Subject = Subject 
 .From = s.COMMONUSERNAME 
 End With 

 Set stream = s.CreateStream 
 Set body = docMail.CreateMIMEEntity 
 Call stream.writeText("Bonjour,<br /><br /> Blablabla") 

Call body.AddAttachment Fichier 
Call body.AddAttachment chemin 
Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT) 

 Call docMail.SEND(False) 
 Set docMail = Nothing 
 Set body = Nothing 
 Set stream = Nothing
End Sub

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
21 août 2015 à 07:58
Supprime cela, erreur de copier coller

expediteur = InputBox("Adresse
0
BCDLM Messages postés 12 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 26 août 2015
21 août 2015 à 14:46
Bonjour,

Merci pour le retour.
Il y avait une erreur syntaxe dût aux parenthèses qu'il manquait. J'ai donc ces deux lignes.

Call body.AddAttachment(Fichier)
Call body.AddAttachment(chemin)

Malheureusement la macro bug sur les deux lignes...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
21 août 2015 à 15:16
J'ai trouvé cette doc, avec fichiers joints, il suffit de l'adapter:

https://www.vbafin.com/Lotus-Notes-VBA-code.php
0
BCDLM Messages postés 12 Date d'inscription mardi 2 juillet 2013 Statut Membre Dernière intervention 26 août 2015
21 août 2015 à 16:37
Merci bien pour la doc, ça a été très utile !

Voici le code actuel :

Dim envoyerA As String, envoyerCc As String, Subject As String

' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
envoyerA = "xxxx@xxx.xx"
' Indiquer ici le sujet de l'e-mail :
Subject = "Test"

Dim s As Object
Dim docMail As Object
Dim body As Object
Dim stream As Object
Dim att As Object

Set s = CreateObject("Notes.NotesSession")
Set Db = s.CurrentDatabase
s.ConvertMIME = False

'création du mail
Set docMail = Db.CreateDocument
With docMail
.Form = "Memo"
.SendTo = envoyerA
.Subject = Subject
.From = s.COMMONUSERNAME
End With

Set stream = s.CreateStream
Set body = docMail.CreateMIMEEntity
Call stream.writeText("Bonjour,<br /><br /> Blablabla")
Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT)

Set AttachMe = docMail.CreateRichTextItem("C:\Desktop\monfichier.xlsx")
AttachMe.EmbedObject 1454, "", (""C:\Desktop\monfichier.xlsx"") ', "Attachment"

Call docMail.SEND(False)
Set docMail = Nothing
Set body = Nothing
Set stream = Nothing
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

Dès que j'utilise ces codes, ils me mettent une erreur au niveau de "Set docMail = Db.CreateDocument " !
(erreur d'execution 91)

Est ce que quelqu'un sait comment résoudre ce problème ?

Merci
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
9 nov. 2015 à 11:37
0
Oui je l'ai lu et je l'ai bien activé dans les réferences
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
9 nov. 2015 à 14:42
0
Ca me mets toujours le même problème au même endroit ...
Je ne comprends vraiment pas d'où ça peut venir
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
9 nov. 2015 à 15:14
Erreur d'execution "91" signifie que l'objet n'est pas connecté/renseigné ... il est donc vide

Cela concerne ces 2 lignes:

Set s = CreateObject("Notes.NotesSession")
Set Db = s.CurrentDatabase

essaie d'ajouter dans les déclarations ceci:

Dim Db As Object
0
xyvyos > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
9 nov. 2015 à 15:29
Je viens de le faire et ça marche toujours pas
0