Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Imprimer en N exemplaires

5 réponses
Avatar
dec29
Bonjour,

Je souhaite imprimer en N exemplaires l'enregistrement courant d'un
formulaire "Convocation", à l'aide d'un bouton.

Comment écrire la procédure événementielle de ce bouton, sachant que N
provient d'un formulaire "Filtre" d'interrogation préalable, du type
"combien d'exemplaires désirez-vous" ??

Merci

Yannick

5 réponses

Avatar
Fabien
dec29 wrote:
Bonjour,

Je souhaite imprimer en N exemplaires l'enregistrement courant d'un
formulaire "Convocation", à l'aide d'un bouton.

Comment écrire la procédure événementielle de ce bouton, sachant que N
provient d'un formulaire "Filtre" d'interrogation préalable, du type
"combien d'exemplaires désirez-vous" ??

Merci

Yannick




Salut Yannick,
Selon les version d'access il y a diverses solutions.
http://www.3stone.be/access/articles.php?lng=fr&pg
ou
Dans le formulaire qui appel l'état :
DoCmd.OpenReport stDocName, acPreview, , Filtre
DoCmd.PrintOut acPages, , , , Me.NombreCopie
DoCmd.Close acReport, stDocName

pour version 2003 et au-delà
' Version ok pour access 2003 qui autorise le passage de parametre lors
de l'appel a un report (cf openargs) Openargs contient une chaine sous
forme "CodeSourcededonnées/Nombre d'exemplaire"
Dans l'evenement sur_Ouverture de l'état :
Param = Split(OpenArgs, "/")
If Param(0) = "[Identifiant]™999" Then
Me.RecordSource = "Pour Fiche Inscription vide"
Printer.Copies = Int(Param(1))
Else
Me.RecordSource = "Pour Fiche Inscription"
End If
@+
Avatar
Fabien
dec29 wrote:
Merci Fabien, de me dépanner encore et encore :
J'ai testé ta méthode, en plaçant un bouton sur mon formulaire. Le code
associé, un peu bricolé, est le suivant :
Private Sub Commande87_Click()
On Error GoTo Err_Commande87_Click
Dim stDocName As String
Dim MyForm As Form
Nb = Forms![FiltrePrepaReunionESS].[NbExReuESS]
stDocName = "PrepaReuESS"
Set MyForm = Screen.ActiveForm
DoCmd.SelectObject acForm, stDocName, True
DoCmd.PrintOut acPages, , , , Nb
DoCmd.SelectObject acForm, MyForm.Name, False
Exit_Commande87_Click:
Exit Sub
Err_Commande87_Click:
MsgBox Err.Description
Resume Exit_Commande87_Click

End Sub
Ca marche bien, sauf que ce code imprime N fois TOUTES les feuilles du
formulaire, alors que je ne voudrais que la feuille qui est à l'écran.
Merci d'avance
Yannick
"Fabien"
<mailto: a écrit dans le message de news:

<mailto:...
> dec29 wrote:
>> Bonjour,
>>
>> Je souhaite imprimer en N exemplaires l'enregistrement courant d'un
>> formulaire "Convocation", à l'aide d'un bouton.
>>
>> Comment écrire la procédure événementielle de ce bouton, sachant que N
>> provient d'un formulaire "Filtre" d'interrogation préalable, du type
>> "combien d'exemplaires désirez-vous" ??
>>
>> Merci
>>
>> Yannick
>>
>>
> Salut Yannick,
> Selon les version d'access il y a diverses solutions.
> http://www.3stone.be/access/articles.php?lng=fr&pg
<http://www.3stone.be/access/articles.php?lng=fr&pg>
> ou
> Dans le formulaire qui appel l'état :
> DoCmd.OpenReport stDocName, acPreview, , Filtre
> DoCmd.PrintOut acPages, , , , Me.NombreCopie
> DoCmd.Close acReport, stDocName
>
> pour version 2003 et au-delà
> ' Version ok pour access 2003 qui autorise le passage de parametre lors
> de l'appel a un report (cf openargs) Openargs contient une chaine sous
> forme "CodeSourcededonnées/Nombre d'exemplaire"
> Dans l'evenement sur_Ouverture de l'état :
> Param = Split(OpenArgs, "/")
> If Param(0) = "[Identifiant]™999" Then
> Me.RecordSource = "Pour Fiche Inscription vide"
> Printer.Copies = Int(Param(1))
> Else
> Me.RecordSource = "Pour Fiche Inscription"
> End If
> @+


Salut,
Si ton etat est basé sur une requete alors tu peux la modifier avant
d'appeler l'etat par un
currentdb.querydefs("lenomdelarequete").sql="select .... from ....
where....;") Tu fixe ainsi le filtre sur l'élément actif dans l'écran.
ou aprés ton selectobject tu peux tente un
Docmd.selectobject ....
me.filter="[LeChamp]=" & [IDdel'Enreg]
me.filteron=true
Docmd.printout ....
A tester
@+
Avatar
Fabien
Fabien wrote:
dec29 wrote:
Merci Fabien, de me dépanner encore et encore :
J'ai testé ta méthode, en plaçant un bouton sur mon formulaire. Le code
associé, un peu bricolé, est le suivant :
Private Sub Commande87_Click()
On Error GoTo Err_Commande87_Click
Dim stDocName As String
Dim MyForm As Form
Nb = Forms![FiltrePrepaReunionESS].[NbExReuESS]
stDocName = "PrepaReuESS"
Set MyForm = Screen.ActiveForm
DoCmd.SelectObject acForm, stDocName, True
DoCmd.PrintOut acPages, , , , Nb
DoCmd.SelectObject acForm, MyForm.Name, False
Exit_Commande87_Click:
Exit Sub
Err_Commande87_Click:
MsgBox Err.Description
Resume Exit_Commande87_Click

End Sub
Ca marche bien, sauf que ce code imprime N fois TOUTES les feuilles du
formulaire, alors que je ne voudrais que la feuille qui est à l'écran.
Merci d'avance
Yannick
"Fabien"
<mailto: a écrit dans le message de news:

<mailto:...
> dec29 wrote:
>> Bonjour,
>>
>> Je souhaite imprimer en N exemplaires l'enregistrement courant d'un
>> formulaire "Convocation", à l'aide d'un bouton.
>>
>> Comment écrire la procédure événementielle de ce bouton, sachant que N
>> provient d'un formulaire "Filtre" d'interrogation préalable, du type
>> "combien d'exemplaires désirez-vous" ??
>>
>> Merci
>>
>> Yannick
>>
>>
> Salut Yannick,
> Selon les version d'access il y a diverses solutions.
> http://www.3stone.be/access/articles.php?lng=fr&pg
<http://www.3stone.be/access/articles.php?lng=fr&pg>
> ou
> Dans le formulaire qui appel l'état :
> DoCmd.OpenReport stDocName, acPreview, , Filtre
> DoCmd.PrintOut acPages, , , , Me.NombreCopie
> DoCmd.Close acReport, stDocName
>
> pour version 2003 et au-delà
> ' Version ok pour access 2003 qui autorise le passage de parametre lors
> de l'appel a un report (cf openargs) Openargs contient une chaine sous
> forme "CodeSourcededonnées/Nombre d'exemplaire"
> Dans l'evenement sur_Ouverture de l'état :
> Param = Split(OpenArgs, "/")
> If Param(0) = "[Identifiant]™999" Then
> Me.RecordSource = "Pour Fiche Inscription vide"
> Printer.Copies = Int(Param(1))
> Else
> Me.RecordSource = "Pour Fiche Inscription"
> End If
> @+


Salut,
Si ton etat est basé sur une requete alors tu peux la modifier avant
d'appeler l'etat par un
currentdb.querydefs("lenomdelarequete").sql="select .... from ....
where....;") Tu fixe ainsi le filtre sur l'élément actif dans l'écran.
ou aprés ton selectobject tu peux tente un
Docmd.selectobject ....
me.filter="[LeChamp]=" & [IDdel'Enreg]
me.filteron=true
Docmd.printout ....
A tester
@+


Ca marche pas ;-)
mais comme ça, ça doit le faire
docmd.selectobject .... 'Tu selectionne un formulaire ouvert
Forms![PrepaReuESS].Filter = "[Lechamppourfiltre]="&
Forms![PrepaReuESS].[lechamppourfiltre] 'tu modifie le filtre de ce
formulaire
Forms![PrepaReuESS].Filteron=true 'Tu l'active
docmd.printout ... 'Tu imprime en n exemplaire
Forms![PrepaReuESS].Filteronúlse 'si besoin tu desactive le filtre
docmd.selecteobject .... 'et tu repasse sur le formulaire appelant
@+
Avatar
dec29
Merci Fabien,

C'est une fois de plus impeccable.

Si tu passes à Quimper, fais-le moi savoir, je te paie un coup !...

Yannick


"Fabien" a écrit dans le message de news:

Fabien wrote:
dec29 wrote:
Merci Fabien, de me dépanner encore et encore :
J'ai testé ta méthode, en plaçant un bouton sur mon formulaire. Le code
associé, un peu bricolé, est le suivant :
Private Sub Commande87_Click()
On Error GoTo Err_Commande87_Click
Dim stDocName As String
Dim MyForm As Form
Nb = Forms![FiltrePrepaReunionESS].[NbExReuESS]
stDocName = "PrepaReuESS"
Set MyForm = Screen.ActiveForm
DoCmd.SelectObject acForm, stDocName, True
DoCmd.PrintOut acPages, , , , Nb
DoCmd.SelectObject acForm, MyForm.Name, False
Exit_Commande87_Click:
Exit Sub
Err_Commande87_Click:
MsgBox Err.Description
Resume Exit_Commande87_Click

End Sub
Ca marche bien, sauf que ce code imprime N fois TOUTES les feuilles du
formulaire, alors que je ne voudrais que la feuille qui est à l'écran.
Merci d'avance
Yannick
"Fabien"
<mailto: a écrit dans le message de news:

<mailto:...
> dec29 wrote:
>> Bonjour,
>>
>> Je souhaite imprimer en N exemplaires l'enregistrement courant d'un
>> formulaire "Convocation", à l'aide d'un bouton.
>>
>> Comment écrire la procédure événementielle de ce bouton, sachant que
>> N
>> provient d'un formulaire "Filtre" d'interrogation préalable, du type
>> "combien d'exemplaires désirez-vous" ??
>>
>> Merci
>>
>> Yannick
>>
>>
> Salut Yannick,
> Selon les version d'access il y a diverses solutions.
> http://www.3stone.be/access/articles.php?lng=fr&pg
<http://www.3stone.be/access/articles.php?lng=fr&pg>
> ou
> Dans le formulaire qui appel l'état :
> DoCmd.OpenReport stDocName, acPreview, , Filtre
> DoCmd.PrintOut acPages, , , , Me.NombreCopie
> DoCmd.Close acReport, stDocName
>
> pour version 2003 et au-delà
> ' Version ok pour access 2003 qui autorise le passage de parametre
> lors
> de l'appel a un report (cf openargs) Openargs contient une chaine sous
> forme "CodeSourcededonnées/Nombre d'exemplaire"
> Dans l'evenement sur_Ouverture de l'état :
> Param = Split(OpenArgs, "/")
> If Param(0) = "[Identifiant]™999" Then
> Me.RecordSource = "Pour Fiche Inscription vide"
> Printer.Copies = Int(Param(1))
> Else
> Me.RecordSource = "Pour Fiche Inscription"
> End If
> @+


Salut,
Si ton etat est basé sur une requete alors tu peux la modifier avant
d'appeler l'etat par un
currentdb.querydefs("lenomdelarequete").sql="select .... from ....
where....;") Tu fixe ainsi le filtre sur l'élément actif dans l'écran.
ou aprés ton selectobject tu peux tente un
Docmd.selectobject ....
me.filter="[LeChamp]=" & [IDdel'Enreg]
me.filteron=true
Docmd.printout ....
A tester
@+


Ca marche pas ;-)
mais comme ça, ça doit le faire
docmd.selectobject .... 'Tu selectionne un formulaire ouvert
Forms![PrepaReuESS].Filter = "[Lechamppourfiltre]="&
Forms![PrepaReuESS].[lechamppourfiltre] 'tu modifie le filtre de ce
formulaire
Forms![PrepaReuESS].Filteron=true 'Tu l'active
docmd.printout ... 'Tu imprime en n exemplaire
Forms![PrepaReuESS].Filteronúlse 'si besoin tu desactive le filtre
docmd.selecteobject .... 'et tu repasse sur le formulaire appelant
@+



Avatar
Fabien
dec29 wrote:
Merci Fabien,

C'est une fois de plus impeccable.

Si tu passes à Quimper, fais-le moi savoir, je te paie un coup !...

Yannick


"Fabien" a écrit dans le message de news:

Fabien wrote:
dec29 wrote:
Merci Fabien, de me dépanner encore et encore :
J'ai testé ta méthode, en plaçant un bouton sur mon formulaire. Le code
associé, un peu bricolé, est le suivant :
Private Sub Commande87_Click()
On Error GoTo Err_Commande87_Click
Dim stDocName As String
Dim MyForm As Form
Nb = Forms![FiltrePrepaReunionESS].[NbExReuESS]
stDocName = "PrepaReuESS"
Set MyForm = Screen.ActiveForm
DoCmd.SelectObject acForm, stDocName, True
DoCmd.PrintOut acPages, , , , Nb
DoCmd.SelectObject acForm, MyForm.Name, False
Exit_Commande87_Click:
Exit Sub
Err_Commande87_Click:
MsgBox Err.Description
Resume Exit_Commande87_Click

End Sub
Ca marche bien, sauf que ce code imprime N fois TOUTES les feuilles du
formulaire, alors que je ne voudrais que la feuille qui est à l'écran.
Merci d'avance
Yannick
"Fabien"
<mailto: a écrit dans le message de news:

<mailto:...
dec29 wrote:
Bonjour,

Je souhaite imprimer en N exemplaires l'enregistrement courant d'un
formulaire "Convocation", à l'aide d'un bouton.

Comment écrire la procédure événementielle de ce bouton, sachant que
N
provient d'un formulaire "Filtre" d'interrogation préalable, du type
"combien d'exemplaires désirez-vous" ??

Merci

Yannick




Salut Yannick,
Selon les version d'access il y a diverses solutions.
http://www.3stone.be/access/articles.php?lng=fr&pg


<http://www.3stone.be/access/articles.php?lng=fr&pg>
ou
Dans le formulaire qui appel l'état :
DoCmd.OpenReport stDocName, acPreview, , Filtre
DoCmd.PrintOut acPages, , , , Me.NombreCopie
DoCmd.Close acReport, stDocName

pour version 2003 et au-delà
' Version ok pour access 2003 qui autorise le passage de parametre
lors
de l'appel a un report (cf openargs) Openargs contient une chaine sous
forme "CodeSourcededonnées/Nombre d'exemplaire"
Dans l'evenement sur_Ouverture de l'état :
Param = Split(OpenArgs, "/")
If Param(0) = "[Identifiant]™999" Then
Me.RecordSource = "Pour Fiche Inscription vide"
Printer.Copies = Int(Param(1))
Else
Me.RecordSource = "Pour Fiche Inscription"
End If
@+




Salut,
Si ton etat est basé sur une requete alors tu peux la modifier avant
d'appeler l'etat par un
currentdb.querydefs("lenomdelarequete").sql="select .... from ....
where....;") Tu fixe ainsi le filtre sur l'élément actif dans l'écran.
ou aprés ton selectobject tu peux tente un
Docmd.selectobject ....
me.filter="[LeChamp]="& [IDdel'Enreg]
me.filteron=true
Docmd.printout ....
A tester
@+


Ca marche pas ;-)
mais comme ça, ça doit le faire
docmd.selectobject .... 'Tu selectionne un formulaire ouvert
Forms![PrepaReuESS].Filter = "[Lechamppourfiltre]="&
Forms![PrepaReuESS].[lechamppourfiltre] 'tu modifie le filtre de ce
formulaire
Forms![PrepaReuESS].Filteron=true 'Tu l'active
docmd.printout ... 'Tu imprime en n exemplaire
Forms![PrepaReuESS].Filteronúlse 'si besoin tu desactive le filtre
docmd.selecteobject .... 'et tu repasse sur le formulaire appelant
@+







Merci
Bon Week ;-)