[RESOLU]attacher un fichier pdf créé à un email

nrdz83

XLDnaute Impliqué
Bonjour à tous,

via le code ci-dessous je créé un fichier pdf de ma feuille active et j'ouvre mon logiciel de messagerie, je n'arrive pas à y intégrer à ce mail le fichier pdf créé.

Les codes séparément (création du pdf et ouverture email) fonctionnenet trés bien

Comment modifier ce code pour y joindre la pièce jointe créée?

Par avance merci

amitiés

With ActiveSheet
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ActiveWorkbook.Path & "\Archives fiche materiel\" & _
.Range("C2").Value & " N° " & .Range("A2").Value & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True
End With


On Error Resume Next
Err = 0
ActiveWorkbook.FollowHyperlink Address:="mailto:" & _
"?subject=Fiche materiel " & " " & (Range("C2") & " N° " & (Range("A2")) & ".pdf") & _
"&body=Bonjour, veuillez trouver en pièce jointe la fiche matériel pour " & " " & (Range("C2") & " N° " & (Range("A2")))

'attachement du fichier
attachments.Add CurFile


If Err <> 0 Then MsgBox "Une Erreur s'est produite..."
 
Dernière édition:

kiki29

XLDnaute Barbatruc
Re : attacher un fichier pdf créé à un email

Salut, via CDO
Code:
Option Explicit

Sub PDF()
Dim sNomDossier As String
Dim sFichierPdf As String, sFichier As String
Dim FSO As Object

    Set FSO = CreateObject("Scripting.FileSystemObject")
 
    sNomDossier = ThisWorkbook.Path
    sFichierPdf = "Test CDO.pdf"
 
    sFichier = sNomDossier & "\" & sFichierPdf 
    If FSO.fileExists(sFichier) Then
        EnvoiCDO sFichier
        Kill sFichier
    End If
    Set FSO = Nothing
End Sub

Private Sub EnvoiCDO(sNomFichier As String)
Dim Msg As Object
Dim Conf As Object
Dim sBody As String
Dim Flds As Variant
 
    Set Msg = CreateObject("CDO.Message")
    Set Conf = CreateObject("CDO.Configuration")
 
    Conf.Load -1
    Set Flds = Conf.Fields
    With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        ' à adapter à ton contexte
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.xxxxx.fr"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Update
    End With
 
    sBody = "Test"
 
    With Msg
        Set .Configuration = Conf
        ' à adapter à ton contexte
        .To = "wwwww@xxxxx.fr"
        .CC = ""
        .BCC = ""
        ' à adapter à ton contexte
        .From = """Triboulet"" <yyyyy@zzzzz.fr>"
        .Subject = "Test"
        .TextBody = sBody
        .AddAttachment sNomFichier
        .Send
    End With
 
    Set Conf = Nothing
    Set Msg = Nothing
End Sub
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : attacher un fichier pdf créé à un email

Hello Mister Bean ;)
Bonjour le fil

Ma première question aurait été, quel logiciel de messagerie utilises-tu ?

"Attchments.Add" s'utilise si tu crées un instance du logiciel de messagerie, ce qui n'est pas le cas

La méthode CDO peut ne pas passer si ton service informatique utilise des proxy, comme je le suppose

Amitiés
 

nrdz83

XLDnaute Impliqué
Re : attacher un fichier pdf créé à un email

Bonjour à tous et merci pour votre aide

J'ai trouvé en partie en recherchant dans des classeurs excel que j'avais avec ce code ça fonctionne:

Mon logiciel de messagerie est outlook

Sub envoi_Fiche_Matériel()
' Avant de lancer cette macro : Dans l'éditeur VBA, faire
' Menu / Outils / Références... /
' et cocher "Microsoft Outlook 14.0 Object Library"


Dim répertoireAppli As String, olapp As New Outlook.Application, msg As MailItem, s As String
Application.ScreenUpdating = False
répertoireAppli = ActiveWorkbook.Path


'on crée le fichier PDF dans le même fichier source
Sheets("Fiche matériel").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & "Fiche matériel.pdf"


Application.DisplayAlerts = True
Application.ScreenUpdating = True

Sheets("Destinataires").Activate
Range("A11").Select
Do While Not IsEmpty(ActiveCell)
s = s & ActiveCell.Value & "; "
ActiveCell.Offset(1, 0).Select
Loop
s = Left$(s, Len(s) - 2)
Set msg = olapp.CreateItem(olMailItem) ' Envoi par mail
msg.To = s
msg.Subject = Range("A2").Value
msg.Body = Range("A5").Value & Chr(13) & Chr(13) & Range("A8").Value & Chr(13) & Chr(13)

'attache le fichier au message
msg.Attachments.Add répertoireAppli & "\Fiche matériel.pdf"


msg.Send

MsgBox "La fiche matériel a bien était envoyée aux destinataires ."

End Sub



Sub lit_messagerie()
Dim olapp As Outlook.Application 'penser à Outils/Références Outlook
Dim olns As Outlook.Namespace
Dim olmf As Outlook.MAPIFolder
Dim obj As Object
Set olapp = New Outlook.Application
Set olns = olapp.GetNamespace("mapi")
Set olmf = olns.GetDefaultFolder(olFolderInbox)
For Each obj In olmf.Items
MsgBox obj.Subject
Next
End Sub

L'inconvenient de ce code c'est qu'il m'oblige à créer une feuille destinataires et les données sont déja renseignées et le message par automatiquement.

Ce que je cherche à faire c'est qu'il ouvre ma messagerie et que je choisisse mes destinataires (via mes contacts )

Effectivement la méthode CDO ne fonctionne pas à mon travail.

Merci pour votre aide

Amitiés
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 117
dernier inscrit
augustin.morille