XL 2010 Enregistrer un fichier Excel complet en pdf.

  • Initiateur de la discussion Initiateur de la discussion CISCO
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

CISCO

XLDnaute Barbatruc
Bonsoir à tous


Lorsqu'on enregistre un fichier Excel au format pdf, on n'obtient que la feuille en cour dans le document final. Est-ce que vous avez une astuce pour obtenir toutes les feuilles contenant des données dans le document au format pdf.

D'avance merci.

@ plus
 
Salut cher alter ego patronymique ... peut-être par ici en élaguant/allégeant, sinon beaucoup plus simple à la fin de ce post# 1 : Impression de certaines Feuilles d'un classeur via un tableau dans un seul Pdf résultant on aboutit à qqch comme ceci , on suppose que la mise en page à déjà été faite et qu'elle ne bouge plus, sinon il faudra rajouter les procédures idoines.
VB:
Sub Tst()
Dim sNomFichierPDF As String
Dim i As Long, Cpt As Long
Dim Ar() As String, Wsh As Worksheet
Dim Plage(4) As String

    sNomFichierPDF = ThisWorkbook.Path & "\" & "Tableau.pdf"
   
   'Plages à tester à adapter pour les Feuilles 1 à 5
    Plage(0) = "A2:J10"
    Plage(1) = "A2:J10"
    Plage(2) = "A2:J10"
    Plage(3) = "A2:J10"
    Plage(4) = "A2:J10"

    Cpt = 0
    For i = 1 To ActiveWorkbook.Sheets.Count
        Set Wsh = ActiveWorkbook.Worksheets(i)
        If Application.CountA(Wsh.Range(Plage(i - 1))) > 0 Then
       'If Application.CountA(Wsh.Cells) > 0 Or Wsh.Shapes.Count > 0 Then
            ReDim Preserve Ar(Cpt)
            Ar(Cpt) = Sheets(i).Name
            Cpt = Cpt + 1
        End If
    Next i

    If Cpt = 0 Then
        MsgBox "Fichier PDF vide!"
        Exit Sub
    End If

    Application.ScreenUpdating = False
    Sheets(Ar).Select

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                    Filename:=sNomFichierPDF, _
                                    Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, _
                                    IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=False

    Sheets(Feuil1.Name).Select
    Application.ScreenUpdating = True
End Sub
 
Dernière édition:
Bonjour à tous

Merci à vous deux pour vos propositions ou remarques

@ patrcktoulon : C'est ce que j'ai obtenu en le faisant directement avec Enregistrer sous... et en choisissant PDF dans la liste des extensions. Si tu as une astuce pour avoir toutes les feuilles non vides, au format pdf, je suis preneur...

@ kiki29 : Je vais essayer de comprendre tout ça, mais ce n'est pas évident vu mon faible niveau en VBA...

@ plus
 
Bonjour @CISCO , Patrick, Kiki29

En fait ce n'est pas "Enregister Sous" mais "Publish As PDF" (après avoir été dans "Export" du menu File et Create PDF/XPS ... Où tu as des Options avant de publier...

1592667002049.png


En cochant "Selection" il prendra les Feuilles que tu as sélectionnées au préalable (non-vides de préférence)....
Bien à toi, à vous
@+Thierry

EDIT je crois que je me suis planté c'est :
En cochant "Selection" il prendra la selection active des cellules
En cochant "Active Sheet(s)" il prendra les Feuilles que tu as sélectionnées au préalable (non-vides de préférence)....
Il faut "jouer" aussi avec ignore Print Area au cas où il y en ait une.
 
Dernière édition:
Salut le Forum,
Sinon, on peut sélectionner ce qu'on veut via un commandbutton :

VB:
Option Explicit
Private Sub CommandButton2_Click()
Dim PrintDlg        As DialogSheet
Dim CurrentSheet    As Worksheet
Dim Sh              As Worksheet
Dim Cb              As CheckBox
Dim Sel_Sheets      As String
Dim FileName        As Variant
Dim TopPos          As Integer

Application.ScreenUpdating = False

    ' Check for protected workbook
    If ActiveWorkbook.ProtectStructure Then
        MsgBox "Le classeur est protégé.", vbCritical
        Exit Sub
    End If

    ' Add a temporary dialog sheet
    Set CurrentSheet = ActiveSheet
    Set PrintDlg = ActiveWorkbook.DialogSheets.Add

    ' Add the checkboxes
    TopPos = PrintDlg.Buttons(1).Top
    For Each Sh In ActiveWorkbook.Worksheets
        ' Skip hidden sheets
        If Sh.Visible Then
           PrintDlg.CheckBoxes.Add(78, TopPos, 100, 16.5).Text = Sh.Name
           TopPos = TopPos + 13
        End If
    Next
    
    ' Move the OK and Cancel buttons
    PrintDlg.Buttons.Left = PrintDlg.CheckBoxes(1).Left + PrintDlg.CheckBoxes(1).Width
    
    ' Set dialog height, width, and caption
    With PrintDlg.DialogFrame
        .Height = Application.Max(68, PrintDlg.DialogFrame.Top + TopPos - 34)
        .Width = PrintDlg.Buttons(1).Left ' <-- bizarre mais fonctionne
        .Caption = "Cochez les feuilles à publier"
    End With
    
    ' Set focus on Cancel
    PrintDlg.Buttons(1).BringToFront
    
    ' Display the dialog box
    CurrentSheet.Activate
    Application.ScreenUpdating = True
        If PrintDlg.Show Then
            For Each Cb In PrintDlg.CheckBoxes
                If Cb.Value = xlOn Then Sel_Sheets = Trim(Sel_Sheets & " " & Cb.Caption)
            Next Cb
            If Sel_Sheets <> vbNullString Then
               ' Display the dialog box to obtain filename
                FileName = Application.GetSaveAsFilename( _
                    FileFilter:="Publication (*.pdf),*.pdf", _
                    InitialFileName:=ThisWorkbook.Path)
                If Not FileName = False Then
                    ' Select sheets to export
                    Sheets(Split(Sel_Sheets)).Select
                    ' Publication
                    ActiveSheet.ExportAsFixedFormat _
                        Type:=xlTypePDF, OpenAfterPublish:=True, _
                        FileName:=FileName
                End If
            End If
        End If

    ' Delete temporary dialog sheet (without a warning)
    Application.DisplayAlerts = False
    PrintDlg.Delete

' Reactivate original sheet
CurrentSheet.Activate
Set CurrentSheet = Nothing
Set PrintDlg = Nothing

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
489
Retour