Me pour un controle

Thantel Messages postés 28 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 février 2008 - 19 janv. 2008 à 18:00
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 - 24 janv. 2008 à 10:42
Je cherche le code semblable au "Me" mais au lieu de référer au formulaire, qui réfère au controle qui contient le code.

Merci

12 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 janv. 2008 à 18:34
Bonjour aussi  ;-)
Tu parles de contrôle utilisateur = UserControl ?
Si tu es dans le contrôle utilisateur, Me se remplace par UserControl

Si tu parles d'une manière général (avec les composants classiques) et que tu es dans le code d'une forme, tu peux utiliser la méthode With qui permet de simplifier la syntaxe, exemple :
   With monLabel
      .Caption = "Vive Codes-Sources !"
      .Left = 100
   End With

Sinon, reprécise ta question qui n'est pas claire, précise bien l'environnement avec un simple exemple.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Thantel Messages postés 28 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 février 2008
19 janv. 2008 à 18:52
Désolé de ne pas être plus clair que cela, j'ai une certaine difficulté a expliquer mes problèmes

Admettons:

Private Sub CmdAllo_Click()
text1.text  = <strike>Me</strike>.name
End Sub

Ce que je souhaite faire est que dans mon text1 il soit marqué "CmdAllo"
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
19 janv. 2008 à 19:31
salut,
ok mais à partir de qui?...
où se trouve cmdallo et text1, sur ta form? un usercontrol?

ou par "me" tu entends simplement le contrôle de la procédure en cours?

c'est à dire récupérer "cmdallo" dès qu'il y a un évènement du commandbutton "cmdallo" comme çà pourrait être de la textbox ou de tout contrôle posé sur une Form?
çà par contre, ce n'est pas possible!

++
0
Thantel Messages postés 28 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 février 2008
19 janv. 2008 à 19:44
sur la même form


Mais si j'ai bien suivit donc il serait impossible lorsque j'appui sur le bouton de récupérer le nom de ce même bouton

d'accord merci.
0

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

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
19 janv. 2008 à 21:28
Essaie ceci

Private Sub Command1_Click()
    Text1 = ActiveControl.Name  'affichera Command1
End Sub

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Thantel Messages postés 28 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 février 2008
19 janv. 2008 à 21:56
Good, sa marche, merci MPi
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
23 janv. 2008 à 22:52
L'astuce de MPi fonctionne bien mais c'est un peu ... bête ! En fait, c'est ton problème qui l'est, pas sa réponse !
Dans la sub Command1_Click(), le contrôle "cliqué" est obligatoirement "Command1" ! Dans Command2_Click(), ce sera "Command2" !

Inutile de passer par un appel à l'objet Me.ActiveControl pour obtenir sa propriété Name, alors qu'une constante String est suffisante ?

D'autant plus que l'asutce de MPi risque de ne plus fonctionner si tu te trouves dans l'EVT MouseMove d'un contrôle par exemple !
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 janv. 2008 à 23:20
"ce n'est pas possible!" est la réponse, parce qu'un moment ce genre de récup pose toujours problème et pas forcément facile à déboguer sur les gros projets...

surtout que le but est (en réalité) juste de faire un copier/coller dans chaque procédure, pour éviter de taper un nom de contrôle

tant que çà marche on est ok, mais après çà sera "çà marche pas" en question sur le forum, sans aucune explication, et là, la réponse sera "faut tout re-saisir"... on aura les gentilles grimaces ^^
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
24 janv. 2008 à 01:20
Trève de grimaces...
Tout à fait d'accord avec vous sur le fait que ça ne sert à rien, ce genre de code...
Ça ne sert à rien de savoir sur quel bouton on a cliqué, sachant qu'on met le code dans l'événement de ce même bouton... mais bon ... ActiveControl existe bel et bien tout de même... à quoi ça sert ? bah euh hummm ben on sait jamais...

Plus sérieusement, je pense me souvenir que ça pouvait être utile avec une MDI et des Childs... mais c'est loin dans ma mémoire et je n'ai pas vraiment l'intention de retracer tout ça dans mon fouillis de codes ... à moins que ça ne soit vital...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Thantel Messages postés 28 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 février 2008
24 janv. 2008 à 01:32
Actuellement, ce code m'évite de changer le nom de l'objet à chaque copier-coller du code, économie de temps considérable.  
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 janv. 2008 à 01:38
non MPi ce n'est pas vital ^^
Kristof_Koder a bien résumé la situation, c'est une bonne réponse mais par rapport à une question fondée au final sur une mauvaise conception. à moyen terme çà posera des problèmes.
et on a maintenant la suite (supposéee et évidente), c'est bel et bien juste pour pouvoir faire des copier/coller

gain de temps sur le coup oui...
m'enfin, le jeu en vaut-il la chandelle
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
24 janv. 2008 à 10:42
MPi < ActiveControl sert effectivement par moment (lorsque tu es dans une procédure dans un module et que tu veux connaitre le controle actif sur une form quelconque par exemple)
Mais comme le dit PCPT, la ca ne sert qu'à éviter des modif à chaque copier/coller ... et cela pourrait poser des soucis.
tout ce que je voulais dire, c'est que Thantel doit bien être conscient des limites de la solution que tu lui a fourni (solution tout à fait correcte au demeurant !) et des problèmes qu'elle pourrait lui générer par la suite comme le soulignait aussi PCPT.
Libre à lui de l'employer ou pas ...
A noter aussi que cette technique va ralentir le code : appel aux propriétés de deux objets en tout : l'objet Me et l'objet ActiveControl.
On se bat sur des centième de seconde, certe, mais les eaux des petites rivières finissent toutes dans un océan !
0
Rejoignez-nous