Récupérer tableau dans un autre fonction
Résolu
ezor
Messages postés
177
Date d'inscription
Statut
Membre
Dernière intervention
-
ezor Messages postés 177 Date d'inscription Statut Membre Dernière intervention -
ezor Messages postés 177 Date d'inscription Statut Membre Dernière intervention -
Bonsoir à toutes et à tous,
Je débute en vba (même pas 2 semaines :s) et j'ai un problème depuis plusieurs jours.
En effet, j'ai codée deux fonctions qui prennent en argument un tableau (et d'autre trucs aussi ) et qui sont censée renvoyer un tableau.
Donc en gros, elles ont cette tête
ou cette tête
ce que je veux faire, c'est pouvoir réutiliser ces fonctions dans une fonction plus global, où l'utilisateur (donc moi pour le moment :) ) peut choisir les arguments et elle appelera les fonctions qui vont bien. J'ai tenté quelque chose mais j'ai toujours un message d'erreur
le bug vient de mon_tableau qui n'est pas reconnu comme un tableau par exemple2
Cependant, le MsgBox renvoie bien la valeur de la 3e case du tableau....
--j'ai essayé sans le "call", mais il faut que je mette un = d'apres le message d'erreur
--ça fonctionne uniquement si je passe en arguement de a fonction exemple2 toute la fonction exemple
mais c'est pas ce que je veux faire ! je souhaite vraiment (si c'est possible) récupérer ce tableau renvoyé par ma fonction dans une variable pour en faire ce que je veux ensuite
J'espère avoir été suffisamment clair dans mes explications, et je remercie par avance toutes les personnes qui essayeront de m'aider.
ezor
Je débute en vba (même pas 2 semaines :s) et j'ai un problème depuis plusieurs jours.
En effet, j'ai codée deux fonctions qui prennent en argument un tableau (et d'autre trucs aussi ) et qui sont censée renvoyer un tableau.
Donc en gros, elles ont cette tête
Function exemple(argument1, argument2) as double() Dim Tableau() As Double 'corps de la fonction, qui remplit le tableau Tableau qui vient d'être créé exemple = Tableau End Function
ou cette tête
Public Function exemple1(tab() As Double, argument1, argument2) as double() 'je fais ma fonction que "transforme" le tableau tab exemple1 = tab End Function
ce que je veux faire, c'est pouvoir réutiliser ces fonctions dans une fonction plus global, où l'utilisateur (donc moi pour le moment :) ) peut choisir les arguments et elle appelera les fonctions qui vont bien. J'ai tenté quelque chose mais j'ai toujours un message d'erreur
sub test(arg, arg, ... ) mon_tableau = exemple(arg_que_je_choisi1, arg_que_je_choisi2) msgbox mon_tableau(3) Call exemple2(mon_tableau, arg_que_je_choisi1, arg_que_je_choisi2) End Sub
le bug vient de mon_tableau qui n'est pas reconnu comme un tableau par exemple2
Cependant, le MsgBox renvoie bien la valeur de la 3e case du tableau....
--j'ai essayé sans le "call", mais il faut que je mette un = d'apres le message d'erreur
--ça fonctionne uniquement si je passe en arguement de a fonction exemple2 toute la fonction exemple
Call exemple2(exemple(arg1, arg2), arg3, arg4)
mais c'est pas ce que je veux faire ! je souhaite vraiment (si c'est possible) récupérer ce tableau renvoyé par ma fonction dans une variable pour en faire ce que je veux ensuite
J'espère avoir été suffisamment clair dans mes explications, et je remercie par avance toutes les personnes qui essayeront de m'aider.
ezor
A voir également:
- Récupérer tableau dans un autre fonction
- Tableau word - Guide
- Fonction si et - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
4 réponses
j'ai eu l'idée cette nuit de commencer par déclarer ma variable mon_tableau en tant que tel au début de ma routine
du coup, plus de problème.
Je laisse la discussion (enfin mon monologue) au cas où quelqu'un tombe dessus un jour
Mais s'il y a un solution plus intéressante, ou au moins une explication sur le fait qu'il arrive à trouver la valeur des cases du tableau sans comprendre ensuite que c'est un objet de type tableau, je suis preneur
sub test(arg, arg, ... ) Dim mon_tableau() as Double mon_tableau = exemple(arg_que_je_choisi1, arg_que_je_choisi2) Call exemple2(mon_tableau, arg_que_je_choisi1, arg_que_je_choisi2) End Sub
du coup, plus de problème.
Je laisse la discussion (enfin mon monologue) au cas où quelqu'un tombe dessus un jour
Mais s'il y a un solution plus intéressante, ou au moins une explication sur le fait qu'il arrive à trouver la valeur des cases du tableau sans comprendre ensuite que c'est un objet de type tableau, je suis preneur
quand tu appelle une fonction, le programme pense que la fonction va renvoyer une valeur et il attend donc que tu mette une variable qui va recuperer cette valeur. il y a sans doute un moyen pour dire que la fonction ne renvoi rien mais je ne sais pas comment faire donc moi je contourne le probleme en utilisan une variable qui ne sera pas utiliser par la suite :
variable_inutile = exemple2(mon_tableau, arg_que_je_choisi1, arg_que_je_choisi2)
variable_inutile = exemple2(mon_tableau, arg_que_je_choisi1, arg_que_je_choisi2)
Salut,
Oui, c'est ce que j'avais fais, mais cette variable était inutilisable par une autre fonction ensuite, et c'était là mon problème.
NB : Une fonction renvoie toujours quelque chose, sinon, c'est une routine
Oui, c'est ce que j'avais fais, mais cette variable était inutilisable par une autre fonction ensuite, et c'était là mon problème.
NB : Une fonction renvoie toujours quelque chose, sinon, c'est une routine
si tu veux que la variable soit utilisable par une autre fonction soit tu met la variable en public soit tu l'envoi en argument a ta fonction
si ce n'etait pas ca ta question, j'ai du mal a comprendre ce que tu veux...
NB : je ne sais comment c'est en vba mais en C on peut faire des fonctions qui ne renvoie rien : ce sont les fonction de type void. la difference c'est qu'en vba, les fonctions n'ont pas de type
si ce n'etait pas ca ta question, j'ai du mal a comprendre ce que tu veux...
NB : je ne sais comment c'est en vba mais en C on peut faire des fonctions qui ne renvoie rien : ce sont les fonction de type void. la difference c'est qu'en vba, les fonctions n'ont pas de type
oui, en C ou java, il y a le type void, mais en vba, il y a deux types de procédures, les fonctions qui renvoient quelque chose et les routines qui renvoient...rien
en gros, routine = fonction de type void
j'ne sais pas beaucoup plus car je début le vba en fait
pour en revenir au sujet, la variable était déjà public. C'est jsute qu'avant de la réutiliser ailleurs, il faut redéfinir son type dans la nouvelle fonction/routine qui va l'utiliser
en gros, routine = fonction de type void
j'ne sais pas beaucoup plus car je début le vba en fait
pour en revenir au sujet, la variable était déjà public. C'est jsute qu'avant de la réutiliser ailleurs, il faut redéfinir son type dans la nouvelle fonction/routine qui va l'utiliser