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 :

sauvegarde en pdf [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Par défaut sauvegarde en pdf
    Bonjour,

    après avoir étudié le tutoriel http://www.developpez.net/forums/d43...ro-pdfcreator/
    Je suis toujours autant perdue...

    j'ai un classeur excel avec différentes feuilles.

    je souhaiterai sauvegarder dans un seul pdf, certaines pages de certaines feuilles.


    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
     Sub print_societe()
     
    Dim Ar(2) As String
    Dim i As Integer
     
     
        Ar(0) = "Sommaire"
        Ar(1) = "ste-A"
        Ar(2) = "steA-rsx"
        Application.ScreenUpdating = False
     
        For i = 0 To 2
               Sheets(Ar(i)).Select
               ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & Ar(i) & ".pdf" _
                    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
                    :=False, OpenAfterPublish:=False
        Next
     
        Sheets(Ar(1)).Select
        Application.ScreenUpdating = True
    End Sub
    Le problème avec ce code c'est que j'ai un document pdf par feuille.
    Alors que je souhaiterai fusionner dans un seul document pdf
    • la page 1 de ma feuille "sommaire"
    • la page 1 et 3 de ma feuille "ste-A"
    • la page 1 et 3 de ma feuille 'ste-A-rsx"


    merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour,

    juste pour info, voir cette discussion

    Sinon il y a tellement de discussions sur ce sujet, une p'tite recherche …

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Par défaut
    j'avais trouvé ce post mais je n'ai pas réussi à l'appliquer :-(

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, voir ici en bas du post Impression de certaines Feuilles d'un classeur via un tableau dans un seul Pdf résultant pour Excel 2007 et + ou via PDFCreator ici

  5. #5
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Par défaut
    lorsque j'utilise le code que tu m'as indiqué cela fonctionne bien si j'ai une feuille à sauvegarder en .pdf.
    mais dès que j'en ai au moins 2, ça coince à ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     '   Fichier dans la file d'attente
        Do Until JobPDF.cCountOfPrintjobs = 1
            DoEvents
        Loop
    il ne sort pas de la boucle.
    la variable JobPDF.cCountOfPrintjobs vaut 2

    je ne serai de retour que lundi.
    merci d'avance pour votre aide

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, le code que tu as fourni dans le post 1 fait ce que tu lui a demandé : càd de sauvegarder chaque feuille individuellement
    encore un drame du copier/coller car visiblement tu n'as pas compris le code que tu utilises.

    Donc dans ton cas reprendre le code Impression de certaines Feuilles d'un classeur via un tableau dans un seul Pdf résultant pour Excel 2007 en l'adaptant à ton contexte.
    Puis une fois le pdf généré, supprimer les pages indésirables : voir ici.

  7. #7
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Par défaut
    j'ai utilisé le code de Impression de certaines Feuilles d'un classeur via un tableau dans un seul Pdf résultant pour Excel 2007 en l'adaptant.
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    Sub print_CR()
     
    Dim JobPDF As Object
    Dim sNomPDF As String
    Dim sCheminPDF As String
    Dim Ar() As String, Cpt As Long, i As Long, x As Integer
     
     
        Application.ScreenUpdating = False
        sNomPDF = "Synthèse portefeuille CR au " & W_DT_FIN_MOIS_N & ".pdf"
        sCheminPDF = ThisWorkbook.Path & "\"
     
        Set JobPDF = CreateObject("PDFCreator.clsPDFCreator")
     
        With JobPDF
            If .cStart("/NoProcessingAtStartup") = False Then
                MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
                Exit Sub
            End If
            .cOption("UseAutosave") = 1
            .cOption("UseAutosaveDirectory") = 1
            .cOption("AutosaveDirectory") = sCheminPDF
            .cOption("AutosaveFilename") = sNomPDF
     
            '   0,9,10 PDF,1 PNG,2 JPEG,3 BMP,4 PCX
            '   5 TIFF,6 PS,7 EPS,8 TXT
            '   11 PSD,12 PCL,13 RAW,14 SVG
            .cOption("AutosaveFormat") = 0
     
            .cClearCache
        End With
     
        ' Pour n'imprimer que certaines feuilles du classeur
        Cpt = 0
        For i = 1 To 5
        'For i = 1 To ThisWorkbook.Sheets.Count
            If Left$(ThisWorkbook.Sheets(i).Name, 2) = "CR" Then
                ReDim Preserve Ar(Cpt)
                Ar(Cpt) = Sheets(i).Name
                Cpt = Cpt + 1
            End If
        Next i
        If Cpt = 0 Then
            Set JobPDF = Nothing
            Application.ScreenUpdating = True
            Exit Sub
        End If
     
        Sheets(Ar).Select
        Sheets(Ar).PrintOut copies:=1, ActivePrinter:="PDFCreator"
     
        '   Pour imprimer tout le classeur
        'ActiveWorkbook.PrintOut copies:=1, ActivePrinter:="PDFCreator"
     
     x = JobPDF.cCountOfPrintjobs
        '   Fichier dans la file d'attente
        Do Until JobPDF.cCountOfPrintjobs = 1
            DoEvents
        Loop
        '   Démarrage Imprimante
        JobPDF.cPrinterStop = False
     
        '   Attendre que la file d'attente soit vide
        Do Until JobPDF.cCountOfPrintjobs = 0
            DoEvents
        Loop
     
        JobPDF.cClose
        Set JobPDF = Nothing
        Erase Ar
     
        ' Resélectionner une feuille seulement
        Worksheets(1).Select
        Application.ScreenUpdating = True
     
        KillPDFCreator
    End Sub
    cpt et x = 2 lorsque j'utilise le debuggeur pas à pas il ne sort pas de la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Do Until JobPDF.cCountOfPrintjobs = 1
            DoEvents
        Loop

  8. #8
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Par défaut
    Qu' Arrêt soit coché ou non le problème est le même
    Il devrait être comment ?

  9. #9
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Par défaut
    Il y a du progrès, il me sort les 2 pages de la dernière feuille.
    normalement je devrai avoir 4 feuilles avec : 1 page par feuille sauf pour la dernière où j'en ai bien 2.

  10. #10
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Excel 2010, en fait Office 2010, peut enregistrer directement en PDF.

    Utilise l'enregistreur de macros et passe par Enregistrer sous... , ou cherche PDF dans ton aide, et tu devrais trouver assez facilement une solution.

  11. #11
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    j'ai utilisé le code de Impression de certaines Feuilles d'un classeur via un tableau dans un seul Pdf résultant pour Excel 2007 en l'adaptant.
    Mal t'en a pris ....

    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
    Option Explicit
     
    Sub Tst_2007()
    Dim sNomFichierPDF As String
    Dim i As Long, Cpt As Long
    Dim Ar() As String
     
        sNomFichierPDF = ThisWorkbook.Path & "\" & "Tableau2007.pdf"
     
        Cpt = 0
        For i = 1 To ThisWorkbook.Sheets.Count
            If Left(Sheets(i).Name, 2) = "RF" Or Left(Sheets(i).Name, 2) = "RC" Then
                ReDim Preserve Ar(Cpt)
                Ar(Cpt) = Sheets(i).Name
                Cpt = Cpt + 1
            End If
        Next i
        If Cpt = 0 Then Exit Sub
     
        Application.ScreenUpdating = False
        Sheets(Ar).Select
     
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sNomFichierPDF _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
     
        Sheets("Feuil1").Select
        Application.ScreenUpdating = True
    End Sub
    A priori il ne faut modifier que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sNomFichierPDF = ThisWorkbook.Path & "\" & "Tableau2007.pdf"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Left(Sheets(i).Name, 2) = "RF" Or Left(Sheets(i).Name, 2) = "RC"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Select
    puisque tu n'as pas besoin de PDFCreator sauf si tu veux supprimer/insérer des feuilles au PDF résultant et dans ce cas voir ici et

  12. #12
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Par défaut
    Super ça fonctionne comme je veux
    merci beaucoup kiki29 !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [saveas] problème avec la sauvegarde en pdf
    Par valarko dans le forum MATLAB
    Réponses: 4
    Dernier message: 02/09/2010, 13h49
  2. [FPDF] Sauvegarder les pdfs générés dans un répértoire
    Par houdazcom dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/08/2009, 19h16
  3. [Crystal Report] Problème lors de sauvegarde en pdf
    Par Roach- dans le forum Windows Forms
    Réponses: 0
    Dernier message: 02/02/2009, 18h56
  4. sauvegarder fichier PDF
    Par kouki-raid dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2008, 14h33
  5. [VBA-W] Sauvegarde en PDF sous MS WORD
    Par fouineur030 dans le forum VBA Word
    Réponses: 7
    Dernier message: 28/02/2007, 18h06

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