OVH Cloud OVH Cloud

Imprime 1 ou plusieurs étiquettes

3 réponses
Avatar
RG
Je voudrais imprimer des =E9tiquettes =E0 partir d'un =E9tat, le=20
probl=E8me c'est que je veux commencer l'impression pas=20
forcement au d=E9but de la premi=E8re rang=E9e de la planche=20
d'=E9tiquettes.
Si vous avez une solution ?
D'avance merci
RG

3 réponses

Avatar
Yannick Croteau
Bonjour RG

Voici une petite fonction qui devra faire l'affaire....

'DANS TON OUVERTURE D'ÉTAT
Private Sub Report_Open(Cancel As Integer)

ls_ReportOnOpen Me 'Label Saver

End sub

'ET TU METS CE CODE DANS UN MODULE QUE TU NOMMES (GENRE) ... ÉTIQUETTE
Option Compare Database
Option Explicit
' Label Saver v97.30 from Peter's Software
'
' Allows users to specify a starting label position and a number of
copies via input boxes
' when printing labels
'
' This module was created by:
'
' Peter's Software
' http://www.peterssoftware.com
'
'
' ...with some help from Microsoft Knowledge Base article Q299024
'
' This module is freeware.
'
' I do not require that this header be included in any apps you distribute,
' but would appreciate credit being given in your documentation.
'
' If you find that this product is useful to you, please drop by our web
site
' at http://www.peterssoftware.com and sign up on our mailing list so we
can
' notify you when new versions of Label Saver and other Access tools become
available
'
' Usage:
' LS_Init - from your label report's report
header OnFormat event procedure
' (create a label report header if you
don't have one already. Set
' the report header section height to
0.)
' LS_ReportOnOpen Me, Cancel - from your label report's OnOpen event
procedure, and
' LS_DetailOnPrint Me - from your label report's Detail
OnPrint event procedure.
'

'Module variables
Dim iLSBlankRecordsToPrint As Integer
Dim iLSBlankCount As Integer
Dim iLSCopiesToPrint As Integer
Dim iLSCopiesCount As Integer
Sub ls_DetailOnPrint(rpt As Report)
'Print a specified number of blank detail sections.

On Error GoTo ls_DetailOnPrint_err


If iLSBlankCount < iLSBlankRecordsToPrint Then
'Leave a blank detail section without skipping a record
rpt.NextRecord = False
rpt.PrintSection = False
iLSBlankCount = iLSBlankCount + 1
Else
If iLSCopiesCount < iLSCopiesToPrint Then
rpt.NextRecord = False
iLSCopiesCount = iLSCopiesCount + 1
Else
iLSCopiesCount = 1
End If
End If

ls_DetailOnPrint_exit:
Exit Sub

ls_DetailOnPrint_err:
Dim strModuleName As String

If Application.CurrentObjectType = 2 Then
strModuleName = Forms(Application.CurrentObjectName).Module.name
ElseIf Application.CurrentObjectType = 3 Then
strModuleName = Reports(Application.CurrentObjectName).Module.name
Else
strModuleName = Application.CurrentObjectName
End If

Dim test_con As Boolean
test_con = Email_error(Err.Number, Err.Description, Err.Source,
strModuleName, "XXX")
If test_con = True Then
Resume Next
Else
GoTo ls_DetailOnPrint_exit
End If
End Sub

Sub ls_Init()
iLSBlankCount = 0
iLSCopiesCount = 1
End Sub

Sub ls_ReportOnOpen(rpt As Report)
'Prompts user for a label printing start position, and a number of copies.
'Sets variables for the OnFormat event procedure to handle

Dim iStartLabel As Integer
Dim iCopies As Integer
Dim vResp As Variant


On Error GoTo ls_ReportOnOpen_err

'Prompt user for starting label position
vResp = InputBox("Vous voulez commencer à quelle étiquette de la feuille?",
"Étiquette Saver", 1)
If vResp = "" Then
'Cancel was clicked
'Cancel = True
'GoTo ls_ReportOnOpen_exit
End If
iStartLabel = CInt(vResp)

'Validation check
If iStartLabel >= 1 And iStartLabel <= 400 Then
Else
MsgBox "L'étiquette de départ doit être entre 1 et 400." & vbCrLf &
vbCrLf & "Étiquettage Cancellé!"
'Cancel = True
GoTo ls_ReportOnOpen_exit
End If

'Prompt user for number of copies
'vResp = InputBox("How many copies of each label?", "Label Saver", 1)
'If vResp = "" Then
'Cancel was clicked
' Cancel = True
' GoTo ls_ReportOnOpen_exit
'End If
'iCopies = CInt(vResp)
iCopies = 1
'Validation check
If iCopies < 1 Then
MsgBox "Le numbre de copies doit être plus grand que 0." & vbCrLf &
vbCrLf & "Étiquettage Cancellé!"
'Cancel = True
GoTo ls_ReportOnOpen_exit
Else
If iCopies >= 1 And iCopies <= 100 Then
Else
If MsgBox("Êtes vous de vouloir imprimer " & iCopies & " copies de
chaque Étiquette?", vbYesNo, "Étiquette Saver") = vbYes Then
Else
MsgBox "Étiquettage Cancellé!"
'Cancel = True
GoTo ls_ReportOnOpen_exit
End If
End If
End If

'Set variables. These are used in the Report Detail OnFormat event procedure
iLSBlankRecordsToPrint = iStartLabel - 1
iLSCopiesToPrint = iCopies

ls_ReportOnOpen_exit:
Exit Sub
ls_ReportOnOpen_err:

Dim strModuleName As String

If Application.CurrentObjectType = 2 Then
strModuleName = Forms(Application.CurrentObjectName).Module.name
ElseIf Application.CurrentObjectType = 3 Then
strModuleName = Reports(Application.CurrentObjectName).Module.name
Else
strModuleName = Application.CurrentObjectName
End If

Dim test_con As Boolean
test_con = Email_error(Err.Number, Err.Description, Err.Source,
strModuleName, "ls_ReportOnOpen")
If test_con = True Then
Resume Next
Else
GoTo ls_ReportOnOpen_exit
End If

End Sub


Sub ls_ReportOnPage()
'iLSBlankCount = 0
End Sub

'Peut-être que tu seras obligé de faire quelques modifications selon ta
planche d'étiquette, mais ça devrait ressembler à ça... =)
En espérant que ça t'aide!!
Yannick Croteau
www.frogtuning.com
Access, SQLServer et ASP

"RG" a écrit dans le message de
news:058c01c3a6ca$f7ddaad0$
Je voudrais imprimer des étiquettes à partir d'un état, le
problème c'est que je veux commencer l'impression pas
forcement au début de la première rangée de la planche
d'étiquettes.
Si vous avez une solution ?
D'avance merci
RG
Avatar
Yannick Croteau
Oops... t'enlèveras mon gestionnaire d'erreur cependant, patce que je pense
que tu vas avoir de la misère...

C'est à dire... tout ce qui est....

Dim strModuleName As String

If Application.CurrentObjectType = 2 Then
strModuleName = Forms(Application.CurrentObjectName).Module.name
ElseIf Application.CurrentObjectType = 3 Then
strModuleName = Reports(Application.CurrentObjectName).Module.name
Else
strModuleName = Application.CurrentObjectName
End If

Dim test_con As Boolean
test_con = Email_error(Err.Number, Err.Description, Err.Source,"XXX")

If test_con = True Then
Resume Next
Else
GoTo ls_ReportOnOpen_exit
End If


"RG" a écrit dans le message de
news:058c01c3a6ca$f7ddaad0$
Je voudrais imprimer des étiquettes à partir d'un état, le
problème c'est que je veux commencer l'impression pas
forcement au début de la première rangée de la planche
d'étiquettes.
Si vous avez une solution ?
D'avance merci
RG
Avatar
3stone
Salut,

Je voudrais imprimer des étiquettes à partir d'un état, le
problème c'est que je veux commencer l'impression pas
forcement au début de la première rangée de la planche
d'étiquettes.


Colle ceci dans ton état...

'-----------------------------------
' Déclaration avant 1ère Sub
Public intToSkip As Integer
Public intSkipped As Integer

' Propriété de la zone Détail - Événement "Sur impression"
Private Sub Détail_Print(Cancel As Integer, PrintCount As Integer)
If intSkipped < intToSkip Then
Me.NextRecord = False
Me.PrintSection = False
intSkipped = intSkipped + 1
End If
End Sub

' Propriété de l'état - Événement "Sur ouverture"
Private Sub Report_Open(Cancel As Integer)
DoCmd.Maximize
Dim intEttiket As String
intEttiket = inputbox("Combien d'étiquettes vides ?", "Etiquette")
If IsNull(intEttiket) Then
Cancel = True
Else
intToSkip = Val(intEttiket)
End If
End Sub


--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------