Export PDF via macro VBA avec nom de feuilles variants

Résolu
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

  1. Contributeur
    Bonjour,

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

    http://www.cjoint.com/c/FFkksIlbjpQ
    0
    1. 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
      0
    2. Contributeur
      @MatheewVoici 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
      0
    3. Parfait, après adaptation du code à mon cas, ça fonctionne !

      Un énorme merci Le Pivert.
      0
    4. @cs_Le PivertBonjour,

      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 ?
      0
    5. Contributeur
      @criduleVoilà un exemple:

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

      @+ Le Pivert
      0