private sub MyFunc(state as boolean, ParamArray Args() As Variant
Dim u as Long, ctl as contro
For u = LBound(Args) To UBound(Args
Set ctl = Args(u
ctl.Enabled = bEn
Nex
Set ctl = Nothin
su
Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1)..
Je peux donc passer un nombre d'argument variable, mais connu quand j'écris le code..
Comment faire si jeux constituer une liste de controle à l'exécution (sachant que Array() ne fonctionne pas)
PS: je n'aipas écrit la fonction avec le ParamArray et elle est appelé des dizaines de fois. Il est donc obligatoire d'avoir une compatibilité ascendante...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Hello,
Tu éventuellement appeler la fonction en question via callbyname qui permet d'avoir un array contenant les arguments.
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Loic BERTHOLLET" a écrit dans le message de news:
b'jour soit ceci :
private sub MyFunc(state as boolean, ParamArray Args() As Variant) Dim u as Long, ctl as control For u = LBound(Args) To UBound(Args) Set ctl = Args(u) ctl.Enabled = bEnb Next Set ctl = Nothing sub
Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1)...
Je peux donc passer un nombre d'argument variable, mais connu quand j'écris le code... Comment faire si jeux constituer une liste de controle à l'exécution (sachant que Array() ne fonctionne pas) ?
PS: je n'aipas écrit la fonction avec le ParamArray et elle est appelé des dizaines de fois. Il est donc obligatoire d'avoir une compatibilité ascendante...
Hello,
Tu éventuellement appeler la fonction en question via callbyname qui permet
d'avoir un array contenant les arguments.
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Loic BERTHOLLET" <anonymous@discussions.microsoft.com> a écrit dans le
message de news:BC3A585B-E1AE-4FE1-8AA8-6C23381452D7@microsoft.com
b'jour
soit ceci :
private sub MyFunc(state as boolean, ParamArray Args() As Variant)
Dim u as Long, ctl as control
For u = LBound(Args) To UBound(Args)
Set ctl = Args(u)
ctl.Enabled = bEnb
Next
Set ctl = Nothing
sub
Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1,
CheckBox1)...
Je peux donc passer un nombre d'argument variable, mais connu quand
j'écris le code...
Comment faire si jeux constituer une liste de controle à l'exécution
(sachant que Array() ne fonctionne pas) ?
PS: je n'aipas écrit la fonction avec le ParamArray et elle est
appelé des dizaines de fois. Il est donc obligatoire d'avoir une
compatibilité ascendante...
Tu éventuellement appeler la fonction en question via callbyname qui permet d'avoir un array contenant les arguments.
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Loic BERTHOLLET" a écrit dans le message de news:
b'jour soit ceci :
private sub MyFunc(state as boolean, ParamArray Args() As Variant) Dim u as Long, ctl as control For u = LBound(Args) To UBound(Args) Set ctl = Args(u) ctl.Enabled = bEnb Next Set ctl = Nothing sub
Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1)...
Je peux donc passer un nombre d'argument variable, mais connu quand j'écris le code... Comment faire si jeux constituer une liste de controle à l'exécution (sachant que Array() ne fonctionne pas) ?
PS: je n'aipas écrit la fonction avec le ParamArray et elle est appelé des dizaines de fois. Il est donc obligatoire d'avoir une compatibilité ascendante...
Loi
salut Excuse moi, mais je ne comprends pas ta réponse
Moi, ce que je voudrais c'est detterminer à l'exécution une liste, un tableau, une collection de controle que je puisse passer à cett fonction. Mais quand j'écris mon code je ne connais pas le nombre de contrôles que je veux passer (c'est l'utilisateur qui le définit)
----- François Picalausa a écrit : ----
Hello
Tu éventuellement appeler la fonction en question via callbyname qui perme d'avoir un array contenant les arguments
-- François Picalausa (MVP VB http://faq.vb.free.fr --- http://msdn.microsoft.co http://apisvb.europe.webmatrixhosting.ne
"Loic BERTHOLLET" a écrit dans l message de news: > b'jou > soit ceci >> private sub MyFunc(state as boolean, ParamArray Args() As Variant > Dim u as Long, ctl as contro > For u = LBound(Args) To UBound(Args > Set ctl = Args(u > ctl.Enabled = bEn > Nex > Set ctl = Nothin > su >> Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1 > CheckBox1).. >> Je peux donc passer un nombre d'argument variable, mais connu quan > j'écris le code.. > Comment faire si jeux constituer une liste de controle à l'exécutio > (sachant que Array() ne fonctionne pas) >> PS: je n'aipas écrit la fonction avec le ParamArray et elle es > appelé des dizaines de fois. Il est donc obligatoire d'avoir un > compatibilité ascendante..
salut
Excuse moi, mais je ne comprends pas ta réponse
Moi, ce que je voudrais c'est detterminer à l'exécution une liste, un tableau, une collection de controle que je puisse passer à cett fonction. Mais quand j'écris mon code je ne connais pas le nombre de contrôles que je veux passer (c'est l'utilisateur qui le définit)
----- François Picalausa a écrit : ----
Hello
Tu éventuellement appeler la fonction en question via callbyname qui perme
d'avoir un array contenant les arguments
--
François Picalausa (MVP VB
http://faq.vb.free.fr --- http://msdn.microsoft.co
http://apisvb.europe.webmatrixhosting.ne
"Loic BERTHOLLET" <anonymous@discussions.microsoft.com> a écrit dans l
message de news:BC3A585B-E1AE-4FE1-8AA8-6C23381452D7@microsoft.co
> b'jou
> soit ceci
>> private sub MyFunc(state as boolean, ParamArray Args() As Variant
> Dim u as Long, ctl as contro
> For u = LBound(Args) To UBound(Args
> Set ctl = Args(u
> ctl.Enabled = bEn
> Nex
> Set ctl = Nothin
> su
>> Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1
> CheckBox1)..
>> Je peux donc passer un nombre d'argument variable, mais connu quan
> j'écris le code..
> Comment faire si jeux constituer une liste de controle à l'exécutio
> (sachant que Array() ne fonctionne pas)
>> PS: je n'aipas écrit la fonction avec le ParamArray et elle es
> appelé des dizaines de fois. Il est donc obligatoire d'avoir un
> compatibilité ascendante..
salut Excuse moi, mais je ne comprends pas ta réponse
Moi, ce que je voudrais c'est detterminer à l'exécution une liste, un tableau, une collection de controle que je puisse passer à cett fonction. Mais quand j'écris mon code je ne connais pas le nombre de contrôles que je veux passer (c'est l'utilisateur qui le définit)
----- François Picalausa a écrit : ----
Hello
Tu éventuellement appeler la fonction en question via callbyname qui perme d'avoir un array contenant les arguments
-- François Picalausa (MVP VB http://faq.vb.free.fr --- http://msdn.microsoft.co http://apisvb.europe.webmatrixhosting.ne
"Loic BERTHOLLET" a écrit dans l message de news: > b'jou > soit ceci >> private sub MyFunc(state as boolean, ParamArray Args() As Variant > Dim u as Long, ctl as contro > For u = LBound(Args) To UBound(Args > Set ctl = Args(u > ctl.Enabled = bEn > Nex > Set ctl = Nothin > su >> Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1 > CheckBox1).. >> Je peux donc passer un nombre d'argument variable, mais connu quan > j'écris le code.. > Comment faire si jeux constituer une liste de controle à l'exécutio > (sachant que Array() ne fonctionne pas) >> PS: je n'aipas écrit la fonction avec le ParamArray et elle es > appelé des dizaines de fois. Il est donc obligatoire d'avoir un > compatibilité ascendante..
François Picalausa
Hello,
Désolé, je croyais que CallByName demandait un tableau d'arguments, mais ce n'est pas le cas.
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Loi" a écrit dans le message de news:
salut. Excuse moi, mais je ne comprends pas ta réponse.
Moi, ce que je voudrais c'est detterminer à l'exécution une liste, un tableau, une collection de controle que je puisse passer à cett fonction. Mais quand j'écris mon code je ne connais pas le nombre de contrôles que je veux passer (c'est l'utilisateur qui le définit).
Hello,
Désolé, je croyais que CallByName demandait un tableau d'arguments, mais ce
n'est pas le cas.
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Loi" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:936B4BD5-276D-49D0-8026-FE3C5203BC12@microsoft.com
salut.
Excuse moi, mais je ne comprends pas ta réponse.
Moi, ce que je voudrais c'est detterminer à l'exécution une liste, un
tableau, une collection de controle que je puisse passer à cett
fonction. Mais quand j'écris mon code je ne connais pas le nombre de
contrôles que je veux passer (c'est l'utilisateur qui le définit).
Désolé, je croyais que CallByName demandait un tableau d'arguments, mais ce n'est pas le cas.
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Loi" a écrit dans le message de news:
salut. Excuse moi, mais je ne comprends pas ta réponse.
Moi, ce que je voudrais c'est detterminer à l'exécution une liste, un tableau, une collection de controle que je puisse passer à cett fonction. Mais quand j'écris mon code je ne connais pas le nombre de contrôles que je veux passer (c'est l'utilisateur qui le définit).
Vincent Guichard
Loic BERTHOLLET a écrit :
b'jour soit ceci :
private sub MyFunc(state as boolean, ParamArray Args() As Variant) Dim u as Long, ctl as control For u = LBound(Args) To UBound(Args) Set ctl = Args(u) ctl.Enabled = bEnb Next Set ctl = Nothing sub
Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1)...
Je peux donc passer un nombre d'argument variable, mais connu quand j'écris le code... Comment faire si jeux constituer une liste de controle à l'exécution (sachant que Array() ne fonctionne pas) ?
PS: je n'aipas écrit la fonction avec le ParamArray et elle est appelé des dizaines de fois. Il est donc obligatoire d'avoir une compatibilité ascendante...
Est-il envisageable que tu réécrive la fonction MyFunc? Auquel cas la fontion suivante peux marchera aussi bien pour un appel "ancienne methode": MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1) que pour un appel "Passage par tableau": MyFunc(True, Array(TextBox1, TextBox2, ComboBox1, CheckBox1))
Private Sub MyFunc(state As Boolean, ParamArray Args() As Variant) On Error Resume Next Dim u For Each u In Args If IsObject(u) Then u.Enabled = state ElseIf IsArray(u) Then Dim c For Each c In u c.Enabled = state Next c End If Next u End Sub
Vincent Guichard
Loic BERTHOLLET a écrit :
b'jour
soit ceci :
private sub MyFunc(state as boolean, ParamArray Args() As Variant)
Dim u as Long, ctl as control
For u = LBound(Args) To UBound(Args)
Set ctl = Args(u)
ctl.Enabled = bEnb
Next
Set ctl = Nothing
sub
Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1)...
Je peux donc passer un nombre d'argument variable, mais connu quand j'écris le code...
Comment faire si jeux constituer une liste de controle à l'exécution (sachant que Array() ne fonctionne pas) ?
PS: je n'aipas écrit la fonction avec le ParamArray et elle est appelé des dizaines de fois. Il est donc obligatoire d'avoir une compatibilité ascendante...
Est-il envisageable que tu réécrive la fonction MyFunc? Auquel cas la
fontion suivante peux marchera aussi bien pour un appel "ancienne methode":
MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1)
que pour un appel "Passage par tableau":
MyFunc(True, Array(TextBox1, TextBox2, ComboBox1, CheckBox1))
Private Sub MyFunc(state As Boolean, ParamArray Args() As Variant)
On Error Resume Next
Dim u
For Each u In Args
If IsObject(u) Then
u.Enabled = state
ElseIf IsArray(u) Then
Dim c
For Each c In u
c.Enabled = state
Next c
End If
Next u
End Sub
private sub MyFunc(state as boolean, ParamArray Args() As Variant) Dim u as Long, ctl as control For u = LBound(Args) To UBound(Args) Set ctl = Args(u) ctl.Enabled = bEnb Next Set ctl = Nothing sub
Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1)...
Je peux donc passer un nombre d'argument variable, mais connu quand j'écris le code... Comment faire si jeux constituer une liste de controle à l'exécution (sachant que Array() ne fonctionne pas) ?
PS: je n'aipas écrit la fonction avec le ParamArray et elle est appelé des dizaines de fois. Il est donc obligatoire d'avoir une compatibilité ascendante...
Est-il envisageable que tu réécrive la fonction MyFunc? Auquel cas la fontion suivante peux marchera aussi bien pour un appel "ancienne methode": MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1) que pour un appel "Passage par tableau": MyFunc(True, Array(TextBox1, TextBox2, ComboBox1, CheckBox1))
Private Sub MyFunc(state As Boolean, ParamArray Args() As Variant) On Error Resume Next Dim u For Each u In Args If IsObject(u) Then u.Enabled = state ElseIf IsArray(u) Then Dim c For Each c In u c.Enabled = state Next c End If Next u End Sub
Vincent Guichard
Loic BERTHOLLET
salu Le nombre et le nom des controles étaient un exemples; c'est l'utilisateur qui les choisit; je ne sais donc pas quand j'écris mon code quels sont les controles que je doit envoyer à la fonction
Mais, j'y ai plus réfléchi: Quand j'appelle ma fct avec, par exemple, un tableau qui contient un nombre aléatoire de controle, je recois dans ma fct un tableau à 2 dimensions. Il faudrait donc que j'use de récursivité pour résoudre ce problème
merci quand mêm
----- Vincent Guichard a écrit : ----
Loic BERTHOLLET a écrit > b'jou > soit ceci >> private sub MyFunc(state as boolean, ParamArray Args() As Variant > Dim u as Long, ctl as contro > For u = LBound(Args) To UBound(Args > Set ctl = Args(u > ctl.Enabled = bEn > Nex > Set ctl = Nothin > su >> Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1).. >> Je peux donc passer un nombre d'argument variable, mais connu quand j'écris le code.. > Comment faire si jeux constituer une liste de controle à l'exécution (sachant que Array() ne fonctionne pas) >> PS: je n'aipas écrit la fonction avec le ParamArray et elle est appelé des dizaines de fois. Il est donc obligatoire d'avoir une compatibilité ascendante..
Est-il envisageable que tu réécrive la fonction MyFunc? Auquel cas la fontion suivante peux marchera aussi bien pour un appel "ancienne methode" MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1 que pour un appel "Passage par tableau" MyFunc(True, Array(TextBox1, TextBox2, ComboBox1, CheckBox1)
Private Sub MyFunc(state As Boolean, ParamArray Args() As Variant On Error Resume Nex Dim For Each u In Arg If IsObject(u) The u.Enabled = stat ElseIf IsArray(u) The Dim For Each c In c.Enabled = stat Next End I Next End Su
Vincent Guichar
salu
Le nombre et le nom des controles étaient un exemples; c'est l'utilisateur qui les choisit; je ne sais donc pas quand j'écris mon code quels sont les controles que je doit envoyer à la fonction
Mais, j'y ai plus réfléchi: Quand j'appelle ma fct avec, par exemple, un tableau qui contient un nombre aléatoire de controle, je recois dans ma fct un tableau à 2 dimensions. Il faudrait donc que j'use de récursivité pour résoudre ce problème
merci quand mêm
----- Vincent Guichard a écrit : ----
Loic BERTHOLLET a écrit
> b'jou
> soit ceci
>> private sub MyFunc(state as boolean, ParamArray Args() As Variant
> Dim u as Long, ctl as contro
> For u = LBound(Args) To UBound(Args
> Set ctl = Args(u
> ctl.Enabled = bEn
> Nex
> Set ctl = Nothin
> su
>> Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1)..
>> Je peux donc passer un nombre d'argument variable, mais connu quand j'écris le code..
> Comment faire si jeux constituer une liste de controle à l'exécution (sachant que Array() ne fonctionne pas)
>> PS: je n'aipas écrit la fonction avec le ParamArray et elle est appelé des dizaines de fois. Il est donc obligatoire d'avoir une compatibilité ascendante..
Est-il envisageable que tu réécrive la fonction MyFunc? Auquel cas la
fontion suivante peux marchera aussi bien pour un appel "ancienne methode"
MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1
que pour un appel "Passage par tableau"
MyFunc(True, Array(TextBox1, TextBox2, ComboBox1, CheckBox1)
Private Sub MyFunc(state As Boolean, ParamArray Args() As Variant
On Error Resume Nex
Dim
For Each u In Arg
If IsObject(u) The
u.Enabled = stat
ElseIf IsArray(u) The
Dim
For Each c In
c.Enabled = stat
Next
End I
Next
End Su
salu Le nombre et le nom des controles étaient un exemples; c'est l'utilisateur qui les choisit; je ne sais donc pas quand j'écris mon code quels sont les controles que je doit envoyer à la fonction
Mais, j'y ai plus réfléchi: Quand j'appelle ma fct avec, par exemple, un tableau qui contient un nombre aléatoire de controle, je recois dans ma fct un tableau à 2 dimensions. Il faudrait donc que j'use de récursivité pour résoudre ce problème
merci quand mêm
----- Vincent Guichard a écrit : ----
Loic BERTHOLLET a écrit > b'jou > soit ceci >> private sub MyFunc(state as boolean, ParamArray Args() As Variant > Dim u as Long, ctl as contro > For u = LBound(Args) To UBound(Args > Set ctl = Args(u > ctl.Enabled = bEn > Nex > Set ctl = Nothin > su >> Que j'appele comme cela : MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1).. >> Je peux donc passer un nombre d'argument variable, mais connu quand j'écris le code.. > Comment faire si jeux constituer une liste de controle à l'exécution (sachant que Array() ne fonctionne pas) >> PS: je n'aipas écrit la fonction avec le ParamArray et elle est appelé des dizaines de fois. Il est donc obligatoire d'avoir une compatibilité ascendante..
Est-il envisageable que tu réécrive la fonction MyFunc? Auquel cas la fontion suivante peux marchera aussi bien pour un appel "ancienne methode" MyFunc(True, TextBox1, TextBox2, ComboBox1, CheckBox1 que pour un appel "Passage par tableau" MyFunc(True, Array(TextBox1, TextBox2, ComboBox1, CheckBox1)
Private Sub MyFunc(state As Boolean, ParamArray Args() As Variant On Error Resume Nex Dim For Each u In Arg If IsObject(u) The u.Enabled = stat ElseIf IsArray(u) The Dim For Each c In c.Enabled = stat Next End I Next End Su
Vincent Guichar
Vincent Guichard
Loic BERTHOLLET a écrit :
salut Le nombre et le nom des controles étaient un exemples; c'est l'utilisateur qui les choisit; je ne sais donc pas quand j'écris mon code quels sont les controles que je doit envoyer à la fonction.
Mais, j'y ai plus réfléchi: Quand j'appelle ma fct avec, par exemple, un tableau qui contient un nombre aléatoire de controle, je recois dans ma fct un tableau à 2 dimensions. Il faudrait donc que j'use de récursivité pour résoudre ce problème.
N'était-ce pas exactement ce que je proposais?
Vincent Guichard
Loic BERTHOLLET a écrit :
salut
Le nombre et le nom des controles étaient un exemples; c'est l'utilisateur qui les choisit; je ne sais donc pas quand j'écris mon code quels sont les controles que je doit envoyer à la fonction.
Mais, j'y ai plus réfléchi: Quand j'appelle ma fct avec, par exemple, un tableau qui contient un nombre aléatoire de controle, je recois dans ma fct un tableau à 2 dimensions. Il faudrait donc que j'use de récursivité pour résoudre ce problème.
salut Le nombre et le nom des controles étaient un exemples; c'est l'utilisateur qui les choisit; je ne sais donc pas quand j'écris mon code quels sont les controles que je doit envoyer à la fonction.
Mais, j'y ai plus réfléchi: Quand j'appelle ma fct avec, par exemple, un tableau qui contient un nombre aléatoire de controle, je recois dans ma fct un tableau à 2 dimensions. Il faudrait donc que j'use de récursivité pour résoudre ce problème.