C'est curieux car sur Win 11 Excel 2019 je n'ai pas ce problème.
J'ai créé 9000 fichiers .xlsx identiques aux 3 du post #19, la macro s'exécute sans difficulté en 190 secondes (puis 230 secondes).
Voici un exemple de fichier source dans lequel je dois chercher les infos
Et mon code
Option Explicit
Const Feuil1$ = "DOVE"
Const Feuil2$ = "Communication"
Const col1% = 1 'colonne A
Const col2% = 6 'colonne F
Const crit1$ = "Véhicule :"
Const crit2$ = "Vin :"
Const crit3$ = "Battery Identification Number :"
Const crit4$ = "<- 62 F0 29*"
Dim fichier$, lig&, trouve&
Sub Recherche()
Dim t, chemin$, form$, compte
On Error Resume Next
t = Timer
chemin = "REPERTOIRE_FICHIERS" & "\"
fichier = Dir(chemin & "*.xlsx") '1er fichier du dossier
lig = 3
Application.ScreenUpdating = True
Rows(lig & ":" & Rows.Count).ClearContents 'RAZ
While fichier <> ""
compte = compte + 1
Application.StatusBar = compte & " " & fichier
form = "'" & chemin & "[" & fichier & "]" & Feuil1 & "'!"
Formule form, col1, crit1, lig
Formule form, col1, crit2, lig
Formule form, col1, crit3, lig
form = "'" & chemin & "[" & fichier & "]" & Feuil2 & "'!"
Formule form, col1, crit4, lig
If trouve = 1 Then lig = lig + 1
fichier = Dir 'fichier suivant
trouve = 0
Wend
MsgBox Timer - t
End Sub
Sub Formule(form$, col%, crit$, lig&)
Dim f$, v
On Error Resume Next
f = "MATCH(""" & crit & """," & form & "C" & col & ",0)"
v = ExecuteExcel4Macro(f)
If IsNumeric(v) Then
trouve = 1
Cells(lig, 1) = fichier 'retourne le nom du fichier
If crit = crit1 Then Cells(lig, 2) = ExecuteExcel4Macro(form & "R" & v & "C" & col + 1) 'retourne la valeur du Véhicule
If crit = crit2 Then Cells(lig, 3) = ExecuteExcel4Macro(form & "R" & v & "C" & col + 1) 'retourne la valeur du Vin
If crit = crit3 Then Cells(lig, 4) = ExecuteExcel4Macro(form & "R" & v & "C" & col + 1) 'retourne la valeur du BIN
If crit = crit4 Then Cells(lig, 5) = ExecuteExcel4Macro(form & "R" & v & "C" & col) 'retourne la valeur de la trame 62 F0 29
End If
End Sub
Je viens de refaire un essai, ça a terminé les 6600 fichiers mais ensuite, j’ai voulu copié le résultat pour ne pas refaire et hop, le pb de mémoire
Ce matin, j'ai lancé et excel était à environ 280Mo, cela augmente petit à petit jusqu'au message, je valide pour continuer et d'un coup, excel repasse vers les 80Mo mais ensuite se ferme
Il y a bien un truc par rapport au nombre de fichier qui fait que excel prend trop de ressource ?