[Microsoft Acces] Probleme activation bouton

Résolu
Bolomey -  
 hydatidose -
Microsoft Acces
J'ai créé une base. Dans cette base, j'ouvre un formulaire "A" qui contient un bouton "B1".
Ce bouton permet l'ouverture d'un formulaire "A1" sur un enregistrement correspondant à un champ de mon formulaire "A".
Dans certain cas, le formulaire "A1" ne contient pas de correspondance.
Comment faire dans le cas ou il n'y a pas d'enregistrement correspondant dans le formulaire "A1" pour que le bouton ne soit pas activé à l'ouverture de l'enregistrement sur le formulaire "A"
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  1. blux Messages postés 19193 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    il faut que tu testes s'il y a une correspondance, et dans la négative, tu masques ton bouton avec du code...

    Ca peut être un test sur changement de "record"...
    3
  2. Bolomey
     
    Merci pour ta réponse mais:
    Peux-tu me donner plus de précisions car je ne suis pas expert en VisualBasic. Merci
    Je voudrais que ce test se fasse à l'ouverture de l'enregistrement dans la formulaire A et, en effet si le test est négatif le bouton reste inactif sur cet enregistrement.
    0
  3. blux Messages postés 19193 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    tout d'abord, il faut cacher le bouton à l'ouverture du formulaire et chaque fois qu'on passe d'un enr. à un autre, pour le rendre visible si la condition est vérifiée...

    Au niveau du formulaire, dans l'évènement "sur ouverture" et "sur activation" il faut mettre un code de ce genre-là :
    Bouton.Visible = False
    Table_B.Visible = False
    If Not IsNull(DLookup("NumeroA", "Table_B", "NumeroA=Sai_Num_A")) Then
        Bouton.Visible = True
    End If
    Où "bouton" est le nom du bouton, et "Table_B" est le nom du sous-formulaire qui va s'afficher quand le bouton sera appuyé...
    La fonction DLookup sert à vérifier si dans la table "Table_B", il existe un enr. dont le champ "NumeroA" est égal à la zone d'affichage du formulaire principal, auquel cas, on renvoie le nombre de "NumeroA"...
    Si la fonction DLookup renvoie une valeur Null, alors on garde le bouton masqué...
    Ensuite, il faut mettre un code sur le bouton, pour que son appui affiche le sous-formulaire contenant les données de "Table_B" en liaison avec l'enregistrement courant de la Table_A (possible de manière automatique avec un sous-formulaire)...
    Table_B.Visible = True
    Où "Table_B" est le nom du ss-form intégré...

    Ca t'irait ?
    0
    1. Bolomey
       
      Merci pour ton aide. Je vais esayer de ré-ecrire la procédure et te tiens au courant de l'évolution.
      0
    2. Bolomey
       
      J'ai donc essayé et voici la procédure que j' ai créé avec tes renseignements.

      Private Sub Form_Current()
      Commande21886.Visible = False
      Formulaire descriptif difference sur enregistrement specifique.Visible = False
      If Not IsNull(DLookup("[Timbre correspondant]", "Formulaire descriptif difference sur enregistrement specifique", "[Timbre correspondant]=[Numéro YT]")) Then
      Commande21886.Visible = True
      End If
      End Sub

      J'ai un problème avec la troisième ligne.
      Erreur compilation
      Attendu : Numéro de ligne ou etiquette ou instruction ou fin d'instruction

      Donc vu mon niveau de connaissance, je suis perdu !!!!
      **************
      Je me permet de te donner plus de détail:
      En fait j'ouvre un formulaire qui se nomme "Formulaire saisie timbres" et qui contient un champ "Numéro YT" ainsi que le bouton "Commande 21886".
      A cet ouverture je veux faire un test dans le champ "Timbre correspondant" d'un autre formulaire qui se nomme "Formulaire descriptif difference sur enregistrement specifique".
      Si ce test "Numéro YT"="Timbre correspondant" est positif le bouton "Commande 21886" est actif sinon il est inactif
      0
    3. blux Messages postés 19193 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Dans ACCESS, quand un nom d'objet contient des espaces, il faut le mettre entre crochets :
      [Formulaire descriptif difference sur enregistrement specifique].Visible = False
      Et partout ailleurs...
      0
    4. Bolomey
       
      J'ai essayé les crochets mais je reste toujours bloqué sur la 3ème ligne en question.
      0
    5. bolomey
       
      J'ai solutionné mon problème en utilisant des Sous Formulaires au lieu de formulaire.
      Je ne pense pas que ce soit le bonne pratique mais cela fonctionne tres bien.
      Un grand merci à Blux qui m'a bien orienté sur le contenu du processus.
      0
  4. hydatidose
     
    Bonjour
    Je voudrais mettre le focus sur un objet d’un sous formulaire lui-même situé dans un sous formulaire !
    J’ai utilisé le code suivant :
    Me.[NomSousFormulaire]![NomSousSousFormulaire].Form![MaZoneDeText].SetFocus
    Mais il ne fonctionne pas
    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. hydatidose
     
    Bonjour
    Je voudrais mettre le focus sur un objet d’un sous formulaire lui-même situé dans un sous formulaire !
    J’ai utilisé le code suivant :
    Me.[NomSousFormulaire]![NomSousSousFormulaire].Form![MaZoneDeText].SetFocus
    Mais il ne fonctionne pas
    Merci
    0
    1. hydatidose
       
      Bonsoir je n’ai toujours pas reçu de propososition de réponse pour ma question !
      Merci de m’aider !
      0
      1. hydatidose > hydatidose
         
        Bonsoir
        j’ai résolu le problème : il faut mettre le focus sur le premier sous formulaire puis sur le sous-sous-formulaire puis sur l’objet en question.
        Forms![Formulaire]![Sous-Formulaire].SetFocus
        Forms![Formulaire]![Sous-Formulaire]![Sous-sous-Formulaire].SetFocus
        Forms![Formulaire]![Sous-Formulaire]![Sous-sous-Formulaire]![Objet].SetFocus
        Je vousdrais acteullement n’imprimer un Etat que si cet objet est rempli !
        Merci
        0