CDAlstom
Messages postés69Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 6 mars 2006
-
5 oct. 2005 à 09:10
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
7 oct. 2005 à 23:42
Bonjour @ tous!
Ma question est d'ordre générale...
Je suis sur un petit projet et j'approche les 750 lignes de codes (avec des espaces quand même soit 600 lignes quoi).
Le programme vba manipule des fichiers (à terme 6 ou 7000 *.html) et en gros met toutes les données dans un classeur excel (je fais bcp de tests pour repérer les données à conserver) et j'ai même 2 feuilles de résultats car 256 colonnes me suffisent pas!
Enfin bon, le truc, c'est qu'à force il va me falloir un super-ordinateur pour faire ça car le temps d'exécution pour un fichier devient trop long du coup pour 7000 je vais pouvoir laisser ça tourner certes mais il faudrait aps que ça plante en cours...
Donc (on y arrive), j'aimerai savoir si il y avait des astuces pour alléger mon code et surtout gagner du temps à l'exécution.
J'ai évidemment un programme principale et aussi une dizaine de sous-programme... J'ai des boucles, tous le bazar quoi!
Mais bon pê existe-il des petits trucs en vba...
Je me demandais notamment au niveau de l'accès au cellule si ej pouvais pas utiliser des variables pour alléger tous ça...?!?!?!?
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 5 oct. 2005 à 21:11
Bonsoir,
Pour répondre à la question posée. Comme tu as codé en VBA sous Excel, comment utilises-tu les références aux cellules ? Je veux dire par là, si tu utilises des cellules que leurs valeurs, sans trop d'occuper de la mise en forme, alors un moyen d'accélèrer l'exécution du code c'est d'utiliser la déclaration d'un tableau en mémoire avec "DIM"... surtout si le but c'est de faire des calculs...
Sur 600 lignes, je suis sûr qu'il y a moyen d'optimiser ton code... Mais, maintenant il faudrait le voir, je crois pour en dire plus...
De plus, un moyen simple peu aider à la rapidité d'exécution, si par exemple tu utilises des forrmules dans diverses cellules qui changent au cours de ton code... par exemple en désactivant le calcul automatique...
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 5 oct. 2005 à 10:44
Je vois pas l'intérêt de passer à .NET pour optimiser les
performances... (ni à vb6 d'ailleurs) : VBA est un sous-ensemble de
VB6, donc le même code doit tourner aussi vite en VBA qu'en VB6, et
plus lentement en .NET !
Il n'existe pas de solutions miracles por optimiser du code, et un code
compact ne veux pas dire qu'il est rapide, donc 750 lignes de codes
bien codées valent mieux que 100 lignes truffées de maladresses !
Tout dépend de ce que fait ton code pour l'optimiser. Tu peux très bien
stocker ton classeur dans des variables pour un accès plus rapide par
la suite, mais il ne faut pas perdre de vue que la copie du classeur
dans des variables prend du temps aussi, donc si tu ne lit qu'une seule
fois chaque cellule, tu n'y gagnera rien (tu y perdra au contraire !),
par contre, si tu accède 100 fois à la même cellule, là c'est sûr que
mettre le contenu dans une variable va beaucoup accèlérer les choses !
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 5 oct. 2005 à 14:25
Salut ;O)
Parfois il est bon de repenser tous les processus afin d'optimiser le tout et éliminer ce que pourrait être superflu.
Mais bon je sais, c'est facile à dire ...
CDAlstom
Messages postés69Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 6 mars 2006 5 oct. 2005 à 14:44
lol merci du coneil mais avec un avatar pareil, je sais aps si c'est un conseil à suivre...
Une question... Est-ce qu'un nombre trop important de commentaires (plutôt dans mon cas, des lignes mises en commentaires pour ne pas les exécuter) peut augmenter le temps d'exécution ou c'est négligeable?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 5 oct. 2005 à 17:41
Non, ca n'influe en rien l'éxécution vu que ce sont des lignes ignorées
lors de l'éxécution : un code avec 10000 lignes de commentaires
s'éxécute aussi vite qu'un code sans commentaire vu qu'elles ne sont
pas éxécutées.
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
CDAlstom
Messages postés69Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 6 mars 2006 7 oct. 2005 à 15:12
RE-bonjour!!!
Bon, suivant le PC, l'exécution est plus ou moins rapide et avec une bête de course le tps est acceptable (1h quand même après estimation pour 13 000 fichiers)...
Cependant, dans le cas où je dois écrire une valeur dans une cellule et que cette valeur réapparait dans les différents fichiers, mieux vaut réécrire la valeur à chaque fois sans s'occuper de savoir si elle est déjà présente dans la cellule ou mieux vaut vérifier si une valeur est présente dans cette cellule et dans ce cas ne pas la réécrire...
En gros, sur 13 000 fichiers est-ce que c'est rentable de vérifier avant de réécrire bêtement ou ça revient au même et autant de pas faire de vérification et tant pis réécrire la valeur...?!?
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 7 oct. 2005 à 23:42
Houla... j'ai loupé un épisode ? C'est quoi, ton histoire de 13000 fichiers ? On parlait de cellules au début... J'avoue ne plus te suivre... Que contiennent des fichiers ? car tu fais un drôle d'association d'idée, entre les fichiers et les cellules.