VBA - Envoi mails automatiquement avec fichier joint en pdf

Bonjour à toutes et à tous!

J'ai un classeur excel et j'aimerais envoyer juste une des feuilles ("offre detaillee") en format pdf à une liste de clients. La feuille change à chaque fois en fonction du client (nom, coût du transport,...)

Pour l'instant, j'ai réussi à faire un code pour mettre tous les docs en pdf mais je n'arrive pas à faire l'envoi.. J'ai déjà essayé de partir de différents codes sur le forum mais j'ai pas réussi à les adapter à mon cas :/ Quelqu'un pourrait-il m'aider, s'il-vous-plait?

Merci à toutes celles et ceux qui sont meilleurs que moi en VBA et qui seront inspiré(e)s

46copie-modif.xlsm (72.51 Ko)

Salut moi j'utilise ce code, il marche plutôt bien ...

Sub piece_a_commander()
 With ActiveSheet.PageSetup
    .Orientation = xlLandscape

Worksheets("Fiche de réparation").ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:="C:\Users\TECH\Desktop\enregistrement2 PDF.pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

        If .Orientation = xlLandscape Then

        .Orientation = xlPortrait
        End If

        .Orientation = xlLandscape
        End With
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String
    Dim olFormatHTML As String
    FileAttach = "C:\Users\TECH\Desktop\enregistrement2 PDF.pdf" _

    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    Set OutMail = OutApp.CreateItem(0)
     strbody = "Information sur la mise à jour"
    On Error Resume Next
        With OutMail
            .To = "ADRESSE@HOTMAIL.FR..."
            .BCC = ""
            .Subject = "SUJET "
            .BodyFormat = olFormatHTML
          .HTMLBody = "Bonjour, <BR><BR>Ce message vous informe que     " & Worksheets("Fiche de réparation").Cells(3, "I") & " demande la commande des pièces suivantes:<BR><BR><BR> " & Worksheets("Fiche de réparation").Cells(30, "A") & " <BR> pour la pièce  " & Worksheets("Fiche de réparation").Cells(2, "I") & "  .<BR><BR>" _
            & "<A href=" & """" & "\\Nom_serveur\Repertoire\nom_ficihier.xls" & """" & "></A>" & Chr(10) & "<BR><BR>Cordialement"
            .Attachments.Add enregistrement2_PDF
            .Attachments.Add (FileAttach)
            .OriginatorDeliveryReportRequested = False
            .ReadReceiptRequested = False
            .Display

        End With
            On Error GoTo 0

        Set OutMail = Nothing
        Set OutApp = Nothing
        End Sub

Il ne te reste plus qu' l'adapter avec le nom de ta feuille et le HTMLBody en fonction du texte que tu veux envoyer. Bien sûr pense a modifier le lien d’accès en fonction de ou se situe ton fichier...

Si jamais tu as des questions dessus hésite pas. Je suis nouveau en VBA mais je peux toujours essayer

Salut babuf!

Merci pour ton aide et ton message J'ai changé ce que tu m'as dit mais malheureusement ça bloque dès le début.

Sub test()

 With ActiveSheet.PageSetup
    .Orientation = xlLandscape

Worksheets("offre detaillee").ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:="C:\Users\P750\Documents\test\" & "offre", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

        If .Orientation = xlLandscape Then

        .Orientation = xlPortrait
        End If

        .Orientation = xlLandscape
        End With
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String
    Dim olFormatHTML As String
    FileAttach = "C:\Users\P750\Documents\test\" & "offre" _

    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    Set OutMail = OutApp.CreateItem(0)
     strbody = "Information sur la mise à jour"
    On Error Resume Next
        With OutMail
            .To = "bruno.cohen@paris-ail.com"
            .BCC = ""
            .Subject = "SUJET "
            .BodyFormat = olFormatHTML
          .HTMLBody = "Bonjour"
            .Attachments.Add enregistrement2_PDF
            .Attachments.Add (FileAttach)
            .OriginatorDeliveryReportRequested = False
            .ReadReceiptRequested = False
            .Display

        End With
            On Error GoTo 0

        Set OutMail = Nothing
        Set OutApp = Nothing

End Sub

Au premier "with", ca me met "projet ou bibliothèque introuvable". Tu aurais une idée de pourquoi ça me met ça?

Est-ce que tu as une "application" outlook sur ton ordinateur? ou boite d’envoi je ne sais pas comment appeler ça ... avec une adresse mail définie sur l'ordinateur?

Tu souhaites envoyer 2 doucuments "offre" et "test" ou juste "offre"? Pas sur mais je pense que le liens d’accès n'est pas bon

Ps: tu n'as pas changé ton ".Attachments.Add enregistrement2_PDF" je suis pas sur non plus mais ça peut avoir une influence plus tard.

Alors, pour l'application Outlook, oui j'en ai une, avec l'adresse et tout.

J'aimerais envoyer juste la feuille "offre detaillee"

Ah oui je comprends ce que tu veux dire pour le lien d'accès. En effet, je pense que je me suis trompée, je vais essayer en changeant.

Et pour ".Attachments.Add enregistrement2_PDF", je vais changer aussi

With ActiveSheet.PageSetup

c'est sur cette ligne que tu bloques ?

Alors, j'ai changé ce qui n'allait pas mais j'ai toujours bibliothèque introuvable au "with" :/

sur celui la With OutMail

ou With ActiveSheet.PageSetup

Oui c'est ça!


Le premier : With ActiveSheet.PageSetup

Fait comme moi, tu as un probleme tu le supprime 8) ...

oui oui j'ai essayé ça marche tout de même

mets ça en début de macro toujours en adaptant a ton cas

 Sub piece_a_commander()

Worksheets("Fiche de réparation").ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:="C:\Users\TECH\Desktop\enregistrement PDF.pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String
    Dim olFormatHTML As String
    FileAttach = "C:\Users\TECH\Desktop\enregistrement PDF.pdf" _

    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    Set OutMail = OutApp.CreateItem(0)
     strbody = "Information sur la mise à jour"
    On Error Resume Next
        With OutMail

Haha merci pour l'astuce, j'essaie tout de suite

ok, dis moi si ça marche ou si tu as un autre problème.

Bon ben j'ai un autre problème au niveau de " Dim OutApp As Object " . Il me met "erreur de syntaxe" :/

Je regarde mais la je t'avoue que je n'ai pas beaucoup d'idée...

Merci! J'avoue que ca me désespère un peu cette histoire de mails. J'ai essayé plein de trucs et je sais jamais pourquoi ça marche pas :/

Mais en tout cas, merci beaucoup pour ton aide!

Essaye avec le conseil précédent ... une bonne vieille suppression. Pour moi ça marche toujours par contre j’espère que quelqu'un de doué ne viendra jamais fouiller dans tes macros.

Rechercher des sujets similaires à "vba envoi mails automatiquement fichier joint pdf"