Probleme avec la propriété FormulaArray sous VBA (Excel) - VB/VBA/VBS - Programmation
Marsh Posté le 11-07-2003 à 18:44:04
pulley60 a écrit : Bonjour à tous. Voila je travaille en ce moment sur une appli Excel que je passe en VB.Mon probleme est sous Excel, il y a une fonction qui utilise la propriété FormulaArray de la classe Range afin d'afficher le résultat d'un calcul matriciel. Quand j'execute cette fonction depuis la page de code VBA tout se passe bien, le calcul s'effectue correctement, alors que quand je lance la fonction depuis un menu qui a été créé et qui pointe sur la fonction, lors de l'utilisation de la propriété FormulaArray, il bloque et me sors l'erreur "Impossible de définir la propriété FormulaArray de la classe Range". Pourquoi es ce que cela marceh dans un cas et pas dans l'autre alors que c'est la même fonction qui est utilisée??? cela fait 3 jours que je m'arrache les cheveux la dessus, j'y comprend rien. |
as tu mis : application .formulaarray ?
Marsh Posté le 12-07-2003 à 10:25:34
Nan j'utilise la propriete range pour définir une plage de cellule, puis je meet : PlageNommé.FormulaArray. Et c'est la qu'il me met "impossible de definir la propriete FormulaArray de la classe Range".
Marsh Posté le 17-11-2004 à 14:25:02
Je rencontre exactement le meme probleme !!!
J'effectue le remplissage automatique des mes cellules d'un calcul de matricielle grace a cette fonction en macro.
Si j'utilise la macro, la formule ne fonctionne pas, si je tappe ma formule directement dans une cellule, celle ci s'effectue o_O !
En rapport direct ou pas, j'ai remarque que si je retire la division par mille que j'opere sur l'ensemble de ma formule, ma macro fonctionne ?!
J'ai beau retourner ciel et terre je ne trouve pas l'explication a mon probleme :/.
Si tu trouves une solution pulley60, je suis preneur ^^.
edit : le code erreur : Erreur d'execution '1004'.
Marsh Posté le 19-11-2004 à 13:12:21
Essayez avec les notations anglaises des formules ainsi que les R1C1 a la place des A1
Range("E4:E9" ).FormulaArray = "=SOMME(B4:B9*C4:C9)" ne fonctionnera pas
Range("E4:E9" ).FormulaArray = "=SUM(R4C2:R9C2*R4C3:R9C3)" fonctionnera
Marsh Posté le 22-11-2004 à 16:06:44
J'utilise bien les commandes en anglais et voici la formule sur laquelle s'arrete ma macro :
Range("W3" ).FormulaArray = _
"=SUM(IF($A3=[customerorders.xls]CustomerOrders.rpt!$A$1:$A$" & ve & _
",IF([customerorders.xls]CustomerOrders.rpt!$B$1:$B$" & ve & ">I$2" & _
",IF([customerorders.xls]CustomerOrders.rpt!$B$1:$B$" & ve & "<J$2+1" & _
",[customerorders.xls]CustomerOrders.rpt!$E$1:$E$" & ve & ",0))))/1000"
Si quelqu'un a une idee, je suis preneur !
edit : je precise que si j'enleve ma derniere operation, a savoir la division par 1000, la macro s'execute bien o_O !
Marsh Posté le 22-11-2004 à 17:05:21
avec les variables, ca ne te fait pas une formule de plus de 256 caractéres ?
Marsh Posté le 24-11-2004 à 10:27:35
Hummm, si j'en compte 353 mais pourquoi cette question ? Existe t il une limitation ???
Marsh Posté le 24-11-2004 à 12:39:32
je le pensait , mais en fait non :
excel95 : 255 caractéres maxi et 1024 pour une formule
excel2000: 32000 caractéres maxi
ton souci se trouve peut etre dans les conditions IF que tu as mis dans la formule
Obtient tu un chiffre lorsque tu enleve "/1000" ? il se peut que tes condition "IF" t'amene a faire une division qui n'a pas de sens pour Excel.
Essaye en remplacant "/1000" par "/1" ou meme par "*1" ou "+1" pour voir si c'est la division qui géne ou le fait de faire une operation arithmetique en fait de FormulaArray
Marsh Posté le 30-11-2004 à 10:58:57
Bonne idee !
Et oui, le fait d'enlever ma division cela debloque l'operation, c'est ca qui me perd o_O ! C'est pas coherent ^^.
Je vais essayer tout ca :).
Marsh Posté le 10-07-2003 à 19:12:26
Bonjour à tous. Voila je travaille en ce moment sur une appli Excel que je passe en VB.Mon probleme est sous Excel, il y a une fonction qui utilise la propriété FormulaArray de la classe Range afin d'afficher le résultat d'un calcul matriciel. Quand j'execute cette fonction depuis la page de code VBA tout se passe bien, le calcul s'effectue correctement, alors que quand je lance la fonction depuis un menu qui a été créé et qui pointe sur la fonction, lors de l'utilisation de la propriété FormulaArray, il bloque et me sors l'erreur "Impossible de définir la propriété FormulaArray de la classe Range". Pourquoi es ce que cela marceh dans un cas et pas dans l'autre alors que c'est la même fonction qui est utilisée??? cela fait 3 jours que je m'arrache les cheveux la dessus, j'y comprend rien.
Sinon je sais que pour définir la formule d'un cellule comme calcul matriciel, on peut utiliser la combinaison de touches Alt+Maj+Enter, es ce que l'on peut le définir en passant par le code?? Merci beaucoup d'avance à toutes les bonnes ames qui se pencheront sur ma question pour m'aider!