Code vba pour impression

Fermé
HS - 30 juil. 2008 à 11:48
 HS - 30 juil. 2008 à 15:08
Bonjour,

je suis débutant en VBa Access et je souhaite avoir un code VBA qui me permet d'imprimer un Etat sur une imprimante que j'aurai défini. ce code s'executerai sur le clique d'un bouton, Cela fai 3 jours que je cherche se code sans succées.
SVP aidez moi
A voir également:

12 réponses

j'ai trouve une commande plus simple pour recuperer le nom de l'imprimante par defaut

defaultprinter = Printer.DeviceName

Du coup mes lignes suivant ne passe pas, tu a raison pour le Network , mais ça ne passe pas avec le connection, il me dit qu'un composant l'ActiveX ne peut pas creer d'objet
3
j'ai vais cela mais il imprime sur l'imprimante pas défault et moi je veux qu'il le fasse sur une imprimante virtuelle en faite je veux faire un code du style

Imprimante="imprimante 1"
Etat="Etat1"

Imprime Etat1 sur Imprimante1
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 juil. 2008 à 12:39
Bonjour,
Mais ton imprimante virtuelle c'est quoi ?
A+
0
PDF Writer
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 juil. 2008 à 13:29
Changer ton imprimante par défaut (param Win) par PDF Writer
0

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

Posez votre question
j'ai trouvé un code mais ça ne marche toujours pas, il imprime sur l'imprimante réseau et non par PDF Writer, je comprend pas pourquoi

'Initialisationdes varibales
strPoste = "."
strNomEtat = "NB_REP"
StrImprimante = "PDF Writer"

'Memoriser l'imprimante par défault
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strPoste & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Default = true")
For Each objPrinter In colInstalledPrinters
defaultprinter = objPrinter.Name
Next

'Ouverture de l'etat en mode caché
DoCmd.OpenReport strNomEtat, acViewPreview, , , acHidden


'Modife de l'imprimante par defaut

Set wsn = CreateObject("WScript.Network")
wsn.SetDefaultPrinter "Microsoft Office Document Image Writer"

'impression de l'etat
DoCmd.OpenReport strNomEtat, acViewNormal, , , acHidden


'Reactive l'imprimante default d'origine
wsn.SetDefaultPrinter defaultprinter

' fermer L 'état
DoCmd.Close acReport, strNomEtat, acSaveNo
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 juil. 2008 à 13:44
Ca m'étonne même qu'il y ai une réaction avec ta macro, le code que tu montre n'est pas du VBA
Mais il y a moyen par ce procédé mais avec des déclarations API et macro en language VBA
J'ai jamais vraiment chercher à faire ca mais je sais que c'est possible, si t'est pas trop pressé je peu voir...
EDIT:
Autant pour moi, j'ai pas fait attention que tu employait GetObject() et je ne connais pas les commandes pour l'objet Printer dans ce mode. J'ai penser que c'était avec des API.
0
Merci c trés gentil
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 juil. 2008 à 14:02
Petite remarque cependant..
Set wsn = CreateObject("WScript.Network")
Me semble que tu l'envoi sur le réseau, essayé autre param que NetWork ?
par exemple..Set wsn = CreateObject("WScript.Connection")
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 juil. 2008 à 14:14
Tu a essayé en faisant l'inverse ?
Printer.DeviceName = \PrinterPDF Writer
Mais c'est peut-être en lecture seule.
A+
0
c'est pas possible c'est en lecture seul
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 juil. 2008 à 14:23
Bon, je recherche dans mes archices pour changer d'imprimante mais c'est pas pour du tout cuit, j'en ai des... (archives)
0
Te fatigue j'ai trouve Merci d'avoir pris du temps pour moi. J'ai trouve ce code en plus je l'ai compris donc c'est super, ça marche l'etat exporté n'est pas celui voulu mais je vais trouver, le code est bon c'est l essentiel. Je met ic le codei


NumIMP = 0
NombreImp = Application.Printers.Count
For Each ImpCherche In Application.Printers
If ImpCherche.DeviceName = "PDF Writer" Then
Set Application.Printer = Application.Printers(NumIMP)
Exit For
Else
NumIMP = NumIMP + 1
End If
Next ImpCherche

If NumIMP = NombreImp Then
msgbox "Vous n'avez pas d'imprimante PDF Writer!!", vbCritical, "Impossible"
Exit Sub
End If

DoCmd.OpenReport strNomEtat, acViewPreview

DoCmd.PrintOut acPrintAll, , , 1
DoCmd.Close acReport, strNomEtat
Set Application.Printer = Nothing
0