Menu

[access] champ visible sur condition [Fermé]

Renaissance 2 Messages postés dimanche 3 septembre 2006Date d'inscription 4 septembre 2006 Dernière intervention - 3 sept. 2006 à 15:46 - Dernière réponse : wardan 6 Messages postés samedi 11 novembre 2006Date d'inscription 7 mars 2018 Dernière intervention
- 7 mars 2018 à 18:44
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
Afficher la suite 

68 réponses

Meilleure réponse
Utilisateur anonyme - 4 sept. 2006 à 16:11
6
Merci
Bonjour,

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

Merci Utilisateur anonyme 6

CCM a aidé 24493 internautes ce mois-ci

wardan 6 Messages postés samedi 11 novembre 2006Date d'inscription 7 mars 2018 Dernière intervention - 7 mars 2018 à 18:44
ça marche bien
Merci beaucoup
romstek31 31 Messages postés vendredi 27 avril 2007Date d'inscription 10 décembre 2009 Dernière intervention - 27 avril 2007 à 14:22
2
Merci
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 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 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 31 Messages postés vendredi 27 avril 2007Date d'inscription 10 décembre 2009 Dernière intervention > domik 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 2 mai 2007 à 09:53
merci beaucoup ça marche ;)
Pareil ! Merci :)
Bonjour,
En fait, j'ai le même problème avec le formulaire continu en Access 2003. Est-ce que vous pouvez m'aider?
2
Merci
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
Merci pour la réponse Bien cordialement
Renaissance 2 Messages postés dimanche 3 septembre 2006Date d'inscription 4 septembre 2006 Dernière intervention - 4 sept. 2006 à 16:42
1
Merci
Ok, ça marche.
Merci beaucoup pour la rapidité de la réponse.
Cordialement.
Est-ce que cela marche sur Access 2003 ?
domik 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 29 nov. 2006 à 22:15
1
Merci
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 ?
Utilisateur anonyme - 30 nov. 2006 à 08:18
As-tu mis ce code dans l'évèment current() du formulaire ?
Un code un peu plus "propre"
me.boitexxx.Visible = ( [Champ] = "toto")

Je ne me souviens plus exactement de la syntaxe, mais c'est quelque chose de très proche
domik 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 30 nov. 2006 à 13:55
1
Merci
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
domik 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 30 nov. 2006 à 15:38
1
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
Utilisateur anonyme - 30 nov. 2006 à 16:54
1
Merci
Sous quelle version d'access ?
Mais tu *dois* avoir current()

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

domik 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 30 nov. 2006 à 19:57
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...
domik 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 1 déc. 2006 à 08:47
ok! c'est impec! ca marche comme je le voulais
encore merci HDU
domik 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 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).
Utilisateur anonyme > domik 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 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+
1
Merci
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)
Breizhinours35 12 Messages postés jeudi 10 janvier 2008Date d'inscription 18 janvier 2008 Dernière intervention - 10 janv. 2008 à 18:51
1
Merci
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
Utilisateur anonyme - 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+


Breizhinours35 12 Messages postés jeudi 10 janvier 2008Date d'inscription 18 janvier 2008 Dernière intervention - 11 janv. 2008 à 10:39
1
Merci
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
Utilisateur anonyme - 11 janv. 2008 à 14:27
1
Merci
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+
Breizhinours35 12 Messages postés jeudi 10 janvier 2008Date d'inscription 18 janvier 2008 Dernière intervention - 11 janv. 2008 à 16:47
1
Merci
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
Utilisateur anonyme - 11 janv. 2008 à 17:05
1
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+
Breizhinours35 12 Messages postés jeudi 10 janvier 2008Date d'inscription 18 janvier 2008 Dernière intervention - 11 janv. 2008 à 17:46
1
Merci
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
Utilisateur anonyme - 14 janv. 2008 à 08:53
1
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+
Utilisateur anonyme > françois - 14 août 2008 à 15:13
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+
françois > Utilisateur anonyme - 14 août 2008 à 15:28
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...
Utilisateur anonyme > françois - 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 > Utilisateur anonyme - 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 4 Messages postés lundi 8 novembre 2010Date d'inscription 9 novembre 2010 Dernière intervention - 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
1
Merci
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 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 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 > domik 8 Messages postés mercredi 29 novembre 2006Date d'inscription 4 mars 2008 Dernière intervention - 5 mars 2008 à 10:36
Je te remercie pour ta réponse domik ! ;-)
Utilisateur anonyme - 30 nov. 2006 à 13:59
0
Merci
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...
0
Merci
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
[access] champ visible sur condition - page 2