Paramètre Sub : Optional ParamArray ??

Résolu
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 30 nov. 2006 à 16:23
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 30 nov. 2006 à 17:24
Salut,

j'ai fait une procédure :

Public Sub NomProc(Val1 As Type, ByVal Val2 As Type, OptionalParamArray sNameCtl())

Mais le paramètre ParamArray sNameCtl()) ne veut pas être pris en compte avec Optional.
Je trouve ça dommage de ne pas pouvoir récupérer un tableau de données ou rien du tout.
C'est soit l'un ou soit l'autre, mais les deux combiné, ça ne fonctionne pas.

Y'aurait-il une autre combine, une syntaxe qui m'est inconnue ?
Merci  ;)

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>

18 réponses

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 17:03
jrivet

  t'as pas compris mon résonnement paramarray est à la base en optional:



Si j'ai ça c'est bon :



Private



Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
test("toto")
EndSub





Sub test(ByVal toto AsString, ByValParamArray Chaine() As Array)
MsgBox(toto)
EndSub


Si j'ai ça c'est pas bon car j'ai pas mis le paramètre chaine en appel de sub :

PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
test("toto")
EndSubSub test(ByVal toto AsString, ByVal  Chaine AsString)
MsgBox(toto)
EndSub

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
30 nov. 2006 à 17:18
Drikce, c'est toi qui à raison




ParamArray  est à l'origine Optional
Donc on met autant de données que l'on souhaite, OU rien du tout.

   Du coup :

Public Sub Zoomed(oForm As Object, ValZoom As Integer, ParamArray sCtl())

Et pour l'appeler :

    Call PropertyZoom.Zoomed(Me, 200)
OU
    Call PropertyZoom.Zoomed(Me, 200, "VScroll1","Command1")

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
3
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 16:31
Salut mortalino :

L'aide VBA (lol!) : (mais peut être différent VB6)

Optional:
Facultatif. Indique qu'un argument n'est pas obligatoire. S'il est utilisé, les arguments suivants de arglist doivent également être facultatifs et être déclarés à l'aide du mot clé Optional. Le mot clé Optional ne peut être appliqué à aucun argument si le mot clé ParamArray est utilisé.






 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
30 nov. 2006 à 16:34
Salut [auteurdetail.aspx?ID=647037 mortalino]
Je reponds en grande partie pour suivre la conversation et éventuellement découvrir aussi une nouvelle syntaxe.
Je pense que tu as déjà lu la MSDN pour ParamArray donc je ne te la copierai pas.

En revanche tu peux pour contourner ton "problème" simplement mettre un Variant en Optional et l'interpreter comme un tableau.
@+: Ju£i?n
Pensez: Réponse acceptée
0

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

Posez votre question
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 16:35
Et l'aide VB.Net donc je pense que VB6 c'est pareil! Donc ce que tu veux faire ne semble pas possible!

ParamArray allows you to pass an arbitrary number of arguments to the procedure. A ParamArray parameter is always declared using [ms-help://MS.VSExpressCC.v80/MS.NETFramework.v20.en/dv_vbalr/html/1eaf4e58-b305-4785-9e3d-e416b9c75598.htm ByVal].

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
30 nov. 2006 à 16:37
Salut Drikce,

l'aide VBA, c'est mieux que rien
et je te rassure, en VB6, c'est la même chose, Optional et ParamArray, ça le fait pas.

En fait je sais que ce n'est pas faisable, mais je me disais que c'était peut-être contournable. Sait-on jamais....

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 16:41
C'était plus un délire qu'autre chose, c'était marrant de mettre les aides! (je suis un gamin), j'avais bien compris ta question (la combine)!
Je vais peut être dire une bétise, mais si tu passe par une collection et que tu la mets dans un tableau après!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
30 nov. 2006 à 16:43
Salut,

Moi j'utilise une chaine de caractère et je split dans la procédure...
Je n'ai pas réussit non plus à y faire ça... et dieu c'est que j'en ai besoin...

 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
30 nov. 2006 à 16:47
Merci Ju (écris en même temps) ! Et merci fiko !

Oui, à la limite un String, avec un séparateur à déterminer, du genre
Public Sub NomProc(Val1 As Type, Val2 As Type, Optional sNameCtl)

Puis, Call NomProc(MaVal1, MaVal2, "VScroll1-Command1")
Ensuite, le fameux Split.

Qu'en pensez ?

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
30 nov. 2006 à 16:50
J'admire ta solution |o|

 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 16:51
<dt>Par contre si j'ai bien compris ça: paramarray est déjà considérer comme une option non?

ParamArray</dt>
<dd>
Optional. Specifies that the last parameter in the parameter list is an optional array of elements of the specified data type. This allows the calling code to pass an arbitrary number of arguments to the procedure.

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:


</dd>
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
30 nov. 2006 à 16:52
Salut,
Peu etre qu'effectivement ce sera plus "rapide" du coté utilisateur de ne pas avoir à remplir un tableau pour passer en parametre à ta procédure. Donc je dirais que c'est peu être mieux que mon option.

Attention il faut choisir un séparateur qui n'est pas utilisable dans les nom de contrôle.

@+: Ju£i?n
Pensez: Réponse acceptée
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 16:53
J'ai essayé ça et je rentre comme même dans la procédure test: (par contre c'est en .Net)



Private



Sub
Button1_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
Button1.Click
test()


End



Sub


Sub
test(

ByVal



ParamArray
Chaine())



MsgBox(

"cool"
)

End



Sub




 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
30 nov. 2006 à 16:54
[auteurdetail.aspx?ID=786090 Drikce06:]


(sans te vexer) Comprends tu ce qu est un param Array? => Normal que tu rentre quand meme dans la procédure Test
@+: Ju£i?n
Pensez: Réponse acceptée
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
30 nov. 2006 à 17:03
Drikce :
ParamArray veut dire que tu récupères un tableau de données en paramètre.

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 17:20
Oui mais si tu mets rien en paramètre dans paramarray ce tableau vide, et si tu relie mon post d'avant paramarray est déjà du type optional, donc si tu veux tu fais l'appel de procédure avec ou sinon sans.Tu voulais faire ta procédure avec ou sans non?

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
30 nov. 2006 à 17:21
Ha ok, j'ai vu ton dernier post trop tard mortalino ! Bon ça me rassure j'avais bien compris ce que tu voulais mais je l'ai mal exprimer!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
30 nov. 2006 à 17:24
Pas de problème et je te remercie beaucoup (et aussi Julien et Fiko)

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
Rejoignez-nous