[Access] Liste déroulante à cacher si vide

Résolu
Bonjour,

J'ai créé un formulaire avec 4 listes déroulantes liées.
Selon ce qui a été rempli dans la deuxième ou troisième liste, la liste déroulante suivante peut ne rien proposer.
Ma question est de savoir si il est possible de masquer les listes déroulantes qui sont vides.
J'ai essayé de noter le code suivant sur l'événement "Après Mise a Jour" de la deuxième liste :

If Not IsNull([Designation3]) Then
[Designation3].Visible = True
Else
[Designation3].Visible = False
[Designation4].Visible = False
End If

Cela ne fonctionne pas : puisque le champ n'est pas encore rempli, même lorsqu'il y a des propositions dans les listes déroulantes, elles ne s'affichent pas.
Je ne sais pas si tout est clair.
Merci d'avance pour vos conseils.

4 réponses

  1. Modérateur
    Salut,

    une zone de liste peut renvoyer une valeur nulle si rien n'est saisi, mais si elle ne contient rien (aucune valeur source), elle n'a pas la valeur null.

    Dans ton cas, il faut tester le nombre de valeurs qu'elle contient avec listcount.

    If [Designation3].ListCount = 0 then 
        [Designation3].visible = false 
        ...



    A+ Blux
     "Les cons, ça ose tout. 
    C'est même à ça qu'on les reconnait"
    0
    1. Bonjour ETSSieb,

      Pour contourner la difficulté, il est possible de demander un affichage par défaut dans la zone de liste pour éviter un champ vide.
      Des points de suspension devraient faire l'affaire ....

      Cordialement
      0
      1. Bonjour,

        Je viens d'essayer le code qui m'a été proposé : ca ne fonctionne pas :-(
        Je ne sais pas si je l'ai mal inséré.
        Il aurait fallu que j'insère ce code sous la propriété "Après Mise à Jour" de Désignation 2?
        C'est ce que j'ai fait mais sans succès...
        Help Please
        0
        1. Modérateur
          ca ne fonctionne pas :-(
          Quel est le problème ?
          Quand remplis-tu les données à afficher dans les listes 3 et 4 ?

          Colle ton code ici, qu'on voie ce qui peut coincer...
          0
        2. Voilà mon code que j'ai inséré dans Après Màj de Désignation2 et dans Form(Current) :

          If [Designation3].ListCount = 0 Then
          [Designation3].Visible = False
          [Designation4].Visible = False
          Else
          [Designation3].Visible = True
          End If

          Mes listes déroulantes sont liées entre elles. Je les ai créées avec la méthode "simple" par des tables et des requêtes, étant assez novice.
          Le but est de remplir tous les champs dans la mesure du possible, donc s'il reste une proposition, il faut la renseigner.
          Merci d'avance.
          0
        3. Modérateur
          Le code est sans doute à mettre dans l'évènement 'sur changement' et non 'aprèsmaj'...

          Tu n'as toujours pas dit quel était le problème et comment étaient constituées tes listes... (tu dis 'liées entre elles', oui, mais commennt ?)
          0
        4. Mes listes déroulantes sont créées selon cette astuce :
          http://www.info-3000.com/access/listerestreinte/index.php
          C'est comme si dans Désignation on avait le Pays, Désignation2 la Région, Désignation3 le Département et Désignation4 la Ville.

          Je viens d'insérer le code dans la propriété "Sur Changement" de Désignation2 pour que la Désignation3 ne s'affiche que si un choix est proposé.
          Celà ne fonctionne toujours pas : Toutes mes listes déroulantes restent apparentes, même lorsqu'aucune proposition n'existe dans Désignation3 ou Désignation4.

          N'hésite pas à me poser des questions s'il manque des compléments d'information.
          0
        5. Modérateur
          Donc on va faire afficher le nombre de valeurs qui sont proposées pour voir d'où peut venir le problème.

          Rajoute
          msgbox designation3.listcount
          avant le test, pour voir la valeur renvoyée.
          0
      2. ah enfin quelqu'un qui sait faire une liste déroulantes liées.j'ai réussi les 1ere étapes de ce site: http://www.info-3000.com/access/listerestreinte/index.php
        mais le souci je bloque à l'étape 9 je ne comprend le faite de glisser les info. sa serai vraiment gentil de me m'aider car c'est pour mon travail et la je bloque beaucoup
        Merci d'avance c(est URGENT !!
        0