J'ai une macro qui permet à l'utilisateur de charger plusieurs données sur différentes feuilles excel afin d'effectuer des recherches sur les différents fichiers chargés.
cependant ces fichiers excel comportent souvent des centaines de millier de lignes et rendent la macro lente et même très très lente.

j'aimerais savoir s'il est possible de rendre ma macro plus rapide, et si oui comment.

Merci de bien vouloir me venir en aide.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
Private Sub Workbook_open()
 
    'Chargement du récapitulatif
    ChargeRecap ("C:\Users\UA-Vie\Desktop\DOC PROD\Recap KAMAGATE\BICICI.xlsx")
    ChargeRecap ("C:\Users\UA-Vie\Desktop\DOC PROD\Recap KAMAGATE\ALIOS BIA acceptés.xlsx")
    ChargeRecap ("C:\Users\UA-Vie\Desktop\DOC PROD\Recap KAMAGATE\Adhésion globale (PA et PU).xlsx")
 
    'bordure de cellules
    Range("A1").CurrentRegion.Cells.Borders.Weight = xlThin
 
End Sub
Sub ChargeRecap(ByVal chemin As String)
 
    Dim ClassSource As Object
    Dim DerLine As Long
    Dim DerLineRecap As Long
    Dim DerColumn As Integer
    Dim i As Long
    Dim j As Integer
    Dim table() As Variant
 
    'Application.ScreenUpdating = False
 
    'choisir classeur source
    Set ClassSource = GetObject(chemin)
    'N° de la dernière ligne non vide de la colonne A ClassSource1
    DerLine = ClassSource.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row - 1
    'N° de la dernière colonne non vide de la ligne 1 ClassSource1
    DerColumn = ClassSource.Sheets(1).Cells(1, Columns.Count).End(xlToLeft).Column
 
    'Redimenssionner le tableau
    ReDim table(1 To DerLine, 1 To DerColumn)
 
    'Ranger les informations du premier classeur dans le tableau
    For i = 1 To DerLine
        For j = 1 To DerColumn
            table(i, j) = ClassSource.Sheets(1).Cells(i + 1, j)
        Next j
    Next i
 
    'Copier le tableau dans le classeur recap
    For i = 1 To DerLine
    DerLineRecap = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1
        For j = 1 To DerColumn
            Sheets(1).Cells(DerLineRecap, j) = table(i, j)
        Next j
    Next i
     Set ClassSource = Nothing
End Sub
 
Sub Total()
 
  Dim Ligne As Long
  Dim i As Long
  Dim tot As Double
 
  Ligne = ThisWorkbook.Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
  tot = 0
  For i = 2 To Ligne
    tot = tot + Range("B" & i).Value
  Next i
  Range("A" & Ligne + 1).Value = "TOTAL"
  Range("B" & Ligne + 1).Value = tot
 
End Sub