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
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022
711
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
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022
711
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
b.desmarets
Messages postés
22
Date d'inscription
vendredi 5 janvier 2018
Statut
Membre
Dernière intervention
18 mai 2018

Modifié le 15 mai 2018 à 14:00
Bonjour,
L'exemple marche à la perfection, l'interface est une super idée pour ne pas avoir à copier le bouton sur chaque feuille !
Néanmoins, lorsque je copie le code dans un fichier vierge et colle le code suivant, ça ne marche pas:

Option Explicit
Dim nom, chemin As String
Dim sh As Worksheet
Sub Save_onglet()
For Each sh In Workbooks("Classeur2.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 & "\PDF\" & nom & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
MsgBox "Enregistrer" 'on peut supprimer
End Sub


Sinon je peux copier la boite de dialogue et le code rattaché + le bouton et la macro liste déroulante dans mon fichier et ça devrait fonctionner ?
Encore merci pour l'aide !
Bapt.
0
cs_Le Pivert
Messages postés
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022
711
15 mai 2018 à 14:22
Tu as fait une erreur sur le chemin en recopiant le code:

2 fois
"\PDF\"
dans le chemin et dans le code d'enregistrement du PDF

mettre comme ceci:

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


@+ Le Pivert
0
b.desmarets
Messages postés
22
Date d'inscription
vendredi 5 janvier 2018
Statut
Membre
Dernière intervention
18 mai 2018

15 mai 2018 à 14:29
Il semblerait que ça déconne malgré ça. Je te joins le fichier: https://www.cjoint.com/c/HEpmC0Rw7Lg
Merci d'avance,
Bapt.
0