Imprimer les PDF d'un dossier depuis Excel
Résolu
cyrga11
Messages postés
48
Date d'inscription
Statut
Membre
Dernière intervention
-
cyrga11 Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
cyrga11 Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Imprimer les PDF d'un dossier depuis Excel
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Imprimer un tableau excel - Guide
- Liste déroulante excel - Guide
- Comment faire un dossier pdf - Guide
- Word et excel gratuit - Guide
36 réponses
Bonjour,
ce code marche tres bien, ai ajoute boucle sur les fichiers PDF du dossier
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
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 ?
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 ?
Re,
En revanche, cela m'ouvre aussi Adobe Rearder. Surprenant car pas chez moi !!!!!!!!! Vous n'auriez pas pdfcreator en imprimante ???????
En revanche, cela m'ouvre aussi Adobe Rearder. Surprenant car pas chez moi !!!!!!!!! Vous n'auriez pas pdfcreator en imprimante ???????
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
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
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 ?
Re,
ce qui permet d'ouvrir les PDF sur le PC Oui, mais adobe est oblige de s'ouvrir pour imprimer le fichier
ce qui permet d'ouvrir les PDF sur le PC Oui, mais adobe est oblige de s'ouvrir pour imprimer le fichier
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 ?
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 ?
Re,
C'est ce que je cherche, qu'il se ferme tout seul. Ai trouve quelques codes, mais pas marche.
Je continue
C'est ce que je cherche, qu'il se ferme tout seul. Ai trouve quelques codes, mais pas marche.
Je continue
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
Sub Ferme_Pdf()
Const WM_SYSCOMMAND& = &H112, SC_CLOSE& = &HF060
SendMessage Apphwnd, WM_SYSCOMMAND, SC_CLOSE, 0&
End Sub
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 ?
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 ?
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+
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+
Re,
devrait aller:
A+
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+
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
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