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 :

Fusionner des fichiers PDF


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 45
    Par défaut Fusionner des fichiers PDF
    Bonjour,

    j'ai récupéré le code suivant pour fusionner des pdf en un pdf, mais qui ne marche pas...

    Avez-vous des idé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
    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
    Private Sub FusionPDFs(sPdfDir As String, sPdfOutDir As String, sFichierOut As String)
    Dim bFirst As Boolean
    Dim oPDDoc As Object
    Dim oTempPDDoc As Object
    Dim oFolder As Object
    Dim TabloFichiers() As String
    Dim oFile As Object
    Dim FSO As Object
    Dim i As Long
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set oFolder = FSO.GetFolder(sPdfDir)
        bFirst = True
     
        If oFolder.Files.Count = 0 Then Exit Sub
     
        ReDim TabloFichiers(1 To oFolder.Files.Count)
     
        i = 0
        For Each oFile In oFolder.Files
            i = i + 1
            TabloFichiers(i) = oFile.Name
        Next oFile
     
        '   Placer ici une éventuelle
        '   routine de tri des fichiers de TabloFichiers
     
        For i = 1 To UBound(TabloFichiers)
            If LCase$(Right$(TabloFichiers(i), 4)) = ".pdf" Then
                If bFirst Then
                    bFirst = False
                    Set oPDDoc = CreateObject("AcroExch.PDDoc")
                    oPDDoc.Open sPdfDir & TabloFichiers(i)
                Else
                    Set oTempPDDoc = CreateObject("AcroExch.PDDoc")
                    oTempPDDoc.Open sPdfDir & "\" & TabloFichiers(i)
     
                   '  Paramètres :
                   '   1 Page du document en cours après laquelle l'insertion sera faite. La 1ere page est 0.
                   '   2 Document contenant les pages à insérer.
                   '   3 La 1ere page à être insérée dans le document oPDDoc
                   '       à partir du Document oTempPDDoc contenant ces pages à insérer.
                   '   4 Le nombre de pages à insérer.
                   '   5 Si nombre > 0 les bookmarks sont copiés, si 0 ils ne le sont pas.
     
                    oPDDoc.InsertPages oPDDoc.GetNumPages - 1, oTempPDDoc, 0, 1, 0
                    oTempPDDoc.Close
                End If
            End If
        Next i
      MsgBox (sPdfOutDir & sFichierOut)
        With oPDDoc
            .Save 1, sPdfOutDir & sFichierOut
            .Close
        End With
     
        Set oFolder = Nothing
        Set oFile = Nothing
        Set FSO = Nothing
        Set oPDDoc = Nothing
        Set oTempPDDoc = Nothing
    End Sub

  2. #2
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 033
    Par défaut
    Bonjour,
    Je n'ai pas testé le code que vous avez présenté, qui me semble correct à première vue, mais de mémoire AcroExch.PDDoc ne serait plus disponible sur les nouvelles versions d'Acrobat Reader (la version gratuite) et il faudrait disposez de l’application « Adobe Acrobat Pro » (la version payante) pour fusionner deux fichiers PDF.
    J'ai cette version et j'utilise le code en annexe 2 du document suivant : https://laurent-ott.developpez.com/t...ux-Structures/

    À confirmer car je ne suis pas un spécialiste du sujet.

    Cordialement.

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 244
    Par défaut
    Hello,
    Citation Envoyé par cbaby Voir le message
    j'ai récupéré le code suivant pour fusionner des pdf en un pdf, mais qui ne marche pas...
    Si tu n'as que la version gratuite d'Acrobat Reader l'objet COM AcroExch.PDDoc n'est pas installé et donc tu ne peux pas l'utiliser.
    Si java est installé sur ton ordinateur tu peux essayer d'utiliser l'utilitaire open source PDFBOX d'Apache version 2.0.26 (télécharger le .jar ici)
    Exemple d'utilisation en VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub FusionPDF()
    Const PDFBOX = "d:\temp\java\pdfbox-app-2.0.26.jar"
    Const srcFiles = "d:\temp\source1.pdf d:\temp\source2.pdf"
    Const destFile = "d:\temp\dest.pdf"
    Dim retVal As Integer
    retVal = Shell("java.exe -jar " & PDFBOX & " PDFMerger " & srcFiles & " " & destFile, vbNormalFocus)
    End Sub
    Attention aux espaces dans les chemins et les noms de fichiers. Dans ce cas il faut rajouter des guillemets adéquates. exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const destFile = """d:\temp\fichier destination.pdf"""
    Ami calmant, J.P

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour le fil, cbaby

    Il y a une autre possibilité que l'on m'a donné il y a peu

    Pour fusionner des fichiers pdf à partir d'excel, on peut utiliser PDFtk Server, téléchargeable gratuitement via ce lien https://www.pdflabs.com/tools/pdftk-server/

    Voici un exemple de code, à adapter le chemin où se trouvent les fichiers PDF et éventuellement le chemin d'installation de PDFTK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub FusionPDF()
    Dim strParam As String, RetVal As String, F1 As String, F2 As String, F3 As String
     
    F1 = "C:\Users\Sequoyah\Desktop\Forum\A\Charlie.pdf" ' Premier fichier
    F2 = "C:\Users\Sequoyah\Desktop\Forum\B\Charlie.pdf" ' deuxième fichier
    F3 = "C:\Users\Sequoyah\Desktop\Forum\Test.pdf" ' output
     
    strParam = "A=" & F1 & " " & "B=" & F2 & " cat A B output " & F3
     
    RetVal = Shell("C:\Program Files (x86)\PDFtk\bin\Pdftk.exe " & strParam, 0)
     
    End Sub
    A+

  5. #5
    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 à tout le forum,
    une solution pour fusionner tous les PDF dans un dossier avec PDFtk, à personnaliser comme indiqué par Bruno dans le post précédent
    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
    Sub FusionPDF()
     
        Application.ScreenUpdating = False
     
        Dim strParam As String, RetVal As String
     
        Const F1   As String = "C:\Users\Umineko\Desktop\Test\*.PDF"
        Const F3   As String = "C:\Users\Umineko\Desktop\Test\Output.PDF"
     
        strParam = F1 & " cat output " & F3 & " compress"
     
        RetVal = Shell("C:\Program Files (x86)\PDFtk Server\bin\pdftk.exe " & strParam, 1)
     
        Application.ScreenUpdating = True
     
    End Sub
    Cordialement

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 244
    Par défaut
    hello,
    A noter qu'avec PDFBox on peut aussi utiliser les caractères génériques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub FusionPDF()
    Const PDFBOX = "d:\temp\java\pdfbox-app-2.0.26.jar"
    Const srcFiles = "d:\temp\ficPDF\*.pdf"
    Const destFile = "d:\temp\dest.pdf"
    Dim retVal As Integer
    retVal = Shell("java.exe -jar " & PDFBOX & " PDFMerger " & srcFiles & " " & destFile, vbNormalFocus)
    End Sub
    Ami calmant, J.P

  7. #7
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 45
    Par défaut Problème non réglé
    Bonjour à tous,

    j'ai essayé vos différentes méthodes et malheureusement cela ne marche toujours pas

    Merci quand même pour votre aide

Discussions similaires

  1. Boucle pour ouvrir des fichiers word via VBA Excel
    Par jeromedjej dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2020, 23h04
  2. [XL-2010] Fusionner des fichiers Word en vba Excel
    Par guille37 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/01/2017, 14h58
  3. manipulation des fichier xsl avec vba excel
    Par naim8622 dans le forum Excel
    Réponses: 1
    Dernier message: 23/01/2009, 00h13
  4. [FPDF] Cherche informations pour afficher un fichier pdf avec PHP
    Par Hans_B dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 22/03/2006, 11h57
  5. [FPDF] création d'un interface pour accés à des fichiers PDF
    Par StyleXP dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/12/2005, 10h18

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