Probleme avec la propriété FormulaArray sous VBA (Excel)

Probleme avec la propriété FormulaArray sous VBA (Excel) - VB/VBA/VBS - Programmation

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!

Reply

Marsh Posté le 10-07-2003 à 19:12:26   

Reply

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.  
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!


as tu mis : application .formulaarray   ?

Reply

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".

Reply

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'.


Message édité par MCH le 17-11-2004 à 14:29:04
Reply

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


Message édité par Profil supprimé le 19-11-2004 à 13:15:39
Reply

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 !


Message édité par MCH le 22-11-2004 à 16:08:41
Reply

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 ?

Reply

Marsh Posté le 24-11-2004 à 10:27:35    

Hummm, si j'en compte 353 mais pourquoi cette question ? Existe t il une limitation ???

Reply

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


Message édité par Profil supprimé le 24-11-2004 à 12:45:39
Reply

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 :).


Message édité par MCH le 30-11-2004 à 10:59:59
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed