Code vba pour impression

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

  • Votes
  • Date
  • Date décroissante
  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
    1. 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
      1. Contributeur
        Bonjour,
        Mais ton imprimante virtuelle c'est quoi ?
        A+
      2. Contributeur
        Changer ton imprimante par défaut (param Win) par PDF Writer
        1. 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
          1. Contributeur
            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.
            1. Contributeur
              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")
              1. Contributeur
                Tu a essayé en faisant l'inverse ?
                Printer.DeviceName = \PrinterPDF Writer
                Mais c'est peut-être en lecture seule.
                A+
                1. Contributeur
                  Bon, je recherche dans mes archices pour changer d'imprimante mais c'est pas pour du tout cuit, j'en ai des... (archives)
                  1. 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

                    Discussions similaires

                    Historique d'impression

                    6 réponses