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