Imprimer une liste de fichiers pdf et word via vba excel [Résolu]

Signaler
Messages postés
7
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
8 août 2008
-
Messages postés
7
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
8 août 2008
-
Bonjour, je ne maitrise pas trop vba pour manipuler acrobat:

Si je fais le programme ci dessous ça marche parfaitement je peux imprimer un fichier word via vbaExcell..donc en développant le code je peux imprimer une liste de fichiers word écrite dans excel.

J'aimerais faire la même chose pour imprimer un fichier pdf mais je ne sais pas comment faire. ça ne marche pas. apparemment il ne faut pas utiliser la commande printout pour imprimer un pdf
Pouvez vous m'aider s'il vous plait?
Cordialement

Sub ImprimerWordViaVBAEXCEL()
Dim WordObj As Object
On Error Resume Next
Set WordObj = CreateObject("Word.Application")
Word.documents.Open "C:\essai"
Word.ActiveDocument.PrintOut
Word.ActiveDocument.Close
End Sub

11 réponses

Messages postés
12
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
13 août 2008

Bonjour,
Utilise ça :

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

et

ShellExecute 0, "print", "C:\ABC.pdf", "", "", 0
Messages postés
12
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
13 août 2008

Euh... Je ne me suis jamais posé la question en fait pour les formats A3.
Mais il me semble (c'est peut être pas ce que tu recherches) que ces paramètres peuvent se régler manuellement sans passer par VBA. Il faut aller dans les options d'impressions...
Pour automatiser ça, essaye de voir avec winspool.drv mais comme ça, je ne peux rien te dire de plus...
Messages postés
282
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
15 août 2012
2
salut

vérifie du côté de l'API shellexecute.

Il y a plusieurs exemples dans les codes sources et même du coté Codyx me semble avoir deja vu du code
Messages postés
7
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
8 août 2008

Merci j'ai essayé de faire un programme mais j'ai du mal:
Pour le fichier ABC.pdf, si j'écris:

Sub essai()
Dim AcroApp          As CAcroApp



Set AVDoc = CreateObject("AcroExch.AVDoc")
Call AVDoc.Open("C:\ABC.pdf", "")
Shell ("C:\Program Files\Adobe\Acrobat 7.0\Reader" & "AcroRd32.exe /p """ & "C:\ABC.pdf" & """")
End Sub



Il va m'ouvrir le fichier en question et m'ouvrir aussi le menu pour l'imprimante.
Par contre il faut que je clique sur "OK" pour lancer l'impression..y a t'il un moyen d'éviter cela?
Comment fermer le fichier apres impression?


en te remerciant par avance
Messages postés
7
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
8 août 2008

Salut
je te remercie c'est parfait. ça marche.
est ce que tu saurais par hasard ou je peux trouver la commande qui choisi l'imprimante par défaut de windows et comment définir tous les parametres (A3,A4,Recto,RectoVerso...)
Selon le pdf je dois imprimer selon différents formats.
Merci encore
Messages postés
7
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
8 août 2008

Salut,


Oui effectivement, je veux automatiser cela.


Au travail, je dois sortir parfois une centaine de documents. Il y en a certains qui doivent être en A4 recto d'autres en A3 RectoVerso...c'est pas évident puisque chaque imprimante a son propre logiciel de configuration..


Je vais ouvrir une nouvelle discussion dans le forum.


Merci encore


Bon WE 
Messages postés
12
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
13 août 2008

Bonjour,

Pour que le format du papier soit A3, utilise ça :
Activesheet.Pagesetup.PaperSize = xlPaperA3

Pour retourner au format A4 évidemment la propriété doit devenir xlPaperA4

Je crois (sans grandes convictions) que pour le recto verso il faut utiliser ça, mais je n'ai pas de quoi essayer :
Activesheet.PrintOut ManualDuplexPrint:=True
Messages postés
12
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
13 août 2008

En fait la dernière ligne ne fonctionne que sous EXCEL 2007 d'après un collègue...
Messages postés
7
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
8 août 2008

Merci, mais ça ne paramètre que l'imprimante pour excel.
Si j'imprime mon pdf via shellexecute, il ne prendra pas en compte que les parametres de l'imprimante par défaut.
Il ne prendra pas en compte les parametres de l'imprimante pour excel.
en fait il faudrait trouver une commande shell et peut etre sendkeys (?) pour paramétrer l'imprimante??
Messages postés
12
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
13 août 2008

Eh oui c'est vrai, désolé...

Il y a toujours moyen de s'en sortir avec des sendkeys, mais c'est pas super élégant, ça fait un peu bricolo et puis ça ne marche pas toujours de la même manière sur toutes les machines...
Messages postés
7
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
8 août 2008

je pense que c'est impossible..
tu peux récupérer des infos sur l'impression, le nom de l'imprimante.
Mais pour la paramétrer je ne vois pas comment vba (ou un autre language) pourrait le faire