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

IHM Discussion :

Affichage d'un sous formulaire basé sur une requête seulement s'il n'est pas vide. [AC-2013]


Sujet :

IHM

  1. #1
    Membre confirmé
    Avatar de vavavoum74
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Mars 2018
    Messages
    356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Mars 2018
    Messages : 356
    Points : 570
    Points
    570
    Par défaut Affichage d'un sous formulaire basé sur une requête seulement s'il n'est pas vide.
    Bonjour
    Je débute encore

    J'au une série de 6(pour l'instant) requêtes effectuant des tests de cohérence de données sur une table.
    Je compte créer pour chaque requête un sous formulaire montrant les résultats avec une présentation genre tableau feuille de donnée.
    Tout ceci regroupé dans un formulaire "général"
    S'il n'y a pas d'anomalies, le sous formulaire ne contiendra que les en têtes et une ligne vide.
    Je cherche un moyen pour ne pas afficher du tout un sous formulaire si celui ci est vide.

    Merci d'avance pour votre intérêt

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 663
    Points : 14 651
    Points
    14 651
    Par défaut
    bonjour,
    simple mais efficace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim oCtl As Control
    ' Pour rendre invisible les sous-formulaires n'ayant pas de données
    For Each oCtl In Me
        If oCtl.ControlType = 112 Then     ' = contrôle de type sous-formulaire
            If oCtl.Form.Recordset.RecordCount = 0 Then
                oCtl.Form.Visible = False
            Else
                oCtl.Form.Visible = True
            End If
        End If
    Next oCtl
    à mettre dans l'évenement Current du formulaire principal entre Private Sub Form_Current() et End Sub
    On pourrait même en faire une fonction utilisable dans n'importe quel formulaire en créant une fonction dans un module standard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function fCacheSfVide(pform As Form)
    Dim oCtl As Control
    ' Pour rendre invisible les sous-formulaire n'ayant pas de données
    For Each oCtl In pform
        If oCtl.ControlType = 112 Then ' 112 = type de contrôle sous-formulaire
            If oCtl.Form.Recordset.RecordCount = 0 Then
                oCtl.Form.Visible = False
            Else
                oCtl.Form.Visible = True
            End If
        End If
    Next oCtl
     
    End Function
    dans le formulaire (toujours dans l'évènement Current):
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre confirmé
    Avatar de vavavoum74
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Mars 2018
    Messages
    356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Mars 2018
    Messages : 356
    Points : 570
    Points
    570
    Par défaut
    GRAND Merci à toi.

    Je vais voir si j'arrive à m'en sortir avec ça.
    Je pense utiliser la fonction dans le module standard.

    Petite question, la valeur 112, tu la sors d'où?
    Si je comprends bien cela correspond à un sous formulaire vide?

    Merci d'avance pour tes précisions.
    Je reviens vers toi une fois ta solution appliquée.

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 663
    Points : 14 651
    Points
    14 651
    Par défaut
    Petite question, la valeur 112, tu la sors d'où?
    25 ans de pratique d'Access et crois-moi, il y a 25 ans je ne connaissais pas tout ça et je continue d'en apprendre encore.
    Sinon, la touche F1 ou un moteur de recherche donne pas mal d'informations sur les propriétés des objets, exemple avec "controltype vba access", je tombe ici: https://msdn.microsoft.com/fr-fr/VBA...roperty-access
    Il y a 25 ans, il n'y avait pas autant d'informations accessibles sur internet et on devait se débrouiller soit, avec l'aide en ligne (toujours avec la touche F1), soit avec les publications papier payantes.

    Certes, un peu d'expérience est parfois nécessaire, car encore faut-il connaitre les propriétés des ), mais là aussi il faut être curieux.
    Dans VBA quand on tape une commande ou le nom d'un objet suivi d'un point, l'intellisense nous donne accès à toutes les propriétés méthodes ..., il suffit de sélectionner, de double-cliquer et ensuite d'appuyer sur F1 pour accéder à l'information.

    Quand on tape debug.? me.("monsouform").controltype dans le code, cela renvoie 112 dans la fenêtre d'exécution. J'aurai pu mettre aussi acSubform car une constante a toujours une valeur numérique, texte ou autre, exactement comme True qui vaut -1 ou False qui vaut 0
    Si je comprends bien cela correspond à un sous formulaire vide?
    non, c'est le type du contrôle tout simplement
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut,
    Si votre truc est de ne pas afficher un sform s'il ne contient aucune ligne, le plus simple serait peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Current()
        With Me![NomDusForm].Form
            .Visible = (.RecordsetClone.RecordCount > 0)
        End With
    End Sub
    Pour composer le 112, c'est ici.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  6. #6
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Comment comptes-tu présenter tes Sous-Formulaires ?
    Si le sous formulaire n'affiche pas de données, comment envisages-tu la présentation de ton formulaire ?
    Voici, en exemple une petite base de données qui permet de d'afficher le résultat de différentes requêtes grâce au contrôle d'onglets.
    L’intérêt, c'est qu'une petite image dans l'onglet indique s'il y a ou non des données.

    Ça ne reste qu'une idée de présentation ... Pour le reste, les réponses déjà présentées sont suffisamment éloquentes
    Fichiers attachés Fichiers attachés
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  7. #7
    Membre confirmé
    Avatar de vavavoum74
    Homme Profil pro
    Responsable magasin
    Inscrit en
    Mars 2018
    Messages
    356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable magasin

    Informations forums :
    Inscription : Mars 2018
    Messages : 356
    Points : 570
    Points
    570
    Par défaut
    j'ai préféré la solution de tee_grandbois avec la fonction dans un module standard.

    Cela fonctionne très bien.

    Jeannot45 a soulevé une question importante, c'est la présentation..

    J'avais prévu un formulaire simple, avec les sous formulaires l'un en dessous de l'autre.
    L’inconvénient c'est que si un sous formulaire est vide, il n’apparaît pas mais sa place est "attribuée", donc pas terrible au niveau mise en page
    Est il possible de réattribuer dynamiquement une place dans le formulaire de présentation pour que les sous formulaires se suivent ?
    Sinon la solution onglet données par jeannot semble être une alternative.

    Ouvert à vos avis éclairés

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

Discussions similaires

  1. Sous formulaire basé sur une table d'association
    Par nianko dans le forum Access
    Réponses: 3
    Dernier message: 15/10/2013, 16h26
  2. Réponses: 4
    Dernier message: 29/07/2009, 14h19
  3. Réponses: 6
    Dernier message: 08/07/2008, 10h44
  4. Sommer colonnes dans un sous formulaire basé sur une requête
    Par maronnette dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 04/05/2008, 14h11
  5. Sous-Formulaire basé sur une requête nécessitant des paramètes
    Par nicou50 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 02/09/2006, 22h18

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