Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Pagination multi feuilles

Cédric06400

XLDnaute Nouveau
Bonjour à tous,

Je bloque sur la pagination de mon fichier de travail.

Exposé

J'ai un fichier Excel qui me sert à éditer des rapports.
Ce fichier comporte de nombreuses feuilles.
Mes rapports sont composés de 1 ou plusieurs feuilles.

En fonction des missions que l'on me confie le nombre de ces rapports évolue (ce n'est jamais les mêmes rapports que j'édite)
Aujourd'hui j'édite et j'envoie à mes clients un seul fichier PDF composé de x rapport(s).

Pour respecter la pagination individuelle de chaque rapport (feuille ou groupe de feuilles), j'ai crée une automatisation de l'édition des rapports avec le spouleur d'impression (en utilisant (edoc pdf pro) et j'assemble chaque rapport manuellement pour constituer mon seul dossier en PDF.

Exemple de pagination individuelle, mon rapport amiante est composé de 2 feuilles et de 7 pages au total

Si je sélectionne tous mes rapports en même temps pour la constitution du PDF ma pagination n'est plus correcte.


Ma demande :

Ce que j'aimerai faire depuis longtemps est d'automatiser la constitution de mon dossier final sans passer le spouler.

Aujourd'hui je sais créer en vba des PDF individuellement pour chaque rapport.

Mes connaissances limitées en VBA ne permettent pas d'assembler automatiquement chaque rapport en un seul fichier (en respectant la pagination individuelle).

La solution la plus simple serait de supprimer ma pagination individuelle et de sélectionner toutes les feuilles d'un coup pour créer le PDF final.
Cette solution ne convient pas car mes rapport doivent absolument est paginés.


Une autre piste que j'ai envisagé mais mes connaissances me limitent encore serait de travailler sur le pied de page (sans faire une usine à gaz).

Merci de votre aide

Cédric
 

Pièces jointes

  • 1700808351714.png
    3.4 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cedric,
Avez vous jeter un œil dans notre base de données ?
Quelques liens qui pourraient vous intéresser :
 

Eric KERGRESSE

XLDnaute Occasionnel
Bonjour,

Pour faire cela, j'utilise la dll PDFCREATOR_COM (version 2.5 normalement gratuite, sans doute remplacée depuis, cf Pdf architecte ou Pdf forge).

Les fichiers à fusionner sont déversés dans un répertoire et indexés selon l'ordre d'assemblage Modop

Le code utilisé :

VB:
Sub MergePDFViaImpressionPdf()
 
Dim CtrI As Long
Dim oPDF As PdfCreatorObj
Dim Q As PDFCreator_COM.Queue
Dim job As PDFCreator_COM.PrintJob
Dim CheminFichierFusionne As String, NomFichierFusionne As String, RepertoirePdf As String, ChaineATrouver As String
Dim Fso As Object, Fich As Object
 
 
    On Error GoTo Fin
 
    ChaineATrouver = ".pdf"
    CheminFichierFusionne = ActiveWorkbook.Path & "\"  ' A adapter
    NomFichierFusionne = CheminFichierFusionne & "Fusion 01.pdf"
    RepertoirePdf = ActiveWorkbook.Path & "\Répertoire de fusion"
 
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set oPDF = New PdfCreatorObj
 
    With oPDF
         For Each Fich In Fso.getfolder(RepertoirePdf).Files
             If InStr(1, LCase(Fich.Name), ChaineATrouver, vbTextCompare) > 0 Then
                .AddFileToQueue RepertoirePdf & Application.PathSeparator & Fich.Name
             End If
         Next Fich
    End With
 
    Set Q = New PDFCreator_COM.Queue
 
    With Q
         .Initialize
         .WaitForJobs 2, 10
         Debug.Print "q.Count: " & Q.Count
         .MergeAllJobs
    End With
 
    While Q.Count > 0
            Set job = Q.NextJob
            job.SetProfileByGuid ("DefaultGuid")
            job.ConvertTo (NomFichierFusionne) '(OutPath)
    Wend
 
    Q.ReleaseCom
 
    MsgBox "Fin de fusion !", vbInformation
 
    GoTo Fin
 
Fin:
 
    Set Fso = Nothing
    Set job = Nothing
    Set Q = Nothing
    Set oPDF = Nothing
 
End Sub
 

Cédric06400

XLDnaute Nouveau
Hello
merci j'ai matière a fouiller

 

Cédric06400

XLDnaute Nouveau
Hello
Merci je vais étudier votre code
 

Cédric06400

XLDnaute Nouveau
Hello
Merci je vais étudier votre code
Bonjour,
Malheureusement je suis une brele.
Auriez vous un fichier test ?
J'ai bien activé le ref pdfrcreator
J'ai du mal comprendre ou est mon erreur avec les chemins.
Rien ne se lance ...
ChaineATrouver = ".pdf"
CheminFichierFusionne = "D:\Documents\Testfusion\Répertoire de fusion\"
NomFichierFusionne = CheminFichierFusionne & "Fusion 01.pdf"
RepertoirePdf = "D:\Documents\Testfusion\Répertoire résultat\"




Merci de votre aide ?
Cédric
 

Eric KERGRESSE

XLDnaute Occasionnel
Pouvez-vous me donner les répertoires suivants ?

- Le répertoire où sont stockés les fichiers .pdf à sélectionner.
- Le répertoire où seront triés et renommés les fichiers sélectionnés.
- Le répertoire où sera déversé le fichier fusionné ?
 

Cédric06400

XLDnaute Nouveau
fichiers stockés dans
D:\Documents\Testfusion\
Répertoire de trie
D:\Documents\Testfusion\Répertoire de fusion\"
Répertoire ou sera deversé le fichier fusionné
"D:\Documents\Testfusion\Répertoire résultat\"
J'espere avoir répondu à votre attente

merci
 

Eric KERGRESSE

XLDnaute Occasionnel
Je m'aperçois que je ne vous ai pas donné l'étape précédente, mais en supposant que vous avez mis et ordonné vos fichiers dans le répertoire de tri, essayez ce code :

VB:
Sub MergePDFViaImpressionPdf()

Dim CtrI As Long
Dim oPDF As PdfCreatorObj
Dim Q As PDFCreator_COM.Queue
Dim job As PDFCreator_COM.PrintJob
Dim RepertoirePdfResultat As String, NomFichierFusionne As String, RepertoirePdfTries As String, ChaineATrouver As String
Dim Fso As Object, Fich As Object


    On Error GoTo Fin
    
    ChaineATrouver = ".pdf"
    
   'RepertoirePdfTries = "D:\Documents\Testfusion\Répertoire de fusion\"
    RepertoirePdfResultat = "D:\Documents\Testfusion\Répertoire résultat\"
    NomFichierFusionne = RepertoirePdfResultat & "Fusion 01.pdf"
    
 '   With ActiveWorkbook    ' Pour mes essais
 '        RepertoirePdfTries = .Path & "\Répertoire de fusion\"
 '        RepertoirePdfResultat = .Path & "\Testfusion\Répertoire résultat\"
 '        NomFichierFusionne = RepertoirePdfResultat & "Fusion 01.pdf"
 '   End With
    
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set oPDF = New PdfCreatorObj
    
    With oPDF
         For Each Fich In Fso.getfolder(RepertoirePdfTries).Files
             If InStr(1, LCase(Fich.Name), ChaineATrouver, vbTextCompare) > 0 Then
                .AddFileToQueue RepertoirePdfTries & Fich.Name
             End If
         Next Fich
    End With
    
    Set Q = New PDFCreator_COM.Queue
    
    With Q
         .Initialize
         .WaitForJobs 2, 10
         Debug.Print "q.Count: " & Q.Count
         .MergeAllJobs
    End With
    
    While Q.Count > 0
            Set job = Q.NextJob
            job.SetProfileByGuid ("DefaultGuid")
            job.ConvertTo (NomFichierFusionne) '(OutPath)
    Wend
        
    Q.ReleaseCom
    
    MsgBox "Fin de fusion !", vbInformation
    
    GoTo Fin

Fin:

    Set Fso = Nothing
    Set job = Nothing
    Set Q = Nothing
    Set oPDF = Nothing
    
End Sub
 

Cédric06400

XLDnaute Nouveau
Merci encore de votre aide précieuse
Cependant cela ne fonctionne pas
Quand vous supposez que j'ai mis et ordonné les fichiers à fusionner moi j'ai créée 2 fichiers PDF nommés "Séjour" et l'autre "salle à manger" dans le dossier de fusion, ai-je bon ?

J'ai chercher à trouver ensuite ou le code s'arrête (je n'ai pas de débodage) car il ne se passe rien quand je lance le macro, et il semble que le code s'arrête là (pour ce faire j'ai tester le macro avec un message box que j'ai déplacé au fur et à mesure des tests)
 

Cédric06400

XLDnaute Nouveau
Peut-être un problème avec pdf créator ?
Ai-je autre chose à faire qu'activer cette référence ?
 

Eric KERGRESSE

XLDnaute Occasionnel
Regardez les propriétés dans PDFCreator.com. Modifiez peut-être le temps d'attente dans WaitForJobs.

Pour cela :
Affichez l'explorateur d'objets en 1, sélectionnez Pdfcreaotor puis Queue.
Regardez tout en bas pour voir les paramètres.
4 pour fermer la fenêtre.
 

Cédric06400

XLDnaute Nouveau
Bonjour,
Désolé je n'ai pas répondu rapidement, juste apres nos échanges j'ai eu un accident de moto, bras droit cassé.
Du coup, je vais me remettre dessus pendant les vacances.
Pour répondre à votre question :



Autre chose j'ai remarqué plus tard lors de la création d'un autre pdf avec pdfcreator que les fichiers étaient en attente.
Ce qui explique peut-etre pourquoi le macro s'arrête. Il faut noté également que je suis obligé de redémarrer l'ordi pour de nouveau pouvoir accéder à PDF creator


 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…