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
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 :)