OVH Cloud OVH Cloud

Imprimante spécifique

13 réponses
Avatar
Julien
Bonjour,

Je voulais savoir s'il est possible depuis une commande sur un formulaire
lors de l'ouverture d'un état de spécifié l'imprimante à utiliser.
Actuellement j'ai copier-coller mon état en définissant pour chaque état
(états identiques) l'imprimante à utiliser et je perds beaucoup de temps
quand il faut modifier le contenu de l'état...

Merci d'avance

Julien

10 réponses

1 2
Avatar
Sweety
Dans le message news:,
Julien écrivait :
Bonjour,

Je voulais savoir s'il est possible depuis une commande sur un
formulaire lors de l'ouverture d'un état de spécifié l'imprimante à
utiliser. Actuellement j'ai copier-coller mon état en définissant
pour chaque état (états identiques) l'imprimante à utiliser et je
perds beaucoup de temps quand il faut modifier le contenu de
l'état...

Merci d'avance

Julien



Bonjour
Il existe des scrips en VBA qui le font.
Une piste ici :
http://www.vbfrance.com/codes/CHOISIR-IMPRIMANTE-DANS-ACCESS-VBA_5207.aspx
Une autre ici :
http://officesystem.access.free.fr/telechargement.htm
(vers le milieu de la page : changer l'imprimante par défaut)

--

Michel H. (Sweety) [Microsoft MVP] - Windows Shell/User
Toutes les réponses à vos questions sur le Portail de Sweety :
http://sweety.mvps.org/


Avatar
3stone
Salut,

"Julien"
| Je voulais savoir s'il est possible depuis une commande sur un formulaire
| lors de l'ouverture d'un état de spécifié l'imprimante à utiliser.
| Actuellement j'ai copier-coller mon état en définissant pour chaque état
| (états identiques) l'imprimante à utiliser et je perds beaucoup de temps
| quand il faut modifier le contenu de l'état...


Essaye ceci.
Tu ouvre ton état en mode aperçu (preview) de cette façon :


DoCmd.OpenReport stDocName, acPreview

et tu ajoute :

DoEvents
DoCmd.RunCommand acCmdPrint


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Julien Ackermann
Bonjour Pierre,
Je vais essayer mais j'aimerais que la commande soit automatique et que
l'utilisateur n'ai pas à choisir lui même l'imprimante...

Merci,

julien


Le 23/07/06 14:25, dans , « 3stone »
a écrit :

Salut,

"Julien"
| Je voulais savoir s'il est possible depuis une commande sur un formulaire
| lors de l'ouverture d'un état de spécifié l'imprimante à utiliser.
| Actuellement j'ai copier-coller mon état en définissant pour chaque état
| (états identiques) l'imprimante à utiliser et je perds beaucoup de temps
| quand il faut modifier le contenu de l'état...


Essaye ceci.
Tu ouvre ton état en mode aperçu (preview) de cette façon :


DoCmd.OpenReport stDocName, acPreview

et tu ajoute :

DoEvents
DoCmd.RunCommand acCmdPrint



Avatar
3stone
Salut,

"Julien Ackermann"
| Je vais essayer mais j'aimerais que la commande soit automatique et que
| l'utilisateur n'ai pas à choisir lui même l'imprimante...


Application.Printer = Application.Printers("Nom imprimante")


le nom des imprimantes se trouve avec :

Dim prtLoop As Printer

For Each prtLoop In Application.Printers
With prtLoop
Debug.Print "Device name: " & .DeviceName
End With
Next prtLoop


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Julien
Bonjour Pierre,

merci cela fonctionne mais pas tout a fait comme je l'aimerais !
Le problème est que quand j'ai ajouté le code "Application...", il m'imprime
le formulaire et non l'état, ci-dessous la copie du code comme il est
actuellement dans le VB de mon formulaire, peut-être qu'il faut simplement
ajouter quelque chose...

Private Sub CmdSend_Click()
Application.Printer = Application.Printers("ServeurPDF_documentsACCESS")
DoCmd.OpenReport "P_DOC", acViewDesign, , , acHidden
Reports("P_DOC").Caption = Forms![p_imp]![Titre]
DoCmd.PrintOut
DoCmd.Close acReport, "P_DOC", acSaveYes
SendMail Me.objet, Me.mail, "", "",
("serveurchezgilbertPDF" & Me.Titre & ".pdf"), Me.message, False
MsgBox "Le message a été placé dans les éléments envoyés.", vbOKOnly +
vbInformation, "Opération Terminée"
'DoCmd.Close
End Sub

merci d'avance

Julien


Salut,

"Julien Ackermann"
| Je vais essayer mais j'aimerais que la commande soit automatique et que
| l'utilisateur n'ai pas à choisir lui même l'imprimante...


Application.Printer = Application.Printers("Nom imprimante")


le nom des imprimantes se trouve avec :

Dim prtLoop As Printer

For Each prtLoop In Application.Printers
With prtLoop
Debug.Print "Device name: " & .DeviceName
End With
Next prtLoop


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
Eric
Bonjour,

A premiere vue, j'enleverai le DoCmd.PrintOut qui envoie sur
l'imprimante ton formulaire qui est l'objet actif.

Sous le DoCmd.Close acReport, "P_DOC", acSaveYes
je mettrai la demande d'impression de l'état après modif de la légende.
DoCmd.OpenReport "P_DOC", la sortie se faisant sur l'imprimante que tu
as définie.

Bonjour Pierre,

merci cela fonctionne mais pas tout a fait comme je l'aimerais !
Le problème est que quand j'ai ajouté le code "Application...", il m'imprime
le formulaire et non l'état, ci-dessous la copie du code comme il est
actuellement dans le VB de mon formulaire, peut-être qu'il faut simplement
ajouter quelque chose...

Private Sub CmdSend_Click()
Application.Printer = Application.Printers("ServeurPDF_documentsACCESS")
DoCmd.OpenReport "P_DOC", acViewDesign, , , acHidden
Reports("P_DOC").Caption = Forms![p_imp]![Titre]
DoCmd.PrintOut
DoCmd.Close acReport, "P_DOC", acSaveYes
SendMail Me.objet, Me.mail, "", "",
("serveurchezgilbertPDF" & Me.Titre & ".pdf"), Me.message, False
MsgBox "Le message a été placé dans les éléments envoyés.", vbOKOnly +
vbInformation, "Opération Terminée"
'DoCmd.Close
End Sub

merci d'avance

Julien



Salut,

"Julien Ackermann"
| Je vais essayer mais j'aimerais que la commande soit automatique et que
| l'utilisateur n'ai pas à choisir lui même l'imprimante...


Application.Printer = Application.Printers("Nom imprimante")


le nom des imprimantes se trouve avec :

Dim prtLoop As Printer

For Each prtLoop In Application.Printers
With prtLoop
Debug.Print "Device name: " & .DeviceName
End With
Next prtLoop


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
Julien
Bonjour Eric,

merci, ça a l'air de fonctionner, de plus est-il possible de mettre une
commande qui permet d'attendre que le fichier est imprimer avant de lancer la
création du mail ?

je vais encore ajouter une condition au cas où aucun mail est renseigné et
je crois que je tiens le bon bout ! au moins pour cette partie de
l'application.

merci encore

Julien


Bonjour,

A premiere vue, j'enleverai le DoCmd.PrintOut qui envoie sur
l'imprimante ton formulaire qui est l'objet actif.

Sous le DoCmd.Close acReport, "P_DOC", acSaveYes
je mettrai la demande d'impression de l'état après modif de la légende.
DoCmd.OpenReport "P_DOC", la sortie se faisant sur l'imprimante que tu
as définie.

Bonjour Pierre,

merci cela fonctionne mais pas tout a fait comme je l'aimerais !
Le problème est que quand j'ai ajouté le code "Application...", il m'imprime
le formulaire et non l'état, ci-dessous la copie du code comme il est
actuellement dans le VB de mon formulaire, peut-être qu'il faut simplement
ajouter quelque chose...

Private Sub CmdSend_Click()
Application.Printer = Application.Printers("ServeurPDF_documentsACCESS")
DoCmd.OpenReport "P_DOC", acViewDesign, , , acHidden
Reports("P_DOC").Caption = Forms![p_imp]![Titre]
DoCmd.PrintOut
DoCmd.Close acReport, "P_DOC", acSaveYes
SendMail Me.objet, Me.mail, "", "",
("serveurchezgilbertPDF" & Me.Titre & ".pdf"), Me.message, False
MsgBox "Le message a été placé dans les éléments envoyés.", vbOKOnly +
vbInformation, "Opération Terminée"
'DoCmd.Close
End Sub

merci d'avance

Julien



Salut,

"Julien Ackermann"
| Je vais essayer mais j'aimerais que la commande soit automatique et que
| l'utilisateur n'ai pas à choisir lui même l'imprimante...


Application.Printer = Application.Printers("Nom imprimante")


le nom des imprimantes se trouve avec :

Dim prtLoop As Printer

For Each prtLoop In Application.Printers
With prtLoop
Debug.Print "Device name: " & .DeviceName
End With
Next prtLoop


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





Avatar
Eric
Bonjour Julien,

Et si tu mets un DoEvents avant l'envoi du mel ?

Si ca marche pas, avec l'API Sleep

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
en tête du module de formulaire sous Option Compare Database et Option
Explicit (éventuellement)

et à la ligne suivant le DoCmd.OpenReport "P_DOC"
Sleep 500 'pour une demi-seconde, à adapter

Bonjour Eric,

merci, ça a l'air de fonctionner, de plus est-il possible de mettre une
commande qui permet d'attendre que le fichier est imprimer avant de lancer la
création du mail ?

je vais encore ajouter une condition au cas où aucun mail est renseigné et
je crois que je tiens le bon bout ! au moins pour cette partie de
l'application.

merci encore

Julien



Bonjour,

A premiere vue, j'enleverai le DoCmd.PrintOut qui envoie sur
l'imprimante ton formulaire qui est l'objet actif.

Sous le DoCmd.Close acReport, "P_DOC", acSaveYes
je mettrai la demande d'impression de l'état après modif de la légende.
DoCmd.OpenReport "P_DOC", la sortie se faisant sur l'imprimante que tu
as définie.


Bonjour Pierre,

merci cela fonctionne mais pas tout a fait comme je l'aimerais !
Le problème est que quand j'ai ajouté le code "Application...", il m'imprime
le formulaire et non l'état, ci-dessous la copie du code comme il est
actuellement dans le VB de mon formulaire, peut-être qu'il faut simplement
ajouter quelque chose...

Private Sub CmdSend_Click()
Application.Printer = Application.Printers("ServeurPDF_documentsACCESS")
DoCmd.OpenReport "P_DOC", acViewDesign, , , acHidden
Reports("P_DOC").Caption = Forms![p_imp]![Titre]
DoCmd.PrintOut
DoCmd.Close acReport, "P_DOC", acSaveYes
SendMail Me.objet, Me.mail, "", "",
("serveurchezgilbertPDF" & Me.Titre & ".pdf"), Me.message, False
MsgBox "Le message a été placé dans les éléments envoyés.", vbOKOnly +
vbInformation, "Opération Terminée"
'DoCmd.Close
End Sub

merci d'avance

Julien




Salut,

"Julien Ackermann"
| Je vais essayer mais j'aimerais que la commande soit automatique et que
| l'utilisateur n'ai pas à choisir lui même l'imprimante...


Application.Printer = Application.Printers("Nom imprimante")


le nom des imprimantes se trouve avec :

Dim prtLoop As Printer

For Each prtLoop In Application.Printers
With prtLoop
Debug.Print "Device name: " & .DeviceName
End With
Next prtLoop


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Julien
Merci , ca fonctionne.


encore une petite question ...
sur :
Application.Printer = Application.Printers("ServeurPDF_documentsACCESS")

quel est le paramètre pour sélectionner l'imprimante par défault ?


merci

julien


Bonjour Julien,

Et si tu mets un DoEvents avant l'envoi du mel ?

Si ca marche pas, avec l'API Sleep

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
en tête du module de formulaire sous Option Compare Database et Option
Explicit (éventuellement)

et à la ligne suivant le DoCmd.OpenReport "P_DOC"
Sleep 500 'pour une demi-seconde, à adapter

Bonjour Eric,

merci, ça a l'air de fonctionner, de plus est-il possible de mettre une
commande qui permet d'attendre que le fichier est imprimer avant de lancer la
création du mail ?

je vais encore ajouter une condition au cas où aucun mail est renseigné et
je crois que je tiens le bon bout ! au moins pour cette partie de
l'application.

merci encore

Julien



Bonjour,

A premiere vue, j'enleverai le DoCmd.PrintOut qui envoie sur
l'imprimante ton formulaire qui est l'objet actif.

Sous le DoCmd.Close acReport, "P_DOC", acSaveYes
je mettrai la demande d'impression de l'état après modif de la légende.
DoCmd.OpenReport "P_DOC", la sortie se faisant sur l'imprimante que tu
as définie.


Bonjour Pierre,

merci cela fonctionne mais pas tout a fait comme je l'aimerais !
Le problème est que quand j'ai ajouté le code "Application...", il m'imprime
le formulaire et non l'état, ci-dessous la copie du code comme il est
actuellement dans le VB de mon formulaire, peut-être qu'il faut simplement
ajouter quelque chose...

Private Sub CmdSend_Click()
Application.Printer = Application.Printers("ServeurPDF_documentsACCESS")
DoCmd.OpenReport "P_DOC", acViewDesign, , , acHidden
Reports("P_DOC").Caption = Forms![p_imp]![Titre]
DoCmd.PrintOut
DoCmd.Close acReport, "P_DOC", acSaveYes
SendMail Me.objet, Me.mail, "", "",
("serveurchezgilbertPDF" & Me.Titre & ".pdf"), Me.message, False
MsgBox "Le message a été placé dans les éléments envoyés.", vbOKOnly +
vbInformation, "Opération Terminée"
'DoCmd.Close
End Sub

merci d'avance

Julien




Salut,

"Julien Ackermann"
| Je vais essayer mais j'aimerais que la commande soit automatique et que
| l'utilisateur n'ai pas à choisir lui même l'imprimante...


Application.Printer = Application.Printers("Nom imprimante")


le nom des imprimantes se trouve avec :

Dim prtLoop As Printer

For Each prtLoop In Application.Printers
With prtLoop
Debug.Print "Device name: " & .DeviceName
End With
Next prtLoop


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr







Avatar
Eric
re,

encore une petite question ...
sur :
Application.Printer = Application.Printers("ServeurPDF_documentsACCESS")

quel est le paramètre pour sélectionner l'imprimante par défault ?



Alors là, je passe la main ...
Et ça ne fonctionne, je crois, qu'à partir d'A2002
et je n'ai qu'A2K.

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

1 2