IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

rendre invisible l'entête de chaque état d'une liste d'états [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre du Club Avatar de ninon
    Femme Profil pro
    Programmeur
    Inscrit en
    Décembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Décembre 2004
    Messages : 68
    Points : 68
    Points
    68
    Par défaut rendre invisible l'entête de chaque état d'une liste d'états
    Bonjour,
    Je cherche à obtenir in fine une copie d'écran de tous mes états.
    Pour que chacun tienne sur l'écran, il me faut rendre invisible le header au chargement de chacun des états.

    À priori l'emploi de section(1).visible = false fonctionne, mais seulement quand je le mets dans la procédure Sub Report_Load() de chaque état.

    Mais en fait je veux programmer le rendu invisible du pageheader seulement dans la routine qui ouvre tous les états, les uns après les autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Do While Not rs.EOF
            selObjet = rs!NomReq.Value
            OuvreReport (selObjet)
            rs.MoveNext
        Loop
    selobjet représente le nom de chacun de mes états, pris un par un.

    Ma procédure OuvreReport (piquée sur developpez.net) pourrait inclure le masquage de l'entête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub OuvreReport(monReport As String)
     
        If DoesRptExist(monReport) Then
            DoCmd.OpenReport monReport, acViewReport
            Me.Section(1).Visible = False       ' make the header non visible
        Else
            MsgBox "L'état " & monReport & " n'existe pas encore"
        End If
     
    End Sub
    Mais ça coince au niveau du Me. , rien d'étonnant, je ne sais pas comment identifier l'état courant.

    Merci pour vos lumières !

    Ninon

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Pourquoi ne pas insérer ces états comme sous-états dans un état principal ?

    Sinon, si vous souhaitez masquer le header de chaque état quand vous les ouvrez avec la routine en question,
    alors il faut lui indiquer dans le code que les états ont été ouverts depuis cette routine à l'aide du dernier argument (OpenArgs) de la méthode OpenReport :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub OuvreReport(monReport As String)
     
        If DoesRptExist(monReport) Then
            DoCmd.OpenReport monReport, acViewReport, , , , "Routine principale"
        Else
            MsgBox "L'état " & monReport & " n'existe pas encore"
        End If
     
    End Sub
    Ensuite, effectuer le test sur l'argument OpenArgs au moment du chargement des états :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Report_Load()
        If Me.OpenArgs = "Routine principale" Then
            Me.Section(1).Visible = False
        End If
    End Sub

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre du Club Avatar de ninon
    Femme Profil pro
    Programmeur
    Inscrit en
    Décembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Décembre 2004
    Messages : 68
    Points : 68
    Points
    68
    Par défaut
    Oui, c'est une solution élégante, je vous remercie, mais elle m'oblige à modifier tous mes états.

    S'il n'y a pas d'autre solution, je vais l'appliquer.

    Merci !

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut Utiliser le mode Design des états
    Le souci c'est qu'on ne peut pas modifier la structure d'un état après l'avoir chargé en mode normal.

    Pour cela, il faut utiliser le mode design, puis enregistrer les modifications avant de le réouvrir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub DisplayPageHeader(monReport As String, EstVisible As Boolean)
         If DoesRptExist(monReport) Then
            DoCmd.OpenReport monReport, acViewDesign ' ouverture de l'état en mode création
            Reports(monReport).Section(acPageHeader).visible = EstVisible ' paramétrage de la propriété visible de la section en-tête de page
            DoCmd.Close acReport, monReport, acSaveYes ' sauvegarde des changements puis fermeture de l'état
        Else
            MsgBox "L'état " & monReport & " n'existe pas encore"
        End If
    End Sub
    Pour rendre visible/invisible l'entête de page des états en une fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub DisplayPagesHeaders(EstVisible As Boolean)
        Do While Not rs.EOF
            selObjet = rs!NomReq.Value
            DisplayPageHeader(selObjet, EstVisible)
            rs.MoveNext
        Loop
    End sub
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre du Club Avatar de ninon
    Femme Profil pro
    Programmeur
    Inscrit en
    Décembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Décembre 2004
    Messages : 68
    Points : 68
    Points
    68
    Par défaut
    Tout compte fait j'ai opté pour la première solution, la plus élégante dans ce cas de figure.
    D'autant plus que j'avais encore des cas particuliers : pas d'entête d'état, mais un entête de page (section(3), voire pas de détail, donc tout dans l'entête de page (pour des graphiques, par exemple).
    Il me fallait donc traiter chaque état au cas par cas.

    Merci beaucoup pour les conseils !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. soustraire chaque occurance d'une liste d'une seconde liste
    Par sloshy dans le forum Général Python
    Réponses: 5
    Dernier message: 14/09/2009, 21h57
  2. convertir chaque element d'une liste
    Par fripette dans le forum Bioinformatique
    Réponses: 15
    Dernier message: 10/08/2007, 11h11
  3. FAQ : Comment alterner les couleurs de chaque élément d'une liste déroulante ?
    Par yoghisan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 04/06/2007, 14h15
  4. Réponses: 5
    Dernier message: 09/05/2006, 15h57
  5. Rendre invisible un champs dans un état
    Par AnestheziE dans le forum Access
    Réponses: 3
    Dernier message: 12/09/2005, 20h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo