Optimiser Mon Code Trop Lent

  • Initiateur de la discussion Initiateur de la discussion Zarkoff
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour