none
Rendre invisible une entête de groupe d'état en fonction des détails entre la fin du groupe et son entête. RRS feed

  • Question

  • Bonjour,

    Sur un état, j'ai un groupe dont l'entête du groupe est configurée pour s'afficher sur plusieurs pages au cas ou les détails seraient répartis sur plusieurs page et un pied de groupe comportant des totaux.

    Si tous les détails sont affichés sur la 1ere page et qu'il ne reste plus de place sur cette page pour afficher le pied de groupe(Totaux), celui-ci s'affiche sur une seconde page.

    Dans ce cas, j'ai également l'affichage de mon entête de groupe comme montré sur l'image.

    Mon souhait serait de faire disparaitre cette entête lorsque aucun détail ne figure sur la page avant les totaux.

    Cela est-il possible?


    vendredi 21 janvier 2022 20:10

Réponses

  • Bonjour,

    Voici une solution que j'ai trouvée.
    Pour la conception et les besoins de mon état, j'ai utilisé un groupe.
    Ce groupe est unique. Il ne sera imprimé qu'une seule fois.
    L'entête de ce groupe à la propriété 'Répéter Section' sur Oui.

    En VBA, j'ai sélectionné les événements EntêteGroupe_Format, Détail_Format et PiedGroupe_Format.
    A l'ouverture de l'état, ces événements sont déclenchés dans la suite logique de la construction de l'état, page après page pour toutes les pages et ensuite à l'affichage de chaque page.
    Si mon Pied de groupe est précédé des détails, j'ai la suite logique des événements Détail_Format suivi de PiedGroupe_Format.
    Si mon Pied de groupe se retrouve seul sur une page sans détail, j'ai la suite des événements  EntêteGroupe_Format puis PiedGroupe_Format. Dans cette condition, je mémorise la page liée à cette succession.
    Lorsque je fais défiler les pages, si dans l'événement PiedGroupe, je trouve la page mémorisée correspondant à la page en cours, je rends invisible l'entête de groupe.

    Dim NoEnteteTotauxPage As Integer

    Dim DetailScan As Boolean Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer) 'Signale le passage du formatage dans la section détail DetailScan = True End Sub Private Sub EntêteGroupe_Format(Cancel As Integer, FormatCount As Integer) 'N'affiche pas l'indication du haut de page du groupe sans détail avant les totaux If NoEnteteTotauxPage = Me.Page Then Me.EntêteGroupe.Visible = False Else Me.EntêteGroupe.Visible = True End If 'Annule la signalisation du passage du formatage dans la section détail DetailScan = False End Sub Private Sub PiedGroupe_Format(Cancel As Integer, FormatCount As Integer) 'Vérifie si on est passé dans la section détail avant le pied de groupe If DetailScan = True Then 'Annule la signalisation du passage du formatage dans la section détail DetailScan = False Else 'Signale la page ou les totaux seront affichés sans détail afin de ne pas afficher l'entête de page NoEnteteTotauxPage = Me.Page End If End Sub










    jeudi 27 janvier 2022 14:03

Toutes les réponses

  • Bonjour,

    La réponse dans ce thread pourrait peut-être vous aider:
    Omit page header on last page of Access report?


    Cordialement,
    Nina

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    lundi 24 janvier 2022 08:36
    Modérateur
  • Bonjour,

    Voici une solution que j'ai trouvée.
    Pour la conception et les besoins de mon état, j'ai utilisé un groupe.
    Ce groupe est unique. Il ne sera imprimé qu'une seule fois.
    L'entête de ce groupe à la propriété 'Répéter Section' sur Oui.

    En VBA, j'ai sélectionné les événements EntêteGroupe_Format, Détail_Format et PiedGroupe_Format.
    A l'ouverture de l'état, ces événements sont déclenchés dans la suite logique de la construction de l'état, page après page pour toutes les pages et ensuite à l'affichage de chaque page.
    Si mon Pied de groupe est précédé des détails, j'ai la suite logique des événements Détail_Format suivi de PiedGroupe_Format.
    Si mon Pied de groupe se retrouve seul sur une page sans détail, j'ai la suite des événements  EntêteGroupe_Format puis PiedGroupe_Format. Dans cette condition, je mémorise la page liée à cette succession.
    Lorsque je fais défiler les pages, si dans l'événement PiedGroupe, je trouve la page mémorisée correspondant à la page en cours, je rends invisible l'entête de groupe.

    Dim NoEnteteTotauxPage As Integer

    Dim DetailScan As Boolean Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer) 'Signale le passage du formatage dans la section détail DetailScan = True End Sub Private Sub EntêteGroupe_Format(Cancel As Integer, FormatCount As Integer) 'N'affiche pas l'indication du haut de page du groupe sans détail avant les totaux If NoEnteteTotauxPage = Me.Page Then Me.EntêteGroupe.Visible = False Else Me.EntêteGroupe.Visible = True End If 'Annule la signalisation du passage du formatage dans la section détail DetailScan = False End Sub Private Sub PiedGroupe_Format(Cancel As Integer, FormatCount As Integer) 'Vérifie si on est passé dans la section détail avant le pied de groupe If DetailScan = True Then 'Annule la signalisation du passage du formatage dans la section détail DetailScan = False Else 'Signale la page ou les totaux seront affichés sans détail afin de ne pas afficher l'entête de page NoEnteteTotauxPage = Me.Page End If End Sub










    jeudi 27 janvier 2022 14:03