|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Salut à tous!
J'ai un petit problème avec une macro access. Ce que je voudrais faire est de montrer/faire disparaitre un onglet à la séléction d'une option donnée qui se trouve dans une liste multiple d'un formulaire. Es. (voir dans le fichier en annexe): si je séléctionne dans une liste à choix multiple le valeur "aaa", alor l'onglet Page7 doit apparaitre (même si la valeur est séléctionnée avec d'autres), autrement l'onglet doit être caché. J'ai donc écrit une macro très simple: Code :
Je crois que en effet, la macro lise une fois le code, en prénant la valeur originaire qui se trouve enregistrée dans une table, mais ne s'exécute pas après son changement. Je crois que c'est plus simple de comprendre le tout dans le fichier d'exemple que j'ai mis en annexe... Qu'est-ce que je doit faire? Merci, giopas |
||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : août 2008 Messages : 86 ![]() |
Tente de mettre _Exit() plutôt que _Change()
La macro s'effectuera quand l'utilisateur quitte la liste. Ce n'est pas instantané mais ça a le mérite de marcher (j'ai déjà été confronté à ce problème et c'est maintenant la solution que j'adopte). |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Merci pour la réponse.
J'ai essayé donc avec: Code :
Autrement, je me disais que je pourrais faire tourner la macro deux fois, ainsi que le code lise correctement le nouveau valeur. Comment peux-je faire cela? Merci, giopas |
||
|
|
00
|
|
|
#4 | ||
|
Membre du Club
![]() Inscription : août 2008 Messages : 86 ![]() |
Autre solution que tu pourrais essayer: mettre le focus sur un autre controle, et revenir sur ta liste.
Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Ehmm, où est-ce que je devrais mettre cette macro?
Pardon, mais je suis encore un novice... Qu'est-ce que c'est Multiple_focus? Super merci!!! EDIT: je suis bête, "multiple" est mon champ!! |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : août 2008 Messages : 86 ![]() |
As tu réussi?
Je n'ai pas fait de changements transcendantaux dans ta macro, laisse la où elle est (dans l'espace associé à ton formulaire dans l'éditeur visual basic). Le seul changement que j'ai fait c'est : sortir du contrôle "Multiple", afin que sa nouvelle valeur soit prise en compte (en mettant le focus sur "page7", mais tu peux le mettre sur n'importe quoi d'autre), puis j'ai fait revenir le focus sur "Multiple". Par contre je n'ai pas vraiment testé la fonction donc j'espère qu'elle marche, sinon je laisse à d'autres t'éclairer de leurs lumières... |
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Oui, j'ai essayé et j'obtiens l'erreur:
Code :
Un dernier aide? MERCI!!! |
||
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : août 2008 Messages : 86 ![]() |
Et en enlevant le Me.Multiple.Setfocus? Ca donne quoi?
Tu as une fonction associée à "page7"? Essaye d'envoyer le focus sur un bouton non associé à une fonction si page7 l'est. Je t'avoue que je ne suis pas convaincu que ca marche, et je pense que tu devras peut être te contenter d'un _Exit() ou _LostFocus()... |
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Merci Glherbier!
J'ai essayé d'enlever Me.Multiple.SetFocus et aussi Me.Page7.SetFocus, mais j'obtiens toujours la même erreur. J'ai aussi créé un bouton vide dans le db en exemple et modifié le code comme il suit, mais j'ai toujours la même erreur: Code :
|
||
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Finalement j'ai mis la macro dans LostFocus(), mais je voudrais que le tab apparaisse/soit caché aussi lors de l'ouverture du formulaire.
Toutefois, si je le mets le même code aussi dans Form_Load(), j'obtiens un bug qui dise: Code :
Me.Multiple.Text... = <Impossible de faire référence à une propriété ou de... |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : août 2008 Messages : 86 ![]() |
C'est parce que le bouton est en cours de "création" et donc tu ne peux pas accéder à sa méthode valeur.
D'ailleurs sa valeur est nulle, non? Donc pourquoi t'embêtes tu, si tu mets juste dans Form_Load() cela ne te convient pas? Ce que tu peux faire par contre durant la création d'un formulaire, c'est accéder à la valeur par défaut du contrôle (et la changer): Je ne sais pas si ça t'aide... |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Encore merci.
Non, en effet, le formulaire est une collection de donnés des clients en formulaire unique avec différents tabs pour différentes informations. Dans le premier tab j'ai un filtre multiple (ce dont on parle) qui permet de classer le client par type de service qu'on lui fournit. Pour chaque client je peux avoir donc différents services à lui fournir. Dès lors, dans le cas où je ne fournie pas un tel service "aaa", alors je n'ai pas besoin de montrer le tab "Page7", autrement je veux qu'il apparaisse. En effet, par hazard il se trouve que le premier enregistrement ait besoin de visualiser le tab (donc Me.Page7.Visible = True), mais quand je change à travers une liste déroulante de client, ou bien quand je change service proposé au client, je voudrais que le tab s'affiche ou pas en relation du service fourni. En cas de modification, grâce à toi, je suis arrivé à le faire d'une facon acceptable. Toutefois, je devrais encore lancer la macro ex-novo à chaque changement du client... Comment je peux faire? Merci!! EDIT: je ne comprend pas avec la deuxième solution ce qu'il devrait se passer... EDIT2: j'ai modifié le db d’exemple pour montrer le problème dans le Formulaire3: je voudrais que quand je change d'enregistrement, les tabs s'affichent en suivant la règle définie dans la macro. |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 8 ![]() |
Pardon, est-ce quelqu’un a une idée à proposer sur le sujet (dernier message) ci-dessus?
Merci! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com