Envoi PDF par mail... ne pas envoyer la feuille dans le corps du mail

Bonjour à tous,

J'ai "bricolé" une macro qui m'enregistre un fichier PDF de ma feuille active, avant la joindre en pièce jointe à un mail que j'envoie à un destinataire. Cette macro fonctionne, excepté le fait qu'elle mette dans le corps du mail la feuille active, ce que je ne souhaite pas... surtout qu'il y a des colonnes masquées dont le destinataire n'a nullement besoin.

Sub envoi_PDF_mail()
' Permet d'enregistrer le détail du virement client au format PDF
' et de l'enregistrer sur : **********

    Dim repertoire, fichier, datedu_jouR, annee As String

    ' "datedu_jouR" est la date que l'on va manipuler pour l'insérer dans le nom du fichier à sauvegarder
    datedu_jouR = Format(Range("Y10"), "yyyy.mm.dd")
    annee = Format(Range("Y10"), "yyyy")

    If Range("Y10") = "" Then
        MsgBox ("Date du Virement ?")
        Exit Sub
    End If

    repertoire = "***************" 'j'ai supprimé volontairement le lien :( 
    fichier = Range("X8") & " " & Range("X9") & "-" & datedu_jouR & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        repertoire & fichier, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    Range("A1").Select

' Envoi du mail
    Application.ScreenUpdating = False

    Application.DisplayAlerts = False

    ActiveWorkbook.EnvelopeVisible = False
    With ActiveSheet.MailEnvelope
        .Item.To = Range("Z14").Text
        .Item.Subject = "Virement reçu de " & Range("X8").Text & " " & Range("X9").Value & " " & "du " & Range("Y10").Value
        .Introduction = "Bonjour, En pièce jointe le détail des factures payées ce-jour par " & Range("X8").Text
        .Item.Attachments.Add (repertoire & "\" & fichier)
        .Item.Send
    End With

    Application.ScreenUpdating = True

End Sub

Y'a t'il moyen de supprimer / empêcher l'insertion automatique de la feuille active dans le corps du mail ?

D'avance, merci et bonne journée.

Joe

Bonjour,

Y'a t'il moyen de supprimer / empêcher l'insertion automatique de la feuille active dans le corps du mail ?

Si vous supprimez cette ligne dans le code -->

.Item.Attachments.Add (repertoire & "\" & fichier)

Cordialement

Bonjour Dan et merci pour votre attention.

Je me suis peut-être mal exprimé : je veux envoyer la feuille en PDF par mail (en pièce jointe) mais je ne veux pas envoyer la feuille dans le corps du mail ("Body").

Si je supprime cette ligne, je n'ai plus la pièce jointe, mais la feuille est toujours dans le corps du mail...

Bonne journée.

Je me suis peut-être mal exprimé : je veux envoyer la feuille en PDF par mail (en pièce jointe) mais je ne veux pas envoyer la feuille dans le corps du mail ("Body").

Quel logiciel de messagerie utilisez-vous ?

J'utilise Outlook (version 2016).

Pour envoyez une pièce jointe en attachment, vous devez être au format HTML. Là à mon avis vous êtes en format Text ou RTF

En fait, je viens de comprendre que (sauf erreur, un codeur amateur VBA) si j'utilise la propriété "MailEnvelope" dans ma macro, la feuille active (ou plus) sera obligatoirement ajoutée dans le corps du mail...

Si c'est bien ça, il va falloir réécrire une autre macro...

Après avoir modifié ma macro, voici un résultat qui fonctionne...

Sub envoi_PDF_mailv2()
' Permet d'enregistrer le détail du virement client au format PDF
' et de l'enregistrer sur : *********

    'Dim Ol As Object, ObjItem As Object
    Dim Ol, ObjItem As Object
    Dim repertoire, fichier, datedu_jouR, annee As String

    Set Ol = CreateObject("outlook.application")
    Set ObjItem = Ol.CreateItem(0)

    ' "datedu_jouR" est la date que l'on va manipuler pour l'insérer dans le nom du fichier à sauvegarder
    datedu_jouR = Format(Range("Y10"), "yyyy.mm.dd")
    annee = Format(Range("Y10"), "yyyy")

    If Range("Y10") = "" Then
        MsgBox ("Date du Virement ?")
        Exit Sub
    End If

    repertoire = "***********"
    fichier = Range("X8") & " " & Range("X9") & "-" & datedu_jouR & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        repertoire & fichier, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    Range("A1").Select

    ' Envoi du mail
    With ObjItem
        .to = Range("Z14").Value
        .cc = Range("Z14").Value
        .Subject = "Virement reçu de " & Range("X8").Text & " " & Range("X9").Value & " " & "du " & Range("Y10").Value
        .Body = "Bonjour," & vbCrLf & vbCrLf & "En pièce jointe, vous trouverez le détail des factures payées par le virement du client " & _
            Range("X8").Text & " " & Range("X9").Value & " " & "du " & Range("Y10").Value & "." & _
            vbCrLf & vbCrLf & "Cordialement." & vbCrLf & vbCrLf & "Best Regards / Cordialement" & vbCrLf & _
            vbCrLf & "moi même"
        .Attachments.Add (repertoire & "\" & fichier)
        '.Display ' Permet l'affichage de l'email envoyé
        .Send 'Si on souhaite faire une lecture du mail avant envoi, il faut désactiver .Send
    End With

    Set Ol = Nothing

End Sub

Par contre, je ne parviens pas à insérer plusieurs destinataires en ".cc"... Problème de syntaxe :(

En attendant merci ! :)

Par contre, je ne parviens pas à insérer plusieurs destinataires en ".cc"... Problème de syntaxe :(

Normal puisque dans le code en cc vous ne faites référence qu'à la cellule Z14. Où sont vos destinataires dans votre fichier

Autre chose dans les déclarations de variable, changez ceci

Dim repertoire as string, fichier as string, datedu_jouR as string, annee As String

Mes destinataires sont, au minimum 2 et maximum 4 sur la plage de cellules allant de ("Z14:Z17").

Je vais changer... même si ça avait l'air de fonctionner.

Merci.

Joe

Il faut boucler sur cette plage en mettant le ; entre les valeurs

Une truc du genre

Dim i as byte, dest as string
For i = 14 to 17
    if Range("Z" & i).value <> "" then dest = dest & ";" & Range("Z" & i).value
Next i

Ensuite plus bas vous mettez la valeur Dest

.cc = dest

Faites un test

ça fonctionne nickel !

Merci beaucoup Dan pour ton aide :)

Bonne journée et... peut-être à bientôt !

Joe

Rechercher des sujets similaires à "envoi pdf mail pas envoyer feuille corps"