IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Export onglet distinct au format pdf


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant E-Learning
    Inscrit en
    Juillet 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Consultant E-Learning

    Informations forums :
    Inscription : Juillet 2021
    Messages : 3
    Par défaut Export onglet distinct au format pdf
    Bonjour à toute la communauté,

    Je suis tombé sur un code qui date un peu mais qui fonctionne parfaitement pour enregistrer les onglets dans des fichiers excel distincts tout en gardant le nom de chaque onglet. merci @ouskel'n'or

    Je souhaiterais faire la même chose en l'enregistrant au format pdf au lieu du format excel.

    Malheureusement je n'y arrive pas en modifiant par exemple juste ceci : Type:=xlTypePDF

    Pourriez-vous m'aider svp ? (je n'ai aucune connaissance en VBA particulièrement)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub Enregistre_onglet_excel()
    Dim ceFichier As Workbook
    Dim nouveauFichier As Workbook
     
    Set ceFichier = ActiveWorkbook
     
    For Each fSheet In ceFichier.Worksheets
        Set nouveauFichier = Workbooks.Add
        DoEvents
        fSheet.Copy Before:=nouveauFichier.Sheets(1)
        DoEvents
        nouveauFichier.SaveAs Filename:="chemin_pour_enregistrement" & "\" & fSheet.Name, FileFormat:=xlNormal
        DoEvents
        nouveauFichier.Close False
    Next
     
    ceFichier.Activate
     
    End Sub

    En poussant un peu la demande je suis tombé sur ceci qui permet de lister les noms de chaque onglets et selon le chiffre mis devant (0 ou 1) prend l'onglet dans la sélection.

    Ce qui permet d'appliquer le code que pour les onglets sélectionnés.

    Ceci est moins important que ma 1ère demande mais si c'est pas trop fastidieux serait-il possible de fusionner ces 2 idées de code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub List_onglet()
    Dim i As Integer
     
        Range("B5").Select
     
        For i = 1 To Sheets.Count
            ActiveCell.Value = Sheets(i).Name
            ActiveCell.Offset(1, 0).Select
        Next i
     
    End Sub
    et le code qui faisait des actions par rapport à cette liste (le problème c'est que ça enregistre dans un même fichier .pdf l'ensemble des onglets et non dans un fichier .pdf distinct pour chaque onglets.).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub SauverEnPDF()
     
    ' Un exemple de sauvegarde des onglets sélectionnés en PDF
     
    Dim vararray() As String ' Afin de conserver les noms des onglets sélectionnés
    Dim csname As Integer ' Colonne où se trouve le nom des onglets
    Dim c As Integer ' Colonne où se trouve les choix 1 ou 0
    Dim countarr As Integer ' Pour compter le nombre d'onglets sélectionnés
    Dim r As Integer ' Pour compter à travers tous les onglets
    Dim sname As Worksheet ' Nom de l'onglet de départ, pour y revenir à la fin
    Dim strFileName As String ' Nom du fichier à sauvegarder
     
    'set up location and counter variables
       csname = Range("B5").Column
       c = Range("C5").Column
       Set sname = ActiveSheet
       r = Range("C5").Row
       countarr = 0
     
    ' Boucle dans la iste des onglets tant qu'il y a un nom d'onglet
       While sname.Cells(r, csname) <> ""
     
    ' Ajouter le nom de l'onglet à la liste si le choix est 1
          If sname.Cells(r, c) = 1 Then
             ReDim Preserve vararray(countarr)
             ' Un ReDim Preserve permet d'augmenter la taille de la variable tout en préservant son contenu
             vararray(countarr) = sname.Cells(r, csname).Value
             countarr = countarr + 1
          End If
       r = r + 1
       Wend
     
    ' On sélection ensuite le groupe d'onglets sélectionnés
       Sheets(vararray).Select
     
       strFileName = Application.GetSaveAsFilename(filefilter:="PDF Files (*.pdf), *.pdf", Title:="Entrez le nom du fichier")
     
    ' Il faut s'assurer que l'usager a bel et bien fait un choix.
    ' Sinon, le nom du fichier sera false ou faux, si Excel français
     
       If strFileName <> "False" And strFileName <> "Faux" Then
     
          ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName _
           , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
           :=False, OpenAfterPublish:=False
     
    ' Ici, on va sauvegarder en fonction de la mise en page pour impression
     
       End If
     
    ' On sort en revenant à l'onglet de départ
     
       sname.Select
     
       set sname = Nothing
     
    End Sub
    Merci à tous pour votre / vos réponse(s).

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2017
    Messages : 7
    Par défaut
    Bonjour tivro57,
    deux petits exemples, le premier pour enregistrer tous les onglets, à adapter le chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub ExportPdf()
     
        Dim ws          As Worksheet
        Dim Fichier     As String, Chemin As String
     
        Chemin = "C:\Users\Umineko\Desktop\Forum\"
     
        For Each ws In ThisWorkbook.Sheets
     
            Fichier = ws.Name & ".pdf"
     
            ws.ExportAsFixedFormat _
                                   Type:=xlTypePDF, _
                                   Filename:=Chemin & Fichier, _
                                   Quality:=xlQualityStandard, _
                                   IncludeDocProperties:=True, _
                                   IgnorePrintAreas:=False, _
                                   OpenAfterPublish:=False
     
        Next ws
     
    End Sub
    et l'autre pour enregistrer uniquement les onglets sélectionnées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub ExportPdf2()
     
        Dim ws          As Worksheet
        Dim Fichier     As String, Chemin As String
     
        Chemin = "C:\Users\Umineko\Desktop\Forum\"
     
        For Each ws In ThisWorkbook.Windows(1).SelectedSheets
     
            Fichier = ws.Name & ".pdf"
     
            ws.ExportAsFixedFormat _
                                   Type:=xlTypePDF, _
                                   Filename:=Chemin & Fichier, _
                                   Quality:=xlQualityStandard, _
                                   IncludeDocProperties:=True, _
                                   IgnorePrintAreas:=False, _
                                   OpenAfterPublish:=False
     
        Next ws
     
    End Sub

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant E-Learning
    Inscrit en
    Juillet 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Consultant E-Learning

    Informations forums :
    Inscription : Juillet 2021
    Messages : 3
    Par défaut
    Désolé pour la réponse tardive j'étais parti du boulot quelques jours.
    Un grand merci pour ta réponse ET le temps qui tu as du mettre à le concevoir !

    Alors tout fonctionne pour le 1er. Il extrait tout le classeur feuille par feuille sans problème.

    Par contre concernant le 2ème code, lorsque je sélectionne 3 onglets par exemple, il me créer bien 3 fichiers distincts avec le nom de chaque onglet par contre il fusionne les 3 onglets dans le pdf. Il ne sépare pas les onglets en 1 fichier distinct malheureusement.

    Mais un grand merci encore !

Discussions similaires

  1. [AC-2003] Exporter état au format PDF
    Par jeanpierre78 dans le forum IHM
    Réponses: 5
    Dernier message: 19/08/2015, 22h22
  2. [Débutant] Exporter Calendrier au format PDF
    Par Expendables dans le forum Développement Sharepoint
    Réponses: 4
    Dernier message: 12/02/2014, 09h00
  3. Exporter Etat en format pdf
    Par Philippe GARNIER dans le forum IHM
    Réponses: 2
    Dernier message: 24/10/2006, 13h39
  4. [CrystalReports] Exportation Etat au format PDF
    Par PtiBubu dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 06/02/2006, 17h47
  5. exportation en format pdf
    Par nounou dans le forum Access
    Réponses: 6
    Dernier message: 10/12/2003, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo