[Microsoft Acces] Probleme activation bouton

Résolu/Fermé
Bolomey - 12 janv. 2007 à 08:12
 hydatidose - 7 oct. 2009 à 22:47
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"
A voir également:

5 réponses

blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
12 janv. 2007 à 09:12
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
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
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
12 janv. 2007 à 15:07
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
Merci pour ton aide. Je vais esayer de ré-ecrire la procédure et te tiens au courant de l'évolution.
0
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
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
13 janv. 2007 à 15:06
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
J'ai essayé les crochets mais je reste toujours bloqué sur la 3ème ligne en question.
0
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
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

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

Posez votre question
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
Bonsoir je n’ai toujours pas reçu de propososition de réponse pour ma question !
Merci de m’aider !
0
hydatidose > hydatidose
7 oct. 2009 à 22:47
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