Passer un tableau dans une fonction avec comme paramètre ParamArray

Résolu
BozzoDodo Messages postés 185 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 10 janvier 2008 - 27 nov. 2004 à 15:17
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 28 nov. 2004 à 11:33
Bonjour,
j'ai une fonction:

Private Function f1(ParamArray par() as Variant)
End Function

et un tableau:

Dim tab() as variant

Imaginons que ce tableau soit rempli. J'aimerai passer ce tableau dans la fonction f1. En fait je ne peux pas écrire:

f1(tab(1),tab(2),...)

car je ne connais pas à l'avance la longueur de tab. Comment puis-je faire?

Merci

3 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
28 nov. 2004 à 11:33
OK, mais dans ce cas, je ne vois pas d'autre solution que de passer le tableau entier. Sinon, si tu tiens absolument au PARAMARRAY, il faudrait que tu connaisses au moins la taille max du tableau et faire qquechose comme :

Select case Ubound(t)
case 1 : f1(t(1))
case 2 : f1(t(1),t(2))

etc....
end select

Mais si tu as des centaines de lignes possibles dans ton tableau, tu vois la longueur du code ?

Désolé, je n'ai pas mieux en magasin.

Cordialement, CanisLupus
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
27 nov. 2004 à 16:35
Salut,

J'ai essayé ça et ça marche :

Private Sub Form_Load()
Dim t(3)
t(1) = 1
t(2) = 2
t(3) = 3
f1 t()
End Sub

Private Function f1(par() As Variant)
MsgBox par(3)
End Function


D'autre part, si tu ne connais pas à l'avance les limites de ton tableau, utilise lbound(par) pour l'indice min et ubound(par) pour l'indice max.

Cordialement, CanisLupus
0
BozzoDodo Messages postés 185 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 10 janvier 2008
28 nov. 2004 à 10:59
Non la c'est normal que cela marche puisque le paramètre est un tableau. Moi, ce n'est pas un tableau mais PARAMARRAY. C'est à dir que l'on peut écrire f1("tgezt","getgz","tgrte",...).
0
Rejoignez-nous