Bon ça arrive de dire des conneries de temps en temps et à tout le monde.
Je ne pense pas méconnaître gravement VB ( ni quelques autres langages, le et tout les autres me parait présomptueux), mais être étourdi et un peu fatigué.
Christophe.
Jean-Marc a écrit :
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le message de news:4165914d$0$16592$
bonjour,
ta variable X est déclarée uniquement dans form_load
en entête de ta form ecrit option explicit et tu verras de suite l'erreur à la compilation, dans la sub test il va te dire variable inconnue.
Hello,
Tu te trompes. Tu méconnais gravement VB (et tous les autres lanages de programmation) pour écrire cela.
La variable X n'est pas du tout inconnue dans SUb Test, c'est son paramètre.
Le fait que par hasard le nom du paramètre soit x, comme dans la Sub form_load n'a rien à voir ici.
Voir de toute urgence: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vastmSub.asp
Bon ça arrive de dire des conneries de temps en temps et à tout le monde.
Je ne pense pas méconnaître gravement VB ( ni quelques autres langages,
le et tout les autres me parait présomptueux), mais être étourdi et un
peu fatigué.
Christophe.
Jean-Marc a écrit :
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le
message de news:4165914d$0$16592$8fcfb975@news.wanadoo.fr...
bonjour,
ta variable X est déclarée uniquement dans form_load
en entête de ta form ecrit
option explicit et tu verras de suite l'erreur à la compilation,
dans la sub test il va te dire variable inconnue.
Hello,
Tu te trompes. Tu méconnais gravement VB (et tous les autres
lanages de programmation) pour écrire cela.
La variable X n'est pas du tout inconnue dans SUb Test, c'est
son paramètre.
Le fait que par hasard le nom du paramètre soit x, comme dans
la Sub form_load n'a rien à voir ici.
Voir de toute urgence:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vastmSub.asp
Bon ça arrive de dire des conneries de temps en temps et à tout le monde.
Je ne pense pas méconnaître gravement VB ( ni quelques autres langages, le et tout les autres me parait présomptueux), mais être étourdi et un peu fatigué.
Christophe.
Jean-Marc a écrit :
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le message de news:4165914d$0$16592$
bonjour,
ta variable X est déclarée uniquement dans form_load
en entête de ta form ecrit option explicit et tu verras de suite l'erreur à la compilation, dans la sub test il va te dire variable inconnue.
Hello,
Tu te trompes. Tu méconnais gravement VB (et tous les autres lanages de programmation) pour écrire cela.
La variable X n'est pas du tout inconnue dans SUb Test, c'est son paramètre.
Le fait que par hasard le nom du paramètre soit x, comme dans la Sub form_load n'a rien à voir ici.
Voir de toute urgence: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vastmSub.asp
christophe-pasde
Les () ça peut s'utiliser
Christophe
ci dessous l'extrait de la MSDN << Si vous spécifiez un type de données pour un argument passé par référence, vous devez passer une valeur de ce type à l'argument. Vous pouvez contourner cette exigence en passant une expression, plutôt qu'un type de données, comme argument. Visual Basic évalue une expression et la passe dans le type requis, pour autant que cela soit possible.
La manière la plus simple de transformer une variable en une expression est de la mettre entre parenthèses. Par exemple, pour passer une variable déclarée comme entier à une procédure qui s'attend à recevoir une chaîne comme argument, vous devez procéder de la manière suivante :
Sub CallingProcedure() Dim intX As Integer intX = 12 * 3 Foo(intX) End Sub
Sub Foo(Bar As String) MsgBox Bar ' La valeur de Bar correspond ' à la chaîne "36". End Sub
Jean-Marc a écrit :
"TTT" a écrit dans le message de news:4165935a$0$286$
quelle différence entre : test x et test(x) ?
Hello,
voila j'ai retrouvé dans la doc: Remarks
You are not required to use the Call keyword when calling a procedure. However, if you use the Call keyword to call a procedure that requires arguments, argumentlist must be enclosed in parentheses. If you omit the Call keyword, you also must omit the parentheses around argumentlist.
et la référence complète est: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vastmCall.asp
Les () ça peut s'utiliser
Christophe
ci dessous l'extrait de la MSDN
<<
Si vous spécifiez un type de données pour un argument passé par
référence, vous devez passer une valeur de ce type à l'argument. Vous
pouvez contourner cette exigence en passant une expression, plutôt qu'un
type de données, comme argument. Visual Basic évalue une expression et
la passe dans le type requis, pour autant que cela soit possible.
La manière la plus simple de transformer une variable en une expression
est de la mettre entre parenthèses. Par exemple, pour passer une
variable déclarée comme entier à une procédure qui s'attend à recevoir
une chaîne comme argument, vous devez procéder de la manière suivante :
Sub CallingProcedure()
Dim intX As Integer
intX = 12 * 3
Foo(intX)
End Sub
Sub Foo(Bar As String)
MsgBox Bar ' La valeur de Bar correspond
' à la chaîne "36".
End Sub
Jean-Marc a écrit :
"TTT" <nospam@raslebol.fr> a écrit dans le message de
news:4165935a$0$286$626a14ce@news.free.fr...
quelle différence entre :
test x
et
test(x)
?
Hello,
voila j'ai retrouvé dans la doc:
Remarks
You are not required to use the Call keyword when calling a procedure.
However, if you use the Call keyword to call a procedure that requires
arguments, argumentlist must be enclosed in parentheses. If you omit the
Call keyword, you also must omit the parentheses around argumentlist.
et la référence complète est:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vastmCall.asp
ci dessous l'extrait de la MSDN << Si vous spécifiez un type de données pour un argument passé par référence, vous devez passer une valeur de ce type à l'argument. Vous pouvez contourner cette exigence en passant une expression, plutôt qu'un type de données, comme argument. Visual Basic évalue une expression et la passe dans le type requis, pour autant que cela soit possible.
La manière la plus simple de transformer une variable en une expression est de la mettre entre parenthèses. Par exemple, pour passer une variable déclarée comme entier à une procédure qui s'attend à recevoir une chaîne comme argument, vous devez procéder de la manière suivante :
Sub CallingProcedure() Dim intX As Integer intX = 12 * 3 Foo(intX) End Sub
Sub Foo(Bar As String) MsgBox Bar ' La valeur de Bar correspond ' à la chaîne "36". End Sub
Jean-Marc a écrit :
"TTT" a écrit dans le message de news:4165935a$0$286$
quelle différence entre : test x et test(x) ?
Hello,
voila j'ai retrouvé dans la doc: Remarks
You are not required to use the Call keyword when calling a procedure. However, if you use the Call keyword to call a procedure that requires arguments, argumentlist must be enclosed in parentheses. If you omit the Call keyword, you also must omit the parentheses around argumentlist.
et la référence complète est: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vastmCall.asp
Patrice Henrio
Avec un integer on a le même problème.
Donc "test x" passe l'adresse de x et dans la fonction, si on est byref, on continue avec l'adresse, si on est byval, on se contente de copier la valeur. Pour "test(x)" on ne passe que la valeur. Quand à savoir pourquoi ??? J'ai l'impression que là on touche aux fondements même de VB.
"TTT" a écrit dans le message de news: 4165986f$0$297$
désolé mais il n'y a pas d'explication satisfaisante pour le moment... en plus si j'exécute le même code en visual studio .net le x est bien modifiée :
Autrement dit :
Sub Test(ByRef x As String) x = "XXX" End Sub
Private Sub Form_Load() Dim x As String x = "ABC" Test(x) MsgBox (x) Ens Sub
Sous VS6 ça m'affiche ABC et sous VS.NET 2003 ça m'affiche XXX
je ne comprends plus rien, c'est mon VS6 qui est mal installé ou corrompu?
Avec un integer on a le même problème.
Donc "test x" passe l'adresse de x et dans la fonction, si on est byref, on
continue avec l'adresse, si on est byval, on se contente de copier la
valeur.
Pour "test(x)" on ne passe que la valeur.
Quand à savoir pourquoi ??? J'ai l'impression que là on touche aux
fondements même de VB.
"TTT" <nospam@raslebol.fr> a écrit dans le message de news:
4165986f$0$297$626a14ce@news.free.fr...
désolé mais il n'y a pas d'explication satisfaisante pour le moment...
en plus
si j'exécute le même code en visual studio .net le x est bien modifiée :
Autrement dit :
Sub Test(ByRef x As String)
x = "XXX"
End Sub
Private Sub Form_Load()
Dim x As String
x = "ABC"
Test(x)
MsgBox (x)
Ens Sub
Sous VS6 ça m'affiche ABC
et sous VS.NET 2003 ça m'affiche XXX
je ne comprends plus rien, c'est mon VS6 qui est mal installé ou corrompu?
Donc "test x" passe l'adresse de x et dans la fonction, si on est byref, on continue avec l'adresse, si on est byval, on se contente de copier la valeur. Pour "test(x)" on ne passe que la valeur. Quand à savoir pourquoi ??? J'ai l'impression que là on touche aux fondements même de VB.
"TTT" a écrit dans le message de news: 4165986f$0$297$
désolé mais il n'y a pas d'explication satisfaisante pour le moment... en plus si j'exécute le même code en visual studio .net le x est bien modifiée :
Autrement dit :
Sub Test(ByRef x As String) x = "XXX" End Sub
Private Sub Form_Load() Dim x As String x = "ABC" Test(x) MsgBox (x) Ens Sub
Sous VS6 ça m'affiche ABC et sous VS.NET 2003 ça m'affiche XXX
je ne comprends plus rien, c'est mon VS6 qui est mal installé ou corrompu?
TTT
> Pour "test(x)" on ne passe que la valeur. Quand à savoir pourquoi ??? J'ai l'impression que là on touche aux fondements même de VB.
Ben vois tu, depuis que je fais du vb, je ne savais pas ! merci à vous tous
> Pour "test(x)" on ne passe que la valeur.
Quand à savoir pourquoi ??? J'ai l'impression que là on touche aux
fondements même de VB.
Ben vois tu, depuis que je fais du vb, je ne savais pas !
merci à vous tous
> Pour "test(x)" on ne passe que la valeur. Quand à savoir pourquoi ??? J'ai l'impression que là on touche aux fondements même de VB.
Ben vois tu, depuis que je fais du vb, je ne savais pas ! merci à vous tous
Pascal B.
Bonjour,
En écrivant Test (x), tu passes à la procédure une EXPRESSION au lieu d'une VARIABLE; il n'y donc pas de modification en retour, puis que ce n'est pas l'ADRESSE de la variable qui est passer à la procédure mais bien la VALEUR de l'expression.
Les parenthéses utilisées lors d'un Call font partie de la syntaxe et ne produit donc pas le meme effet sauf si on double les parenthèses: Call Test((x)). Dans ce cas, c'est (x) qui est passer comme argument au lieu de x.
Cordialement
Pascal B.
"NTH" wrote in message news:416589df$0$25753$ | Bonsoir | J'ai une question très bête mais je ne comprends pas pourquoi... pourtant je | ne suis pas débutant en vb... | Voici : | | Sub Test(ByRef x As String) | x = "XXX" | End Sub | | Private Sub Form_Load() | Dim x As String | x = "ABC" | Test(x) | MsgBox (x) | Ens Sub | | Ca m'écrit "ABC" pourtant je croyais que ça devait écrire XXX ? | Bizarre non? mon système est corrompu ou quoi? | | Merci | |
Bonjour,
En écrivant Test (x), tu passes à la procédure une EXPRESSION au lieu d'une VARIABLE;
il n'y donc pas de modification en retour, puis que ce n'est pas l'ADRESSE de la variable qui est passer à la procédure mais bien la
VALEUR de l'expression.
Les parenthéses utilisées lors d'un Call font partie de la syntaxe et ne produit donc pas le meme effet sauf si on double les
parenthèses: Call Test((x)). Dans ce cas, c'est (x) qui est passer comme argument au lieu de x.
Cordialement
Pascal B.
"NTH" <nospam@rien.zz> wrote in message news:416589df$0$25753$636a15ce@news.free.fr...
| Bonsoir
| J'ai une question très bête mais je ne comprends pas pourquoi... pourtant je
| ne suis pas débutant en vb...
| Voici :
|
| Sub Test(ByRef x As String)
| x = "XXX"
| End Sub
|
| Private Sub Form_Load()
| Dim x As String
| x = "ABC"
| Test(x)
| MsgBox (x)
| Ens Sub
|
| Ca m'écrit "ABC" pourtant je croyais que ça devait écrire XXX ?
| Bizarre non? mon système est corrompu ou quoi?
|
| Merci
|
|
En écrivant Test (x), tu passes à la procédure une EXPRESSION au lieu d'une VARIABLE; il n'y donc pas de modification en retour, puis que ce n'est pas l'ADRESSE de la variable qui est passer à la procédure mais bien la VALEUR de l'expression.
Les parenthéses utilisées lors d'un Call font partie de la syntaxe et ne produit donc pas le meme effet sauf si on double les parenthèses: Call Test((x)). Dans ce cas, c'est (x) qui est passer comme argument au lieu de x.
Cordialement
Pascal B.
"NTH" wrote in message news:416589df$0$25753$ | Bonsoir | J'ai une question très bête mais je ne comprends pas pourquoi... pourtant je | ne suis pas débutant en vb... | Voici : | | Sub Test(ByRef x As String) | x = "XXX" | End Sub | | Private Sub Form_Load() | Dim x As String | x = "ABC" | Test(x) | MsgBox (x) | Ens Sub | | Ca m'écrit "ABC" pourtant je croyais que ça devait écrire XXX ? | Bizarre non? mon système est corrompu ou quoi? | | Merci | |
Gloops
Salut,
Fais gaffe, en .NET c'est complètement différent cette histoire de parenthèses pour l'appel d'une procédure. ça fait que si tu essaies d'assimiler les deux à la fois, ça a des risques d'être indigeste.
(Voir chez Ms Press, Ms Visual Basic.NET étape par étape, Mickael Halvorson, dépôt légal avril 2002, p. 283/284) (HS ici) ___________________________________ TTT a écrit, le 07/10/2004 21:26 :
désolé mais il n'y a pas d'explication satisfaisante pour le moment... en plus si j'exécute le même code en visual studio .net le x est bien modifiée :
Autrement dit :
Sub Test(ByRef x As String) x = "XXX" End Sub
Private Sub Form_Load() Dim x As String x = "ABC" Test(x) MsgBox (x) Ens Sub
Sous VS6 ça m'affiche ABC et sous VS.NET 2003 ça m'affiche XXX
je ne comprends plus rien, c'est mon VS6 qui est mal installé ou corrompu?
Salut,
Fais gaffe, en .NET c'est complètement différent cette histoire de
parenthèses pour l'appel d'une procédure.
ça fait que si tu essaies d'assimiler les deux à la fois, ça a des
risques d'être indigeste.
(Voir chez Ms Press, Ms Visual Basic.NET étape par étape, Mickael
Halvorson, dépôt légal avril 2002, p. 283/284) (HS ici)
___________________________________
TTT a écrit, le 07/10/2004 21:26 :
désolé mais il n'y a pas d'explication satisfaisante pour le moment...
en plus
si j'exécute le même code en visual studio .net le x est bien modifiée :
Autrement dit :
Sub Test(ByRef x As String)
x = "XXX"
End Sub
Private Sub Form_Load()
Dim x As String
x = "ABC"
Test(x)
MsgBox (x)
Ens Sub
Sous VS6 ça m'affiche ABC
et sous VS.NET 2003 ça m'affiche XXX
je ne comprends plus rien, c'est mon VS6 qui est mal installé ou corrompu?
Fais gaffe, en .NET c'est complètement différent cette histoire de parenthèses pour l'appel d'une procédure. ça fait que si tu essaies d'assimiler les deux à la fois, ça a des risques d'être indigeste.
(Voir chez Ms Press, Ms Visual Basic.NET étape par étape, Mickael Halvorson, dépôt légal avril 2002, p. 283/284) (HS ici) ___________________________________ TTT a écrit, le 07/10/2004 21:26 :
désolé mais il n'y a pas d'explication satisfaisante pour le moment... en plus si j'exécute le même code en visual studio .net le x est bien modifiée :
Autrement dit :
Sub Test(ByRef x As String) x = "XXX" End Sub
Private Sub Form_Load() Dim x As String x = "ABC" Test(x) MsgBox (x) Ens Sub
Sous VS6 ça m'affiche ABC et sous VS.NET 2003 ça m'affiche XXX
je ne comprends plus rien, c'est mon VS6 qui est mal installé ou corrompu?
Patrice Henrio
OK c'est plus clair.
"Pascal B." a écrit dans le message de news:
Bonjour,
En écrivant Test (x), tu passes à la procédure une EXPRESSION au lieu d'une VARIABLE; il n'y donc pas de modification en retour, puis que ce n'est pas l'ADRESSE de la variable qui est passer à la procédure mais bien la VALEUR de l'expression.
Les parenthéses utilisées lors d'un Call font partie de la syntaxe et ne produit donc pas le meme effet sauf si on double les parenthèses: Call Test((x)). Dans ce cas, c'est (x) qui est passer comme argument au lieu de x.
Cordialement
Pascal B.
"NTH" wrote in message news:416589df$0$25753$ | Bonsoir | J'ai une question très bête mais je ne comprends pas pourquoi... pourtant je | ne suis pas débutant en vb... | Voici : | | Sub Test(ByRef x As String) | x = "XXX" | End Sub | | Private Sub Form_Load() | Dim x As String | x = "ABC" | Test(x) | MsgBox (x) | Ens Sub | | Ca m'écrit "ABC" pourtant je croyais que ça devait écrire XXX ? | Bizarre non? mon système est corrompu ou quoi? | | Merci | |
OK c'est plus clair.
"Pascal B." <Pascbr@hotmail_ANTISPASM_.com> a écrit dans le message de news:
e4t98YQrEHA.3748@TK2MSFTNGP09.phx.gbl...
Bonjour,
En écrivant Test (x), tu passes à la procédure une EXPRESSION au lieu
d'une VARIABLE;
il n'y donc pas de modification en retour, puis que ce n'est pas l'ADRESSE
de la variable qui est passer à la procédure mais bien la
VALEUR de l'expression.
Les parenthéses utilisées lors d'un Call font partie de la syntaxe et ne
produit donc pas le meme effet sauf si on double les
parenthèses: Call Test((x)). Dans ce cas, c'est (x) qui est passer comme
argument au lieu de x.
Cordialement
Pascal B.
"NTH" <nospam@rien.zz> wrote in message
news:416589df$0$25753$636a15ce@news.free.fr...
| Bonsoir
| J'ai une question très bête mais je ne comprends pas pourquoi...
pourtant je
| ne suis pas débutant en vb...
| Voici :
|
| Sub Test(ByRef x As String)
| x = "XXX"
| End Sub
|
| Private Sub Form_Load()
| Dim x As String
| x = "ABC"
| Test(x)
| MsgBox (x)
| Ens Sub
|
| Ca m'écrit "ABC" pourtant je croyais que ça devait écrire XXX ?
| Bizarre non? mon système est corrompu ou quoi?
|
| Merci
|
|
En écrivant Test (x), tu passes à la procédure une EXPRESSION au lieu d'une VARIABLE; il n'y donc pas de modification en retour, puis que ce n'est pas l'ADRESSE de la variable qui est passer à la procédure mais bien la VALEUR de l'expression.
Les parenthéses utilisées lors d'un Call font partie de la syntaxe et ne produit donc pas le meme effet sauf si on double les parenthèses: Call Test((x)). Dans ce cas, c'est (x) qui est passer comme argument au lieu de x.
Cordialement
Pascal B.
"NTH" wrote in message news:416589df$0$25753$ | Bonsoir | J'ai une question très bête mais je ne comprends pas pourquoi... pourtant je | ne suis pas débutant en vb... | Voici : | | Sub Test(ByRef x As String) | x = "XXX" | End Sub | | Private Sub Form_Load() | Dim x As String | x = "ABC" | Test(x) | MsgBox (x) | Ens Sub | | Ca m'écrit "ABC" pourtant je croyais que ça devait écrire XXX ? | Bizarre non? mon système est corrompu ou quoi? | | Merci | |
NTH
> En écrivant Test (x), tu passes à la procédure une EXPRESSION au lieu
d'une VARIABLE; Oui oui c'est explication finale que j'ai trouvée. C'est qd même tordu le VB (sans compter qu'il faut faire aussi avec le VB.NET) Bref, je suis soulagé, je vais passer en C# bientôt !!!
> En écrivant Test (x), tu passes à la procédure une EXPRESSION au lieu
d'une VARIABLE;
Oui oui c'est explication finale que j'ai trouvée.
C'est qd même tordu le VB (sans compter qu'il faut faire aussi avec le
VB.NET)
Bref, je suis soulagé, je vais passer en C# bientôt !!!
> En écrivant Test (x), tu passes à la procédure une EXPRESSION au lieu
d'une VARIABLE; Oui oui c'est explication finale que j'ai trouvée. C'est qd même tordu le VB (sans compter qu'il faut faire aussi avec le VB.NET) Bref, je suis soulagé, je vais passer en C# bientôt !!!