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 :

Zone de liste déroulante: Récupérer la table source


Sujet :

IHM

  1. #1
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut Zone de liste déroulante: Récupérer la table source
    Bonjour ...

    Est-il possible de récupérer en VBA le nom de la table source d'une zone de liste déroulante et de stoquer son nom dans une variable ???

    Merci de vos réponses ...
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Quel est l'intéret ? Une table est un élément défini par le développeur, c'est à dire toi. J'ose espérer que tu sais avec quelle table tu remplies ta zone de liste

  3. #3
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Tofalu dit :

    Quel est l'intéret ?
    Alors dans ma base de données j'ai créer une table qui se nomme TB_FONCTIONS qui est construite comme suit :

    TB_FONCTIONS :
    pk_fonction ( Clé primaire --> Numéro auto )
    nom_fonction
    fk_departement_fonction ( Clé étrangère de la table TB_DEPARTEMENTS)
    fk_description_fonction ( Clé étrangère de la table TB_DESCRIPTIONS )

    Dans ma table j'aurai comme données cela : ( les "" représentent un champ null )

    pk_fonction / nom_fonction / fk_departement_fonction / fk_description_fonction
    1 / F1 / 23 / ""
    2 / F2 / "" / 75
    3 / F3 / 34 / ""
    etc jusqu'à F12 ( qui correspond au nom des touches de fonctions du clavier )

    Sur la base de cette table j'ai créer un formulaire pour que l'utilisateur puisse personnaliser ce qu'il attribue comme texte aux touches de fonction ( Exemple : Appui sur F1, le champ fk_destination d'un de mes formulaire se remplis avec le nom de département : Etampage )

    Mais ATTENTION : Il peut attribuer soit 1 département ou soit 1 description il ne peut pas attribuer les 2 à une touche ( ce qui est normal ).

    Donc si je veux savoir comment récupérer mon nom de table d'après une zone de liste déroulante c'est pour savoir si je dois prendre ma fk_description_fonction ( car je dois remplir un champ description dans un formulaire ) ou si je dois prendre ma fk_departement_fonction ( car je dois remplir un champ provenance ou destination dans un de mes formulaire )

    Si je m'explique mieux j'ai ce code là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    'Parcours de la table
    While rst_table.EOF = False
     
        'Test si la valeur de str_touche est dans la table
        If str_touche = rst_table("nom_touche_fonction") Then
            'Test si le champ fk_departement_description de la table TB_FONCTIONS est null
     
            If IsNull(rst_table("fk_departement_fonction")) And (rst_table("fk_description_fonction")) Then
                'Si oui on affiche que la touche n'est pas attribuée
                MsgBox "La touche n'est pas attribuée"
            'Sinon
            Else
     
                'On affiche le texte voulu dans le champ où il y a le focus qui est en cours
                Screen.ActiveControl.Value = (rst_table("fk_departement_fonction") Or (rst_table("fk_description_fonction")))
     
            End If
        End If
     
        'Passage à l'enregistrement suivant
        rst_table.MoveNext
     
    Wend
    ce code ne marche pas ... ( je ne l'ai pas copié en entier mais le problème est à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Screen.ActiveControl.Value = (rst_table("fk_departement_fonction") Or (rst_table("fk_description_fonction")))
    )

    Donc si je veux savoir la table source c'est pour faire mes tests autrement c'est à dire que je résonne comme suit :

    1) Regarder la table source de la zone de liste déroulante

    2.A) Si c'est TB_DESCRIPTION alors je dois choisir dans ma table TB_FONCTIONS seulement les lignes qui ont le champ fk_description_fonction de rempli et je peux continuer mes tests pour afficher le texte voulu dans ma zone de liste déroulante.

    2.B) Si c'est TB_DEPARTEMENTS alors je dois choisir dans ma table TB_FONCTIONS seulement les lignes qui ont le champ fk_departement_fonction de rempli et je peux continuer mes tests pour afficher le texte voulu dans ma zone de liste déroulante.

    En fait si je fais cela comme ça c'est parce que je fais une fonction et j'essaie de la construire de telle façon que je puisse la réutiliser sur tous mes formulaires en l'automatisant au maximum pour faciliter l'utilisation à un utilisateur de la base de données.

    Tofalu dit :

    J'ose espérer que tu sais avec quelle table tu remplies ta zone de liste
    Oui moi je le sais ne t'inquiète pas ... je ne suis pas si débutante que ça ... ... c'est la programmation VBA qui ne le sait pas c'est pour cela que j'aimerais récupérer le nom de ma table ...

    J'espère que mon explication est précise car je ne peux pas faire mieux ... j'ai détaillé au maximum ...

    Alors as-tu une idée pour faire cela ???

    Merci de ton aide ...
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Là je ne te suis pas, peut être je suis mal réveillé

  5. #5
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Tofalu dit :

    Là je ne te suis pas, peut être je suis mal réveillé
    Alors voici une explication plus simple et moins détaillées ...

    Je suis en train de développer une base de données qui gère des mouvements de matière au sein d'une entreprise.

    Le but de la base de donnée que je suis en train de développez à pour règle principal de simplifier le plus de choses possible plus les utilisateurs c'est à dire que moins ils utiliseront la souris mieux cela sera ... jusque là on est d'accord ??? (la plupart des utilisateurs ne sont pas des "bêtes" en information c'est à dire que moins ils en font mieux c'est ) ...

    J'ai créer environs une 20aine de formulaire est dans le 95% de ces formulaires il y a un champ destination (ou provenance) et description. Donc pour éviter que les utilisateur doivent toujours rentrer les mêmes données j'ai créer une fonction qui permet de simplifier tout cela car les utilisateurs auront juste à remplir le formulaire 1 fois pour attribuer un texte à une touche de fonction ( F1 - F12 ) et quand il devront par exemple mettre comme provenance Etampage ils n'auront qu'a perssé sur la touche par exemple F2 pour que le nom vienne marqué dans le champ.

    Jusque là tu as compris ???
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Jusque là tu as compris ???
    Oui, et c'est sympa comme approche.

  7. #7
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Voici la suite : ....

    Maintenant le problème c'est que :

    Ma table TB_FONCTIONS est construite comme suit :

    TB_FONCTIONS :
    pk_fonction ( Clé primaire --> Numéro auto )
    nom_fonction
    fk_departement_fonction ( Clé étrangère de la table TB_DEPARTEMENTS)
    fk_description_fonction ( Clé étrangère de la table TB_DESCRIPTIONS )

    Comme on peut le voir j'ai 2 clés étrangères dans ma table qui, comme je l'ai dit avant, ne peuvent pas être les deux rempli sur une même ligne car on ne peut pas stoquer à la fois un endroit et une decription pour la même touche.

    Donc par conséquant ce que j'aimerais faire c'est :

    1 ) Récupérer le nom de la zone de liste déroulante sur laquelle je suis positionné dans mon formulaire avec le focus

    But : Savoir si c'est une description ou alors une destination ( ou provenance ) pour que je puisse sélectionner les enregistrements dans ma table que je veux. C'est à dire que si par exemple je me trouve dans un champ dans lequel je dois mettre ma provenance et que dans ma table j'ai ceci :

    pk_fonction / nom_fonction / fk_departement_fonction / fk_description_fonction
    1................./ ..........F1......../................. 2 .................... / .................." " ............./
    2................./ ..........F2......../................. " " ................. / .................. 23 ............/
    3................./ ..........F3......../................. 67................. / .................." " ............./
    4................./ ..........F4......../................. " " ............... / ................... 127........../
    5................./ ..........F5......../.................56 ............... / ................... " "............/
    etc jusqu'à F12 ...

    Je dois sélectionner seulement les lignes où le champ fk_departement_fonction n'est pas null ... ...

    et si je veux savoir la table sur laquelle est base ma zone de liste déroulante c'est pour automatiser ma recherche ... c'est à dire que je n'aurai qu'à préciser que si la table est TB_DEPARTEMENTS il faut prendre le champ fk_departement_fonction et que si ma table est TB_DESCRIPTION il faut prendre le champ fk_description_fonction.

    Tu vois mieux le truc maintenant ?
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  8. #8
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Oki

    Une solution dans la propriété Remarque de la zone de liste tu inscris quel champ lire en cas d'appuie sur une touche.

    Cette propriété est aussi accessible en VBA via le nom Tag.

    Elle sert justement à ça, stocker des infos un peu loufoque

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 147
    Points : 172
    Points
    172
    Par défaut
    Bonjour,Je me mele un peu de votre conversation. A mon avis le début de ton code est bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      'Test si la valeur de str_touche est dans la table 
        If str_touche = rst_table("nom_touche_fonction") Then 
            'Test si le champ fk_departement_description de la table TB_FONCTIONS est null 
     
            If IsNull(rst_table("fk_departement_fonction")) And (rst_table("fk_description_fonction")) Then 
                'Si oui on affiche que la touche n'est pas attribuée 
                MsgBox "La touche n'est pas attribuée"
    Tu peux donc continuer pour déterminer si c'est fk_departement_fonction qui est null alors tes données viennent de la table TB_DESCRPTION est inversement.
    Tu peux donc adapter tes instructions suivant ce test.
    E nespérant t'avoir été utile.
    A+

  10. #10
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    En réponse à Tofalu :

    Ben tu vois on c'est quand même compris ...

    Alors ouais cela pourrait être sympa ... en gros je mets le nom de la table source de mes zones de liste déroulante et je la récupère ... c'est pas bête ...

    Tu peux juste m'indiquer comment je peux récupérer cette valeur ??? Aurais-tu un petit exemple tout bête sous la main ???

    Merci en tout cas Tofalu pour ton aide ...

    En réponse à niclalex :

    A ouais je n'y avais pas pensé ... c'est aussi une bonne idée ... ouais ouais j'ai de nouveau pensé trop compliqué ... mais ouais ce n'était pas tout faux comme je pensais ... je vais essayer les deux méthodes pour voir la différence ...

    Merci pour votre aide ...

    [HORS SUJET ] ce n'était pas une discussion privée entre tofalu et moi mais il m'a dit qu'il devait être fatigué alors je l'ai un peu réveillé [/HORS SUJET ]
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  11. #11
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Consulte l'aide un peu

    Tout simplement

  12. #12
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut


    Et ouais je ne l'utilise pas assez souvent celle-ci ... mais j'ai quand même utilisé la FAQ a fond avant de poster ... ... j'y ait tout de même passé 30 minutes et j'ai chercher aussi sur Google ( sans faire de pub au passage )

    Aller alors en tout cas merci les gens ...

    Je vais me stopper ici pour la journée ... je vais renter sur une bonne nouvelle ...

    A +++ et mille mercis à vous ...
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  13. #13
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Bonjour j'ai une petite question ...

    Alors voici ce que j'ai fait pour récupérer comme me l'a dit Tofalu la remarque qu j'ai sur ma zone de liste déroulante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_zone_liste = Screen.ActiveControl.Name.Tag
    En fait il faut qu je récupère le commentaire de la zone de liste déroulante sur laquelle il y a mon focus c'est pour cela que j'ai : Screen. ..... ....

    Le problème c'est que ma ligne ne marche pas et je n'ai rien trouvé dans l'aide ...

    Avez-vous une solution ???

    Merci pour votre aide ...
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  14. #14
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Citation Envoyé par snoopy69
    Bonjour j'ai une petite question ...

    Alors voici ce que j'ai fait pour récupérer comme me l'a dit Tofalu la remarque qu j'ai sur ma zone de liste déroulante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_zone_liste = Screen.ActiveControl.Name.Tag
    En fait il faut qu je récupère le commentaire de la zone de liste déroulante sur laquelle il y a mon focus c'est pour cela que j'ai : Screen. ..... ....

    Le problème c'est que ma ligne ne marche pas et je n'ai rien trouvé dans l'aide ...

    Avez-vous une solution ???

    Merci pour votre aide ...
    Inutile de passer par Name ... Screen.ActiveControle.Tag devrait suffire
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  15. #15
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Merci de ton aide ...
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/06/2020, 12h44
  2. [AC-2007] Deux zones de liste déroulante dans une table
    Par Junior75002 dans le forum Access
    Réponses: 3
    Dernier message: 04/01/2011, 00h56
  3. [AC-2003] Enregistrer dans une table la sélection de 3 zones de listes déroulantes
    Par cedill23 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/07/2009, 21h20
  4. Réponses: 3
    Dernier message: 22/03/2007, 18h35
  5. Réponses: 6
    Dernier message: 31/03/2006, 11h04

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