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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
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
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
Dim reponse As Integer
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(Repertoire)
'Application.Dialogs(xlDialogPrinterSetup).Show
i = 0
For Each FileItem In SourceFolder.Files
'recherche des pdf
If Right(FileItem.Name, 3) = "pdf" Then
i = i + 1
Else
End If
Next FileItem
'demande à l'utilisateur si plus de 9 pages
If i > 9 Then
reponse = MsgBox("Vous allez imprimer " & i & " feuilles, etes vous sur de vouloir continuer ?", vbYesNo, "Nombre important d'impressions")
If reponse = 7 Then
GoTo fin
Else
End If
Else
End If
'imprime tous les pdf du dossier
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
fin:
End Sub
Function ImprimerFichier(ByVal Fichier As String)
ShellExecute FindWindow("XLMAIN", Application.Caption), "print", Fichier, "", "", 1
Application.Wait (Now + TimeValue("0:00:03")) 'on laisse le temps a la fenetre pdf application(celle que tu utilise comme reader) de s'ouvrir (on a pas le temps de la voir!!)
Shell "Taskkill /im AcroRd32.exe /f", 0
End Function |
Partager