Microsoft 365 ouvrir mail avec pièce jointe

pompaero

XLDnaute Impliqué
Bonjour,

Je cherche à créer lors d'un enregistrement d'une feuille excel en pdf, l'ouverture automatique d'un mail avec ce pdf en pièce jointe de manière à ne plus qu'à appuyer sur envoyer du mail.
Mon classeur "Main courante modèle" onglet "MC vierge" est renseigné tous les jours et doit être envoyé à plusieurs destinataire en fin de journée.
En fin de journée, quand on valide "Clôturer la journée" celle ci est enregistrée automatiquement en pdf dans un dossier précis pour archive. Tout cela fonctionne très bien.
(Je pense avoir déactivé l'ensemble des protections, mais au cas ou le code est : 123)
Ce que j'aimerai améliorer, c'est l'envoi de ce pdf par mail automatiquement.
Le bouton "Clôturer la journée" contient la macro fin_service du module1 et pense que c'est la dedans qu'il faudrait un supplément de code pour cet envoi de mail.
Je n'arrive pas à adapter cette fonction la dedans malgré ce code trouvé en exemple ci après,
VB:
'Sub Mail()
Private Sub CommandButton1_Click()
Dim oOL As Object
Dim oOLMsg As Object
Dim oOLRecip As Object

Mail2 = Sheet("Destinataire mail").Range("B2:B4").Value
    Set oOL = CreateObject("Outlook.Application")
    Set oOLMsg = oOL.CreateItem(0)
Liste = ""
For Each c In Mail2
    Liste = Liste & ";" & c
Next c
     With oOLMsg
        .To = Liste
        .Subject = "Main Courante "
        .Importance = 1
 Texte = "<FONT face='Arial' size=2>Bonjour, "
 Texte2 = "<br><br><FONT face='Arial' size=2>Ci-joint la main courante du jour (" & Date & ")."
 Texte3 = "<br><br><FONT face='Arial' size=2>Cordialement"
        .HTMLBody = Texte
        .HTMLBody = .HTMLBody & Texte2
        .HTMLBody = .HTMLBody & Texte3
        .Display
    End With
    Set oOLMsg = Nothing
    Set oOLRecip = Nothing
    Set oOL = Nothing
End Sub
et en y ajoutant le pdf enregistré en pièce jointe.
Cela est il possible et quelqu'un peut-il m'aider la dessus ?
Merci
Cdlt

pompaero
 

Pièces jointes

  • Main courante modele.xlsm
    151.5 KB · Affichages: 11

pompaero

XLDnaute Impliqué
Bonsoir Thierry

Merci de ton interret à mon post.
Bien ajouté .Attachments.Add, tenté ta proposition mais n'arrive pas à l'adapter pour récupérer le pdf.
je reviens chercher de l'aide.
Merci
 

Pièces jointes

  • Main courante modele.xlsm
    152.8 KB · Affichages: 8

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @pompaero , le Forum

L'instruction .Attachments.Add ("C:\test.pdf") est du 100% standard microsoft sur un objet Outlook.
https://docs.microsoft.com/en-us/office/vba/api/outlook.attachments.add

Je n'utilise pas de client mail sur le PC de tests où je fais mes "expériences" XLD, mais ce devrait passer sans problème...
Avant de vouloir ajouter une pièce jointe est-ce que ton code fonctionne pour simplement envoyer un mail Outlook ?

Bon courage
@+Thierry
 

pompaero

XLDnaute Impliqué
Bonjour Thierry,

L'instruction .Attachment.add("C:\...") marche bien, je la'i testé.
Oui mon code fonctionne pour envoyer un simple mail.
Il fonctionne également si je met un Chemin d'une pièce jointe précise.
Dans mon cas, le classeur main courante contient un bouton (clôturer la journée) qui permet d'enregistrer l'onglet "MC Vierge" en pdf et le stocker dans un dossier.
Pour info, dans ce dossier, jour après jour, ces pdf sont stockés l'un en dessous de l'autre (en liste).
Si non, mon idée est de récupérer ce pdf au moment de l'enregistrement ou d'en créer un second juste pour l'attacher dans le mail.
Je bloque juste sur cet endroit de pouvoir faire.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonsoir @pompaero

Bien il faut que le nom complet (avec chemin) du fichier PDF soit dans une variable Public de type String... (en Top de Module°

Public MonPDFFullPath As String

Quand tu généres ton PDF dans une autre macro, tu dois le nommer et lui donner un nom, je suppose et son chemin ?
A ce moment tu mets tout ça dans la Variable... (extention .pdf comprise)

Ensuite dans la Macro Outlook, tu n'as plus qu'à faire ceci :
.Attachments.Add (MonPDFFullPath)

Pas vraiment compliqué...
Bon courage
@+Thierry
 

pompaero

XLDnaute Impliqué
Désolé, je coule :mad:, pour tant ça a l'air tout simple (pourquoi je bloque la dessus !!!)
En haut du module j'ai créé la variable public.
VB:
Public MonPDFFullPath As String
cela est le code qui génère le pdf dans l'autre macro
Code:
'Enregistrement en pdf
    FileN = Format(Sh.Range("C2"), "dd-mm-yy") & " " & Format(Time, "hhmmss")
    Sh.ExportAsFixedFormat xlTypePDF, Filename:=chemin & FileN & ".pdf"
    MsgBox "Main courante clôturée.", vbInformation, "Enregistrement en PDF"
La ou je bloque : mets tout ça dans la Variable...
j'ai tenté,
MonPDFFullPath = Sh.ExportAsFixedFormat xlTypePDF, Filename:=chemin & FileN & ".pdf"
et dans la macro outlook j'ai mis
Code:
.Attachments.Add (MonPDFFullPath)

Pourquoi, pourquoi, pourquoi je n'y arrive pas.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
FileN = Format(Sh.Range("C2"), "dd-mm-yy") & " " & Format(Time, "hhmmss")
.....
chemin & FileN & ".pdf"

C'est ceci qui nous interresse !

Soit en amont, le plus logique, tu peux faire ceci :

MonPDFFullPath = chemin & Format(Sh.Range("C2"), "dd-mm-yy") & " " & Format(Time, "hhmmss") & ".pdf"
Et en prime ré-utiliser la variable pour générer le PDF :
Sh.ExportAsFixedFormat xlTypePDF, Filename:=MonPDFFullPath

Et enfin dans la macro d'Outlook...

Tu vas y arriver !
Bon courage
@+Thierry
 

Discussions similaires

Réponses
6
Affichages
269
Réponses
3
Affichages
415

Statistiques des forums

Discussions
311 734
Messages
2 082 020
Membres
101 872
dernier inscrit
Colin T