Vedlen
Messages postés360Date d'inscriptionmardi 14 octobre 2003StatutMembreDernière intervention 7 septembre 2009
-
11 nov. 2006 à 18:49
Vedlen
Messages postés360Date d'inscriptionmardi 14 octobre 2003StatutMembreDernière intervention 7 septembre 2009
-
12 nov. 2006 à 15:32
Bonjour,
J'ai un tableau dynamique Tableau(), et je souhaiterai utiliser la donnée de Tableau(1) dans une fonction.
Sauf qu'au niveau de :
Variable = Fonction(Tableau(1)) : j'obtient un message d'erreur qui me dit que le type ByRef est incompatible.
Si, au niveau de la déclaration de la fonction, j'ajoute "ByVal" juste devant le nom de la varible pour l'argument ; je n'ai plus d'erreur.
Mais si je n'ai pas accès à la déclaration de la variable, comme pour par exemple :
List1.list(Tableau(1)) : j'ai la même erreur.
La seule solution que j'ai trouvé est de placer le contenu de Tableau(1) dans une variable intermédiaire, mais ce n'est pas pratique.
Quelqu'un aurait il une solution ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 11 nov. 2006 à 22:43
Alors donc dans
Variable = Fonction(Tableau(1))
--> Variable doit être de type Integer
Et sinon, c'est logique que tu aies une erreur, ContactVersNum (dans ta fonction ici présente) n'est pas déclarée, et qui dit ByRef, dit que nom devrait (logiquement) récupérer une autre valeur.
Sinon, faut mettre ByVal.
Et pour finir, si la fonction est placée hors du Module de la Form où se trouve ta List1, il faut, devant List1 dans le code de ta fonction, placer le nom de la Form.
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Dolphin Boy
Messages postés630Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention17 février 2007 11 nov. 2006 à 20:31
Salut, pour te répondre, j'aimerais bien connaître le code de ta function.
Par ailleurs, si Tableau(1) contient un integer, je ne vois pas pourquoi List1.list(Tableau(1)) te renverrait une erreur si Tableau(1) contient de l'integer et que ce nombre est < List1.ListCount.
Vedlen
Messages postés360Date d'inscriptionmardi 14 octobre 2003StatutMembreDernière intervention 7 septembre 2009 11 nov. 2006 à 22:49
"Et pour finir, si la fonction est placée hors du Module de la Form où se trouve ta List1, il faut, devant List1 dans le code de ta fonction, placer le nom de la Form."
Oui, ça je sais bien :P
Après avoir re-testé quelques fois, il y a des trucs qui ne marchaient pas avant et qui marchent maintenant, sans même avoir remarqué ce que j'ai modifié entre temps lol.
Bref, le problème a l'air résolu..
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 12 nov. 2006 à 12:50
En plus de ce que Mortalino t'a expliqué, une Function doit retourner
une valeur, ici un Integer. Peut-être est-ce une faute d'inattention,
peut-être que la Function a été modifiée avec le temps et que tu as
oublié de changer le nom de la Function de retour,... Et possiblement
que tu n'as pas Option Explicit déclaré en haut de la page de code....
Function NumContact(Nom As String) As Integer
For i = 0 To (List1.ListCount - 1)
If Nom = List1.List(i) Then
'<strike> ContactVersNum = i</strike>
NumContact = i ' ici, ce doit être le nom de la Function, en principe.
Vedlen
Messages postés360Date d'inscriptionmardi 14 octobre 2003StatutMembreDernière intervention 7 septembre 2009 12 nov. 2006 à 15:32
Effectivement j'ai modifié le nom de la fonction pour l'afficher ici ; le nom de départ de la fonction est bien ContactVersNum :). Donc il n'y avais pas de problème à ce niveau là