Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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 !

Citronflexe

XLDnaute Junior
Bonjour le forum !

A travers plusieurs post de ce forum, j'ai cru comprendre que l'utilisation de tableaux (Array ? 😵)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

Bonjour @M12 ,

Merci de ta réponse !

C'est en effet plus rapide, mais par contre, ça ne fait plus la somme des nombres en colonne M dans le cas des doublons.
Mais je vais essayer de fouiner dans tes codes et formules pour voir...

Merci 🙂
 
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
 
- 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

Discussions similaires

Réponses
5
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…