Faire apparaitre un bouton selon valeur

enzo29 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
 Enzo29 -
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

  1. Jean_Jacques Messages postés 1045 Date d'inscription   Statut Membre Dernière intervention   112
     
    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
  2. Enzo29
     
    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
    1. Jean_Jacques Messages postés 1045 Date d'inscription   Statut Membre Dernière intervention   112
       
      Bonjour Enzo29,

      Une chose à vérifier....
      Le zéro est une valeur numérique. Par convention il ne doit pas comporter de " ".
      0
  3. Jean_Jacques Messages postés 1045 Date d'inscription   Statut Membre Dernière intervention   112
     
    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
  4. Enzo29
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Jean_Jacques Messages postés 1045 Date d'inscription   Statut Membre Dernière intervention   112
     
    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
  7. Enzo29
     
    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
    1. Jean_Jacques
       
      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
  8. Enzo29
     
    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
    1. Jean_Jacques Messages postés 1045 Date d'inscription   Statut Membre Dernière intervention   112
       
      Quelle est la valeur du champ calculé sur lequel vous testez ?
      0
  9. Enzo29
     
    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
    1. Jean_Jacques Messages postés 1045 Date d'inscription   Statut Membre Dernière intervention   112
       
      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
  10. Enzo29
     
    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
    1. Jean_Jacques Messages postés 1045 Date d'inscription   Statut Membre Dernière intervention   112
       
      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
  11. Enzo29
     
    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
    1. Jean_Jacques Messages postés 1045 Date d'inscription   Statut Membre Dernière intervention   112
       
      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
  12. Enzo29
     
    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
    1. Jean_Jacques
       
      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
  13. Enzo29
     
    Merci Jean-Jacques,

    Merci pour le temps passé.
    0