ACCESS : Code sur tous les champs d'un form
Résolu
talrashha
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
talrashha Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
talrashha Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voulais savoir s'il était possible d'appliquer un code à tous les champs d'un formulaire dans Access 2003. En fait je suis en train de faire un formulaire de recherche, et lorsque j'appuie sur le bouton "rechercher", il traite la demande. Jusque là tout va bien... mais je voudrais en plus que si l'on appuie (de n'importe où) sur la touche "Entrée", la recherche soit effectuée.
J'ai fait un code valable pour tous les champs, mais maintenant, il faut que je passe derrière chacun pour copier-coller ce morceau de code sur l'evenement "Sur touche appuyée".
N'y a t-il pas un moyen de le faire automatiquement?
Merci d'avance
Je voulais savoir s'il était possible d'appliquer un code à tous les champs d'un formulaire dans Access 2003. En fait je suis en train de faire un formulaire de recherche, et lorsque j'appuie sur le bouton "rechercher", il traite la demande. Jusque là tout va bien... mais je voudrais en plus que si l'on appuie (de n'importe où) sur la touche "Entrée", la recherche soit effectuée.
J'ai fait un code valable pour tous les champs, mais maintenant, il faut que je passe derrière chacun pour copier-coller ce morceau de code sur l'evenement "Sur touche appuyée".
N'y a t-il pas un moyen de le faire automatiquement?
Merci d'avance
A voir également:
- ACCESS : Code sur tous les champs d'un form
- Acer quick access - Forum Logiciels
- Access appdata - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
- Exemple base de données Access de gestion ✓ - Forum Logiciels
- Quick acces ✓ - Forum Windows
7 réponses
Salut,
il faut que tu fasses de ton code une fonction, que tu appeleras dans chaque champ, comme ça, tu n'as qu'une seule fois ton code de recherche et la fonction est appelée partout de la même manière.
De plus, l'évènement 'sur touche appuyée', n'est pas spécifique à la touche 'entrée', mais se produit dès qu'une touche est apppuyée, ça peut te valoir des désagréments futurs...
il faut que tu fasses de ton code une fonction, que tu appeleras dans chaque champ, comme ça, tu n'as qu'une seule fois ton code de recherche et la fonction est appelée partout de la même manière.
De plus, l'évènement 'sur touche appuyée', n'est pas spécifique à la touche 'entrée', mais se produit dès qu'une touche est apppuyée, ça peut te valoir des désagréments futurs...
Salut,
En fait, le code est très simple :
Private sub recherche()
If KeyCode = vbKeyReturn Then
Commande0.SetFocus
Commande0_Click
End If
End sub
En gros, j'appelle juste ce qui est executé lors du clique sur mon bouton. Le truc, c'est que mon formulaire de recherche est composé d'environ 90 champs, et ce que je cherche, c'est une solution pour ne pas appeler ce code derrière chacun de mes champs, je cherche un truc du genre :
For i = 0 to me.[nb_champ]
me![champ_i].OnKeyPressed = recherche
Next
Merci
En fait, le code est très simple :
Private sub recherche()
If KeyCode = vbKeyReturn Then
Commande0.SetFocus
Commande0_Click
End If
End sub
En gros, j'appelle juste ce qui est executé lors du clique sur mon bouton. Le truc, c'est que mon formulaire de recherche est composé d'environ 90 champs, et ce que je cherche, c'est une solution pour ne pas appeler ce code derrière chacun de mes champs, je cherche un truc du genre :
For i = 0 to me.[nb_champ]
me![champ_i].OnKeyPressed = recherche
Next
Merci
Bonjour,
Il me semble que cette syntaxe, une fois adaptée, comblera votre besoin.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[NUM_CLIENT] = " & Str(Me![NOM_A_CHERCHER])
Me.Bookmark = rs.Bookmark
Cordialement
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
Il me semble que cette syntaxe, une fois adaptée, comblera votre besoin.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[NUM_CLIENT] = " & Str(Me![NOM_A_CHERCHER])
Me.Bookmark = rs.Bookmark
Cordialement
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
Bonjour,
Je n'ai pas vraiment saisie le rapport. Je ne travaille actuellement pas sur une requête, je veut seulement executer un code VB sur un evenement bien déterminé (OnKeyDown) de chaque champ de ma page. Rien à voir avec ma base de donnée.
Je n'ai pas de très grandes connaissances en VBA, mais si je devais le faire en C, je créerais un pointeur void* sur une fonction, mais je ne sais pas s'il on peut faire une telle chose avec Access...
Je n'ai pas vraiment saisie le rapport. Je ne travaille actuellement pas sur une requête, je veut seulement executer un code VB sur un evenement bien déterminé (OnKeyDown) de chaque champ de ma page. Rien à voir avec ma base de donnée.
Je n'ai pas de très grandes connaissances en VBA, mais si je devais le faire en C, je créerais un pointeur void* sur une fonction, mais je ne sais pas s'il on peut faire une telle chose avec Access...
je te rejoins, je crois que jean-jacques n'a pas saisi le fond du problème :
mettre à jour par programmation le contenu de l'évènement 'sur click' de plusieurs contrôles d'un form...
je ne sais pas si c'est possible, j'ai cherché dans l'aide (merdique), mais rien trouvé.
peut-être qu'une question chez nos amis de developpez.net ?
mettre à jour par programmation le contenu de l'évènement 'sur click' de plusieurs contrôles d'un form...
je ne sais pas si c'est possible, j'ai cherché dans l'aide (merdique), mais rien trouvé.
peut-être qu'une question chez nos amis de developpez.net ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,
Dont acte, je me suis pris les pieds dans le tapis ....
Je verrais bien une fonction, comme le préconise Blux, mais ... je sèche ...
Je continue à chercher ...
A+
Dont acte, je me suis pris les pieds dans le tapis ....
Je verrais bien une fonction, comme le préconise Blux, mais ... je sèche ...
Je continue à chercher ...
A+
Bonjour,
Bon, et bien, je n'ai rien trouvé et je ne pense pas que cela soit possible, je vais prendre 1h pour faire tous mes copier-coller, et le problème sera réglé. Mais ce serait une fonctionnalité interessante tout de même.
Merci à tous
Bon, et bien, je n'ai rien trouvé et je ne pense pas que cela soit possible, je vais prendre 1h pour faire tous mes copier-coller, et le problème sera réglé. Mais ce serait une fonctionnalité interessante tout de même.
Merci à tous
ayèèè !!!
Voilà du code à coller sur un bouton du formulaire dans lequel sont les contrôles qu'on veut mettre à jour, c'est pour l'évènement 'surclic', mais ça se modifie aisément :
Voilà du code à coller sur un bouton du formulaire dans lequel sont les contrôles qu'on veut mettre à jour, c'est pour l'évènement 'surclic', mais ça se modifie aisément :
Private Sub Commande0_Click() Dim ctl As Control Dim mdl As Module Dim Ret As Integer Dim Nom As String ' Parcours des contrôles du formulaire courant For Each ctl In Me.Controls 'MsgBox ctl.Properties("Name") ' Si le contrôle m'intéresse If ctl.Properties("Name") = "bout1" Then Nom = ctl.Properties("Name").Value ' Recherche s'il n'y a pas déjà du code à l'évènement onclick If Controls(Nom).OnClick = "" Then Set mdl = Me.Module ' On crée la proc 'surclic' Ret = mdl.CreateEventProc("Click", Nom) ' On insère le code mdl.InsertLines Ret + 1, vbTab & "' ceci est une procédure" & vbCrLf & vbTab & "MsgBox ""coucou""" ' On met la propriété 'surclic' à 'procédure évènementielle Me.Controls(Nom).OnClick = "[Event Procedure]" End If End If Next ctl End SubCa devrait répondre à ton souci (s'il n'est pas déjà réglé !)
Oula, magnifique solution, c'est complexe, mais cela permet de répondre à pas mal de besoin. Bien joué. Je viens de tomber sur un autre solution, qui est plus simple mais plus spécifique à ce que je cherchais :
Voir https://access.developpez.com/faq/?page=IHM#EvnmtClavier
En fait, dans les formulaire l'attribut "Aperçu des touches" permet de faire remonter les évenements concernant les touche jusqu'au formulaire, et ainsi, une procédure uniquement sur le formulaire suffit.
Par contre, ta solution offre la possibilité de créer dynamiquement des fonctions, ce qui peut être très puissant :)
Merci pour ces recherches, et à bientôt.
Voir https://access.developpez.com/faq/?page=IHM#EvnmtClavier
En fait, dans les formulaire l'attribut "Aperçu des touches" permet de faire remonter les évenements concernant les touche jusqu'au formulaire, et ainsi, une procédure uniquement sur le formulaire suffit.
Par contre, ta solution offre la possibilité de créer dynamiquement des fonctions, ce qui peut être très puissant :)
Merci pour ces recherches, et à bientôt.