Utilite de Me

Signaler
Messages postés
25
Date d'inscription
mardi 18 août 2009
Statut
Membre
Dernière intervention
13 novembre 2012
-
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
-
Bonjour

Voila plusieurs fois que je vois l'utilisation de Me devant des instruction
par exemple
Me.ComboBox1.visible=True
ou
Me.Texte1.value=""

Je désireria savoir quelle est l'utilitée de ce Me

merci d'avance

5 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Me désigne l'instance en cours de la classe de base où se trouve le code en question.

Dans la majorité des cas ou tu rencontrera cette instruction, Me désignera l'instance en cours d'utilisation de la Form contenant ce code.

Pour un contrôle ComboBox1 poser sur la Form1, dans le code de la Form1, tu fais référence au combo en utilisant Me.ComboBox1
(Il va de soit que ce code étant exécuté, une instance de Form1 existe déjà en mémoire, Me désignant cette instance)
Me remplace Form1 pour tout le code situé dans Form1

Depuis une autre form ou un module, tu devrais écrire Form1.ComboBox1 (Ce qui aurait pour conséquence si il n'existe pas d'instance de Form1 en mémoire d'en créer automatique une nouvelle auparavant, ou dit autrement, d'ouvrir ton écran Form1 avant d'accéder à son contrôle ComboBox1)

Pas certain d'avoir été très clair


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Bonjour,

Me perment de faire référence à la classe courante. Par exemple si votre classe contient une sub Public Sub Toto(), on poura y faire appelle au sein de la classe en faisant Me.Toto()
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
@casy> Tu as été plus précis que moi

Je rajouterai juste que pouvoir écrir "ComboBox1.visible True" au lieu de "Me.ComboBox1.visible True" est, d'une certaine facon, une des faiblesses de la flexibilité du language, qui, du coup, le rend ambigu sur ce genre de point.

Un peut comme le fait de pouvoir faire :
Dim i as Long
Dim s as String = "A" & i

'Au lieu de 
Dim i as Long
Dim s as String = "A" & i.ToString()


Et il existe bien d'autres exemples.

Donc c'est au programmeur de rester homogène dans ca facon d'écrir.

(Le deuxième exemple donné peut être interdit en passant l'option Strict à On dans les proprétés du projet, Onglet Compiler. Ce que je conseille)
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Ne pas confondre VB6 (rubrique du post) et VB.Net, qui a, lui, un comportement parfois légèrement différent, souvent plus strict que VB6

La définition de Me est valable pour les deux.

Quant à pouvoir écrire ComboBox1.visible au lieu de Me.ComboBox1.visible, c'est possible en VB6. En VB.Net normalement si le Me est oublié il est automatiquement rajouter par l'IDE.

Quant aux exemple que tu donne, foliv57, ils sont en VB.Net (ToString n'existe pas en VB6) et c'est le premier qui peut être interdit avec Option Strict ON et non pas le second qui est, lui, l'écriture "propre" de l'instruction.

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Toutes mes excuses, je n'ai pas fait attention au VB6.

Quand je parlais de 2ème exemple, je ne paralai de la 2ème facon d'écrir mais bien du fait de pouvoir affecter un string à un long. (redésolé sur ce point de na pas avoir été plus clair). Et ce problème existe aussi en VB6. Que je vais réecrir dans le bon language.

Dim i as Long
Dim s as String
s = "A" & i

'Au lieu de 
Dim i as Long
Dim s as String 
s = "A" & CStr(i)