Imprimer les PDF d'un dossier depuis Excel

Résolu/Fermé
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014 - 17 nov. 2014 à 23:31
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014 - 19 nov. 2014 à 16:40
Bonjour tout le monde,

Voila mon problème j'ai dans "Mes Documents" un dossier dont le chemin est le suivant :

D:\Session_Cyril\Mes documents\Facture Travail\

J'enregistre dans ce dossier toutes mes factures depuis Excel en PDF. Je souhaiterais savoir s'il m'est possible d'avoir un bouton qui enverrai automatiquement tout le contenu du dossier (donc des fichier PDF) à l'imprimante ?

J'ai trouvé le code suivant sur internet, j'y ai inséré mon chemin d'accès vers mon dossier, mais comme dirait Thierry Lhermite "Le temps passe et rien ne se passe, on est dans l'impasse" :D

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 ImprimerFichier()
Dim NomFichier As String
Dim x As Long

x = FindWindow("XLMAIN", Application.Caption)
NomFichier = "D:\Session_Cyril\Mes documents\Facture Travail.pdf"

ShellExecute x, "print", NomFichier, "", "", 1
End Sub

Alors je ne sait pas si ce code est fonctionnel ou pas, mais moi quand je clique sur le bouton qui y est associé, rien ne se passe. Si quelqu'un peux m'aider ce sera avec plaisir, merci.
A voir également:

36 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 nov. 2014 à 09:02
Bonjour,

ce code marche tres bien, ai ajoute boucle sur les fichiers PDF du dossier

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 ImprimerFichier()
Dim x As Long, Chemin_Fichier As String, Nom_Fichier As String

Chemin_Fichier = "D:\Session_Cyril\Mes documents\"
x = FindWindow("XLMAIN", Application.Caption)
Nom_Fichier = Dir(Chemin_Fichier & "*.PDF")
'boucle nom de fichier PDF
Do While Nom_Fichier <> ""
ShellExecute x, "print", Chemin_Fichier & Nom_Fichier, "", "", 1
Nom_Fichier = Dir
Loop

End Sub
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 10:38
Bonjour f894009 et merci pour ta réponse.

Alors effectivement, en mettant le code que tu ma donné, cela fonctionne. En revanche, cela m'ouvre aussi Adobe Rearder.

Est il possible que les fichiers aille à l'imprimante (cela fonctionne merci à toi) sans s'ouvrir ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 nov. 2014 à 11:41
Re,

En revanche, cela m'ouvre aussi Adobe Rearder. Surprenant car pas chez moi !!!!!!!!! Vous n'auriez pas pdfcreator en imprimante ???????
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 11:46
Non je n'ai même pas PDF CREATOR du tout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 11:51
J'ai :

Adobe Rearder IX
Adobe Shockwave Player 12.0
Adobe Flash Player 11 Plugin
Adobe Air
Adobe Flash Player 10 ActiveX
Acrobat.com

Si'il y a quelque chose de là que je doit virer je le fait. Mais je ne sais pas quoi
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 nov. 2014 à 11:53
Re,

Rectification, ca ouvre bien Adobe Reader. Je regarde.

A+
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 12:01
Merci à toi a+
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 nov. 2014 à 12:11
Re,

D'apres les docs de:

https://access.developpez.com/faq/?page=Divers#Print_doc

ca devrait pas ouvrir Adobe mais ca le fait quand meme !!!!!!!

je continue
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 nov. 2014 à 15:50
Re,

A titre d'info, si vous imprimez un .docx, Word s'ouvre mais se referme tout seul.
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 16:11
Re, effectivement, là le fichier s'ouvre et se ferme tout seul. Cela ne pourrait t'il pas venir de ce qui permet d'ouvrir les PDF sur le PC ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 nov. 2014 à 16:14
Re,

ce qui permet d'ouvrir les PDF sur le PC Oui, mais adobe est oblige de s'ouvrir pour imprimer le fichier
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 16:59
Donc il ne pourras se fermer automatiquement comme word ?

Parce que à la limite je m'en fiche qu'il s'ouvre s'il se ferme seul. Ne peux ton pas programmer qu'il se ferme tout seul alors ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 nov. 2014 à 17:01
Re,

C'est ce que je cherche, qu'il se ferme tout seul. Ai trouve quelques codes, mais pas marche.

Je continue
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 17:02
merci je cherche aussi de mon coter si je trouve avant je te préviens :)
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 17:12
J'ai trouver ce bout de code, mais impossible de le faire fonctionner avec le reste

Sub Ferme_Pdf()
Const WM_SYSCOMMAND& = &H112, SC_CLOSE& = &HF060
SendMessage Apphwnd, WM_SYSCOMMAND, SC_CLOSE, 0&
End Sub
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 18:04
alors j'ai trouver ce code qui mentionne bien la fermeture du pdf, mais qui au lieu de me fermer le pdf m'envoie le fichier excel entier a l'imprimante.

Sub test()
Dim Wk As Workbook
Set Wk = Workbooks("MATRICE FIDELIA TVA 101.xlsm")
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
Imprimante_AdobePDF, Collate:=True
Call Fermer_Un_Programme("Acrobat.exe")
Wk.Activate
End Sub

Sub Fermer_Un_Programme(Prog As String)
Dim StrComputer As String, objWMIService As Object
StrComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & StrComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & Prog & "'")
For Each objProcess In colProcessList
objProcess.Terminate
Next
End Sub

Si tu peux en faire quelque chose de mieux ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 nov. 2014 à 18:55
Re,

au lieu de me fermer le pdf m'envoie le fichier excel ben oui, le code est fait pour ca. Je regarde ce que je peux en faire pur la fermeture de adobe reader (ce n'est pas acrobat.exe, mais AcroRd32.exe)

A+
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
18 nov. 2014 à 19:15
Re,

devrait aller:

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

'imprimer fichier PDF depuis EXCEL
Sub ImprimerFichier()
Dim x As Long, Chemin_Fichier As String, Nom_Fichier As String, Acrobat

Chemin_Fichier = "D:\Session_Cyril\Mes documents\"
x = FindWindow("XLMAIN", Application.Caption)
Nom_Fichier = Dir(Chemin_Fichier & "*.PDF")
'boucle nom de fichier PDF
Do While Nom_Fichier <> ""
ShellExecute x, "print", Chemin_Fichier & Nom_Fichier, "", "", 1
'attente
Application.Wait (Now + TimeValue("0:00:01"))
Call Fermer_Un_Programme("AcroRd32.exe")
Nom_Fichier = Dir
Loop

End Sub

Sub Fermer_Un_Programme(Prog As String)
Dim StrComputer As String, objWMIService As Object, objProcess, colProcessList

StrComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & StrComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & Prog & "'")
For Each objProcess In colProcessList
objProcess.Terminate
Next
End Sub


A+
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 19:31
Si j'ai bien compris tout ce code remplace aussi celui qui imprime les pdf qui se trouvent dans le dossier.

Seulement cela m'affiche une erreur d'exécution '-2147217406 (80041002)':

Non trouvé

et quand je clique sur débogage, ça m'envoie dans Visual Basic et la phrase suivante est surligné en jaune :

objProcess.Terminate
0
cyrga11 Messages postés 48 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 28 novembre 2014
18 nov. 2014 à 19:41
Si j'augmente le TimeValue :

Application.Wait (Now + TimeValue("0:00:50"))

ça marche, mais quand le pdf se ferme, l'erreur de débogage apparaît et un seul fichier sur deux est envoyer a l'imprimante.

Désolé je voie bien que c'est pas évident et merci encore pour l'aide apporté
0