Erreur ByRef et tableau

Résolu
Vedlen Messages postés 360 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 7 septembre 2009 - 11 nov. 2006 à 18:49
Vedlen Messages postés 360 Date d'inscription mardi 14 octobre 2003 Statut Membre Derniè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 ?

Merci d'avance

8 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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>
3
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 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.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 nov. 2006 à 21:09
Salut,

je confirme, il nous faut ta fonction pour te répondre.
Les types de données doivent être correspondant.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Vedlen Messages postés 360 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 7 septembre 2009
11 nov. 2006 à 22:36
Function NumContact(Nom As String) As Integer

For i = 0 To (List1.ListCount - 1)
If Nom = List1.List(i) Then
ContactVersNum = i
Exit Function
End If
Next i

End Function

Voilà une des fonctions
0

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

Posez votre question
Vedlen Messages postés 360 Date d'inscription mardi 14 octobre 2003 Statut Membre Derniè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..

Merci de vos réponses
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 nov. 2006 à 22:50
De rien,

et  "Oui, ça je sais bien :P"  >> c'était au cas où  :$

bonne prog

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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.

  Exit Function

  End If

Next i


End Function

MPi
0
Vedlen Messages postés 360 Date d'inscription mardi 14 octobre 2003 Statut Membre Derniè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à

Mais bonne remarque
0
Rejoignez-nous