Bonjour,

J'ai crée un début de macro, dont l'objectif est d'aller chercher dans des fichiers que je ne souhaite pas ouvrir (30 fichiers à ouvrir serait vraiment trop lourd), présent dans un folder intitulé "mon_dossier" (l'idée étant que la macro est dans le folder parent de "mon_dossier"), et mon code consiste à parcourir dans chacun des fichiers de ce dossier la colonne D de l'onglet "Solde".

Le souci est que même avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
BoEcran = Application.ScreenUpdating
BoBarre = Application.DisplayStatusBar
iCalcul = Application.EnableEvents
BoEvent = Application.EnableEvents
BoSaut = ActiveSheet.DisplayPageBreaks
 
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
Le code met vraiment longtemps à tourner. Je me demande donc s'il n'existe pas une possibilité de gagner du temps, en faisant autrement qu'avec 2 boucles For.

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
 
Sub test()
BoEcran = Application.ScreenUpdating
BoBarre = Application.DisplayStatusBar
iCalcul = Application.EnableEvents
BoEvent = Application.EnableEvents
BoSaut = ActiveSheet.DisplayPageBreaks
 
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
 
Dim ws As Worksheet
Dim monFichier As String
Dim wb As Workbook
Dim chemin As String
Dim i As Integer
Dim nom As String
Dim FichierMain As String
 
Set wb = Workbooks(ThisWorkbook.Name)
Dim sh As Worksheet
chemin = ThisWorkbook.Path & "\mon_dossier\"
 
monFichier = Dir(chemin & "*.xlsx", vbNormal)
 
Do While monFichier <> ""
    Debug.Print monFichier
        onglet = Split(monFichier, "_")(4)
 
        wb.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = onglet
 
       For Each sh In ActiveWorkbook.Worksheets
       'R?cup?rer uniquement les valeurs de la ligne 8 ? 150
            For i = 8 To 150
                'Montant
                j = 4
                Cells(i - 4, j - 2).Formula = "='" & ThisWorkbook.Path & "\[" & monFichier & "]Solde'!R" & i & "C" & j:
            Next
        Next sh
    monFichier = Dir
Loop
 
Application.ScreenUpdating = True 'Facultatif
BoEcran = Application.ScreenUpdating = BoEcran
BoBarre = Application.DisplayStatusBar = BoBarre
iCalcul = Application.EnableEvents = iCalcul
BoEvent = Application.EnableEvents = BoEvent
BoSaut = ActiveSheet.DisplayPageBreaks = BoSaut
 
End Sub
Merci d'avance pour votre aide.