RechercheV VBA hyper lente

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 !

legenie

XLDnaute Nouveau
Bonjour,

j'ai voulu faire des recherchev d'es reférences contenues d'un fichier sur plusieurs autres (40).

Sauf que rien que sur 2 fichiers la macro met 2 min (trop long). la macro boucle sur 1000 ligne, 15 colonnes.

J'ai récupérer ce code sur le forum et je supçonne ces éléments de ralentir la macro :

Find(.Range("B" & m), LookIn:=xlValues, lookat:=xlWhole)

Voici le code au complet :

Code:
Sub A_Total()
Chemin = ThisWorkbook.Path
Fich = Dir(Chemin & "\Pays\*.xls")
Set ws = ThisWorkbook

Do While Fich <> ""
  Workbooks.Open (Chemin & "\Pays\" & Fich)
  With ActiveWorkbook.Sheets("FORECAST 2012")
   For m = 10 To .Range("B1000").End(xlUp).Row
   
   'si le statut (colonne A) est nul raye les cellules de la colonne 2 à 31
      If .Range("A" & m) = 0 Then  'verifie si statut=0
        For p = 2 To 31 'colonne 2 à 31
           .Cells(m, p).Font.Strikethrough = True 'raye la cellule
        Next
      
      Else
      'definit "c" comme le resultat de la recherche de la ref dans le fichier source
      Set c = ws.Sheets("VOLUME").Columns("B").Find(.Range("B" & m), LookIn:=xlValues, lookat:=xlWhole)
      
        If Not c Is Nothing Then 'si "c" n'est pas vide c'est à dire que la ref est dans le fichier source
          For p = 15 To 29  'colonne du 1er mois à colonne du dernier mois
            ws.Sheets("VOLUME").Cells(c.Row, p) = ws.Sheets("VOLUME").Cells(m, p) + .Cells(m, p) 'ajoute la qté du pays  pour le mois au total de la ref
          Next p
        
        Else 'la ref n'est pas dans le fichier source
          derlin = ws.Sheets("VOLUME").Range("A1000").End(xlUp).Row + 1 'définit la derniere ligne du gichier source
          For p = 15 To 29 'colonne du 1er mois à colonne du dernier mois
            ws.Sheets("VOLUME").Cells(derlin, p) = .Cells(m, p) 'ajoute la qté du pays pour le mois
          Next p
          
        End If
      End If
   Next m
  End With
  ActiveWorkbook.Close True
    Fich = Dir
Loop

End Sub

Fichiers ci-joints

Merci pour votre aide.
 
Re : RechercheV VBA hyper lente

Bonjour LeGénie 🙂,
De fichiers joints il n'y a point 😛...
Mais essaye déjà de désactiver l'affichage écran en mettant
Code:
Application.ScreenUpdating = False
en début de macro, et en le remettant à True en fin de macro 🙄...
Bonne suite 😎
 
Re : RechercheV VBA hyper lente

Bonjour

j'ai remarqué une chose:
faire des boucles qui parcourt les feuilles entraine toujours des temps d’exécution lourd....

personnellement, j'essaye de travaille en chargeant un maximum de données dans des variables puis de traiter ces variables et enfin mettre à jours le ou les folios....

et quand ça ne marche pas j'appelle à l'aide....(rarement arrivé) mais il y a toujours qqu'un sur ce site qui une solution...

sinon, je ne suis pas contre un fichier avec des données bidons...
 
- 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
2
Affichages
202
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
170
Réponses
8
Affichages
468
Réponses
8
Affichages
233
Réponses
4
Affichages
177
Retour