Macro pour envoyer un mail - Erreur 287

Bonjour à tous,

Je rencontre un problème avec la macro suivante.

Je souhaiterais par le biais de cette macro m'envoyer en pièce jointe le classeur sur lequel je travaille en indiquant mon adresse outlook en destinataire.

Sauf que lorsque je lance la macro en utilisant ".Display" et non pas ".Send" (voir dernier 'commentaire dans le code ci-dessous) alors la macro fonctionne. Dès lors, que je remplace ".Display"" par ".Send" afin de m'envoyer directement alors la macro bug et affiche l'erreur #287.

Pourriez-vous m'expliquer pourquoi l'objet .Send fait planter ma macro, s'il vous plaît ?

Sub send_email_complete()

Dim OlApp As Object
Dim NewMail As Object
Dim source_file, to_emails, cc_emails As String

Set OlApp = CreateObject("Outlook.Application")
Set NewMail = OlApp.CreateItem(0)

    to_emails = "monmail@domaine.com"
   ' cc_emails = cc_emails & Cells(i, 2) & ";"

    'ActiveWorkbook.Save
    'source_file = ActiveWorkbook.Path + "\" + ActiveWorkbook.Name

   ' NewMail.Attachments.Add source_file

ThisWorkbook.Save
source_file = ThisWorkbook.FullName

With NewMail
'myMail.CC = cc_emails
.To = to_emails
.Subject = "Fichier du Jour"
.Body = " "
.Attachments.Add source_file
.Send 'ici quand je remplace par .Display la macro fonctionne sans souci
End With

End Sub

Merci par avance pour votre aide.

Bonne journée!

Bonjour,

Ton code tel quel fonctionne avec Microsoft Outlook ouvert ou fermé.

Si Microsoft Outlook est fermé, le délai est quatre fois plus long.

ric

Slt Black_Hole,

essaie ce code:

Sub send_email_complete()

Dim OlApp As Object
Dim NewMail As Object
Dim source_file, to_emails, cc_emails As String

Set OlApp = CreateObject("Outlook.Application")
Set NewMail = OlApp.CreateItem(0)

    to_emails = "monmail@domaine.com"
   ' cc_emails = cc_emails & Cells(i, 2) & ";"

    'ActiveWorkbook.Save
    'source_file = ActiveWorkbook.Path + "\" + ActiveWorkbook.Name

   ' NewMail.Attachments.Add source_file

ThisWorkbook.Save
source_file = ThisWorkbook.FullName

With NewMail
'myMail.CC = cc_emails
.To = to_emails
.Subject = "Fichier du Jour"
.Body = " "
.Attachments.Add source_file
.SendUsingAccount = OlApp.Session.Accounts.Item(1)
.Send 'ici quand je remplace par .Display la macro fonctionne sans souci
End With

End Sub

Bonjour,

Je vous remercie pour votre aide.

@ric: Oui en effet j'ai essayé de lancer mon code avec Outlook ouvert puis avec Outlook fermé pour voir si mon code fonctionné. Et j'ai constaté que le temps d'attente était plus long avec Outlook fermé.

@m3ellem1: Je viens de lancer le code que vous m'avez proposé. Malheuresement, l'erreur 287 persiste.

Je ne vois pas la raison de cette erreur.

Pourriez-vous me donner une piste afin de résoudre ou de contourner cette erreur afin de pouvoir envoyer le classeur en pièce jointe par mail svp?

Merci par avance pour votre aide.

Bonjour à tous,

Je me permets de relancer ma problématique aujourd'hui.

Pourriez-vous me dire pourquoi mon code génère l'erreur 287, svp?

En effet, je n'ai pas réussi à résoudre mon erreur.

Au final, le but de mon code est d'envoyer le classeur actif en pièce jointe par mail (i.e. source: excel -> destination: outlook).

Merci d'avance pour tous ceux qui pourront m'éclairer à ce sujet.

Re,

il faut qu'on fasse des essais sinon y a pas moyen^^

2ème essai:

Sub send_email_complete()

Dim OlApp As Object
Dim NewMail As Object
Dim source_file, to_emails, cc_emails As String

Set OlApp = CreateObject("Outlook.Application")
Set NewMail = OlApp.CreateItem(0)

    to_emails = "monmail@domaine.com"
   ' cc_emails = cc_emails & Cells(i, 2) & ";"

    'ActiveWorkbook.Save
    'source_file = ActiveWorkbook.Path + "\" + ActiveWorkbook.Name

   ' NewMail.Attachments.Add source_file

ThisWorkbook.Save
source_file = ThisWorkbook.FullName

With NewMail
'myMail.CC = cc_emails
.To = to_emails
.Subject = "Fichier du Jour"
.Body = " "
.Attachments.Add source_file
'.Send 'ici quand je remplace par .Display la macro fonctionne sans souci
.Display
Application.SendKeys "%s" 
End With

End Sub

Bonjour,

Si tu vas sur le code et que tu fais un pas-à-pas ( touche F8 ), est-ce que l'erreur survient sur une ligne particulière ?

ric

Bonjour @m3ellem1, @ric

Je vous remercie pour vos retours.

@m3ellem1: Mille mercis ! Votre solution fonctionne parfaitement (par ailleurs je m'excuse pour cette réponse tardive car je faisais des modifications afin d'être sûr et certain qu'elle fonctionne toujours).

Aussi, j'ai une petite question concernant le code.

Pourriez-vous m'expliquer ce que fait la ligne de code suivante s'il vous plaît ? Et pourquoi le ".Send" ne fonctionnait pas dans mon cas?

Application.SendKeys "%s" 

Je vous remercie par avance pour votre aide.

Bon après-midi à tous.

Slt Black_Hole,

Application.SendKeys "%s" c'est pour contourner l'alerte d'Outlook,

le s dans "%s" veut dire Send.

Cordialement

Bonjour @m3ellem1,

Je comprends. ^^

Merci beaucoup d'avoir pris le temps de me répondre.

Bonne fin de semaine.

Rechercher des sujets similaires à "macro envoyer mail erreur 287"