Insertion d'une pièce jointe et envoi par mail depuis Excel

  • Initiateur de la discussion Initiateur de la discussion JNP
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JNP

XLDnaute Barbatruc
Bonjour le forum 🙂,
J'ai cherché dans les archives et n'ai trouvé que quelques fils sans résoudre mon problème pour autant (les petits morceaux de code trouvés sont difficilement exploitables)😱.
J'ai besoin depuis Excel de créer un suivi de travaux en cours. Pour cela, j'ai créé un USF qui me permet de choisir le destinataire ainsi que les différentes informations type Objet et Corps du message.
J'ai besoin maintenant de 2 choses:
1) Localiser la pièce jointe qu'il me faut envoyer, via un TextBox et un bouton parcourir pour enregistrer le chemin et le nom de la pièce jointe (je pense que c'est ce chemin type "C:\Documents and Settings\Jean-Noël\Bureau\Excel Downloads\Test.pdf" qui me permettra de spécifier la pièce jointe)
2) Envoyer le message en spécifiant le destinataire, l'objet, le corps de message et en y ajoutant la pièce jointe
Pour info, je suis en Excel 2002 et Outlook 2002 (je ne veux et ne peux pas passer par Outlook Express, toutes les messageries de l'entreprise sont en Outlook...)
Merci d'avance de vos réponses 😱
 
Re : Insertion d'une pièce jointe et envoi par mail depuis Excel

Bonjour JNP, le Forum


OUi on peut le faire, et c'est même très étonnant que tu n'aies pas trouvé dans ce Forum

Voici un Fil où je redonne le code nécessaire à l'envoie de pièces jointes avec OUTLOOK 2000, 2002 ou 2003 (pas testé encore sous 2007)

https://www.excel-downloads.com/threads/vbproject-reference-msoutl-olb-office-2003-2002.40048/

Tu noteras que les tags HTML Non Breakable Space, " " sont à supprimer (à l'époque de l'ancien Forum il en fallait), de plus ce Fil a pour but de résoudre les problèmes de référence en cas d'utilisation de différentes versions d'Office sur le programme.

Bon Dimanche

@+Thierry
 
Re : Insertion d'une pièce jointe et envoi par mail depuis Excel

Re bonjour,

Etant donné que la migration entre les générations de Forums XLD a quand même bien "mis le wouialle" dans les codes, je l'ai re-transcrit comme suit :

Code:
Option Explicit
Const MailTo As String = "[EMAIL="Toto@xld.com"]Toto@xld.com[/EMAIL]"
Const MailCC As String = "[EMAIL="Zaza@xld.com"]Zaza@xld.com[/EMAIL]; [EMAIL="Titi@xld.com"]Titi@xld.com[/EMAIL]"
[COLOR=darkgreen][B]'================================================= ================[/B][/COLOR]
[B][COLOR=darkgreen]'Need reference to Microsoft Outlook xx Objects Library[/COLOR][/B]
[B][COLOR=darkgreen]'[/COLOR][/B]
[B][COLOR=darkgreen]'C:\Program Files\Microsoft Office\OfficeXX\msoutl.olb[/COLOR][/B]
[B][COLOR=darkgreen]'================================================= ================[/COLOR][/B]
Sub SendingDailyMail()
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Dim Message As String
Dim TheDay As Date
 
TheDay = Date
 
Message = "Good Morning," & vbCrLf & vbCrLf & _
"= = = This is an automatic generated email = = =" & vbCrLf & vbCrLf & _
" Please find enclosed the Report for Transactions for : " & Format(TheDay, "DDDD") & _
" " & Format(TheDay, "DD/MM/YYYY") & vbCrLf & _
"Best Regards" & vbCrLf & "@+Thierry" & vbCrLf & vbCrLf
 
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)
    With OLMail
          .To = MailTo
          .CC = MailCC
          .Importance = olImportanceNormal
          .Subject = "Daily Transactions Summary Reports (" & _
            Format(TheDay, "YYYY-MM-DD") & ")"
          .Body = Message
          .Attachments.Add "[B]I:\MC_PROD\Reports\Daily\Test1.xls[/B]" '[B][COLOR=darkgreen]<= Can be a String Variable[/COLOR][/B]
          .Attachments.Add "[B]I:\MC_PROD\Reports\Daily\Test1.pdf[/B]"
          .Categories = "Daily"
          .OriginatorDeliveryReportRequested = True
          .ReadReceiptRequested = True
          .Send '<<<<<<<<<<<<<<<TO SEND DIRECTLY
          .Display '<<<<<<<<<<<<<TO SEE THE MAIL FIRST
    End With
 
 
Set OLApplication = Nothing
Set OLMail = Nothing
End Sub

Bon Dimanche

@+Thierry
 
Re : Insertion d'une pièce jointe et envoi par mail depuis Excel

Bonjour Thierry 🙂,
Effectivement, ce fil m'a échappé, mais il ne sort pas sous les mots clefs que j'ai utilisé du style "pièce jointe" ou "mail".
J'ai testé ton code mais cela coince...😱
Tu mets qu'il est nécessaire d'indiquer le chemin d'Outlook, soit "C:\Program Files\Microsoft Office\Office10\OUTLOOK.EXE" en ce qui me concerne, mais quelle est l'instruction pour le faire?
Finalement, j'ai vu sur un autre fil (Mail) que je n'avais pas ouvert la bonne bibliothèque (Sous VBA: Outil-> Référence et là choisir en cochant Microsoft Outlook 10.0 Object Library) , donc l'envoi fonctionne.
D'autre part, en regardant ton code, comme je le pensais, le chemin de la pièce jointe est indispensable pour l'envoyer. Mais comment faire pour que l'utilisateur lambda utilise une fenêtre du style "Parcourir" pour stocker ce chemin dans l'USF.
Et dans un autre fil, j'ai trouvé:
Code:
Function joindre()
   Dim chemin As String         'nom de variable récupérant le chemin du fichier
   chemin = Application.GetOpenFilename
   Range("une cellule que où tu veux renvoyer ton chemin").Value = chemin 
End Function
Ce qui résout le reste.
Merci pour tout 😎
 
Dernière édition:
Re : Insertion d'une pièce jointe et envoi par mail depuis Excel

Bonsoir JNP, le Forum

Heureux que tu aies pu trouver ta réponse, c'est le principal.

Pour la référence à OutLook, oui si tu as lu le fil mis en lien dans ma première réponse tout y est expliqué, et dans mon exemple de code, désolé en anglais car je travaille uniquement en anglais, il est écrit :

'================================================= ================
'Need reference to Microsoft Outlook xx Objects Library
'
'C:\Program Files\Microsoft Office\OfficeXX\msoutl.olb
'================================================= ================

La première ligne indique bien la référence à la bibliothèque qu'il faut cocher dans VB menu outils => références qui, selon de la version d'Office sera

  • Microsoft Outlook 9 Objects Library = Office 2000
  • Microsoft Outlook 10 Objects Library = Office 2002 (XP)
  • Microsoft Outlook 11 Objects Library = Office 2003
  • Pour 2007 j'imagine que c'est 12....(?)
Quant à la seconde ligne elle est juste là pour indiquer où devrait se trouver cette bibliothèque si elle n'est pas listée dans les références car il s'agit bien d'un point "OLB" (Library) et pas d'un point "EXE"

Mais bon, tu as pu rectifier tout seul, et pour le GetOpenFileName, oui bonne idée et tu peux aussi tester si jamais il prend la valeur False, (si le User ne sélectionne rien ou fait une action Cancel) sinon tu auras un plantage par la suite.

Bonne Nuit

@+Thierry
 
Re : Insertion d'une pièce jointe et envoi par mail depuis Excel

Bonjour JPN, Thierry, bonjour le forum,

Impossible de faire tourner le code de notre ami Thierry... Quelqu'un pourrait-il m'aider ? Ça plante sur cette ligne :

Code:
Set OLApplication = CreateObject("Outlook.Application")
avec le message ci-dessous. Ne serait-ce pas un problème de références ? J'ai essayé d'autres codes similaires mais toujours le même problème.
 

Pièces jointes

  • Message-erreur-Email.jpg
    Message-erreur-Email.jpg
    31.7 KB · Affichages: 206
  • références-Excel.jpg
    références-Excel.jpg
    95.5 KB · Affichages: 229
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Réponses
5
Affichages
307
Réponses
1
Affichages
417
Compte Supprimé 979
C
Réponses
2
Affichages
926
Retour