Code vba pour impression

HS -  
 HS -
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

12 réponses

  1. HS
     
    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
  2. HS
     
    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
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Mais ton imprimante virtuelle c'est quoi ?
    A+
    0
    1. HS
       
      PDF Writer
      0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Changer ton imprimante par défaut (param Win) par PDF Writer
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. HS
     
    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
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  9. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Tu a essayé en faisant l'inverse ?
    Printer.DeviceName = \PrinterPDF Writer
    Mais c'est peut-être en lecture seule.
    A+
    0
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bon, je recherche dans mes archices pour changer d'imprimante mais c'est pas pour du tout cuit, j'en ai des... (archives)
    0
  11. HS
     
    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