Merci jmd, ça marche aussi avec ta méthode, je savais pas que le positionnement du dollar influençait comme ça la formule, et c'est plus simple qu'avec macro.
J'ai enregistré en xlsb je suis à 50Mo.
J'ai un autre problème maintenant, toujours lié à ces gros tableaux.
En fait je suis en train de réaliser un logiciel éléments finis en 3D sur Excel. J'ai ainsi créé tous mes nœuds, mes éléments, les matrices de raideurs de chacun de mes éléments, et maintenant je dois la matrice de raideur globale qui est une matrice de 3000x3000.
Voici un exemple de comment se construit ma matrice de raideur globale. Exemple avec une "structure" composée de 2 barres (2 éléments), donc 3 nœuds (3 points). 2 éléments ayant chacun leur propre raideur exprimée sous forme matricielle ( [k1] ) et ( [k2] ), on assemble ensuite ces 2 matrices dans une matrice de raideur globale :
On voit que les matrices de raideur des 2 éléments ont une matrice de la forme suivante :
Pour ensuite les assembler dans ma matrice globale je dois donner des noms à chacune des ces cellules, j'ai choisi arbitrairement le les nommer "1000 x numéro de ligne + numéro de colonne".
On a ainsi 2 matrices de cette forme :
Pour créer la matrice de raideur globale, pareil de la même façon je nomme ses cellules par la même formule 1000 x numéro de ligne + numéro de colonne, on obtient ça :
Si vous suivez bien c'est pour ça que je vous avez demandé de l'aide à la base, car moi ma matrice de raideur globale est de taille 3000x3000 et j'arrivais pas à nommer simplement chaque cellule.
Ensuite je dois utiliser ma fonction SOMME.SI.
Pour la première case par exemple on a :
SOMME.SI(la sélection de mes 2 tableaux où il y a les numéros de cellules des 2 éléments ; numéro de cellule de la matrice globale ; sélection de mes 2 tableaux où il y a les valeurs des raideurs des 2 éléments)
En français ça donne, si dans mes matrices numéro de cellule il y a des valeurs égales au numéro de cellule de la matrice globale, alors ça somme les valeurs des raideurs correspondant à ce numéro de cellule.
Pour la première case, le numéro de cellule est 1001, ce numéro de cellule n’apparaît qu'une fois dans mes 2 matrices, donc ça prend la valeur A.
Dans la deuxième ligne deuxième colonne, donc numéro de cellule 2002, ce numéro de cellule apparaît 2 fois, donc ça prend la valeur D+E.
Bref, j'en viens au problème...moi j'ai plus de 1000 éléments, une matrice de 3000x3000, j'ai réussi à créer cette grosse matrice de raideur, Excel a mis environ 20 minutes à la créer, et le problème, lorsque je change des caractéristiques de ma structure (dimensions, diamètres, etc), toutes mes matrices de raideurs de chacun de mes éléments changent, donc la matrice de raideur globale également, donc ça remet 20 minutes à se calculer...
Je peux donc plus rien modifier sans avoir de longs calculs...
Je me suis mis en calcul manuel pour que les calculs s'effectuent uniquement lorsque j'appuie sur F9, mais 20 minutes ça reste beaucoup trop long...
MA QUESTION : y a t-il un autre moyen de calculer cette matrice de raideur globale, d'autres fonctions, ou alors par macro, ou des astuces permettant d'optimiser les calculs sur Excel pour le rendre plus rapide ?
Excel est souvent utilisé pour des gros problèmes de mécaniques avec encore de plus grosses matrices que ça, ou pour du traitement de données etc, et ça prend sûrement pas autant de temps, si ?!
Donc comment optimiser ce temps de calcul ?
Merci aux courageux qui auront tout lu