Imprimer uniquement la pièce jointe PDF

Bonjour,

Je souhaite à la réception d'un mail imprimer au choix soit :

cas 1 : le corps du mail + la pièce jointe du mail (PDF)

cas 2 : uniquement la pièce jointe

Connaissez-vous un code que je puisse adapter à ma guise ? (excel 2016)

cdlt,

Gloutoni2

Bonjour Gloutoni2

Et tu reçois tes mails dans Excel !!!???

heu pardon, un peu fatigué dans outlook 2016

J'ai trouvé ce code sur internet, je vais voir s'il peut convenir :

 Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hWnd As Long, ByVal lpszOp As String, _
    ByVal lpszFile As String, ByVal lpszParams As String, _
    ByVal lpszDir As String, ByVal fsShowCmd As Long) As Long
'fonction d'appel
Sub detache_et_imprime()
    Call detache_PJ
    Call PrintAllPDF
    'MsgBox "Opération terminée, cliquez sur OK pour finir."
    Kill "C:\test\*.pdf"
End Sub
Function detache_PJ()
    Dim MonOutlook As Outlook.Application
    Dim Mail As Object
    Dim LeMail As Outlook.MailItem
    Dim LesMails As Object
    Set MonOutlook = Outlook.Application
    Set LesMails = MonOutlook.ActiveExplorer.Selection
    For Each LeMail In LesMails
            Dim pj As Attachment
            For Each pj In LeMail.Attachments
                If Right(UCase(pj.FileName), 4) = ".PDF" Then
                    LeFichier = "c:\test\" & pj.FileName
                    pj.SaveAsFile (LeFichier)
                End If
            Next pj
    Next LeMail
    Set LesMails = Nothing
End Function
Function PrintAllPDF()
    Dim strFileName As String
    Dim strPath As String
    strPath = "c:\test\"
    strFileName = Dir(strPath + "*.pdf", vbNormal)
    Do While strFileName <> ""
        LeFichier = strPath + strFileName
        printPDF (LeFichier)
        strFileName = Dir
    Loop
End Function
'la macro d'impression, chems = chemin complet de la piece jointe
Function printPDF(chems)
    Dim Res As Long
    Dim chemin_de_MaPj As String
    chemin_de_MaPj = chems
    Res = ShellExecute(0, "print", chemin_de_MaPj, "", "", 0)
End Function

Bonjour,

J'ai un problème avec cette macro :

'fonction d'appel
Sub detache_et_imprime(MyItem As Outlook.MailItem)
    'Selection.MyItem
    Call detache_PJ
End Sub
Function detache_PJ()
    Dim MonOutlook As Outlook.Application
    Dim Mail As Object
    Dim LeMail As Outlook.MailItem
    Dim LesMails As Object
    Set MonOutlook = Outlook.Application
    Set LesMails = MonOutlook.ActiveExplorer.Selection
    For Each LeMail In LesMails
            Dim pj As Attachment
            For Each pj In LeMail.Attachments
                If Right(UCase(pj.FileName), 4) = ".PDF" Then
                    LeFichier = "C:\test\" & pj.FileName
                    pj.SaveAsFile (LeFichier)
                End If
            Next pj
   Next LeMail
    Set LesMails = Nothing
End Function

Après réception de ce mail, la macro s'applique sur le précédent mail selectionné et pas sur le mail qui vient d'être réceptionné, avez-vous une solution ?

Soit en sélectionnant (mais je n'arrive pas à selectionner un mail comme on selectionne une cellule sous excel) soit ... pas d'idée ...

Merci par avance,

Gloutoni2


Je confirme avec le débugger, lorsque je veux connaitre le nom du fichier de 'LeMail' il me dit que c'est bien l'autre mail sélectionné et non le mail qui engendre le lancement de la macro.

Rechercher des sujets similaires à "imprimer uniquement piece jointe pdf"