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
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()
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)
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
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)