XL 2013 utilisation de tableaux pour améliorer le temps d'exécution

Citronflexe

XLDnaute Junior
Bonjour le forum !

A travers plusieurs post de ce forum, j'ai cru comprendre que l'utilisation de tableaux (Array ? o_O)pouvait grandement améliorer le temps d'exécution d'une macro.
Le problème c'est que je n'en ai jamais vraiment utilisé, je ne sais pas du tout comment m'y prendre.

J'aimerais savoir s'il était possible d'améliorer le temps d'exécution de ma macro dans le fichier ci-joint "test_extrac_suivi.xlsm", en utilisant des tableaux.


En gros, la macro va chercher pour chaque ligne du fichier si le nombre en colonne A existe dans le fichier "2017_SUIVI LOTS_.....", colonne D, et fait la somme des nombres en colonne M.
Cela fonctionne bien, mais la macro dure à peu près 25sec chez moi...


Merci de votre aide précieuse ! :)
 

Pièces jointes

  • test_extrac_suivi.xlsm
    43.9 KB · Affichages: 23
  • 2017_SUIVI LOTS - PROD & SC_factice.xlsm
    223.9 KB · Affichages: 18

Dranreb

XLDnaute Barbatruc
Bonjour.
Dans votre cas vous pourriez l'écrire comme ça :
VB:
Option Explicit
Sub RechercheSuivi()
   Dim TNum(), TQté(), TRés(17001 To 18999, 1 To 2), L As Long, N As Long, Suivi As Worksheet, RngLig As Range
   Set Suivi = Workbooks("2017_SUIVI LOTS - PROD & SC_factice.xlsm").Worksheets("EXPE CLIENTS BAGS-MECA")
   Set RngLig = Suivi.Rows(3).Resize(Suivi.Cells(Suivi.Rows.Count, "D").End(xlUp).Row - 2)
   TNum = RngLig.Columns("D").Value
   TQté = RngLig.Columns("M").Value
   For N = LBound(TRés, 1) To UBound(TRés, 1): TRés(N, 1) = N: Next N
   On Error Resume Next
   For L = 1 To UBound(TNum, 1)
      N = TNum(L, 1)
      TRés(N, 2) = TRés(N, 2) + TQté(L, 1)
      Next L
   Feuil1.[A1:B1999].Value = TRés
   End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 161
Membres
103 148
dernier inscrit
lulu56