Macro pour enregistrer en pdf
Bonsoir à toutes et à tous,
Travaillant encore sous Excel 2003, je souhaiterai savoir s'il est possible d'enregistrer une feuille d'un fichier sous le format PDF et de l'envoyer par mail via Outlook par le biais d'une macro ?
Vous trouverez en pj un fichier test, le principe serait d'enregister en pdf le document avec la réf reprise dans la cellule G1 et de l'envoyer à l'adresse email reprise en B7
merci de vos lumières !!
Bonjour chb44
Pour faire ce que tu souhaites, le plus simple est d'installer le logiciel libre : PDFCreator
(si tu ne l'as pas)
Et d'utiliser ce code à adapter à tes besoin
Sub CreateSendPDF_Outlook()
Dim PDFJob As Object
Dim sPDFPath As String, sPDFName As String
Dim olApp As Object
Dim olMail As Object
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 = CreateObject("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
' Lancer l'impression sur l'imprimante PDFCreator
ThisWorkbook.PrintOut copies:=1, ActivePrinter:="PDFCreator"
' Attendre que l'envoi soit effectuer à l'imprimante
Do Until PDFJob.cCountOfPrintjobs = 1
DoEvents
Loop
' Attendre que l'impression se termine
With PDFJob
.cPrinterStop = False
Do Until .cCountOfPrintjobs = 0
DoEvents
Loop
.cClearCache
.cClose
End With
Set PDFJob = Nothing
'
' Envoyer le fichier créer
Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.CreateItem(0) ' Item mail
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
' 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+
Bonjour BrunoM45,
tout d'abord, merci d'avoir pris le temps de regarder ma demande, j'ai essayé plusieurs solutions mais rien n'a fonctionné, c'est pourquoi j'ai sollicité l'aide du forum !!! Sinon, je dispose bien de PDF Creator.
Je vais tester le code et l'adapter
je te redis
merci et bonne journée
chb44
tout d'abord, un grand merci BrunoM45 ton code fonctionne très bien !
j'ai juste une question à te poser :
comment peut-on faire pour que le fichier pdf soit également enregistrer ? Imaginons que le chemin d'accès serait repris la feuil1 en G2
j'ai essayé plusieurs codes mais cela ne fonctionne pas
par exemple :
Dim adr$, fichier$
fichier = Feuil1.Cells(1, 7)
adr = Feuil1.Cells(2, 7)
MsgBox fichier
ActiveWorkbook.SaveAs (fichier & ".pdf")
le code m'enregistre le fichier excel mais le fichier pdf
merci de votre aide
oups ! il n'enregistre pas le fichier pdf
Re,
Il faut modifier la première ligne qui définit le chemin d'enregistrement
' Chemin de destination
sPDFPath = Sheets("Feuil1").Range("G2").Value
IF Right(sPDFPath,1)<>"\" then sPDFPath = sPDFPath & "\"
Et supprimer la ligne de la fin avec le "Kill" qui supprime ce fichier
' Supprimer le fichier PDF temporaire
Kill sPDFPath & sPDFName
J'espère que ce sera assez clair
un grand merci !!!!
cela fonctionne à merveille !!