Export PDF via macro VBA avec nom de feuilles variants [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
mardi 11 novembre 2014
Statut
Membre
Dernière intervention
13 juin 2016
-
Messages postés
6824
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 juillet 2020
-
Bonjour à tous,

Je souhaite réaliser un extract PDF de plusieurs feuilles de mon fichier Excel.

J'ai déjà codé une macro pour ça, qui fonctionne lorsque je lui donne l'ensemble des noms de mes feuilles et utilise la commande Sheets(Arrays("nom des feuilles").

Ci-dessous ma macro.

Sub Extract_PDF()
'

Dim chemin As String
chemin = Workbooks(ActiveWorkbook.Name).Path

NumSemaine = Worksheets("Objectifs").Range("B3").Value

Sheets(Array("Visuel Structure 1", "Visuel Structure 2", "Visuel Structure 3", "Visuel CN", "Visuel Equipement 1", "Visuel Equipement 2", "Visuel Equipement 3", "Visuel P66")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & "\KPI TP A320NEO Semaine " & NumSemaine & ".pdf", IncludeDocProperties:=True, IgnorePrintAreas:=False

'
End Sub


Or mon problème est que je ne souhaite pas exporter l'ensemble des feuilles présentes ci-dessous, mais celles pour lesquelles j'ai défini un objectif pour la semaine.
Je suis capable de récupérer l'ensemble des noms des pages que je souhaite exporter via des variable String, mais je n'arrive pas à permettre d'exporter un nombre variable de page et sans donner directement l'instruction avec le nom de la feuille.

Par exemple, si je récupère le nom de mes feuilles dans les variables nom_feuille1 et nom_feuille2, la commande Sheets(Array(nom_feuille1, nom_feuille2)) ne fonctionne pas.
Je me suis demandé s'il fallait que le tableau contienne les feuilles et pas seulement les noms, mais aucune différence, ça bloque aussi.

Est-ce que vous auriez une idée de comment faire s'il vous plait ?

Merci beaucoup de votre aide !

Mathieu

1 réponse

Messages postés
6824
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 juillet 2020
528
Bonjour,

voici un exemple qui enregistre en PDF dans le dossier du classeur:

http://www.cjoint.com/c/FFkksIlbjpQ
Messages postés
9
Date d'inscription
mardi 11 novembre 2014
Statut
Membre
Dernière intervention
13 juin 2016

Merci pour ta réponse rapide !

J'ai oublié de préciser une chose assez importante : j'aimerais que l'ensemble de mes feuilles soient réunies dans le même fichier PDF et pas un fichier par feuille.

Est ce que vous auriez une solution pour ça ?

Merci.

Mathieu
Messages postés
6824
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 juillet 2020
528 >
Messages postés
9
Date d'inscription
mardi 11 novembre 2014
Statut
Membre
Dernière intervention
13 juin 2016

Voici la macro correspondante a changer:

Private Sub save_Click()
Dim i As Integer
Dim sRep As String
Dim sFilename As String
Dim prov() As Variant
Dim nbFeuil
nbFeuil = 0

'on parcourt toutes les feuilles
For i = 0 To SelectFeuille.ListCount - 1
    If SelectFeuille.Selected(i) Then
       ChoixFeuille = SelectFeuille.List(i)
        ReDim Preserve prov(nbFeuil)
          prov(nbFeuil) = Sheets(i + 1).Name
          nbFeuil = nbFeuil + 1
       End If
          Next i
       Sheets(prov).Select ' selection de toutes les feuilles en surbrillance
    'chemin d'enregistrement
   sRep = ThisWorkbook.Path & "\"
    sFilename = ThisWorkbook.Name
    sFilename = Left(sFilename, InStr(1, sFilename, ".")) & "pdf"
 'enregistrement
    ActiveSheet.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=sRep & sFilename, _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=True
   End Sub


l'enregistrement se fait sous le nom du classeur, a adapter

@+ Le Pivert
>
Messages postés
6824
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 juillet 2020

Bonjour,

Merci pour ce retour
Je reviens un peu tardivement

Je n'arrive pas a la faire fonctionner
En fait je ne sais pas comment l'intégrer dans Excel :-/

Vous pouvez m'aider ?
Messages postés
6824
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
5 juillet 2020
528 > cridule
Voilà un exemple:

http://www.cjoint.com/c/FGCq1fiOtlQ

@+ Le Pivert
Messages postés
9
Date d'inscription
mardi 11 novembre 2014
Statut
Membre
Dernière intervention
13 juin 2016

Parfait, après adaptation du code à mon cas, ça fonctionne !

Un énorme merci Le Pivert.