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 :
Fichiers ci-joints
Merci pour votre aide.
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.