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

Messages postés
69
Date d'inscription
mercredi 21 septembre 2005
Dernière intervention
6 mars 2006
- - Dernière réponse : us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
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!!!
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
3
Merci
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 ? -:);

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Messages postés
14325
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
18 décembre 2018
0
Merci
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
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
0
Merci
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/
Messages postés
69
Date d'inscription
mercredi 21 septembre 2005
Dernière intervention
6 mars 2006
0
Merci
Merci... J'étudie ça avant de mettre "réponse acceptée"...
Messages postés
797
Date d'inscription
jeudi 17 mai 2001
Dernière intervention
5 mai 2009
0
Merci
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
Messages postés
69
Date d'inscription
mercredi 21 septembre 2005
Dernière intervention
6 mars 2006
0
Merci
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?
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
0
Merci
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/
Messages postés
797
Date d'inscription
jeudi 17 mai 2001
Dernière intervention
5 mai 2009
0
Merci
CDAlstom > Mon avatar est à considérer avec ironie et rien de plus ;O)

Au fait, Alstom comme la société ?

Guy
Messages postés
69
Date d'inscription
mercredi 21 septembre 2005
Dernière intervention
6 mars 2006
0
Merci
(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...
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
0
Merci
C'est simple en VBA, DIM c'est avec des élastiques là !

-:);
Us.
Messages postés
69
Date d'inscription
mercredi 21 septembre 2005
Dernière intervention
6 mars 2006
0
Merci
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!!!
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
0
Merci
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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.