Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/09/2011, 14h51   #1
Invité régulier
 
Inscription : juin 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 39
Points : 9
Points : 9
Par défaut Evènement sur plusieurs contrôles

Bonjour tout le monde,

Alors je pense que ma question a déjà été traité quelque part sur le site mais je n'arrive malheureusement pas à trouver, je vous prie de m'excuser par avance.


Est-il possible d'affecter un évènement (par exemple Sur Click) à plusieurs contrôle d'un formulaire sans pour autant déclarer un par un les évènements ?

J'arrive par exemple à affecter une valeur à chaque controls à l'aide d'un For Each mais j'aimerais que sur le clic un msgbox apparaisse, comment procéder ? Est-ce possible ?

J'aimerais éviter la solution de déclarer une fonction click pour chaque control ^^


Merci d'avance,
Cordialement.
Fabious est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 16h11   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Bonjour,

Avec un for each tu peux également déclarer une fonction sur événement Sur-click de chaque controle.

Exemple :

Code :
1
2
3
4
5
For Each ctrl as me.controls
     if .... then
        ctrl.onclik = "=MafonctionMsg()"
     endif
Next
Tu peux également passer par une classe mais pour un seul formulaire et une seule procédure c'est une perte de temps à mon avis.

Regarde le tuto sur la classe MELA c'est ce qui se pratique mais avec une action différente suivant les événéments et les controles.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/09/2011, 16h15   #3
Invité régulier
 
Inscription : juin 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 39
Points : 9
Points : 9
Merci beaucoup pour ta réponse,


Je me sens un peu idiot car en fait c'est très simple... et ca faisait réellement un moment que je bloquais dessus!
Quand on a la tête dans le code on ne voit pas toujours les choses simples ^^


Merci encore et merci pour le conseil du tuto MELA
Fabious est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 12h00   #4
Invité régulier
 
Inscription : juin 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 39
Points : 9
Points : 9
Bonjour,

Je me permet de remonter le topic car j'ai une question,
Peut-on passer un argument à l'évènement ?

Par exemple sur le clique d'un contrôle, j'aimerais pouvoir envoyer à la fonction le nom du contrôle... je ne trouve pas la syntaxe.

Par exemple :
Code :
1
2
3
4
5
6
 
Me.ctl.OnGotFocus = "=test(" & ctl.Name& ")"
 
Private Function test(ByVal ctlName As String)
MsgBox ctlName
End Function
Mais ca ne marche pas :/

Merci d'avance !
Fabious est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 14h39   #5
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Bonjour Fabious,

Tu as juste oublié des guillemets Solution :

Code :
1
2
3
4
5
Me.ctl.OnGotFocus = "=test('" & ctl.Name& "')"
 
Private Function test(ByVal ctlName As String)
MsgBox ctlName
End Function
le paramètre ctlName de ta fonction test(ctlName) étant une string, il doit être entre guillements.comme la propriété OnGotFocus est aussi une string qui se trouve déjà entre guillemets doubles, il faut mettre des guillemets simples ou doubler les guillemets doubles.
Code :
1
2
3
4
5
Me.ctl.OnGotFocus = "=test(""" & ctl.Name& """)"
 
Private Function test(ByVal ctlName As String)
MsgBox ctlName
End Function
devrait donc fonctionner aussi
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 15h41   #6
Invité régulier
 
Inscription : juin 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 39
Points : 9
Points : 9
Ah merci beaucoup !

Ca me rassure de savoir que je n'étais pas très loin de la solution ^^

Encore merci
Fabious est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h41.


 
 
 
 
Partenaires

Hébergement Web