Bonjour,

Je souhaite réaliser un sommaire pour un dossier composé de plusieurs PDF.
Je souhaite donc utiliser une macro qui m'affiche le nombre de page de chaque PDF.

Exemple :
Fichier Nombre de pages
a.pdf 2
b.pdf 1
c.pdf 4

Quand je teste mon code avec deux fichiers importer simplement il fonctionne, mais dès lors que je l'exécute sur un tableau croisé dynamique créé à l'aide d'une base de données importée, il y a l'erreur : "Nom de fichier ou numéro incorrect (Erreur 52)" (sur la ligne 7).
Quelqu'un a t-il déjà eu un problème de ce genre? Ou sait où pourrais se trouver mon erreur?

Les liens sont dans la colonne D et je souhaite avoir le nombre de pages dans la colonne E

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
 
Option Explicit
 
Sub pagination()
Dim MyPath As String, MyFile As String
Dim i As Long
MyPath = "\\192.168.1.5\commun\...\dossier"
MyFile = Dir(MyPath & Application.PathSeparator & "*.pdf", vbDirectory)
Range("E").ClearContents
Range("D3") = "File Name": Range("E3") = "Pages"
Range("D3:E3").Font.Bold = True
i = 3
Do While MyFile <> ""
i = i + 1
Range("D" & i) = MyFile
Range("E" & i) = GetPageNum(MyPath & Application.PathSeparator & MyFile)
MyFile = Dir
Loop
Columns("D:E").AutoFit
MsgBox "Total of " & i - 1 & " PDF files have been found" & vbCrLf _
& " File names and corresponding count of pages have been written on " _
& ActiveSheet.Name, vbInformation, "Report..."
End Sub
 
Function GetPageNum(PDF_File As String)
'Haluk 19/10/2008
Dim FileNum As Long
Dim strRetVal As String
Dim RegExp
Set RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "/Type\s*/Page[^s]"
FileNum = FreeFile
Open PDF_File For Binary As #FileNum
strRetVal = Space(LOF(FileNum))
Get #FileNum, , strRetVal
Close #FileNum
GetPageNum = RegExp.Execute(strRetVal).Count
End Function