Export feuilles excel séparées au format pdf

Résolu/Fermé
b.desmarets Messages postés 22 Date d'inscription vendredi 5 janvier 2018 Statut Membre Dernière intervention 18 mai 2018 - 14 mai 2018 à 16:07
b.desmarets Messages postés 22 Date d'inscription vendredi 5 janvier 2018 Statut Membre Dernière intervention 18 mai 2018 - 18 mai 2018 à 08:12
Bonjour à tous !

Je souhaiterais avoir une petite commande macro pour exporter des feuilles excel en pdf.
Deux contraintes néanmoins: sur toutes les feuilles, je souhaiterais que seules celles dont les onglets sont sélectionnés (ctrl clic sur chacune) soit exportés et que chaque onglet produise un pdf séparément.

Pour le moment, j'ai pondu cela:

Sub Test()

Dim Fe As Worksheet

For Each Fe In ActiveWindow.SelectedSheets

Fe.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\mesdocuments\" & Fe.Name & ".pdf"

Next Fe

End Sub


Mais dans ce cas il m'exporte certes que les onglets sélectionnés et me produit un pdf par onglet, mais réunit tous les onglets dans chaque pdf...
Le top aussi serait que les pdf soient générés dans un dossier "PDF" dans le même répertoire que le fichier excel.

D'avance merci pour le coup de main, bien à vous.
Bapt.

A voir également:

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 14 mai 2018 à 19:02
Bonjour,

comme ceci:

Option Explicit
Dim nom, chemin  As String
Dim sh As Worksheet
Private Sub CommandButton1_Click()
For Each sh In Workbooks("Save_pdf.xls").Windows(1).SelectedSheets 'adapter nom classeur
 nom = sh.Name
    Save_pdf
 Next
End Sub
Private Sub Save_pdf()
chemin = "C:\Users\LePivert\Documents\" 'chemin du dossier destination à adapter
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        chemin & "\" & nom & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
        MsgBox "Enregistrer" 'on peut supprimer
End Sub

pour le même chemin que le classeur:

 chemin = ActiveWorkbook.Path & "\"



1
b.desmarets Messages postés 22 Date d'inscription vendredi 5 janvier 2018 Statut Membre Dernière intervention 18 mai 2018
15 mai 2018 à 01:01
Bonsoir,
Et merci beaucoup pour ta réactivité.
Néanmoins je bloque sur la façon d'utiliser la macro. S'agissant d'une private sub, elle n’apparaît pas dans la liste des macro et se déclenche automatiquement c'est ça ? Mais à quelle condition svp ? N'est-il pas possible de générer l'action via un bouton ?

J'ai testé ce code et lancé depuis la fenêtre VBA dans l'onglet développeur (petit triangle vert), il m’apparaît l' Erreur d'exécution '1004': Erreur définie par l’application ou par l’objet. Je lis qu'il s'agit souvent d'un problème d'appel de cellule, pourtant il n'y a pas d'erreur de ce côté là si ?

Option Explicit
Dim nom, chemin As String
Dim sh As Worksheet
Private Sub Command_Click()
For Each sh In Workbooks("Test.xlsm").Windows(1).SelectedSheets 'adapter nom classeur
nom = sh.Name
Save_pdf
Next
End Sub
Private Sub Save_pdf()
chemin = ActiveWorkbook.Path & "\PDF\"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
chemin & "\" & nom & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
MsgBox "Enregistrer" 'on peut supprimer
End Sub


D'avance merci, bien à toi.
Bapt.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 15 mai 2018 à 09:44
Je t'ai fait un exemple, tu n'auras qu'a changer le chemin de destination dans le code:

https://www.cjoint.com/c/HEphgSW1aPQ

Si tu veux te servir du code, il faut le mettre dans un module comme ceci:

Option Explicit
Dim nom, chemin  As String
Dim sh As Worksheet
 Sub Save_onglet()
For Each sh In Workbooks("Test.xlsm").Windows(1).SelectedSheets 'adapter nom classeur
 nom = sh.Name
  Sheets(nom).Select
    Save_pdf
 Next
End Sub
Private Sub Save_pdf()
chemin = ActiveWorkbook.Path & "\PDF\" 'chemin du dossier destination à adapter
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        chemin & "\" & nom & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
        MsgBox "Enregistrer" 'on peut supprimer
End Sub



ensuite pour le lancer tu lui attribues (Save_onglet) un raccourci clavier comme ceci:

http://www.info-3000.com/vbvba/raccourciclavier.php


@+ Le Pivert
0