Après quelques recherches infructueuses, j'en viens à solliciter votre aide! J'ai créer un état avec beaucoup de données (environ 60 pages). Dans ce dernier je liste des opérations triées par secteur et ensuite par semaine. Je passe à la page suivante à chaque nouveau secteur afin de ne jamais avoir 2 secteurs différents sur la même page.
J'aimerais pouvoir numéroter les pages de cet état en fonction de ses secteurs! C'est à dire: recommencer ma numérotation de page à 1 pour chaque nouveau secteur!
Apparemment cela n'est guère possible en utilisant les options et assistants d'Access (??) mais il doit bien y exister un moyen (même tordu), une autre astuce pour y arriver non? Qu'en pensez-vous??
Merci bien et au plaisir de lire vos propositions de développeurs tordus (dans le bon sens du terme bien sur)
funkyjul dit : mais il doit bien y exister un moyen (même tordu), une autre astuce pour y arriver non? Qu'en pensez-vous??
Hum,...Astuce? Tordu? Oui bien sur. Pour ma part ça fait 14 ans que "j'apprends ACCESS" c'est la seule astuce que j'ai trouvée afin de te communiquer :
La source de l'état contient un champ-->secteurs qui est entête de groupe dans la section-->EntêteGroupe0
Avec un pied de group secteurs-->PiedGroupe1 saut de page aprés section.
Une table-->tbl_GroupePage-->2 champs :
__ secteurs avec les mêmes caractéristiques que celles de secteurs de la source de notre état-->Exemple :
Texte-->Taille : 30-->Clef primaire
__PageNuméro-->Numérique-->Entier long
Sur notre état on Click dans la zone pied de page, au formatage-->[Procédure événementielle] Ce qui nous permet de rentrer dans le module de l'état. On efface tout ce qui s'y trouve, 'sauf nos instructions antérieures) et on colle :
Option Compare Database
Option Explicit
Dim DB As Database
Dim GrpPages As Recordset
Function GroupTotalPages()
'Trouvez le nom de groupe.
GrpPages.Seek "=", Me![secteurs]
If Not GrpPages.NoMatch Then
GroupTotalPages = GrpPages![PageNuméro]
End If
End Function
Private Sub EntêteGroupe0_Format(Cancel As Integer, FormatCount As Integer)
' Initialise le numéro de page à 1 lorsqu'un nouveau groupe débute
Page = 1
End Sub
Private Sub Report_Open(Cancel As Integer)
Set DB = DBEngine.Workspaces(0).Databases(0)
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete * From [tbl_GroupePage];"
DoCmd.SetWarnings True
Set GrpPages = DB.OpenRecordset("tbl_GroupePage", DB_OPEN_TABLE)
GrpPages.Index = "PrimaryKey"
End Sub
Private Sub ZonePiedPage_Format(Cancel As Integer, FormatCount As Integer)
'Trouve le groupe au fur et à mesure.
GrpPages.Seek "=", Me![secteurs]
If Not GrpPages.NoMatch Then
'Le groupe est déjà comptabilisé.
If GrpPages![PageNuméro] < Me.Page Then
GrpPages.Edit
GrpPages![PageNuméro] = Me.Page
GrpPages.Update
End If
Else
'C'est une nouvelle page du groupe, Par conséquent on l'ajoute.
GrpPages.AddNew
GrpPages![secteurs] = Me![secteurs]
GrpPages![PageNuméro] = Me.Page
GrpPages.Update
End If
End Sub
Dans le pied de page de notre état trois nouveaux champs :
Premier-->TotalGroup-->Source :
=GroupTotalPages()
Second -->txt_TotalPages-->Source :
=[Pages]
Dernier-->txt_PagesEtGroup-->Source :
=[secteurs] & " - Page " & [Page] & " sur " & [TotalGroup]
Cordialement.
__________________________
Le peu que je sais, c'est à mon ignorance que je le dois. Sacha Guitry