Faire apparaitre un bouton selon valeur

Fermé
enzo29 Messages postés 9 Date d'inscription mercredi 23 juillet 2008 Statut Membre Dernière intervention 27 novembre 2011 - Modifié par irongege le 30/11/2011 à 17:09
 Enzo29 - 2 déc. 2011 à 11:35
Bonjour,
Débutant sur Access, mais me débrouillant plus bien, je reste toutefois coincé sur un malheureux problème que je cherche à résoudre depuis plus de 2 heures.
Je m'explique rapidement:
Sur un formulaire (Affichage Unique) je cherche la solution de faire apparaitre un Bouton [Enregistrer] uniquement si le champ [ecrat] = 0. Pour Info, Le champ [ecart] est la somme de plusieurs champs dans ce même formulaire.
La valeur de [Enregistrer] est à: "Non" dans la propriété du bouton à Visible.

Voici mon code:

Private Sub Form_Current()
Me.[Enregistrer].Visible = False
If [ecart] = "0" Then
Me.[Enregistrer].Visible = True
Else
Me.[Enregistrer].Visible = False
End If
End Sub

Mais çà ne fonctionne pas.


Si une personne à une solution, je suis preneur. Un grand merci à l'avance !!!!


12 réponses

Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
28 nov. 2011 à 15:01
Bonjour enzo29,
La syntaxe ci-après, est à placer dans l'événement sur ouverture du formulaire.
Je vous laisse le soin de l'adapter à votre contexte.

Private Sub Form_Open(Cancel As Integer)
If <Champ_1>.Value = "" Then
<Champ_1>.Visible = False
End If
End Sub

Cordialement
0
Bonjour et merci pour le code.

J'ai bien essayer mais rien y Fait.
Si je reprends le code via mes données ca fait:

Evenement sur Ouverture du Formulaire

If DiffCaisse.Value = "0" Then
DiffCaisse.Visible = False
End If

Le bouton "Enregister" n'apparait toujours pas si DiffCaisse est a 0.

Je coince toujours.
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
29 nov. 2011 à 14:07
Bonjour Enzo29,

Une chose à vérifier....
Le zéro est une valeur numérique. Par convention il ne doit pas comporter de " ".
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
29 nov. 2011 à 14:37
Le champ qui contient la valeur testée, ne doit pas avoir le même nom que le bouton.
Diffcaisse est bien le nom du champ numérique contenant zéro ?
Jean-J.
0
Bonjour Jean-Jacques,
Merci pour le code, mais toujours rien... Cà ne fonctionne pas :-(

Voici mon code actuel:

If DiffCaisse.Value = 0 Then
DiffCaisse.Visible = False
End If

Pour Information:
"DiffCaisse" correspond au champs numérique dans lequel doit apparaitre la valeur 0,00€ champs de Format Euro
"Enregistrer" correspond au Bouton qui lui doit apparaitre des que DiffCaisse affiche 0,00€

Est-Il possible que cela vient du Format Euro du champs "DiffCaisse"?
Pour Indo, "DiffCaisse" est la somme de plusieurs champs.
Si ca peut aider.
Je galère et j'ai essayer plusieurs possibilité mais rien y fait.

Encore Merci pour tous.

Enzo
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
29 nov. 2011 à 19:16
Bonsoir Enzo29,
J'ai procédé à un essai. Avec ce code le bouton nommé : "Bouton_essai" , est masqué lorsque le numéro de l'article est à "1".

Private Sub Form_Load()
If Réf_Article = "1" Then
Bouton_essai.Visible = False
End If

End Sub
0
Bonjour Jacques-Jeean,

Je viens de lire a l'instant ton message.
Je me suis en pressé de coder sur mon p'tit programme mais rien. Rien ne bouge;
Voici mon code:

Private Sub Form_Load()
If DiffCaisse = "1" Then
Enregistrer.Visible = False
End If

End Sub

Exactemement ton code.... Boooo:-((( Gros Binsssss
J'y comprends rien là car ca me semblait plutôt logic.

Merci quand même !!!!

Enzo
0
Jean_Jacques
30 nov. 2011 à 17:09
Enzo29,
Le code que j'ai transmis teste un numéro d'enregistrement, pas une valeur numérique.....
Il faut supprimer les " ".
Ce qui suit se lit : Si la valeur DiffCaisse n'est pas zéro, le bouton est masqué.

Private Sub Form_Load()
If DiffCaisse <> 0 Then
Enregistrer.Visible = False
End If

End Sub
0
Bonjour et Encore merci de m'aider,

Mais malheureusement tjs pareil..... Grrrr !!!!

Private Sub Form_Load()
If DiffCaisse <> 0 Then
Enregistrer.Visible = False
End If

Exactement ce que j'ai fait, avec le bouton "Enregisrtrer" à Visible NON.
J'ai essayé toutes les Solutions même avec essai: If DiffCaisse <> 1 Then
Mais rien n'y fait le bouton n'apparait toujours pas.

En tout cas, merci et grand merci pour tous.
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
1 déc. 2011 à 05:28
Quelle est la valeur du champ calculé sur lequel vous testez ?
0
Bonjour Jean-Jacques,

Merci de vous intéresser à mon cas, dirons-nous particulier !!!

Afin de répondre à votre dernier message :

DiffCaisse est un champ de format Euros .

La source de DiffCaisse est la somme de plusieurs autres champs. Le calcul fonctionne parfaitement.

Sources contrôle de DiffCaisse = [Total Caisse]-[Fond de Caisse]+[Equilibrage]

Le but étant de trouvé 0,00 € au Champs DiffCaisse afin que l'utilisateur puisse enregistrer ce contrôle de caisse et d'imprimer l'état correspondant,( d'où faire apparaitre ce fameux bouton « Enregistrer ») à 0. Ce qui permet à l'utilisateur trouver l'erreur de caisse sans valider à tout bout de champs avec un différence.

Le champs DiffCaisse est Visible mais non actif et verrouillé ce qui reste logique.

Pour expliquer le but de ce petit programme, C'est effectué un état de caisse chaque jour en fin de journée pour le personnel de l'entreprise.

Je parcours plein de forum, mais je bloque sur ce petit soucis.

Espérant que ces informations pourront vous emporter une solution à mon problème,

Je vous remercie par avance,

Merci encore.

Enzo
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
1 déc. 2011 à 11:30
Bonjour,

J'avais compris à l'envers ....
Dans votre cas, la syntaxe standard est :
If condition_1 Then
result_1

ElseIf condition_2 Then
result_2
...
ElseIf condition_n Then
result_n

Else
result_else

End If
**********
- Ceci devrait fonctionner .....

Private Sub Form_Load()
If DiffCaisse = 0 Then
Enregistrer.Visible
Else

Enregistrer.Visible=false
End If

Une question pour info
Quelle est votre version de Access ?
0
Bonjour,
Effectivement, vous ne pouvez être dans ma tête et c'est vrai que définir ce que l'on veut demande plus d'explication, je conviens ;
J'ai donc essayer votre code et j'ai eu un petit problème de syntaxe que je pense avoir résolue.

Votre code :
Private Sub Form_Load()
If DiffCaisse = 0 Then
Enregistrer.Visible
Else

Enregistrer.Visible=false
End If

Erreur de syntaxe sur la ligne : Enregistrer.Visible

Donc corrigé par :
Private Sub Form_Load()
If DiffCaisse = 0 Then
Enregistrer.Visible = True (Si je ne me trompe pas)
Else

Enregistrer.Visible=false
End If

Mais malheureusement toujours pareil sauf que si je positionne "Enregistrer" sur Visible Oui il n'apparait plus. Par contre, Si le montant de DiffCaisse à 0, Le bouton « Enregistrer » lui n'apparait toujours pas.
Je pense que nous ne sommes est pas loin du but. Aurions nous oublié un truc mais je ne vois pas quoi...

Je suis sous Access 2003.

Merci beaucoup Jean-Jacques
Enzo
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
1 déc. 2011 à 13:39
Enzo29,
False/True, c'est bien vu de votre part....
Maintenant pour renverser la bascule logique Oui/Non, il faut remplacer : = 0 par <> 0

J'y crois

Par ailleurs, je ne dispose que de la version ACCESS 2000 (Elle me suffit, mais ne me permettrait pas de consulter votre BDD).
0
Bonjour, et Merci,
Malheureusement ca ne fonctionne toujours pas.
Bouton = Visible à Non le bouton « Enregistrer » pas visible
Bouton = Visible à Oui le bouton « Enregistrer » pas visible
Montant de DiffCaisse a 0,00€ - le bouton « Enregistrer » pas visible
Montant de DiffCaisse > ou < à 0,00€ - Le bouton « Enregistrer » pas visible
Je comprends plus rien. Est-ce le format Euro qui bloquerai ??

Voici mon Code :
Private Sub Form_Load()

If DiffCaisse <> 0 Then
Enregistrer.Visible = True
Else

Enregistrer.Visible = False
End If



End Sub

Jean-Jacques, je vous remercie en tout du temps que vous passer à m'aider et je vous en remercie grandement.
Si cela ne fonctionne pas, cest pas grave.
Grand Merci en tout cas

Enzo29
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
1 déc. 2011 à 17:34
Désolé d'avoir échoué,
Vous devriez tout de même créer un nouveau post sur CCM en précisant que vous
avez la version Access 2003. Il y a forcément quelqu'un qui a trouvé la solution.

Cordialement
0
Bonsoir Jean-Jacques,
Avant je vous remercie encore milles fois du temps que vous avez passé à m'aider.
Par contre, j'ai découvert une petite anomalie dans le code qui je pense pourrais peut-être vous mettre le puce à l'oreille. Un truc Bizarre !!! Je m'en suis aperçu tout en modifiant les contrôles, et code.
Je m'en explique :
Mon Champ « DiffCaisse » est un champ qui reçoit la somme d'autres Champs comme j'ai pu vous parler auparavant.
Dans la logique des choses, vous en conviendrez, le champ « DiffCiasse » ne peut-être modifier par l'utilisateur :
Donc les propriétés de « DiffCaisse » Visible= Oui / Actif = Non / Vérouillé = Oui, ce qui permet de rendre ce contrôle comme Visu par l'utilisateur.
Pour l'instant tout va bien, mais depuis que j'ai inséré le code ci-dessous sur le formulaire, j'ai remarqué que le Champ « DiffCaisse » se dévérouille et s'active une fois que la Valeur de « DiffCiasse » est égale a 0 :
Je ne l'avais pas remarqué avant.... Bugggg

Code :
Private Sub Form_Load()
If DiffCaisse <> 0 Then
Enregistrer.Visible = True
Else
Enregistrer.Visible = False
End If


Je tenais à vous signaler cette nouvelle information, si cette anomalie vous mets la puce à l'oreille.
D'avance, merci de votre patience.
Enzo
0
Votre explication me paraît plausible. Le verrouillage/déverrouillage des champs se fait par
Enable et lock.
Voici un site qui traite le sujet, mais en anglais

http://www.noblesoftwaresolutions.com/Tips_And_Tricks/Access/EnableandLockFormFields.htm
0
Merci Jean-Jacques,

Merci pour le temps passé.
0