Comment alléger un code et gagner du temps à l'exécution?!?

Résolu
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006 - 5 oct. 2005 à 09:10
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 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...?!?!?!?

Merci!!!

12 réponses

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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...

Amicalement,
Us.

PS: CDAlstom => Céder Alstom ? -:);
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
5 oct. 2005 à 10:19
Vive les bourrins .

A ce point là, passe à VB (6 ou .NET) voir à C++.



Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)

Une question se pose sur le forum, pas en privé


NH
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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/
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
5 oct. 2005 à 13:39
Merci... J'étudie ça avant de mettre "réponse acceptée"...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
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 ...

Guy
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Derniè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?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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/
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
5 oct. 2005 à 19:47
CDAlstom > Mon avatar est à considérer avec ironie et rien de plus ;O)

Au fait, Alstom comme la société ?

Guy
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
5 oct. 2005 à 21:16
(pour le pseudo... bande de curieux!)

Merci de ces indications!!!

Je vais m'intéresser au "DIM", je connaissais jusque là que les slips, je vais donc regarder ce que c'est en vba...
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
5 oct. 2005 à 21:57
C'est simple en VBA, DIM c'est avec des élastiques là !

-:);
Us.
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Derniè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...?!?

Merci d'avance!!!
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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.

Amicalement,
Us.
0
Rejoignez-nous