Bonjour, comme indiqué dans le titre j'ai fait une macro (avec différents bouts de codes) qui vise a imprimer tous les pdf contenus dans un dossier.
Mais ça plante dans la fonction "ImprimerFichier" avec une erreur d'execution '91' : variable objet ou variable bloc with non definie. Tout le reste fonctionne, les chemins sont corrects et pointent bien vers les pdf en question.
J'ai cherché une réponse qui corresponde a cette problématique et la fonction "imprimerFichier" est la seule que j'ai pu trouver.
Voici le code :
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 Sub ListeFichiers(Repertoire As String) ' 'Nécessite d'activer la référence "Microsoft Scripting RunTime" 'Dans l'éditeur de macros (Alt+F11): 'Menu Outils 'Références 'Cochez la ligne "Microsoft Scripting RunTime". 'Cliquez sur le bouton OK pour valider. Dim Fso As Scripting.FileSystemObject Dim SourceFolder As Scripting.Folder Dim SubFolder As Scripting.Folder Dim FileItem As Scripting.File Dim i As Long Set Fso = CreateObject("Scripting.FileSystemObject") Set SourceFolder = Fso.GetFolder(Repertoire) 'Boucle sur tous les fichiers du répertoire Application.Dialogs(xlDialogPrinterSetup).Show For Each FileItem In SourceFolder.Files 'Inscrit le nom du fichier dans la cellule If Right(FileItem.Name, 3) = "pdf" Then ImprimerFichier (FileItem.ParentFolder & FileItem.Name) Else End If Next FileItem '--- Appel récursif pour lister les fichier dans les sous-répertoires ---. For Each SubFolder In SourceFolder.subfolders ListeFichiers SubFolder.Path Next SubFolder End Sub Sub lance_impr() Dim Repertoire As FileDialog Dim chemin As String Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker) Repertoire.Show chemin = Repertoire.SelectedItems(1) ListeFichiers (chemin) End Sub Public Function ImprimerFichier(FichierAImprimer As String) CreateObject("Shell.Application").Namespace(0).ParseName(FichierAImprimer).InvokeVerb ("Print") End Function
Partager