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 !!

Rechercher des sujets similaires à "macro enregistrer pdf"