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 ...
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'irrespectmais je revendique le droit à la frénésie
...
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![]()
Ce message vous a été utile ? Si oui, cliquez sur
Mes tutoriels Access
La rubrique Microsoft Access
Cours et tutoriels pour apprendre Access
La FAQ Access
Le Forum Access
Offres d'emploi développeur Access
Tofalu dit :
Alors dans ma base de données j'ai créer une table qui se nomme TB_FONCTIONS qui est construite comme suit :Quel est l'intéret ?
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à :
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
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
)
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 :
Oui moi je le sais ne t'inquiète pas ...J'ose espérer que tu sais avec quelle table tu remplies ta zone de listeje 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'irrespectmais je revendique le droit à la frénésie
...
Là je ne te suis pas, peut être je suis mal réveillé![]()
Ce message vous a été utile ? Si oui, cliquez sur
Mes tutoriels Access
La rubrique Microsoft Access
Cours et tutoriels pour apprendre Access
La FAQ Access
Le Forum Access
Offres d'emploi développeur Access
Tofalu dit :
Alors voici une explication plus simple et moins détaillées ...Là je ne te suis pas, peut être je suis mal réveillé
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'irrespectmais je revendique le droit à la frénésie
...
Oui, et c'est sympa comme approche.Jusque là tu as compris ???![]()
Ce message vous a été utile ? Si oui, cliquez sur
Mes tutoriels Access
La rubrique Microsoft Access
Cours et tutoriels pour apprendre Access
La FAQ Access
Le Forum Access
Offres d'emploi développeur Access
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'irrespectmais je revendique le droit à la frénésie
...
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![]()
Ce message vous a été utile ? Si oui, cliquez sur
Mes tutoriels Access
La rubrique Microsoft Access
Cours et tutoriels pour apprendre Access
La FAQ Access
Le Forum Access
Offres d'emploi développeur Access
Bonjour,Je me mele un peu de votre conversation. A mon avis le début de ton code est bon :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.
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 adapter tes instructions suivant ce test.
E nespérant t'avoir été utile.
A+
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'irrespectmais je revendique le droit à la frénésie
...
Consulte l'aide un peu![]()
Tout simplement
Code : Sélectionner tout - Visualiser dans une fenêtre à part Msgbox maliste.Tag
Ce message vous a été utile ? Si oui, cliquez sur
Mes tutoriels Access
La rubrique Microsoft Access
Cours et tutoriels pour apprendre Access
La FAQ Access
Le Forum Access
Offres d'emploi développeur Access
![]()
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'irrespectmais je revendique le droit à la frénésie
...
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 :
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. ..... ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part str_zone_liste = Screen.ActiveControl.Name.Tag
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'irrespectmais je revendique le droit à la frénésie
...
Inutile de passer par Name ... Screen.ActiveControle.Tag devrait suffireEnvoyé par snoopy69
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
12 tutoriels Access
Merci de ton aide ...
... Je me méfie de l'irrespectmais je revendique le droit à la frénésie
...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager