VBA: erreur de débutant en 30s svp!!

Fermé
wesley78 Messages postés 11 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 29 mai 2010 - 28 mai 2010 à 19:17
wesley78 Messages postés 11 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 29 mai 2010 - 29 mai 2010 à 14:16
Bonjour,

Une fonction toute bête comme la suivante me donne des #valeur! pourquoi? je sais que l'erruer vient de la ligne vectcopy = vecteurarg mais je voudrais comprendre le pourquoi du comment, ce qui en plait pas à VBA.


option explicit

Function copions(vecteurarg As Variant) ' prend un vecteur et fait une copie

Dim vectcopy() As Variant
vectcopy = vecteurarg

copions = vecteurarg

End Function

Merci d'avance!!

3 réponses

stevengren Messages postés 164 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 11 décembre 2012
28 mai 2010 à 19:58
Si je comprend bien tu a une fonction nommé copions() et 2 variable une s'appelant vectcopy et l'autre s'appelant vecteurarg

alors lorsque tu appelle ta fonction
copion(la tu lui passe la variable dans ton cas ton vecteur)

ensuite dans ta fonction tu fais une copie de ton vecteur reçu
vectcopy = vecteurarg

et c'est la ton erreur pourquoi fais tu copions = vecteurarg

copions est un fonction et non une variable tu ne peux pas égaler ta fonction a une variable

A partir de la explique moi un peut ce que tu veux faire car tu étais bien partit ?
Veux tu retourner ta valeur?
0
wesley78 Messages postés 11 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 29 mai 2010
29 mai 2010 à 13:18
Bonjour Stevengren,

merci de ta réponse! alors effectivement j'ai une fonction à qui je passe en argument un vecteur. Et j'aimerais tout simplement créer une copie de ce vecteur. Donc je crée un autre vecteur : vectcopy

cependant la ligne vectcopy = vecteurarg est la cause des #valeur! VBA n'aime pas ça et je demande pourquoi...

le copions = vecteurarg est l'équivalent (pour moi) d'un return vecteurarg

en fait, de même si j'utilise par exemple

dim n as integer

n = ubound(vecteurarg,1) je vais obtenir des #valeur! ce n'est pas très clair pour moi comment je dois correctement faire appel au vecteur passé en argument! tu vois mon souci?

en soit ce programme est stupide et ne me sert qu'à voir comment marche VBA et je ferai le même genre de tests après avec un tableau etc etc.

Merci
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
29 mai 2010 à 13:49
Bonjour,
Tu dis...
Dim vectcopy() As Variant 
vectcopy = vecteurarg 

Tu dimentionne vectcopy comme un tableau mais tu lui attribue une valeur comme si c'est une variable ??
A+
0
wesley78 Messages postés 11 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 29 mai 2010
29 mai 2010 à 14:16
Bonjour,

Ok merci pour la remarque... elle m'a fait réfléchir 30s et je vois ce que tu veux dire: donc pour "égaler" 2 vecteurs, il faut juste égaler toutes les composantes d'où une boucle. Mais alors là on en revient au problème: je dois pour faire une boucle connnaitre la taille de mon vecteur mais avec n = ubound(vecteurarg,1) j'obtiens des #valeur! je pourrais à la limite faire une boucle do while mais pourquoi le n = ubound(vecteurarg,1) ne marche t il pas?

merci d'avance!
0