Passage paramètres a un module

Résolu
Signaler
Messages postés
75
Date d'inscription
dimanche 2 octobre 2005
Statut
Membre
Dernière intervention
24 juin 2007
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Salut,


J'ai un probléme de passage de paramétres à une fonction située dans un module.


Jusqu'à maintenant j'avais juste besoin de passer un tableau à cette fonction, en bref :

public function la_fonction (tableau as variant)
end function

et j'appelais cette fonction en lui passant le tableau dans ma form principale :
dim tableau() as integer
'et plus loin :
redim tableau(x,y)
'ici je remplis le tableau
la_fonction(tableau) ' j'appelle la fonction

et tout marchais bien dans le meilleur des mondes

mais j'ai eu besoin depuis peu que le tableau retourne 2 valeurs j'ai donc déclaré un type du genre :
public type terrain
rectangle as rect
type as integer
end type

je suis obligé apparement de déclarer ce type dans le module parce qu'il est en public

et j'ai changé la déclaration du tableau en faisant :

dim tableau() as terrain
'et plus loin :
redim tableau(x,y)
'ici je remplis le tableau
la_fonction(tableau) ' j'appelle la fonction

Mais là ca plante à l'appel de la fonction (la_fonction(tableau)) l'erreur c'est :
Only public user defined types defined in public object modules can be used as parameters or return types for public procedures of class modules or as fields of public user defined types

et même si je déclare le tableau avec un dim

Ai-je bien fait de déclarer un type ? voyez vous une autre facon de faire ?
je suis en VB6, si vous voulez des précisitions, ca sera avec plaisir
Merci

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Le problème est dans la déclaration de tes paramètre de la fonction :
public function la_fonction (ByRef tableau() As terrain)

"ByRef "pour que ton tableau garde les modifications apportées dans la fonction après la sortie de la fonction.
"As terrain" pour qu'il connaisse la structure des données. Variant l'obligera à analyser le contenu de la variable passée : Il saura reconnaitre un tableau mais ne pourra pas, en plus, remonter d'un cran et chercher la structure interne de chaque élément.

N'utiliser Variant que dans des cas extrèmes.
Toujours lancer son application avec Ctrl-F5 afin qu'il vérifie tout le code avant son lancement, plutôt que de découvrir les erreurs au moment du test.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
3
Messages postés
75
Date d'inscription
dimanche 2 octobre 2005
Statut
Membre
Dernière intervention
24 juin 2007

merci beaucoup , c'était ca !
j'avoue que je comprend pas tout sur byref byval , il va falloir que je m'y interresse
0
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
0