IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Choix de l'imprimante au moment de l'impression


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 120
    Par défaut Choix de l'imprimante au moment de l'impression
    Bonjour,

    J'aimerai tout simplement permettre à l'utilisateur de choisir l'imprimante de qu'il peut utiliser pami une liste et ensuite envoyer l'état.

    J'ai essaye un code que j'ai trouvé ici qui modifie l'imprimante par défaut, mais malheureusement, l'impression est tjs envoyé sur la meme imprimante, voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    Function fMultiImpression(stNomFichier As String, itCopies As Long, IDdesign As Long)
     
    ' Impression d'états sur une ou plusieurs imprimantes
    ' Pré-requis : L'état doit être en imprimante par défaut
    ' Paramètre  : nom de l'état
     
    On Error GoTo GestErr
     
    If stNomFichier = "" Then Exit Function
     
    Dim rs As Recordset
    Dim dr As aht_tagDeviceRec
    Dim stDvDefault As String   ' Unité de l'imprimante par défaut
    Dim stDrDefault As String   ' Driver de l'imprimante par défaut
    Dim stPrDefault As String   ' Port de l'imprimante par défaut
    Dim req As String
     
        'Stockage des paramètres de l'imprimante par défaut actuel
        If ahtGetDefaultPrinter(dr) Then
           stDvDefault = dr.drDeviceName
           stDrDefault = dr.drDriverName
           stPrDefault = dr.drPort
        End If
     
    req = "SELECT [T-PrtList].Idprinter, [T-PrtList].no_prt, [T-PrtList].Tx_Prtnom, [T-PrtList].tx_Prtport, [T-PrtList].tx_prtdriver, [T-PrtList].st_Selection"
    req = req + " FROM [T-PrtList]"
    req = req + " WHERE ((([T-PrtList].Idprinter)=" & [Forms]![F-Choix du fichier]![LstImp] & ") AND (([T-PrtList].st_Selection)=-1));"
     
       'MsgBox "" & [Forms]![F-Choix du fichier]![LstImp]
     
    'Set rs = CurrentDb().OpenRecordset("SELECT * FROM [T-PrtList] WHERE st_selection = true;")
     Set rs = CurrentDb().OpenRecordset(req)
        If Not rs.EOF And Not rs.BOF Then
         '  MsgBox "" & rs!tx_prtnom
          ' MsgBox "" & rs.RecordCount
            While Not rs.EOF
                ' Chargement des paramètres de l'imprimante sélectionnée
                dr.drDeviceName = rs.Fields("[tx_PrtNom]")
                dr.drDriverName = rs.Fields("[tx_PrtDriver]")
                dr.drPort = rs.Fields("[tx_PrtPort]")
                ' L'imprimante devient imprimante par défaut
                ahtSetDefaultPrinter dr
     
                MsgBox "Veuillez confirmer l'impression sur l'imprimante:" & dr.drDeviceName
     
                ' Impression
                DoCmd.OpenReport stNomFichier, acViewPreview, , "([T-Design].N°)=" & IDdesign & ""
                DoCmd.PrintOut acPages, , , , itCopies
     
                ' Fermeture fichier
                DoCmd.Close acReport, stNomFichier
     
                rs.MoveNext
            Wend
     
        End If
     
    RestoreDftPrt:
     
        ' fermeture des objets
        rs.Close
         Set rs = Nothing
     
        ' Restauration de l'imprimante par défaut
        'MsgBox "" & stDvDefault
        dr.drDeviceName = stDvDefault
        dr.drDriverName = stDrDefault
        dr.drPort = stPrDefault
        ahtSetDefaultPrinter dr
     
    Exit Function
     
    ' Gestion des erreurs
    GestErr:
     
        MsgBox "Erreur dans fMultiImpression : " & Error & " (" & Err & ")"
    Resume RestoreDftPrt
     
    End Function
    Je ne comprend pas ce qui cloche. Merci d'avance pour votre aide.

  2. #2
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 148
    Par défaut
    Pour mes états, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "E_monEtat", acPreview
    et j'indique par un label que le User peut faire "Ctrl + P" pour choisir une autre imprimante.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 120
    Par défaut
    Merci, effectivement c'est une solution, mais pratique pour mes besoins.

    Pat

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Sinon tu peux inclure dans le formulaire qui te lance l'impression une listeBox "Lst_Prt"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub ListerImprimantes()
     Dim prt As Printer
    Me.Lst_Prt.RowSourceType = "Value List"
    For Each prt In Application.Printers
        Lst_Prt.AddItem prt.DeviceName
        Next prt
    End Sub
    Au chargement de ton formulaire il faut que tu rajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Form_Load()
    ListerImprimantes
    End Sub
    Quand tu lances ton impression, il faut faire référence au résultat de ta liste.

Discussions similaires

  1. [VBA-*] Choix de l'imprimante par l'utilisateur
    Par pjthedj dans le forum Général VBA
    Réponses: 12
    Dernier message: 14/09/2015, 06h16
  2. JDIC : choix d'une imprimante
    Par Bartuk dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 05/05/2006, 15h13
  3. Delphi7 + OLE Word Choix de l'imprimante
    Par Wilco dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 16/03/2006, 18h20
  4. Réponses: 1
    Dernier message: 30/05/2005, 19h29
  5. [CR8.5][Delphi7] Choix de l'imprimante
    Par Petit vinou dans le forum SDK
    Réponses: 8
    Dernier message: 06/11/2003, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo