Posez votre question Signaler

[access] champ visible sur condition

Renaissance 2Messages postés 3 septembre 2006Date d'inscription - Dernière réponse le 17 janv. 2012 à 11:47
Bonjour, je suis nouveau sur ce forum et je demande le secours des spécialistes en access. Je crée une base de données de gestion de meubles (tables, formulaires) jusque là pas de pb. Dans un formulaire, j'ai deux champs : un champ "Catégorie" et un champ "Hauteur d'assise". Je souhaite faire apparaître le champ "Hauteur d'assise" quand le champ "Catégorie" contient la valeur "Siège". J'ai écrit le code suivant dans la propriété après MAJ du champ "Catégorie" :
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
Lire la suite 

[access] champ visible sur condition »

66 réponses
Réponse
+4
moins plus
Bonjour,

il faut également mettre ce code sur l'évènement current() du formulaire.

Ajouter un commentaire
Réponse
+1
moins plus
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
domik - 27 avril 2007 à 17:04
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 HDU
Private Sub dateValidPlanMinute_BeforeUpdate(Cancel As Integer)
If Not IsNull(dateValidPlanMinute) Then
            [remarqueNonValid].Visible = True 
      Else 
            [remarqueNonValid].Visible = False
    End If

End Sub
romstek31 - 2 mai 2007 à 09:53
merci beaucoup ça marche ;)
Licha76 - 10 nov. 2011 à 14:15
Pareil ! Merci :)
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,

Ceci devrait t'aider : http://grenier.self-access.com/?post/2007/09/05/Listes-deroulantes-liees

A+
eljos - 20 août 2011 à 16:01
Bonjour,
En fait, j'ai le même problème avec le formulaire continu en Access 2003. Est-ce que vous pouvez m'aider?
Ajouter un commentaire
Réponse
+1
moins plus
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
Renaisance - 5 oct. 2009 à 14:49
Merci pour la réponse Bien cordialement
Ajouter un commentaire
Réponse
+0
moins plus
Ok, ça marche.
Merci beaucoup pour la rapidité de la réponse.
Cordialement.
eljos - 20 août 2011 à 15:59
Est-ce que cela marche sur Access 2003 ?
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
HDU - 30 nov. 2006 à 08:18
As-tu mis ce code dans l'évèment current() du formulaire ?
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Sous quelle version d'access ?
Mais tu *dois* avoir current()

Regardes une copie d'écran : http://cjoint.com/?lEq5IhTDlu

domik - 1 déc. 2006 à 08:47
ok! c'est impec! ca marche comme je le voulais
encore merci HDU
domik - 1 déc. 2006 à 11:16
Encore une p'tite question:
J'ai remarqué que cela fonctionne en copiant uniquement le code sous l'évènement current() du formulaire.
Est il important de copier ce même code dans la propriété après MAJ du champ? (puisse que ca marche sans).
HDU - 4 déc. 2006 à 08:50
Salut,

C'est important si tu changes la valeur du champ en cours, s'affichera pas si tu le mets à jour...

a+
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
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
HDU - 11 janv. 2008 à 10:25
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+


Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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+
HDU - 14 août 2008 à 15:40
Merci,

Oui il faudrait tester les possibilités, et c'est pas facile et c'est pas propre.

Tu as essayé la première solution ? (diminuer au maximum les étiquettes et mettre leur propriété 'autoextensible' à oui)

A+
françois - 28 août 2008 à 14:17
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...
grignottine - 8 nov. 2010 à 10:01
Bonjour,
J'aimerais beaucoup utiliser cette possibilité de "remonter" un texte lorsque celui-ci est vide. J'ai inséré la condition if isnull(nomtexte) then / montexte.visible= true, qui marche bien), mais quand j'ajoute la ligne montexte.Top = (ou ="") après, Access ne comprend pas... Doit me manquer quelque chose...
Si vous pouviez me donner un petit coup de pouce...
Merci par avance !

Sophie
Ajouter un commentaire
Réponse
+0
moins plus
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
domik - 4 mars 2008 à 21:31
[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
Mii - 5 mars 2008 à 10:36
Je te remercie pour ta réponse domik ! ;-)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « [access] champ visible sur condition » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook
[access] champ visible sur condition - page 2