[access] champ visible sur condition
wardan Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
If [Catégorie] = "Siège" Then
[Hauteur d'assise].Visible = True
Else
[Hauteur d'assise].Visible = False
End If
Cela ne fonctionne pas car ça s'applique à tous les enregistrements de la table et ça ne reste pas en mémoire sur l'enregistrement concerné.
Comment faire ? Je vous remercie pour votre aide précieuse
Configuration: Windows XP Access 2003
26 réponses
- 1
- 2
Problème rencontré : l’affichage conditionnel du champ « Hauteur d’assise » dépend de la valeur du champ « Catégorie » dans un formulaire Access 2003. Selon la meilleure réponse, il faut déclencher la logique dans l’événement Form_Current afin que la visibilité du champ soit recalculée à chaque enregistrement actif. Le code recommandé consiste à évaluer la valeur de Catégorie et à définir Me!Hauteur_d_assise.Visible en fonction; cette logique est placée dans l’événement Form_Current du formulaire et peut aussi être reprise dans l’After Update. En pratique, sur Access 2003, l’état d’affichage dépend du formulaire et peut nécessiter un déclencheur supplémentaire comme After Update, afin que l’interface reflète correctement l’enregistrement actif sans dépendre du mode d’affichage.
-
Bonjour,
il faut également mettre ce code sur l'évènement current() du formulaire.
-
jé le mm probleme jé mi mon code ds current et je ve ke si une date n'est pas saisi alor mon champ est activé sinon non et ça marche pa :s
Private Sub Form_Current() If [dateValidPlanMinute] = Not Null Then [remarqueNonValid].Enabled = True Else [remarqueNonValid].Enabled = False End If End Sub-
Private Sub Form_Current() If Not IsNull(dateValidPlanMinute) Then [remarqueNonValid].Visible = True Else [remarqueNonValid].Visible = False End If End Sub
il faut également mettre ce code sur l'évènement BeforeUpdate(Cancel As Integer) comme le disait HDUPrivate Sub dateValidPlanMinute_BeforeUpdate(Cancel As Integer) If Not IsNull(dateValidPlanMinute) Then [remarqueNonValid].Visible = True Else [remarqueNonValid].Visible = False End If End Sub -
-
-
Bonjour,
Ceci devrait t'aider : https://grenier.self-access.com/?post/2007/09/05/Listes-deroulantes-liees
A+ -
pardon je corrige le code :
If nom_de_la_case_à_cocher = True Then 'si la case est cochée
Me!champs_à_cacher.Visible = True 'on affiche la zone texte1
Else
Me!champs_à_cacher.Visible = False
End If -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Ok, ça marche.
Merci beaucoup pour la rapidité de la réponse.
Cordialement. -
bonjour,
je profite de cette discussion car j'ai moi aussi un peu le même probleme:
si la valeur du champ =" toto", je veux faire apparaitre ou disparaitre une boitexxx qui entoure ou n'entoure pas une partie d'un texte dans mon formulaire
j'ai utiliser un code identique:
me.boitexxx.Visible = False
If [Champ] = "toto" Then
me.boitexxx.Visible = True
else
me.boitexxx.Visible = False
End If
pour voir la boite xxx apparaitre ou disparaitre, je dois me positionner sur le champ qui contient "toto" sinon rien ne se passe ...
mon formulaire est en mode continue, si je change d'enregistrement sans etre positionné sur le champ je n'ai pas l'effet espéré.
avez vous une idée ? -
je ne suis pas tres experimenté...
j'ai fais:
dans proprietés ,l'onget évenement ,
apres MAJ [Procédure événementielle] et la j'ai recopié le code.
peux tu me dire ce qu'est : l'évèment current() du formulaire
merci -
Dans la liste en haut à droite tout ce que je vois c'est:
After update, beforeupdate, change, click ...etc
je ne vois pas ce fameux "évènement current"
de plus je suis deja sous l'objet form . C'est la que le code est copié.
fallait il le copier ailleur avant ? comment?
peux tu me donner un peu + d'explications pour un novice...
merci -
Sous quelle version d'access ?
Mais tu *dois* avoir current()
Regardes une copie d'écran : https://www.cjoint.com/?lEq5IhTDlu
-
version access 2003
j'ai qd meme reussi à voir "current" pffff dur dur..;
je n'avais pas vu le choix "form" qui était enfoui parmi tout mes champs ,étiquettes et autres....
maintenant il ne me reste plus qu'à essayer ce que je veux faire
je te remercie pour ton aide jusqu'ici (si si)
je te tiens au courant... -
-
-
-
slt tt le monde, je suis nouveau sur le forum
j'ai un prob avec les combobox en fait je voudrai afficher une liste selon une autre liste, plus precisement:
en choisissant un element d'une combo les elements de la deuxieme combo doivent changer j'ai essaye avec une requete mais ca ne marche pas. et ceci dans le meme formulaire (access2003) -
Bonjour, trois ans plus tard....
je suis tout nouveau sous acces mais super motivé!
je travail sous acces pour de la gestion de matériel. la base à déjà été faote mais pas par moi.
je voudrai rajouter à la base ceci : quand sur un formulaire je coche une "case à cocher", il m'affiche un texte. si la case n'est pas coché il ne l'affiche pas.
Autre condition : Sur mon formulaire principal, j'ai tous les textes qui sont affichés, histoire que je m'y retourve. Quand je coche danc ce formulaire la case correspondante, je veux que àa s'affiche sur un état créé exprès.
J'ai déjà créé ma table et mon formulaire ansi que mon état mais là je suis un peu dépassé par les requêtes et relations... j'ai besoin d'un petit coup de main....
Merci à vous pour vos réponses-
Bonjour,
Dans ton formulaire, en mode création, fais un clic droit sur la case à cocher qui doit déclencher l'affichage ou le non affichage du texte, fais "créer code évènement", générateur de code s'il te le demande. Normalement, access te propose d'affecter du code à l'évènement 'clic' (zone en haut à droite) de la case à cocher (en haut à gauche).
C'est ce que tu veux --> faire quelque chose quand l'utilisateur cliquera sur la case à cocher.
Tu veux faire afficher ou faire disparaitre du texte. Où se trouve ce texte ? Dans une zone de texte ? Une étiquette ?
Quoiqu'il en soit, tu connais le nom du controle qui contient le texte. On dit qu'il s'appelle "texte1".
Donc, dans l'évènement clic de ta case à cocher ("cocher1" par exemple), tu mets :if texte1=true then 'si la case est cochée me!texte1.visible=true 'on affiche la zone texte1 else me!texte1.visible=false end if
Pour ton autre question, pas tout pigé ! Apparemment tu as des cases à cocher sur un formulaire et tu veux que ces cases apparaissent sur un état ?
Si c'est le cas, tes cases correspondent-elles à tes champs d'une (ou plusieurs tables) ?
J'attends ta réponse pour pouvoir te guider.
A+
-
-
Salut et merci pour ces premiers infos... j'y voi splus claire
le soucis c'est que, voici ce que j'iamerai faire dans l'idéal :
j'ai un formulaire qui fait parti d'une base déjà construite.
Sur ce formulaire j'ai des cases à cocher avec le titre des cases par exemple :
chkbox 1 : repas
chkbox 2 : hotel
chkbox3 : déplacement
Je veux choisir dans ce formulaire ce que je veux qu'il s'affiche mais sur un état corrrespondant et non pas sur le formulaire. Le texte décrit sur l'état est plus complet que sur le formulaire. du style "prévoir 5 repas"
Avec le code que tu m'a donné, cela rend visible sur le formulaire. et plus encore, cela le rend en fait invisible et il ne réaparrai plus ensuite. Je souhaiterai que cela fasse aussi l'effet inverse.
encore mieux, j'aimerai que si je coche la case 2, les repas s'affiche en haut de l'état et non pas au milieu.
merci pour ton aide -
Re,
A mon avis, il y a déjà un souci de conception...
Pour l'effet inverse comme tu dis, le code que je t'ai donné doit fonctionner. Evidemment sur le formulaire.
Dis nous ce que tu as comme tables et à quoi sert la base de données, bref, ce que tu veux qu'elle gère.
A+ -
heu... ce serai un peu long à décrire car ce n'est pas moi qui ai conçu la base. il y a 50 tables et autant de formulaires et de requêtes si ça se trouve....
J'explique :
La base a été crée pour gérer de la location de matériel. En gros, gérer un fichier client, gérer le stoc du matériel, éditer des devis et factures....
Je veux faire un devis. J'ouvre donc un formulaire sur lequel je rentre mon client, mes produits... et j'édite le devis (état)
tout cela fonctionne bien mais je veux en plus de ça, dans mon formulaire rajouter ces fameuses petites cases qui font que je les coches ou non. pluis j'appuye sur un bouton et ça me sort l'état correspondant avec le texte de la case 1 et 3 qui s'affiche parce que j'ai coché la case 1 et 3 et le texte de la case 2 qui ne s'affiche pas parce que je n'ai pas coché la case 2 pour ce devis précis.
bon ça à l'air peut être un peu compliqué comme ça mais ça me serai très utile...
merci -
Ce que je te propose c'est de m'envoyer ta base de données zippée.
Si tu as peur pour tes données (je ne suis un truand lol), fais en une copie et vides les tables "sensibles".
Je verrai mieux de "visu" car là c'est flou !
Mon mail est dans mon profil.
Par contre, je ne pourrai regarder ça avant lundi après-midi, là je pars en week-end.
A+ -
J'apprécie sincèrement ton aide mais je ne peux t'envoyer la base de donnée car en fait elle fait partie d'un logiciel avec code d'acces? donc si je te l'envoie tu ne pourra pas l'ouvrir....
Dis moi si je suis sur la bonne piste :
dans la table de mon formulaire devis j'ai "nom, prénom... (du client) ; AN8, PT4... (qui correspondent au produit, tarif...) ....
j'ai rajouté dans cette table plusieurs colonnes case à cocher que j'ai nomé VCHEK1, VCHEK2, VCHEK3, VCHEK4
Dans mon formulaire j'ai fait "ajouter un champ existant" et j'ai glissé à partir de ma table VCHEK1, VCHEK2...
puis je créé un état et c'est dans cet état que dois s'afficher le texte correspondant à la case VCHEK1 si je l'ai cohché. et c'est là que je n'arrive pas.... de plus je souhaiterai que si je choche la case 1 et 3, le texte correspondant dans l'état s'affcihe l'un à la suite de l'autre, sans un gros trou au milieu où il y arai le txt 2
voilà voilà et encore merci -
Bonjour,
A première vue, si je m'en tiens exactement à ce que tu me dis, tu as une table devis avec des codes produits dedans ?
Si c'est le cas, ça sent l'usine à gaz.
Mais bon, tu n'as peut-être pas le temps de refaire une base de A à Z.
Dans ton état, tu peux, comme dans ton formulaire, créer du code pour afficher / masquer des objets (contrôles).
Dans l'état en mode création, fais un clic droit puis créer le code évènement, générateur de code.
Tu choisis l'évènement open() et là tu mets le code qui va bien, du genre :
if vchek2=true then
me.texte3.visible=true
.....
else
me.texte3.visible=false
.....
end if
A adapter bien sûr.
Pour le "gros trou au milieu" comme tu dis, je ne vois pas trop comme ça si réellement tu as une seule table devis. L'utilisation de sous-états était toute indiquée.
Sinon, mais c'est franchement crade, tu peux utiliser avec le code si dessus le positionnement de tes objets.
Donc, si ton texte3 n'est pas visible, il faut "remonter" ton texte4, avec ses propriétés :
if vchek2=true then
me.texte3.visible=true
me.texte4.top=
....
Mais c'est crade...
Donnes moi la structure de tes tables, il y a peut-être plus simple.
A+-
désolé de t'embêter encore avec ça... HDU
pour le trou au mileu de mon état je te réexplique :
J'ai un formulaire [Form_verso] avec des cases à cocher. 5 pour faire simple : C1, C2, C3, C4, C5 qui affichent 5 étiquettes placées les une en dessous des autres (E1, E2, E3, E4, E5) sur un état [Et_verso]
si je ne coche pas C2 et C3, j'ai un gros trou au milieu de mon état. Comment faire alors pour que E4 (qui est visible car C4 coché ) prenne la place de E2 (qui n'est pas visible, donc C2 pas cochée)?
y a -t-il un moyen?
Je ne connais pas du tout les sous état. c'est ce qu'il y aurai de mieux pour moi? tu peux m'en dire un peu plus?
merci -
Re,
Désolé mais je suis au travail et suis en congés ce soir, alors pas mal de choses à boucler.
Soit tu réduit au maximum tes étiquettes et les colles les unes sous les autres, elles seront alors quasiment à la même hauteur (en les réduisant, elles feront ~ 1 mm de hauteur).
Tu mets leur propriété 'autoextensible' à oui, est-ce que ça fonctionne (pas testé) ?
Soit, tu les laisses, et dans le code que tu as mis pour rendre visible/invisible tes étiquettes, tu joue sur les propriétés pour les afficher + ou - haut dans l'état (ME.E2.Top=7,55 par exemple).
A+
-
merci de prendre du temps pour me répondre DHU et ce malgré tes vacances!!! bonnes vacances à toi alors!!!
Pour ton code dans ta deuxième solution, je vois pas trop ou l'insérer. mon code est le suivant :
If Forms!P!verso_pretstaion.Form!CB_repas = -1 Then
Date_repas.Visible = True
Else
Date_repas.Visible = False
End If
le pb aussi c'est que 7,55 c'est bien si il n'y a que la ligné précédente d'inactivée... mais dans le cas ou ce serai les 4 lignes précédentes?
Il faut que j'arrive à dire :
si case 1 inactive alors étiquette 2 prend la place de étiquette 1
et si case 1 active, case 2 inactive, case 3 inactive, case 4 active, étiquette 4 prend la place de étiquette 2...
mais plus facile à dire qu'a faire... -
-
Salut HDU, désolé pour cette absence... ha les vacances...
j'ai essayé ta solution de coller les étiquettes les une aux autres et de mettre autoextensible...
plusieurs choses : on ne peux pas faire autoextensible pour les étiquettes mais uniquement pour les zones de texte... ce qui est gênant dans mon cas...
D'autre part j'ai essayé avec des zones de texte mais ça ne solutione pas le soucis... Je me retrouve avec 2 zones de texte quasiement l'une sur l'autre si je valide les deux...
je suis alors remonté un peu plus haut dans le forum et j'ai relu un de tes postes qui disait ceçi :
""Donc, si ton texte3 n'est pas visible, il faut "remonter" ton texte4, avec ses propriétés :
if vchek2=true then
me.texte3.visible=true
me.texte4.top= ""
Je voulai savoir ou mettre cette propriété pour que j'essaye.
D'autre part, le "top" va t-il remonter le texte jusqu'au texte précédent? t'es sur qu'il ne vas pas le remonter en haut de la page tout simplement?
Pour finir j'ai aussi vu un message ou tu me disais que le sous état était tout indiqué... je ne connais pas du tout les sous états. est-ce difficile de s'y mettre?
merci une nouvelle fois...
-
-
Bonjour,
j'ai moi aussi un problème en voulant rendre un champ visible sur condition.
Le champ reste visible quelle que soit la condition.
Voici mon code, en espérant que quelqu'un puisse m'aider.
Private Sub Form_Current()
If EMPLOI = "Chômeur" Then
nivrequis.Visible = False
Else
nivrequis.Visible = True
End If
End Sub
Private Sub nivrequis_BeforeUpdate(Cancel As Integer)
If EMPLOI = "Chômeur" Then
nivrequis.Visible = False
Else
nivrequis.Visible = True
End If
End Sub-
[access] champ visible sur condition
Bonjour,
essayes ceci :
Private Sub Form_Current()
If [EMPLOI]= "Chômeur" Then
me.nivrequis.Visible = False
Else
me.nivrequis.Visible = True
End If
End Sub
Private Sub nivrequis_BeforeUpdate(Cancel As Integer)
If [EMPLOI] = "Chômeur" Then
me.nivrequis.Visible = False
Else
me.nivrequis.Visible = True
End If
End Sub
-
-
Quand tu es dans VBA (où tu as mis le code), choisi l'objet form (ou formulaire) dans la liste en haut à gauche, choisis l'évènement current dans la liste en haut à droite. Recopies le code...
-
Bonjour,
j'ai un probleme similaire mais sous word.
J'ai créé un formulaires et j'aimerai que lorsque la personne remplisse celui-ci mes champs case a cocher puissent être interactives.
je m'explique à la question: matière du produit il y a le choix entre Acier ou inox et j'aimerai que la personne qui rempli la case ne puisse que mettre une seul croix. (soit l'un soit l'autre et non les deux)
Merci
- 1
- 2