is_utf8:1,
Rechercher : dans
Par :

Code vba pour impression

Dernière réponse le 30 jui 2008 à 15:08:09 HS, le 30 jui 2008 à 11:48:25 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Code vba pour impression » dans :
VBA et les collections d'objets. VoirVBA et les collections d'objets Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles. Ce Tuto vous permet de traiter vos contrôles comme...
VBA Ajouter commandButton et le code qui va avec VoirCode relativement simple et qui ne nécessite pas d'explication complémentaire. Coller ces deux sub dans un module général (Module1 par exemple). Sub CréerBouton() Dim Obj As Object Dim Code As String Sheets("Feuil1").Select 'crée le...

2

HS, le 30 jui 2008 à 12:20:39

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

Répondre à HS

3

lermite222, le 30 jui 2008 à 12:39:11

Bonjour,
Mais ton imprimante virtuelle c'est quoi ?
A+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  

Répondre à lermite222

4

HS, le 30 jui 2008 à 13:01:11

PDF Writer

Répondre à HS

5

lermite222, le 30 jui 2008 à 13:29:12

Changer ton imprimante par défaut (param Win) par PDF Writer L'expérience instruit plus sûrement que le conseil. (André G­ide)  

Répondre à lermite222

6

HS, le 30 jui 2008 à 13:33:06

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

Répondre à HS

7

lermite222, le 30 jui 2008 à 13:44:21

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.
L'expérience instruit plus sûrement que le conseil. (André G­ide)  

Répondre à lermite222

8

HS, le 30 jui 2008 à 13:51:50

Merci c trés gentil

Répondre à HS

9

lermite222, le 30 jui 2008 à 14:02:48

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")
L'expérience instruit plus sûrement que le conseil. (André Gide)  

Répondre à lermite222

10

HS, le 30 jui 2008 à 14:08:02
  • +1

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

Répondre à HS

11

lermite222, le 30 jui 2008 à 14:14:21

Tu a essayé en faisant l'inverse ?
Printer.DeviceName = \PrinterPDF Writer
Mais c'est peut-être en lecture seule.
A+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  

Répondre à lermite222

12

HS, le 30 jui 2008 à 14:15:42

C'est pas possible c'est en lecture seul

Répondre à HS

13

lermite222, le 30 jui 2008 à 14:23:51

Bon, je recherche dans mes archices pour changer d'imprimante mais c'est pas pour du tout cuit, j'en ai des... (archives) L'expérience instruit plus sûrement que le conseil. (André G­ide)  

Répondre à lermite222

14

 HS, le 30 jui 2008 à 15:08:09

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

Répondre à HS