Bonjour à tous, je pensais venir vers vous prochainement pour réfléchir à l'optimisation d'une appli en fin de développement pour sa beta mais je me retrouve dors et déjà à moitié piégé depuis que je la teste avec des fichiers remplis de données.
L'appli atteint jusque là tous ses objectifs et ceci en grande partie grâce à toutes les bonnes volontés du net et de ce forum en particulier, via vos réponses à mes messages alambiqués ou le plus souvent par des réponses à d'autres posts.
L'appli est constituée d'un fichier "moteur" et de 3 fichiers bases de données. J'ai circonscrit les calculs au fichier moteur et, théoriquement, je ne perds du temps avec les Bdds qu'au moment de l'import-export. Je comptais d'ailleurs étudier ensuite les possibilités de travailler avec des fichiers Bdd fermées... Je ne me doutais absolument pas qu'avoir de gros fichiers ouverts à côté pouvait ralentir drastiquement celui en cours.
D'autant plus que j'utilise l'Appplication.ScreenUpdating=false à chaque macro de calcul.
Lorsque je veux modifier des infos primaires d'un élément d'une Bdd, je les copie sur mon fichier moteur, les modifie, calcule des données secondaires déterminées par les primaires et lorsque tout est fini et validé, je renvoie le tout dans la Bdd qui calcule tout de même certaines données via des formules relativement simples (somme si).
J'effectue aussi des calculs intermédiaires de contrôle des modifications, les lenteurs se manifestent donc tout le long du processus.
Depuis que j'ai rempli mes 3 Bdd, l'une atteignant 9 Mo, toute l'application s'est fortement ralentie et s'approche d'un niveau handicapant.
Les mêmes calculs entre Bdd légères et pleines prennent des multiples de *2 à *4, une bête macro de filtrage de Listview qui réagissait en 0,5 sec met le double-triple... Le confort utilisateur est en train de passer du jour à la nuit noire.
Quelqu'un a-t-il des pistes, suggestions ? Excel 2010 aurait-il des atouts connus dans ce domaine ?
A court terme, je racle les fonds de tiroirs : j'ai enlevé toute mise en forme de mes bdd, volets débloqués, etc. Je chronomètre mes boucles pour voir où optimiser mais je doute d'avoir une marge conséquente, peut-être juste assez pour atteindre un niveau acceptable temporairement.
L'appli atteint jusque là tous ses objectifs et ceci en grande partie grâce à toutes les bonnes volontés du net et de ce forum en particulier, via vos réponses à mes messages alambiqués ou le plus souvent par des réponses à d'autres posts.
L'appli est constituée d'un fichier "moteur" et de 3 fichiers bases de données. J'ai circonscrit les calculs au fichier moteur et, théoriquement, je ne perds du temps avec les Bdds qu'au moment de l'import-export. Je comptais d'ailleurs étudier ensuite les possibilités de travailler avec des fichiers Bdd fermées... Je ne me doutais absolument pas qu'avoir de gros fichiers ouverts à côté pouvait ralentir drastiquement celui en cours.
D'autant plus que j'utilise l'Appplication.ScreenUpdating=false à chaque macro de calcul.
Lorsque je veux modifier des infos primaires d'un élément d'une Bdd, je les copie sur mon fichier moteur, les modifie, calcule des données secondaires déterminées par les primaires et lorsque tout est fini et validé, je renvoie le tout dans la Bdd qui calcule tout de même certaines données via des formules relativement simples (somme si).
J'effectue aussi des calculs intermédiaires de contrôle des modifications, les lenteurs se manifestent donc tout le long du processus.
Depuis que j'ai rempli mes 3 Bdd, l'une atteignant 9 Mo, toute l'application s'est fortement ralentie et s'approche d'un niveau handicapant.
Les mêmes calculs entre Bdd légères et pleines prennent des multiples de *2 à *4, une bête macro de filtrage de Listview qui réagissait en 0,5 sec met le double-triple... Le confort utilisateur est en train de passer du jour à la nuit noire.
Quelqu'un a-t-il des pistes, suggestions ? Excel 2010 aurait-il des atouts connus dans ce domaine ?
A court terme, je racle les fonds de tiroirs : j'ai enlevé toute mise en forme de mes bdd, volets débloqués, etc. Je chronomètre mes boucles pour voir où optimiser mais je doute d'avoir une marge conséquente, peut-être juste assez pour atteindre un niveau acceptable temporairement.