Optimiser Mon Code Trop Lent

Zarkoff

XLDnaute Nouveau
Bonjour,

Je n'ai pas de problème sur le fonctionnement du code que j'ai écrit: ça marche mais c'est d'une lenteur...

Bref je voudrais savoir si la méthode que j'applique est la bonne :

Je fais des extractions sous SAP r3 mais celles-ci ne contiennent pas toutes les infos nécessaires, j'utilise donc des tables de correspondance.

Mes extractions sont très volumineuses (+ de 80.000 lignes) et donc j'ai très vite abandonner l'idée des formules qui faisaient planté excel 1x sur 2 pour adopter un traitement ligne par ligne via un code VBA.

En gros mon code, pour chaque ligne, va regarder dans les différentes tables de correspondances et renvoyé une valeur en 'value' en bout de ligne.

Ca marche, pas de soucis, mais c'est lennnnnnnt.... exemple 91.000 lignes : 30 minutes... et blocage d'Excel au sens ou je ne peux pas charger d'autre fichier (j'ai mis une boite de dialogue qui m'informe sur l'avancée).

la méthode que j'applique est très basique un:
(...)
max_ligne = ActiveSheet.UsedRange.Rows.Count
for ligne_à_regarder = 2 to max_ligne
val_rech=cells(ligne_à_regarder, 1)
ligne_table = Application.WorksheetFunction.Match(val_rech, Workbooks(VBAfile).Sheets(CATSheet).Range("A1:A" & CATligne), 0)
cells(ligne_à_regarder,10)=Workbooks(VBAfile).Sheets(CATSheet).cells(ligne_table,4)
(...)
Next

Voila, existe-t-il une autre fonction/façon qui permettrait d'accèlerer drastiquement le traitement des données.

Ou sinon, existe-il une solution pour lancer la macro dans une session excel isolée qui ne m'empêcherait plus d'utiliser excel par ailleurs tant que le traitement n'est pas terminé.

Merci.
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Optimiser Mon Code Trop Lent

Bonjour

déjà une méthode simple et de mettre en début de macro

application.screenupdating=false
et à true en fin de macro

Cela évite l'affichage de se mettre à jour ce qui est le plus lent

ensuite il faudrait voir ton fichier mais le plus simple est souvent de charger les données dans des variables tableau de travailler sur ces tableaux puis de remettre tout une fois le travail fait