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 ! merci beaucoup

Rechercher des sujets similaires à "vba envoyer mail outlook piece jointe"