OVH Cloud OVH Cloud

GROSSE MERDE d'XL QUAND CALCULE SUR MATRICES

6 réponses
Avatar
Mirandole
BIEN : posons le PROBLEME :

Sur ma FEUIL1 j'ai une (grosse) matrice qui est calculée à partir
des données d'une autre (grosse) matrice, cette dernière se trouve sur
la FEUIL2.

Quand je change UN élément de ma matrice de la FEUIL2, la matrice de
la FEUIL1 est IMMEDIATEMENT recalculée.
Ca paraît normal...

Mais EN FAIT, sur la FEUIL2, ma (grosse) matrice (qui alimente donc
celle de la FEUIL1), est elle-même calculée à partir d'un tableau qui se
trouve sur la FEUIL3.

Quand je change UN SEUL élément du tableau de la FEUIL3, la matrice
de la FEUIL2 est IMMEDIATEMENT recalculée. Normal. Sauf que cela
entraîne le changement d'un GRAND NOMBRE de cases dans la FEUIL2. Et à
chaque fois d'UNE SEULE case de la FEUIL2 change, la matrice FEUIL1 est
recalculée.

Donc imagine : je change UNE donnée parmi 2000 (FEUIL3)
--> Ca change TOUS les chiffres de la
matrice FEUIL2 (soit 2000 chiffres)
--> Ca appelle 2000 fois ma fonction
matricielle pour recalculer la matrice FEUIL1
C'est ABOMINABLE !

6 réponses

Avatar
MichDenis
Tu peux passer au mode de calcul manuel
barre des menus / outils / options / onglet calcul

Il est possible de demander par macro que le calcul s'exécute que sur un :

Une plage de cellules :
Worksheets("Feuil1").range("A1:G25").Calculate

Sur toute une feuille :
Worksheets("Feuil1").Calculate

Pour toute l'application :
Application.Calculate

Ces dernìères lignes de code peuvent être déclenché par un bouton sur ta feuille...






"Mirandole" a écrit dans le message de news:
4559cb2f$0$22589$
BIEN : posons le PROBLEME :

Sur ma FEUIL1 j'ai une (grosse) matrice qui est calculée à partir
des données d'une autre (grosse) matrice, cette dernière se trouve sur
la FEUIL2.

Quand je change UN élément de ma matrice de la FEUIL2, la matrice de
la FEUIL1 est IMMEDIATEMENT recalculée.
Ca paraît normal...

Mais EN FAIT, sur la FEUIL2, ma (grosse) matrice (qui alimente donc
celle de la FEUIL1), est elle-même calculée à partir d'un tableau qui se
trouve sur la FEUIL3.

Quand je change UN SEUL élément du tableau de la FEUIL3, la matrice
de la FEUIL2 est IMMEDIATEMENT recalculée. Normal. Sauf que cela
entraîne le changement d'un GRAND NOMBRE de cases dans la FEUIL2. Et à
chaque fois d'UNE SEULE case de la FEUIL2 change, la matrice FEUIL1 est
recalculée.

Donc imagine : je change UNE donnée parmi 2000 (FEUIL3)
--> Ca change TOUS les chiffres de la
matrice FEUIL2 (soit 2000 chiffres)
--> Ca appelle 2000 fois ma fonction
matricielle pour recalculer la matrice FEUIL1
C'est ABOMINABLE !
Avatar
Jacquouille
Pas de "Bonjour"
Pas de "SVP"
Pas de "Au revoir"
Pas de "Merci"
Pas de question....donc
Pas de réponse.
C'est comme s'il était écrit que la terre tourne.
Pour ce qui est du temps de re-calcul, tout est relatif.

Jacques, philosophe à 16 Hr.
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/

Jacquouille.

"Mirandole" a écrit dans le message de news:
4559cb2f$0$22589$
BIEN : posons le PROBLEME :

Sur ma FEUIL1 j'ai une (grosse) matrice qui est calculée à partir des
données d'une autre (grosse) matrice, cette dernière se trouve sur la
FEUIL2.

Quand je change UN élément de ma matrice de la FEUIL2, la matrice de la
FEUIL1 est IMMEDIATEMENT recalculée.
Ca paraît normal...

Mais EN FAIT, sur la FEUIL2, ma (grosse) matrice (qui alimente donc
celle de la FEUIL1), est elle-même calculée à partir d'un tableau qui se
trouve sur la FEUIL3.

Quand je change UN SEUL élément du tableau de la FEUIL3, la matrice de
la FEUIL2 est IMMEDIATEMENT recalculée. Normal. Sauf que cela entraîne le
changement d'un GRAND NOMBRE de cases dans la FEUIL2. Et à chaque fois
d'UNE SEULE case de la FEUIL2 change, la matrice FEUIL1 est recalculée.

Donc imagine : je change UNE donnée parmi 2000 (FEUIL3)
--> Ca change TOUS les chiffres de la matrice
FEUIL2 (soit 2000 chiffres)
--> Ca appelle 2000 fois ma fonction
matricielle pour recalculer la matrice FEUIL1
C'est ABOMINABLE !


Avatar
Kasfipasherov
BONJOUR,
BONJOUR,BONJOUR,BONJOUR,BONJOUR,BONJOUR,BONJOUR,BONJOUR,BONJOUR,BONJOUR,BONJOUR,BONJOUR,BONJOUR,
"Mirandole" a écrit dans le message de news:
4559cb2f$0$22589$
BIEN : posons le PROBLEME :

Sur ma FEUIL1 j'ai une (grosse) matrice qui est calculée à partir des
données d'une autre (grosse) matrice, cette dernière se trouve sur la
FEUIL2.

Quand je change UN élément de ma matrice de la FEUIL2, la matrice de la
FEUIL1 est IMMEDIATEMENT recalculée.
Ca paraît normal...

Mais EN FAIT, sur la FEUIL2, ma (grosse) matrice (qui alimente donc
celle de la FEUIL1), est elle-même calculée à partir d'un tableau qui se
trouve sur la FEUIL3.

Quand je change UN SEUL élément du tableau de la FEUIL3, la matrice de
la FEUIL2 est IMMEDIATEMENT recalculée. Normal. Sauf que cela entraîne le
changement d'un GRAND NOMBRE de cases dans la FEUIL2. Et à chaque fois
d'UNE SEULE case de la FEUIL2 change, la matrice FEUIL1 est recalculée.

Donc imagine : je change UNE donnée parmi 2000 (FEUIL3)
--> Ca change TOUS les chiffres de la matrice
FEUIL2 (soit 2000 chiffres)
--> Ca appelle 2000 fois ma fonction
matricielle pour recalculer la matrice FEUIL1
C'est ABOMINABLE !


Avatar
Mirandole
Bonjour !!

C'est bien ce que j'ai fait en fin de compte : un bouton qui fait à peu
près ça :

Worksheet(1,2 et 3).enablecalculationúlse;

Puis dans l'ordre :
Worksheet(3).enablecalculation=true;
Worksheet(2).enablecalculation=true; application.calculate

Ensuite : Worksheet(3).enablecalculationúlse;
Worksheet(2).enablecalculationúlse;

Et enfin : worksheet(1).enablecalculation=true; application.calculate;

De sorte que, quand la matrice de la FEUIL1 est calculée, les FEUIL2 et
3 sont incalculables (enablecalculationúlse) et par conséquent la
formule matricielle ne s'éxécute qu'une seule fois.


C'est quand même un bug d'excel, puisqu'il pourrait se dire, au moment
d'organiser les calculs :
- matrice1 est une formule matricielle qui utilise les
cases de matrice2
- matrice2 est une formule matricielle (HasFormulaArray)
==> donc je calcule TOUT matrice2 avant de calculer TOUT
matrice1, en une seule fois


MERCI quand même ! et Bonne journée


Tu peux passer au mode de calcul manuel
barre des menus / outils / options / onglet calcul

Il est possible de demander par macro que le calcul s'exécute que sur un :

Une plage de cellules :
Worksheets("Feuil1").range("A1:G25").Calculate

Sur toute une feuille :
Worksheets("Feuil1").Calculate

Pour toute l'application :
Application.Calculate

Ces dernìères lignes de code peuvent être déclenché par un bouton sur ta feuille...






"Mirandole" a écrit dans le message de news:
4559cb2f$0$22589$
BIEN : posons le PROBLEME :

Sur ma FEUIL1 j'ai une (grosse) matrice qui est calculée à partir
des données d'une autre (grosse) matrice, cette dernière se trouve sur
la FEUIL2.

Quand je change UN élément de ma matrice de la FEUIL2, la matrice de
la FEUIL1 est IMMEDIATEMENT recalculée.
Ca paraît normal...

Mais EN FAIT, sur la FEUIL2, ma (grosse) matrice (qui alimente donc
celle de la FEUIL1), est elle-même calculée à partir d'un tableau qui se
trouve sur la FEUIL3.

Quand je change UN SEUL élément du tableau de la FEUIL3, la matrice
de la FEUIL2 est IMMEDIATEMENT recalculée. Normal. Sauf que cela
entraîne le changement d'un GRAND NOMBRE de cases dans la FEUIL2. Et à
chaque fois d'UNE SEULE case de la FEUIL2 change, la matrice FEUIL1 est
recalculée.

Donc imagine : je change UNE donnée parmi 2000 (FEUIL3)
--> Ca change TOUS les chiffres de la
matrice FEUIL2 (soit 2000 chiffres)
--> Ca appelle 2000 fois ma fonction
matricielle pour recalculer la matrice FEUIL1
C'est ABOMINABLE !




Avatar
FxM
Le même demain matin :
OUAIS QU'EST-CE QUE C'EST QUE CE BO......
Y'a Excel qui ne recalcule plus rien, il faut que je presse F9 pour que
blabla machin truc.


Au fait : Bonjour, Merci et Au revoir.

FxM




BIEN : posons le PROBLEME :

Sur ma FEUIL1 j'ai une (grosse) matrice qui est calculée à partir des
données d'une autre (grosse) matrice, cette dernière se trouve sur la
FEUIL2.

Quand je change UN élément de ma matrice de la FEUIL2, la matrice de
la FEUIL1 est IMMEDIATEMENT recalculée.
Ca paraît normal...

Mais EN FAIT, sur la FEUIL2, ma (grosse) matrice (qui alimente donc
celle de la FEUIL1), est elle-même calculée à partir d'un tableau qui se
trouve sur la FEUIL3.

Quand je change UN SEUL élément du tableau de la FEUIL3, la matrice
de la FEUIL2 est IMMEDIATEMENT recalculée. Normal. Sauf que cela
entraîne le changement d'un GRAND NOMBRE de cases dans la FEUIL2. Et à
chaque fois d'UNE SEULE case de la FEUIL2 change, la matrice FEUIL1 est
recalculée.

Donc imagine : je change UNE donnée parmi 2000 (FEUIL3)
--> Ca change TOUS les chiffres de la
matrice FEUIL2 (soit 2000 chiffres)
--> Ca appelle 2000 fois ma fonction
matricielle pour recalculer la matrice FEUIL1
C'est ABOMINABLE !


Avatar
Patrick Penet
Ouais, ce Mirandole c'est pas un Picdela !

Excel 2003 ne merde jamais (testé) : c'est celui
qui est assis devant.
P