VBA envoyer un mail outlook avec une pièce jointe
Bonjour a tous,
j'ai besoin d'aide car je ne sais plus quoi faire.
j'ai un code VBA qui permet d'envoyer un mail avec une pièce jointe. la pièce jointe est un fichier PDF qui est créé tous les jours.
ce code permet de chercher le fichier le plus récent dans un répertoire puis l'attacher dans le mail et envoyer le mail.
le problème est au moment de d'attacher la pièce jointe j'ai une erreur. fichier introuvable vérifier l’orthographe ou le chemin d'accès.
la commande où j'ai l'erreur : .Attachments.Add Fichier_Prendre
le chemin d'accès est correcte sauf que je crois que je n’arrive pas a tacher le fichier. peut être il manque un bout de code dans ma macro. Merci d'avance pour votre aide
voici le code
'Il faut activer la référence "Microsoft Outlook Library" Avant de lancer cette macro,
' Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
Sub Envoyer_Mail_Outlook()
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim Nom_Fichier As String
Dim Fichier_Prendre As String
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
'---------------------------------------------------------
'Exemple pour envoyer un classeur en pièce jointe
'Nom_Fichier = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm")
'If Nom_Fichier = "Faux" Then Exit Sub
'---------------------------------------------------------
'Ou bien entrer le path et nom du fichier autrement
Nom_Fichier = FindLastFile("C:\Users\9011183P\Desktop\test\sortie\carte\")
MsgBox Nom_Fichier 'vérifier si le fichier est bien trouvé
If Nom_Fichier = "" Then Exit Sub
'---------------------------------------------------------
With oBjMail
.To = "lina@gmail.com" ' le destinataire
.Subject = "meteo des relais du " & Date ' l'objet du mail
.Body = "ci joint le fichier en pdf de la situation du jour " 'le corps du mail ..son contenu
.Attachments.Add Fichier_Prendre '"C:\Data\essai.txt" ' ou Nomfichier
.Display ' Ici on peut supprimer pour l'envoyer sans vérification
.Send
End With
ObjOutlook.Quit
Set oBjMail = Nothing
Set ObjOutlook = Nothing
End Sub
Function FindLastFile(Path As String)
'cette fonction permet de chercher le fichier le plus récent dans le répertoire
Dim fName As String
Dim fDate As Date
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folder
Set folder = fso.GetFolder(Path)
Dim Files
Set Files = folder.Files
Dim File
For Each File In Files
If File.DateCreated > fDate Then
fDate = File.DateCreated
fName = File.Name
End If
Debug.Print File.Name, File.DateCreated, "=>", fName, fDate
Next
Set Files = Nothing
Set folder = Nothing
Set fso = Nothing
FindLastFile = fName
End Function
bonjour,
à mon avis ton instruction devrait être la suivante
.Attachments.Add Nom_Fichier
Sur base du code fourni, ta variable Fichier_prendre ne contient rien.
bonjour,
En fait oui tu as raison c'est bien ça, mais même avec cette commande, ça ne marche pas, j'ai la même erreur
Attachments.Add Nom_Fichier
bonjour,
remplace ta procédure findlastfile par celle-ci
Function FindLastFile(Path As String)
'cette fonction permet de chercher le fichier le plus récent dans le répertoire
Dim fName As String
Dim fDate As Date
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folder
Set folder = fso.GetFolder(Path)
Dim Files
Set Files = folder.Files
Dim File
For Each File In Files
If File.DateCreated > fDate Then
fDate = File.DateCreated
fName = File.Name
End If
'Debug.Print File.Name, File.DateCreated, "=>", fName, fDate
Next
Set Files = Nothing
Set folder = Nothing
Set fso = Nothing
FindLastFile = Path & "\" & fName
End Function
Oh super! ta solution est génial.
finalement faut juste remplacer ce bout code
FindLastFile = fName
par
FindLastFile = Path & "\" & fName
Je valide ta solution. Excellent