Imbrication de fonctions (personnalisée et Excel)
Fermé
Gedaes
Messages postés
26
Date d'inscription
dimanche 16 décembre 2018
Statut
Membre
Dernière intervention
17 décembre 2018
-
Modifié le 16 déc. 2018 à 10:19
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 - 17 déc. 2018 à 23:30
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 - 17 déc. 2018 à 23:30
A voir également:
- Imbrication de fonctions (personnalisée et Excel)
- Liste déroulante excel - Guide
- Sonnerie personnalisée android - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Formule excel - Guide
2 réponses
yg_be
Messages postés
22698
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 avril 2024
1 471
16 déc. 2018 à 10:10
16 déc. 2018 à 10:10
bonjour, quelques suggestions:
- déclarer les types de tes variables, et n'utiliser
- utiliser les noms de tes fonctions dans ta description. je vois 9 fonctions en tout: une fonction, ma fonction, ma deuxième fonction, fonction rendement, fonction covariance, fonction rendements, covarmat, ReturnMatrix, Covariance_P
- tu écris "je n'arrive pas à appliquer ma fonction covariance à mon tableau temporaire", et tu n'expliques pas ce qui ne fonctionne pas: message d'erreur, ...
- je crois deviner que tu n'es pas certain d’appeler correctement covarmat(), et tu ne nous décris pas comment tu l'appelles
- tu écris "sans ma boucle": peux-tu être plus précis?
- déclarer les types de tes variables, et n'utiliser
variantque quand c'est indispensable
- utiliser les noms de tes fonctions dans ta description. je vois 9 fonctions en tout: une fonction, ma fonction, ma deuxième fonction, fonction rendement, fonction covariance, fonction rendements, covarmat, ReturnMatrix, Covariance_P
- tu écris "je n'arrive pas à appliquer ma fonction covariance à mon tableau temporaire", et tu n'expliques pas ce qui ne fonctionne pas: message d'erreur, ...
- je crois deviner que tu n'es pas certain d’appeler correctement covarmat(), et tu ne nous décris pas comment tu l'appelles
- tu écris "sans ma boucle": peux-tu être plus précis?
Utilisateur anonyme
Modifié le 16 déc. 2018 à 11:10
Modifié le 16 déc. 2018 à 11:10
Bonjour
ReturnMatrix te rend un tableau, pas un objet Range. Or ta fonction covarmat est écrite pour travailler sur un Range :
le .Colums(x) et .Columns(y) n'existent pas sur les tableaux.
Il faut que tu extraies les colonnes de ton tableau, et que tu modifies aussi Covariance_P pour pouvoir lui passer des tableaux simples au lieu de Range.
(Pour faciliter l'extraction des colonnes, tu auras probablement intérêt à permuter les indices i et j dans ReturnMatrix)
ReturnMatrix te rend un tableau, pas un objet Range. Or ta fonction covarmat est écrite pour travailler sur un Range :
matriceresultat(x, y) = Application.WorksheetFunction.Covariance_P(temporaryreturn.Columns(x), temporaryreturn.Columns(y))
le .Colums(x) et .Columns(y) n'existent pas sur les tableaux.
Il faut que tu extraies les colonnes de ton tableau, et que tu modifies aussi Covariance_P pour pouvoir lui passer des tableaux simples au lieu de Range.
(Pour faciliter l'extraction des colonnes, tu auras probablement intérêt à permuter les indices i et j dans ReturnMatrix)
Gedaes
Messages postés
26
Date d'inscription
dimanche 16 décembre 2018
Statut
Membre
Dernière intervention
17 décembre 2018
16 déc. 2018 à 15:34
16 déc. 2018 à 15:34
C'est tout à fait ça je pense que tu as mis le doigt sur le problème que je soupçonnais! Ta deuxième méthode serait merveilleuse et simple mais malheureusement "interdite" ici car je réalise ce code pour un devoir et mon prof nous impose de stocker les résultats de Range temporairement justement.... :'(
Je pense donc qu'il faut creuser ta première solution qui m'a l'air la bonne.
Une fille de ma classe m'a suggéré l'idée (je pense ça judicieux) de remplir un tableau temporaire avec les colonnes de mon tableau comme tu le dis.
J'ai tenté de faire cela avec une boucle for mais je n'ai pas du tout réussi..
Peut être que cela venait justement du fait de la permutation des indices comme tu le dis à la fin? Pourrais-tu m'expliquer ? Je pense vraiment que tu es sur la bonne voie et pourrais me débloquer de 3 jours de blocage...
Je pense donc qu'il faut creuser ta première solution qui m'a l'air la bonne.
Une fille de ma classe m'a suggéré l'idée (je pense ça judicieux) de remplir un tableau temporaire avec les colonnes de mon tableau comme tu le dis.
J'ai tenté de faire cela avec une boucle for mais je n'ai pas du tout réussi..
Peut être que cela venait justement du fait de la permutation des indices comme tu le dis à la fin? Pourrais-tu m'expliquer ? Je pense vraiment que tu es sur la bonne voie et pourrais me débloquer de 3 jours de blocage...
Gedaes
Messages postés
26
Date d'inscription
dimanche 16 décembre 2018
Statut
Membre
Dernière intervention
17 décembre 2018
16 déc. 2018 à 15:35
16 déc. 2018 à 15:35
Tu parles également de modifier covariance_P pour lui passer des tableaux simples au lieu de Range, étant une fonction Excel comment puis-je faire ça?
Merci beaucoup pour ton aide en tout cas déjà
Merci beaucoup pour ton aide en tout cas déjà
Utilisateur anonyme
>
Gedaes
Messages postés
26
Date d'inscription
dimanche 16 décembre 2018
Statut
Membre
Dernière intervention
17 décembre 2018
16 déc. 2018 à 21:04
16 déc. 2018 à 21:04
J'ignorais que covariance_P était une fonction Excel, sinon je ne t'aurais pas proposé de la modifier. C'est te dire mon niveau en Excel...
Mais puisque tu ne peux pas la modifier, tu dois obligatoirement lui passer deux objets Range, et je ne connais pas (mais je ne connais pas grand-chose) d'autre méthode pour obtenir des objets Range, que de prendre des cellules d'une feuille. Donc je ne vois pas d'autre méthode que d'utiliser une feuille temporaire.
Tu dis que ton prof t'impose de stocker les résultats de Range temporairement, mais je ne vois pas très bien ce que ça veut dire :
Parles-tu d'un objet Range ? On ne parle pas habituellement du résultat d'un objet
Parles-tu de la propriété Worksheet.Range ? Là, on parle bien du résultat puisqu'une propriété est une fonction, mais ce résultat est un objet Range et toi, ce que tu mémorise temporairement, ce n'est pas un objet Range : tu ne respectes pas plus sa consigne.
Mais puisque tu ne peux pas la modifier, tu dois obligatoirement lui passer deux objets Range, et je ne connais pas (mais je ne connais pas grand-chose) d'autre méthode pour obtenir des objets Range, que de prendre des cellules d'une feuille. Donc je ne vois pas d'autre méthode que d'utiliser une feuille temporaire.
Tu dis que ton prof t'impose de stocker les résultats de Range temporairement, mais je ne vois pas très bien ce que ça veut dire :
Parles-tu d'un objet Range ? On ne parle pas habituellement du résultat d'un objet
Parles-tu de la propriété Worksheet.Range ? Là, on parle bien du résultat puisqu'une propriété est une fonction, mais ce résultat est un objet Range et toi, ce que tu mémorise temporairement, ce n'est pas un objet Range : tu ne respectes pas plus sa consigne.
Gedaes
Messages postés
26
Date d'inscription
dimanche 16 décembre 2018
Statut
Membre
Dernière intervention
17 décembre 2018
16 déc. 2018 à 21:12
16 déc. 2018 à 21:12
Oui Covariance_P est la fonction de covariance d'Excel donc je ne vais pas pouvoir agir dessus et je vais devoir réussir à transformer mes objets en Range comme tu le dis.
Je me suis en effet mal exprimée tu ne peux forcément pas comprendre! Je voulais dire que je suis obligée de stocker temporairement les résultats de ReturnMatrix (évidemment pas de Range cela ne veut rien dire c'est normal que tu sois perdu...)
Je me suis en effet mal exprimée tu ne peux forcément pas comprendre! Je voulais dire que je suis obligée de stocker temporairement les résultats de ReturnMatrix (évidemment pas de Range cela ne veut rien dire c'est normal que tu sois perdu...)
16 déc. 2018 à 10:17
Merci d'abord pour ton retour.
- mes variables sont pourtant déclarées à chaque fois au début selon leur type (integer etc), je ne comprends pas ta remarque
- il n'y a que deux fonctions pourtant mais je n'ai peut être pas été claire (je vais le modifier) : ReturnMatrix puis covarmat (qui applique la Covariance_P à la fonction rendement)
- il n'y a aucun message d'erreur c'est bien ça mon problème ma fonction me renvoie simplement le fameux #Valeur je ne sais donc absolument pas d'où vient mon erreur...
- je pense que c'est plutôt ma façon d'appliquer covariance_P qui ne doit s'appliquer que sur une colonne
- je veux dire que si je mets directement temporaryreturn en sortie de covarmat cela me renvoie bien ma plage de données mais lorsque j'applique la covariance dessus rien ne va #Valeur
16 déc. 2018 à 10:22
"ma fonction me renvoie simplement": quelle fonction, et comment l'appelles-tu?
16 déc. 2018 à 10:31
Pour ce qui est des Variant deux sont directement sur mes fonctions et non sur mes variables. Je n'ai pas le choix pour cette syntaxe la ReturnMatrix et Covarmat doivent être as Variant (imposé dans mon devoir).
La fonction covarmat, c'est d'elle qui me pose problème seulement je ne parle d'aucune autre. Je l'appelle comme une fonction matricielle normale en sélectionnant ma plage de cellule, sélectionnant ma plage paramètre puis CTRL+Shift+Enter. Ce n'est pas l'appelation dans Excel mon problème comme je le spécifiais car quand je teste sur une plage de cellule normale la covarmat fonctionne. Le problème vient bel et bien du fait d'appliquer covarmat SUR ReturnMatrix.
J'ai l'impression de ne pas m'exprimer assez clairement à tes yeux je m'en excuse ^^
Modifié le 16 déc. 2018 à 10:35
je suggère de la découper ainsi:
tu pourras soit obtenir un message d'erreur, soit observer le contenu de chaque variable.
16 déc. 2018 à 10:43
quid des 2 autres ?
peux-tu montrer le code de covermat qui fonctionne, sans appeler ReturnMatrix?