Bonjour à tous,

Tout d'abord un grand merci pour la diffusion des codes VBA.

J'aurais une petite question vis à vis du code visant à fusionner les PDF d'un dossier.

Il fonctionne parfaitement, cependant j'essaye de l'intégrer dans une boucle et je n'y arrive pas vraiment ...

Ce que je cherche à réaliser c'est :
- Aller dans le dossier A, fusionner les fiches PDF en un document A
- Aller dans le dossier B, fusionner les fiches PDF en un document B

En revanche j'obtiens plutôt :
- Dossier A, fiche A,
- Dossier B, fiche AB

Je ne sais pas comment faire pour ne pas stocker en mémoire les PDF du dossier précédent ...

J’espère avoir été assez claire et merci d'avance pour les retours.



Voici ma macro:
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
 
Public Sub test()
 
 
Dim cpt As Byte
Dim j As Variant
Dim SA As Integer
Dim chemin As String
 
 
 
SA = Range("Références!S65536").End(xlUp).Row
 
cpt = 0
 
chemin = "chemin"
 
 
 For Each j In Range("Références!S1:S" & SA)
 
Dim Sec As Variant
Dim Ag As Variant
 
         cpt = cpt + 1
 
         MsgBox (cpt)
 
         Sec = Range("Références!Q" & cpt)
         MsgBox (Sec)
         Ag = Range("Références!R" & cpt)
         MsgBox (Ag)
         Range("AJ2") = Ag
 
 
        ListeFichiers chemin & Sec & "\" & Ag, True
        Fusion
 
    Next j
 
End Sub


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
Option Explicit
 
Dim Cpt As Long
Dim Tableau() As Variant
Const TypeFichier As String = "*.pdf"
 
Private Sub Fusion()
Dim Pdf As Object
    Set Pdf = CreateObject("pdfforge.pdf.pdf")
    Pdf.MergePDFFiles_2 Tableau, ThisWorkbook.Path & "\" & "Fusion Dossier.pdf", True
    Set Pdf = Nothing
End Sub
 
Private Sub ListeFichiers(ByVal sChemin As String, ByVal Recursif As Boolean)
Dim FSO As Object
Dim Dossier As Object
Dim SousDossier As Object
Dim Fichier As Object
 
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Dossier = FSO.GetFolder(sChemin)
 
    For Each Fichier In Dossier.Files
        If UCase(Fichier.Name) Like UCase(TypeFichier) Then
            ReDim Preserve Tableau(Cpt)
            Tableau(Cpt) = Fichier.Path
            Cpt = Cpt + 1
            Application.StatusBar = Cpt
        End If
    Next Fichier
 
    If Recursif Then
        For Each SousDossier In Dossier.SubFolders
            ListeFichiers SousDossier.Path, True
        Next SousDossier
    End If
 
    Set Dossier = Nothing
    Set FSO = Nothing
End Sub
 
Sub SelDossierFusion()
Dim sChemin As String
 
    sChemin = ThisWorkbook.Path
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = sChemin & "\"
        .Title = "Sélectionner un Dossier"
        .AllowMultiSelect = False
        .InitialView = msoFileDialogViewDetails
        .ButtonName = "Sélection Dossier"
        .Show
        If .SelectedItems.Count > 0 Then
            Application.StatusBar = ""
            DoEvents
            Cpt = 0
            Erase Tableau
           '    ListeFichiers récursive ou non True/False
            ListeFichiers .SelectedItems(1), True
            Fusion
        End If
    End With
End Sub