Sauvegarde onglet en PDF

Bonjour,

J'aimerai faire une VBA pour enregistrer touts mes onglet séparément de mon fichier excel en format PDF.

J'ai trouvé la solution pour faire une sauvegarde en format excel (ci-dessous) et j'essaye de faire la même VBA mais pour un enregistrement en format PDF. Mais il y a un blocage sur ExportAsFixedFormat, je ne comprend pas ... (Je vous joint un fichier avec deux onglet et mes deux VBA une excel qui fonctionne et l'aure PDF qui bug.)

Pouvez-vous m'aider a trouver l'astuce.

Je vous serais très reconnaissante.

Bien à vous

Dianec

Marche :

Sub saveOngletEXCEL()
Dim ws
Dim newWk As Workbook
Dim objShell As Object, objFolder As Object
Dim Chemin As String

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)

If objFolder Is Nothing Then
    MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else
    Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
End If
If Chemin <> """" Then
    For Each ws In Worksheets
        Set newWk = Workbooks.Add(xlWBATWorksheet)
        ws.Copy newWk.Sheets(1)
        newWk.SaveAs (Chemin & ws.Name & ".xls")
        newWk.Close
        Set newWk = Nothing
    Next ws
End If
End Sub

-------------------------------------------------------------------

Blocage : ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

Sub saveOngletPDF()
Dim ws
Dim newWk As Workbook
Dim objShell As Object, objFolder As Object
Dim Chemin As String

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)

If objFolder Is Nothing Then
    MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else
    Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
End If
If Chemin <> "" Then
    For Each ws In Worksheets
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
        ws.Copy newWk.Sheets(1)
        newWk.SaveAs (Chemin & ws.Name & ".pdf")
        newWk.Close
        Set newWk = Nothing
    Next ws
End If
End Sub
9prbl.xlsm (21.37 Ko)

Bonjour,

Un classeur "outil" contenant des codes qui pourrait vous aider, je pense

https://www.excel-pratique.com/fr/telechargements/utilitaires/pdf-email-vba-excel-no508

@+

Bonjour à tous les 2,

Voici quand même une proposition pour le sport :

Sub saveOngletPDF()

Dim objShell As Object, objFolder As Object
Dim ws as worksheet
Dim Dossier$, Fichier$, Chemin$

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)

If objFolder Is Nothing Then
    MsgBox "Abandon opérateur", vbCritical, "Annulation"
    exit sub
Else
    Dossier = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
End If

For Each ws In Worksheets
    Fichier = ws.name & " " & format(now, "YYMMDD") & ".pdf"
    Chemin = Dossier & Fichier
    ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, IgnorePrintAreas:=False, OpenAfterPublish:=True
Next ws

End Sub

Il y avait 2 problèmes principaux : le activesheet au sein de la boucle (remplacé par ws, chaque item de la collection worksheets) et le chemin qui n'était pas complet et qui était en fait limité au répertoire d'enregistrement.

Cdlt,

Merci, pour vos réponse super rapide et de votre aide !

Ducoup j'ai testé ta proposition mais j'ai quand même un blocage sur :

ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, IgnorePrintAreas:=False, OpenAfterPublish:=True

c'est l'enregistrement qui veux pas ce faire...

Et même sur le fichier Excel de BrunoM45 quand je lance les macro ca ne marche pas… (à part la première) mais c'est un envoi de mail avec pièces jointe et il y a pas d'enregistrement.

Dans "X feuilles vers 1 PDF + eMail" j'ai un blocage : Sheets(ShtArray).Select

Dans "X feuilles vers X PDF + eMail" j'ai un blocage : Sht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath & sFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Et dans le dernier "Choix feuille vers impression" quand je clique sur "Export PDF" j'ai un blocage : Sheets(ShtArray).Select OU Sheets(ShtArray).PrintOut.

Je ne comprend pas j'ai bien activé toutes les macros.

Comme c'est un autre logiciel PDF dois-je installer une référence ou autre ? Et si c'est le cas pourquoi ca n'a pas marcher dans le document de de BrunoM45.

Bonjour dianec,

Pour mieux comprendre, il faudrait que tu nous dises quel message d'erreur tu as.

En tout cas, je ne vais pas répondre pour Bruno, si ce n'est qu'il faut que ShtArray soit un Array contenant au moins une valeur (donc initialisé) et que toutes ses valeurs correspondent bien à des noms de feuille du classeur.

En ce qui concerne la ligne Exportasfixedformat, je trouve ça assez étrange. As-tu adobe reader ? Sinon, essaie sans ignoreprintareas et openaftrepublish.

Et assure-toi que ton classeur contient bien des feuilles et qu'elles ne soient pas masquées (j'ai jamais essayé l'export de feuilles masquées mais peut-être que ça bloque).

Cdlt,

C'est exacte je n'avais pas la bonne version de adobe reader !

Ca fonctionne parfaitement ! je te remercie :)

Rechercher des sujets similaires à "sauvegarde onglet pdf"