par
cerber » 27 juin 2005, 14:18
Contexte :
J'édite un rapport d'activité pour tous les unités (~100) de ma société.
Chaque unité se voit consacrer de 1 à 3 pages de rapport (soit 153 pages en tout)
Logiquement je groupe mon rapport sur le numéro d'unité avec un saut de page avant le début du groupe *unité* et l'option "répeter section" à oui
Chaque unité recevra les pages du rapport qui lui sont consacrées
Base du probleme :
J'affiche en bas de page le numéro de la page et le nombre total de page, ce qui peut donner "Page 43/153" hors le groupe représenté sur la page 43, ne prend en réalité qu'une seule page. Je souhaite donc afficher "Page 1/1"
Début de solution : (Source :
http://www.mvps.org/accessfr/reports/rpt0013.htm )
Code : Tout sélectionner
'************ Code Start *************
Option Compare Database
Option Explicit
'stocke le numéro de la page du groupe
'et le nombre total de page dans un groupe
'en fonction du *numéro de page Access*
Dim GrpArrayPage(), GrpArrayPages()
'nom du groupe courant et précédent
'(pour détecter les chagements de groupes'
Dim GrpNameCurrent As Variant, GrpNamePrevious As Variant
'variables temporaires
Dim GrpPage As Integer, GrpPages As Integer
Private Sub ZonePiedPage_Format(Cancel As Integer, FormatCount As Integer)
Dim i As Integer
If Me.Pages = 0 Then
'premiere passe
ReDim Preserve GrpArrayPage(Me.Page + 1)
ReDim Preserve GrpArrayPages(Me.Page + 1)
GrpNameCurrent = Me!numInterv
If GrpNameCurrent = GrpNamePrevious Then
GrpArrayPage(Me.Page) = GrpArrayPage(Me.Page - 1) + 1
GrpPages = GrpArrayPage(Me.Page)
For i = Me.Page - ((GrpPages) - 1) To Me.Page
GrpArrayPages(i) = GrpPages
Next i
Else
GrpPage = 1
GrpArrayPage(Me.Page) = GrpPage
GrpArrayPages(Me.Page) = GrpPage
End If
Me!alerteTotal = "Nombre total de page du groupe INVALIDE"
Else
'Seconde passe
Me!alerteTotal = ""
End If
'affichage du nombre de pages
Me!ctlGrpPages = "Page " & GrpArrayPage(Me.Page) & " / " & GrpArrayPages(Me.Page)
GrpNamePrevious = GrpNameCurrent
End Sub
'************ Code End *************
Mon probleme :
Quand Access formate l'état, il est requis d'effectuer deux passes pour obtenir l'information [nombre total de page du groupe]
Je pensais qu'access était lui aussi obligé de faire deux passes pour obtenir son nombre total de page (153) et que, logiquement, ma fonction serais appellée deux fois.
Hors mon controle d'alerte
alerteTotal maintient l'avertissement et mon nombre total de page reste érroné.
Merci d'avance pour vos réponses

Cerber