Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/04/2011, 18h48   #1
Membre habitué
 
Denis Billo
Developpeur web et Access VBA
Inscription : janvier 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Denis Billo
Localisation : France

Informations professionnelles :
Activité : Developpeur web et Access VBA
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2003
Messages : 282
Points : 122
Points : 122
Par défaut Choix d'une imprimante avant impression état dans Access

* Bonjour, *

J'ai cherché sur le forum sans trouver de solution, pourtant je me dis que la chose a du déjà être traitée...

Voila je souhaite trouver un code VBA qui me permet de choisir une imprimante avant d'imprimer un état...

Merci à vous
__________________
VrroOOOAAAAAPPPPPPPPPP !!!
Décibel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2011, 20h07   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,

Voici un exemple :
Code :
1
2
3
4
5
6
7
8
Public Sub Imprim()
Dim wsn
Set wsn = CreateObject("WScript.Network")
wsn.SetDefaultPrinter "PDFCreator"
 DoCmd.OpenReport "état1"
wsn.SetDefaultPrinter "HP LaserJet 1018"
 DoCmd.OpenReport "état2", acViewPreview
End Sub
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2011, 22h11   #3
Membre habitué
 
Denis Billo
Developpeur web et Access VBA
Inscription : janvier 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Denis Billo
Localisation : France

Informations professionnelles :
Activité : Developpeur web et Access VBA
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2003
Messages : 282
Points : 122
Points : 122
Ne marche pas comme je le souhaiterais...
En fait mon appli est installée sur beaucoup de postes avec différentes imprimantes, je ne peux pas alors faire une liste des imprimantes avant...
Je souhaite simplement avoir la liste des imprimantes qui s'affiche comme quand on prend fichier/imprimer et que Windows propose une liste d'imprimantes...

Est-ce possible ?
__________________
VrroOOOAAAAAPPPPPPPPPP !!!
Décibel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 06h34   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

As-tu consulté la FAQ ?

Un exemple : Comment choisir l'imprimante avec laquelle on va imprimer ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 09h45   #5
Membre habitué
 
Denis Billo
Developpeur web et Access VBA
Inscription : janvier 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Denis Billo
Localisation : France

Informations professionnelles :
Activité : Developpeur web et Access VBA
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2003
Messages : 282
Points : 122
Points : 122
Oui j'ai cherché dans la FAQ comme je l'ai écris plus haut...
Il se trouve qu'il y a 2 liens dans votre forum vers une FAQ VBa.
http://vb.developpez.com/faqvba/
et
http://access.developpez.com/faq/?page=Code

Alors si je clique sur FAQ VBA juste au dessus de ce post je tombe sur une FAQ et si je clique sur une autre je tombe sur quelque chose de bien plus fourni, mais si tu fais une recherche dans la page avec le mot imprimante tu ne trouves pas le lien vers ta page...
Il n'est pas simple de chercher dans une FAQ, mais en plus si il y en a plusieurs...

Mais merci tout de même !
__________________
VrroOOOAAAAAPPPPPPPPPP !!!
Décibel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 22h11   #6
Membre habitué
 
Denis Billo
Developpeur web et Access VBA
Inscription : janvier 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Denis Billo
Localisation : France

Informations professionnelles :
Activité : Developpeur web et Access VBA
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2003
Messages : 282
Points : 122
Points : 122
Rho... Encore une question de novice...
Je souhaite créer une Barre de menu qui intègre un bouton "Imprimer" et qui envois dans la commande Function fMultiImpression(stNomFichier As String) le nom du fichier. Mais voila je n'ai pas enve de créer une barre de menu par état...
Alors comment récupérer le nom de l'état où on se trouve pour l'envoyer dans la commande ?

Merci
__________________
VrroOOOAAAAAPPPPPPPPPP !!!
Décibel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 11h01   #7
Membre habitué
 
Denis Billo
Developpeur web et Access VBA
Inscription : janvier 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Denis Billo
Localisation : France

Informations professionnelles :
Activité : Developpeur web et Access VBA
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2003
Messages : 282
Points : 122
Points : 122
Bon j'ai trouvé pour le nom du fichier.
Alors tout est en place.
La table avec les imprimantes.
La commande avec le nom du fichier...
Mais l'impression se fait toujours sur l'imprimante par défaut...
La fonction "ahtSetDefaultPrinter dr" ne semble pas opérante...
Je suis sous Windows XP en Access 2003...
Mon appli sera mise en place sur un serveur 2003 et les gens se connecteront via TSE sur le serveur pour travailler avec...

Qui peut m'aider...
__________________
VrroOOOAAAAAPPPPPPPPPP !!!
Décibel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 11h10   #8
Membre habitué
 
Denis Billo
Developpeur web et Access VBA
Inscription : janvier 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Denis Billo
Localisation : France

Informations professionnelles :
Activité : Developpeur web et Access VBA
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2003
Messages : 282
Points : 122
Points : 122
Fait étrange dans la table tous les Tx_PrtDriver ont comme donnée : winspool ?
Est-ce normal ?
__________________
VrroOOOAAAAAPPPPPPPPPP !!!
Décibel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 17h14   #9
Membre habitué
 
Denis Billo
Developpeur web et Access VBA
Inscription : janvier 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Denis Billo
Localisation : France

Informations professionnelles :
Activité : Developpeur web et Access VBA
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2003
Messages : 282
Points : 122
Points : 122
Personne n'utilise cette procédure pour m'aider...
__________________
VrroOOOAAAAAPPPPPPPPPP !!!
Décibel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 17h33   #10
Membre habitué
 
Denis Billo
Developpeur web et Access VBA
Inscription : janvier 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Denis Billo
Localisation : France

Informations professionnelles :
Activité : Developpeur web et Access VBA
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2003
Messages : 282
Points : 122
Points : 122
Je cherche toujours...
Je me pose une question sur l'API, comment doit-il être mis dans le code VBA.
Au début du code (tout en haut) j'ai la ligne suivante:
Option Compare Database
Est ce que c'est la bonne ligne ou pas ???
__________________
VrroOOOAAAAAPPPPPPPPPP !!!
Décibel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 23h16   #11
Membre habitué
 
Denis Billo
Developpeur web et Access VBA
Inscription : janvier 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Denis Billo
Localisation : France

Informations professionnelles :
Activité : Developpeur web et Access VBA
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2003
Messages : 282
Points : 122
Points : 122
Bon ben j'ai trouvé !!!

J'ai gardé l'API de la FAQ
http://access.developpez.com/faq/?page=TAEtat#ChoixImpr
et la fonction :
Function fChargementImprimantes()

Simplement en changeant le nom de la table dans le fonction par :
LP_Names
Avec comme champs :
no_Prt : numérique
Lp_Name : texte 255
Lp_Port : texte 255
Lp_Driver : texte 255
Lp_Default : oui/non

Puis j'affiche un formulaire avec la liste des imprimantes où je met un bouton "Mise à jour de la liste des imprimantes" dans lequel j'envoi sur clic la commande fChargementImprimantes()
et en faisant, après, un requery du formulaire :
le code en entier du bouton sur clic :
Code :
1
2
    Call fChargementImprimantes
    Form_F_Liste_imp.Requery
Puis l'utilisateur peut choisir son imprimante en cochant la case Lp_Default.
Dans le formulaire il y a un autre bouton "Imprimer votre état" qui lance les fonctions :
Code :
1
2
3
4
5
6
7
    ' J'enregistre avant tout !
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
 
    ' le nom de l'état est renvoyé par constante stNomFichier mise dans chaque état
    imprimante = DLookup("[Lp_Name]", "LP_Names", " Lp_Default = true")
    Call SetDefaultPrinter(imprimante)
    DoCmd.OpenReport stNomFichier
Au préalable dans un module j'ai mis en place le code de dessous avec la fonction SetDefaultPrinter(imprimante)

Code :
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
Option Compare Database
Option Explicit
 
Private Const WM_WININICHANGE = &H1A
Private Const SMTO_NORMAL = &H0
Private Const HWND_BROADCAST = &HFFFF&
 
Private Declare Function SendMessageTimeoutStr _
    Lib "user32" Alias "SendMessageTimeoutA" _
    (ByVal hwnd As Long, ByVal msg As Long, _
    ByVal wParam As Long, ByVal lParam As String, _
    ByVal fuFlags As Long, ByVal uTimeout As Long, _
    lpdwResult As Long) As Long
 
Private Declare Function WriteProfileString _
    Lib "kernel32" Alias "WriteProfileStringA" _
    (ByVal lpszSection As String, ByVal lpszKeyName As String, _
    ByVal lpszString As String) As Long
 
Public Function SetDefaultPrinter(imprimante As String) As Boolean
    On Error GoTo Err_2
    Dim strBuffer As String
                '====================================
                ' Si DAO placer le 4 lignes suivantes
    Dim Rs As DAO.Recordset
    Set Rs = CurrentDb.OpenRecordset _
        ("SELECT LP_Names.* FROM LP_Names WHERE LP_Names.Lp_Name = '" _
         & imprimante & "';")
                '====================================
                ' si Ado placer les 4 lignes suivantes
   ' Dim Rs As New ADODB.Recordset
   ' Rs.Open "SELECT LP_Names.* FROM LP_Names WHERE LP_Names.Lp_Name = '" _
   '      & Imprimante & "';", _
   '      CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
                '====================================
    If Not Rs.BOF Then
        strBuffer = Rs("Lp_Name") _
                    & "," & _
                    Rs("Lp_Driver") _
                    & "," & _
                    Rs("Lp_Port")
        Call WriteProfileString("Windows", _
            "Device", strBuffer)
        Call SendMessageTimeoutStr(HWND_BROADCAST, WM_WININICHANGE, _
            0, "Windows", SMTO_NORMAL, 1000, 0)
        SetDefaultPrinter = True
    Else
        SetDefaultPrinter = False
    End If
Err_1:
    On Error Resume Next
    Set Rs = Nothing
    Exit Function
Err_2:
    SetDefaultPrinter = False
    Resume Err_1
End Function
Vous pouvez me contacter pour avoir une base exemple !

A plus

NB, le code vient de là http://officesystemaccess.seneque.ne...ultprinter.htm
__________________
VrroOOOAAAAAPPPPPPPPPP !!!
Décibel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 09h26   #12
Membre habitué
 
Denis Billo
Developpeur web et Access VBA
Inscription : janvier 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Denis Billo
Localisation : France

Informations professionnelles :
Activité : Developpeur web et Access VBA
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2003
Messages : 282
Points : 122
Points : 122
Salut à tous, je vous propose la base exemple en pièce jointe.
Fichiers attachés
Type de fichier : rar Gestion-imprimantes.rar (343,7 Ko, 25 affichages)
__________________
VrroOOOAAAAAPPPPPPPPPP !!!
Décibel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h31.


 
 
 
 
Partenaires

Hébergement Web