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

[Résolu]
Signaler
Messages postés
185
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
10 janvier 2008
-
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
-
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

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
17
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
17
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
Messages postés
185
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
10 janvier 2008

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",...).