Comment optimiser la rapidité ?

  • Initiateur de la discussion Sylvain123
  • Date de début
S

Sylvain123

Guest
Bonjour à tous,

Travaillant avec des gros fichier avec plein de calcul, je cherche comment on peut optimiser tout celà.

En effet, pour certain recalcul excel met plusieurs minutes !
(Plus d'un million de formules à recalculer avec des fonction VBA)

Apparament, créer une function en VBA, ça peut etre très pratique mais pas très rapide...
Ainsi, l'utilisation de function uniquement pour réduire les formules m'a permis de réduire un fichier de 20Mo à 5Mo. (Et pour des plus gros fichier que 20Mo, excel n'aime pas, plante, refuse d'ouvrir...)
Mais aussi multiplier par 10 le temps de recalcul...

Comment peut on optimiser le code VBA pour réduire tout ce qui ne sert pas et perd du temps ?

Perso je ne connais que l'arret de l'affichage par :
Application.ScreenUpdating = False

Mais il y a sans doute d'autres trucs que je n'y pas trouvé...

Merci de votre aide, @+

PS: Sous Excel 2000, 384Mo de ram et processeur 1GHz.
 
S

Sylvain123

Guest
Rebonjour,

Juste pour rajouter que mes formules utilise beaucoup d'appel de function avec quelques paramètres et aussi pas mal la fonction Indirect (sur un autre classeurs excel qui est ouvert en même temps)
Y en a t il un des 2 prépondérants ?


Y a t il quelque part le temps d'exécution des diverses function excel ou VBA ?

Merci, @+
 
Z

Zon

Guest
Salut,

Pour améliorer le temps de calcul tu peux passer en mode de calcul manuel pour éviter qu'XL recalcule à chaque changement de cellule. Je vais me faire crier dessus mais bon un fichier excel sans formule c'est ce qu'il ya de plus rapide...



A+++
 
S

Sylvain123

Guest
Bonjour,

Merci de ta réponse.

Je suis déjà en mode calcul manuel (je ne l'avais pas précisé)

C'est sur que sans formule, c'est plus rapide...
Mais alors, on a que des données, aucune analyse...

Or perso, j'ai pas mal de donnée dans un fichier (10 - 20 Mo !) (pas de formule, rapide)
+ des fichiers indépendant d'analyses avec des milliers voir millons de formules !!! (Pas de donnée à part les paramètres d'analyse, très lent...)
Et là c'est 5 minutes minumum par analyse.
Sachant que je dois faire plusieurs centaines d'analyse à la suite pour voir comment les résultats sont influencé selon les paramètres d'entrée...
=> Plusierurs heures voir jours de calcul !
Beaucoup trop long...

Pour que celà soit vraiement utilisable, il me faudrait avoir le résultat en maxi 1 seconde !

Sinon, j'ai fait quelques test et apparement, c'est l'appel de function perso qui est très long... (passer les paramètre est long, mes calculs étant simple, il sont assez rapide, puis renvoyer le résultats)

Par contre, les fonction d'origine d'excel ont l'air de beaucoup mieux se débrouiller niveau rapidité. Leur code serait il compilé ?
Si oui, est il possible de faire de même avec mes fonctions perso ?

Dans la négative, je crois que je vais arreter excel pour ces analyses qui le dépasse bien trop.
(Sympa microsoft, un pack office qui fait des centaines de Mo installé + des fichiers enregistré qui sont compressable très souvent par 5 ou +, dès qu'un fichier est trop gros, c'est erreurs (mémoire ou autre qui n'ont rien à voir alors qu'il reste largement de la mémoire...) Ils voient grand pour eu, mais petit pour l'utilisateur...)

Sinon, quel logiciel permet de gerer de grosse quantité de donnée, de grosse analyse perso très rapide, qui est plus ou moins facilement programmable, qui n'as pas de problème mémoire... ?

Je vais peut etre tenter de faire les analyse sous Matlab que je connais bien (c'est pas vraiment son boulot, mais gère bien les grosses données et rapide (assez ?))
D'autres propositions ?


Merci de votre aide...
@+
 
T

Ti

Guest
Les appels de fonctions sont lents s'ils sont effectués dans l'interface d'Excel (autrement dit si tes fonctions perso se retrouvent mélangées à des formules dans des cellules) mais si tu travailles par exemple sur des tableaux de données extraits de tes cellules et que tu effectues tes calculs directement sur ces tableaux, alors ça va également très vite.
Donc cette lenteur est peut-être inhérente à l'organisation même de tes fichiers.
En tout cas entre 1 s. et plusieurs jours de calculs, il y a une marge énorme. Si tu es sûr que ces calculs, dans d'autres circonstances, peuvent être réalisés en 1 s alors que tu les fais en plusieurs jours, alors tu as forcément une marge de progression conséquente.
 
S

Sylvain123

Guest
Merci pour la réponse

Oui, je suis d'accord avec toi.
Mais vu qu'avec les données de base, recalcul plusieurs centaines de cellules qui seront elle même analysé, si je fait celà dans une macro, sans l'interface excel, il me faidra de gros tableaux de données qui prendront pas mal de mémoire (et excel et/ou VBA ne sont pas super fort pour la gestion de la mémoire) et ça risque bien d'etre plus rapide mais excel risque de ne pas pouvoir allouer les tableau necessaires...

Par contre, aucune idée du temps minimum.
1s c'est ce que je voudrais.

Je sais juste que j'avais fait un 1er début d'une autre version sans function perso. Les formules était beaucoup plus longue mais c'était très nettement plus rapide.
Le hic, c'était que mon fichier faissait plus de 20Mo et que je ne pouvais pas finir mes analyse car l'ajout de plus de formule augmentait la taille du fichier et excel arretait (Mémoire insufisante, alors qu'il y en avait encore plein)
En passant par des function perso, j'ai fortement réduit la taille du fichier (formules + courtes) et pouvais continuer mais le temps d'execution à explosé...

Y a sans doute un compromis à trouvé entre les 2 pour gagner un peu de temps et de place, mais si j'ai trop de donnée, ça marchera pas...

En Visual Basic 5 (celui que j'ai) j'avais essayer une fois de gerer pas mal de données mais VB5 n'arrivais pas à allouer les tableaux necessaire (type bien défini au minimum)...
Alors, VBA fera sans doute de même...

Trop de donnée et de calculs apparement...

Je vais tenter autre chose que excel.

Si vous connaissez un autre chose qui marche bien, faite moi signe...

Merci, @+
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 604
Membres
103 605
dernier inscrit
gabriel morency