Imprimer au format pdf et ensuite le joindre directement dans mon mail

dam3117

XLDnaute Occasionnel
Bonjour,

Aprés plusieurs recherche sur la toile j'ai trouver tout et n'importe quoi sur le sujet.

Donc je voudrai imprimer ma feuille excel avec pdfcreator (2 copies) et ensuite le joindre à mon mail. J'utilise outlook.

Merci
dam
 

MichD

XLDnaute Impliqué
Re : Imprimer au format pdf et ensuite le joindre directement dans mon mail

Bonjour,

Pour envoyer ton fichier par courriel, tu peux consulter ce site très complet (en anglais) utilisant CDO.
Sending mail from Excel with CDO


Pour mettre le tout (impression + envoi fichier dans la même procédure) tu crées une 3e procédure.

Sub Imprimer_Expédier_Par_CDO()

Dim Fichier As String,Chemin As string
Fichier = "MonFichier.pdf"
Chemin = "c:\Excel\"


'Et tu appelles les 2 procédures à tour de rôle
'Tu modifies la ligne de déclaration de la procédure "Sub Tst_PdfCreator()" pour
Call Sub Tst_PdfCreator(Fichier As String, Chemin As String)

'Dans cette procédure, tu adaptes ces 2 lignes de code

sNomPDF = Fichier
sCheminPDF = Chemin

'Et pour envoyer par courriel
'à l'aide du site internet, tu détermines la procédure qui t'intéresse
'et tu appelles la procédure de la même manière

Sub EnvoyerParEmail(Chemin as string, Fichier As String)

'Et dans cette procédure, au niveau du "fileAttach" tu renseignes = Chemin & Fichier


Voilà!
 

dam3117

XLDnaute Occasionnel
Re : Imprimer au format pdf et ensuite le joindre directement dans mon mail

Bonjour MichD,
Malgré toute ma bonne volonté je n'y arrive pas en plus je ne parle anglais.
donc je vais continuer à chercher.

voila ma macro pour la création


Sub ToPdf()

Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
NomExcel = ThisWorkbook.Name
NomPdf = Left(NomExcel, Len(NomExcel) - 4) & ".pdf"
With pdfjob
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutisaveDirectory") = 1
.cOption("AutosaveDirectory") = ThisWorkbook.Path
.cOption("AutosaveFilename") = NomPdf
.cOption("AutosaveFormat") = 0
.cClearCache
End With
ThisWorkbook.PrintOut copies:=1, ActivePrinter:="PDFCreator"
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
With pdfjob
.cDefaultPrinter = DefaultPrinter
.cClearCache
.cClose
End With
Set pdfjob = Nothing

Call send_email

end sub

et ma macro pour l'envoie amis erreur d'automatisation
et n'arrive pas à mettre ma pièce jointe
Sub send_email()
Dim ol As Object
Dim MailSendItem As Object
Set ol = CreateObject("Outlook.application")
Set MailSendItem = ol.CreateItem(olMailItem)
Dim olns As Object
Dim objFolder As Object
Set olns = ol.GetNamespace("MAPI")

On Error GoTo mon_erreur:

With MailSendItem
.Subject = "bla bla bla"
.Body = "bli bli bli"
.To = "zz@zzzz.com"
.CC = "zz@zzz.com"
'.Attachments.Add
.Send
End With

Set ol = Nothing
Set MailSendItem = Nothing
Set olns = Nothing

Exit Sub
mon_erreur:
Call send_email

End Sub

mrci
dam
 

dam3117

XLDnaute Occasionnel
Re : Imprimer au format pdf et ensuite le joindre directement dans mon mail

Re,

Avec cette macro

Sub Tst_EmailPdfCreator()
Dim objMessage As Object
Dim JobPDF As Object
Dim sNomPDF As String
Dim sCheminPDF As String

sNomPDF = "Essai_PdfCreator.pdf"
sCheminPDF = ThisWorkbook.Path & "\"

If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub

Set JobPDF = CreateObject("PDFCreator.clsPDFCreator")

With JobPDF
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sCheminPDF
.cOption("AutosaveFilename") = sNomPDF

' 0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx, 5=tif, 6=ps, 7=eps, 8=txt
.cOption("AutosaveFormat") = 0

.cClearCache
End With

ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"

'Fichier dans la file d'attente
Do Until JobPDF.cCountOfPrintjobs = 1
DoEvents
Loop
JobPDF.cPrinterStop = False

'Attendre que la file d'attente soit vide
Do Until JobPDF.cCountOfPrintjobs = 0
DoEvents
Loop

JobPDF.cClose
Set JobPDF = Nothing

Set objMessage = CreateObject("CDO.Message")
With objMessage
.Subject = "Example"
.From = "www@wwwww.fr"
.To = "yyyyy@wttttt.fr"
.TextBody = "Texte dans le corps de message"
.AddAttachment sCheminPDF & sNomPDF
.Send
End With

Set objMessage = Nothing
End Sub

il me renvoi l'erreur "erreur automation"

merci
dam
 

dam3117

XLDnaute Occasionnel
Re : Imprimer au format pdf et ensuite le joindre directement dans mon mail

Re,
le message d'erreur est en pièce jointe.

merci
dam
 

Pièces jointes

  • erreur.JPG
    erreur.JPG
    13 KB · Affichages: 74
  • erreur.JPG
    erreur.JPG
    13 KB · Affichages: 93
  • erreur.JPG
    erreur.JPG
    13 KB · Affichages: 96

MichD

XLDnaute Impliqué
Re : Imprimer au format pdf et ensuite le joindre directement dans mon mail

Fichier joint. à toi de la tester...


Correction : dans la procédure Sub CDO_Mail_Small_Text(Chemin As String, Fichier As String) du module2,

tu dois modifier la ligne de code suivante dans les variables à définir :

FichierJoint = "Chemin et Nom du fichier"

Pour :

FichierJoint = Chemin & Fichier
 

Pièces jointes

  • Créer un fichier pdf et envoyer par Email - Excel avant 2007.xlsm
    29.1 KB · Affichages: 108
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Imprimer au format pdf et ensuite le joindre directement dans mon mail

Salut MichD, Dam31117

Bonjour,
Pour envoyer ton fichier par courriel, tu peux consulter ce site très complet (en anglais) utilisant CDO.
Sending mail from Excel with CDO

ATTENTION avec CDO cette méthode ne fonctionne pas en réseau d'entreprise ;)

@Dam3117, tu aurais effectué une petite recherche sur le forum, tu serais tombé la dessus
https://www.excel-downloads.com/threads/resolu-macro-envoi-mail-avec-piece-jointe-en-pdf.156514/

Le code complet au cas ou
VB:
Option Explicit


Sub CreateSendPDF_Outlook()
  ' Nécessite les références
  ' - PDFCreator
  ' - Microsoft Outlook 1x Object Library
  Dim pdfjob As PDFCreator.clsPDFCreator
  Dim sPDFPath As String, sPDFName As String
  Dim olApp As Outlook.Application
  Dim olMail As MailItem
  Dim CurFile As String
  Dim DefaultPrinter
  ' Chemin de destination
  sPDFPath = ThisWorkbook.Path & Application.PathSeparator
  ' Fichier de destination
  sPDFName = "TempPDF.pdf"
  ' Créer une instance de PDFCreator
  Set pdfjob = New PDFCreator.clsPDFCreator
  ' Avec cette instance
  With pdfjob
    If .cStart("/NoProcessingAtStartup") = False Then
      MsgBox "Can't initialize PDFCreator.", vbCritical + _
                                             vbOKOnly, "PrtPDFCreator"
      Exit Sub
    End If
    .cOption("UseAutosave") = 1
    .cOption("UseAutosaveDirectory") = 1
    .cOption("AutosaveDirectory") = sPDFPath
    .cOption("AutosaveFilename") = sPDFName
    .cOption("AutosaveFormat") = 0  ' 0 = PDF
    .cClearCache
  End With
  ' Définir l'imprimante PDFCreator par défaut
  DefaultPrinter = Application.ActivePrinter
  Application.ActivePrinter = "PDFCreator sur Ne00:"
  ' Lancer l'impression
  ThisWorkbook.PrintOut copies:=1, ActivePrinter:="PDFCreator"
  Do Until pdfjob.cCountOfPrintjobs = 1
    DoEvents
  Loop
  With pdfjob
    .cPrinterStop = False
    Do Until .cCountOfPrintjobs = 0
      DoEvents
    Loop
    .cClearCache
    .cClose
  End With
  Set pdfjob = Nothing
  '
  ' Envoyer le fichier créer
  Set olApp = New Outlook.Application
  Set olMail = olApp.CreateItem(olMailItem)
  With olMail
    .To = "xxx@gmail.com"
    .CC = "name2@domain2.com"
    .Subject = "Envois d'un fichier PDF en pièce jointe"
    .Body = "Vous trouverez ci-joint le fichier PDF ..."
    .Attachments.Add sPDFPath & sPDFName
    .Display  '.Send
  End With
  ' Remettre l'imprimante par défaut
  Application.ActivePrinter = DefaultPrinter
  ' Supprimer le fichier PDF temporaire
  Kill sPDFPath & sPDFName
  ' Petit message
  MsgBox "Merci de vérifier que le message apparait dans -messages envoyés- dans votre messagerie OUTLOOK."
  ' Effacer les variables objets
  Set olMail = Nothing
  Set olApp = Nothing
End Sub


A+
 
Dernière modification par un modérateur:
C

Compte Supprimé 979

Guest
Re : Imprimer au format pdf et ensuite le joindre directement dans mon mail

Salut Dam3117

Je ne comprends pas, ça fonctionne de mon côté :confused:

Peux-tu nous joindre ton fichier (ou me l'envoyer en privé si confidentiel)

A+
 

Discussions similaires

Réponses
2
Affichages
297

Statistiques des forums

Discussions
312 467
Messages
2 088 678
Membres
103 915
dernier inscrit
VT14907