Imprimer toutes les feuilles visibles en PDF

Bonjour,

Tout est dans le titre.

Difficile de joindre le fichier excel car pas mal de choses confidentielles, j'en suis désolé.

Je souhaite donc exporter en pdf toutes les feuilles visibles (qui ne sont pas cachées).

Voici mon code actuel, qui bien sûr, n'exporte que la page "Intro"... Le but étant l'impression du classeur entier, avec les feuilles qui suivent... le nombre de feuilles varient en fonction des projets.

La feuille "Sommaire" est cachée le temps de l'export.

Sub exportpdf()

    Sheets("SOMMAIRE").Visible = False

ChemindAcces = ThisWorkbook.Path

With Worksheets("Intro")
    NomClient = "FI_" & .Range("K38") & ".pdf"
    .ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomClient
End With

    Sheets("SOMMAIRE").Visible = True
    Sheets("SOMMAIRE").Select

End Sub

J'imagine que tout se passe dans le "With Worksheets("Intro")"...

Je suis débutant en VBA, je pense que c'est pas grand chose mais si quelqu'un a la solution ça me branche carrément !

Merci !

Bonjour Tuttle,

Voici un exemple de ce que tu peux faire

Sub ExportPDF()
  Dim Sht As Worksheet
  Sheets("SOMMAIRE").Visible = False
  ChemindAcces = ThisWorkbook.Path
  'With Worksheets("Intro")
  For Each Sht In ThisWorkbook.Sheets
    If Sht.Visible = xlSheetVisible Then
      NomClient = "FI_" & Sht.Range("K38") & ".pdf"
      Sht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomClient & "_" & Sht.Name
    End If
  Next Sht
  'End With
  Sheets("SOMMAIRE").Visible = True
  Sheets("SOMMAIRE").Select
End Sub

A+

Hey !

Merci pour ton aide.

Du coup, beh en fait ça n'a pas fonctionné (impression de toutes les feuilles et mise en page pas toujours au top contrairement à l'export "classique" d'excel.

En remettant mon code ou le tiens successivement, je ne trouve même plus le fichier généré depuis ce matin. Je regarde dans le dossier où se trouve mon fichier (comme avant de poster ce message), mais rien.

Another idea ?

Je viens d'éditer une version vidée de tout contenu.

La voici en PJ donc.

Merci !

136fi-pour-forum.xlsm (46.47 Ko)

Bonjour,

Un début de réponse à adapter.

Cdlt.

Sub ExportPDF()
Dim ws As Worksheet
Dim sPath As String, sFile As String
    With ActiveWorkbook
        .Sheets("SOMMAIRE").Visible = False
        sPath = .Path & Application.PathSeparator
        For Each ws In .Sheets
            If ws.Visible = xlSheetVisible Then
             sFile = sPath & ws.Cells(38, "K") & ".pdf"
                ws.ExportAsFixedFormat _
                        Type:=xlTypePDF, _
                        Filename:=sFile
            End If
        Next ws
        With .Sheets("SOMMAIRE")
            .Visible = True
            .Activate
        End With
    End With
End Sub

C'est pas la première fois que j'ai cette erreur...

Bonjour le fil,

Et que contient sFile

Bonne question... j'ai bêtement copié collé le code...

Dans mon code d'origine, il y a avait

With Worksheets("Intro")

Bon, je débute en VBA mais il n'y a pas de commande pour dire :

With Worksheets(toutes les feuilles).Visible

Question de gros débutant désolé pour ça

BrunoM45

Je viens de re-tester ta macro, tous les pdf s'impriment, mais page par page... alors que je souhaite le tout dans un seul pdf.

Bonjour Tuttle

Voici le code modifié et qui fonctionne en tout cas chez moi

Sub ExportPDF()
  Dim CheminAcces As String
  Dim Sht As Worksheet, sTab As String
  Sheets("SOMMAIRE").Visible = False
  CheminAcces = ThisWorkbook.Path & Application.PathSeparator
  ' Pour chaque feuille du classeur
  For Each Sht In ThisWorkbook.Sheets
    If Sht.Visible = xlSheetVisible Then
      ' Récupérer le nom du client dans la feuille Intro
      If Sht.Name = "Intro" Then
        NomClient = "FI_" & Sht.Range("K38") & ".pdf"
      End If
      ' Sélectionner les feuilles à exporter
      Sht.Select False
    End If
  Next Sht
  ' Export au format PDF
  Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminAcces & NomClient
  ' Revenir au sommaire
  Sheets("SOMMAIRE").Visible = True
  Sheets("SOMMAIRE").Select
End Sub

A+

Ca ne marche pas chez moi

J'ai modifié

Filename:=CheminAcces

en

Filename:=CheminAccess

et ça m'exporte bien un pdf.

Je peux dire avec grande fierté que c'est mon premier debuggage ????

Mais je n'ai que le pied de page d'imprimé sur toutes les feuilles. Sinon rien du tout...

J'ai empreinté le livre de Dominique Maniez qui s'appelle VBA Office 2010 qui m'a l'air pas mal pour apprendre. Je suis sur 2016 mais j'imagine que ça change pas grand chose.

Bonne journée !

Re,

Tuttle a écrit :

Ca ne marche pas chez moi

J'ai modifié

Filename:=CheminAcces

en

Filename:=CheminAccess

et ça m'exporte bien un pdf.

Le problème est que si tu ne prends pas le code comme il t'est proposé, tu auras toujours des soucis

Tuttle a écrit :

Je peux dire avec grande fierté que c'est mon premier debuggage ????

Bravo à toi

Tuttle a écrit :

Mais je n'ai que le pied de page d'imprimé sur toutes les feuilles. Sinon rien du tout...

Le code ne fait pas la mise ne page de ta feuille, à regarder

Tuttle a écrit :

J'ai empreinté le livre de Dominique Maniez qui s'appelle VBA Office 2010 qui m'a l'air pas mal pour apprendre. Je suis sur 2016 mais j'imagine que ça change pas grand chose.

Heuuuu comment dire c'est comme lire un bouquin de mécanique sur une 2CV et avoir une Merco

A+

Le problème est que si tu ne prends pas le code comme il t'est proposé, tu auras toujours des soucis

Ah non non non... j'ai fait un copié collé Regarde le code que tu as posté (sans rééditer le post hein !!!)

Du coup, je vois pas comment ça a pu marcher chez toi si tu as fait un copié collé aussi


P.S. Toute la mise en page a déjà été faite... lorsque j'exporte de manière classique en pdf, ça fonctionne très bien (je suis juste obligé de cacher l'onglet sommaire à chaque export...)


Je vais essayer de renvoyer un fichier avec ton code, et deux ou trois onglets pour exemple.

Re,

Tuttle a écrit :

Ah non non non... j'ai fait un copié collé Regarde le code que tu as posté (sans rééditer le post hein !!!)

Du coup, je vois pas comment ça a pu marcher chez toi si tu as fait un copié collé aussi

Et bien écoute je ne comprends pas que tu aies dû modifier

La variable qui contient le chemin d'accès est bien : CheminAcces

J'ai modifié quelque peu le code en même temps, car je ne vois pas pourquoi masquer la feuille SOMMAIRE

et il y a un "bug" effectivement lorsque l'on veut convertir une selection de feuilles en PDF

Sub ExportPDF()
  Dim CheminAcces As String, NoPrint As String
  Dim Sht As Worksheet, sTab As String
  ' Feuille(s) à ne pa simprimer
  NoPrint = "SOMMAIRE"
  ' ICI la variable est bien CheminAcces
  ' Récupère le chemin d'accès avec le séparateur
  CheminAcces = ThisWorkbook.Path & Application.PathSeparator
  ' Pour l'export en PDF via VBA
  ' on est apparemment obligé de sélectionner la Zone d'impression
  '
  ' Pour chaque feuille du classeur
  For Each Sht In ThisWorkbook.Sheets
    ' Si la feuille n'est pas dans la liste
    If InStr(1, NoPrint, Sht.Name) = 0 Then
      ' On l'active
      Sht.Activate
      Sht.Range("Zone_d_impression").Select
    End If
  Next Sht
  ' Pour chaque feuille du classeur
  For Each Sht In ThisWorkbook.Sheets
    ' Si la feuille n'est pas dans la liste
    If InStr(1, NoPrint, Sht.Name) = 0 Then
      ' Récupérer le nom du client dans la feuille Intro
      If Sht.Name = "Intro" Then
        NomClient = "FI_" & Sht.Range("K38") & ".pdf"
      End If
      ' Sélectionner les feuilles à exporter
      Sht.Select False
    End If
  Next Sht
  ' ICI la variable est toujours CheminAcces
  ' Export au format PDF
  Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminAcces & NomClient, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
  ' Revenir au sommaire
  Sheets("SOMMAIRE").Select
End Sub

A+

Hey !

Alors, j'utilise ce code qui marche quasiment à merveillle :

Sub FI_export_PDF_avec_visualisation()
'
' Test_export_pdf Macro
'

Sheets("SOMMAIRE").Visible = False

    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:="FI_" & Sheets("EARF").Range("B3") & ".pdf"  , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

Sheets("SOMMAIRE").Visible = True
Sheets("SOMMAIRE").Select

End Sub

Quasiment car je souhaiterais que l'export se fasse, par défaut, dans le même répertoire que le classeur. Ca doit être un chemin relatif j'imagine...

Je cache le sommaire car c'est là où se trouve le bouton pour déclancher la macro, et je ne souhaite pas avoir cette feuille sommaire dans mon export (puisque ce n'est pas réellement un sommaire en fait...). Du coup, comme je cache cette feuille, hop, elle ne s'imprime pas

La variable qui contient le chemin d'accès est bien : CheminAcces

Autant pour moi

Heuuuu comment dire c'est comme lire un bouquin de mécanique sur une 2CV et avoir une Merco

eh ouais, je comprends. Cela dit, commençons modeste ! On verra si je tape dans les gros pavés d'ici quelques mois

Rechercher des sujets similaires à "imprimer toutes feuilles visibles pdf"