Chris57
XLDnaute Occasionnel
Bonjour à tous,
dans le cadre de mon travail j'ai besoins d'une macro qui va "scanner" les fichiers excel se situant dans un dossier d'archivage (minimul 2 archives pas jours) puis qui va récupérer des valeurs dans les 2 dernières archives.
Pour ce faire, je suis passé par une astuce :
Donc je cherche les noms des dernièrs fichiers puis je créé des liens hypertext à l'aide de ces noms pour récupérer les valeurs dont j'ai besoins.
Le problème est que le dossier d'archive 2012 contient à ce jour 530 fichiers et donc la macro est très longue à s'executer !!
Peut-on l'accélérer ???
dans le cadre de mon travail j'ai besoins d'une macro qui va "scanner" les fichiers excel se situant dans un dossier d'archivage (minimul 2 archives pas jours) puis qui va récupérer des valeurs dans les 2 dernières archives.
Pour ce faire, je suis passé par une astuce :
Code:
Sub ListeFichier()
' ICI JE PLACE DANS DES VARIABLES LA PREMIERE PARTIE DES NOMS DES FICHIERS QUE JE CHERCHE
[B2:B3,D1].ClearContents
DOSSIERarchive = "L:\UP78\CONTRAINTES TECHNIQUES\Archives UP78 " & Year(Date) '& "\"
fichierARCHIVE = "CONTRAINTES TECHNIQUES UP 7&8 du "
DATEarchive = Format(Date + 1, "dd") & Format(Date + 1, "mm") & Year(Date)
fichierARCHIVE = fichierARCHIVE & DATEarchive & "_"
[B2] = DOSSIERarchive
[B3] = fichierARCHIVE
Application.ScreenUpdating = False
JE FOUILLE DANS LE DOSSIER D'ARCHIVES ET J'Y CHERCHE LES FICHIERS COMMENCANT PAR LES VARIABLES PRECEDENTES
Dim objFSO, objDossier, objFichier, objResultat
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDossier = objFSO.GetFolder(DOSSIERarchive)
' Explore le dossier "DOSSIERarchive" et inscrit le noms des archives de demain
LIGNE = 4
If (objDossier.Files.Count > 0) Then
For Each objFichier In objDossier.Files
If Left(objFichier.Name, 43) = fichierARCHIVE And (InStr(1, objFichier.Name, ".xlsx", 1) > 0) Then
Cells(LIGNE, 2) = objFichier.Name
LIGNE = LIGNE + 1
End If
Next objFichier
End If
objResultat.Close
Set objResultat = Nothing
Set objDossier = Nothing
Set objFSO = Nothing
' Compte le nombre de fichiers trouvés
NBREfichiers = Range("B100").End(xlUp).Offset(1, 0).Row - 4
[D1] = "Nombre de fichiers trouvés pour le " & DATEarchive & " = " & NBREfichiers
' Créé les liens hypertexte
For i = 1 To NBREfichiers
fichierARCHIVE = Range("B" & i + 3)
[E5].Offset(i + 7, 0) = "='" & DOSSIERarchive & "\[" & fichierARCHIVE & "]CT_UP_78'!$B$7"
' à suivre.....
Next i
End Sub
Donc je cherche les noms des dernièrs fichiers puis je créé des liens hypertext à l'aide de ces noms pour récupérer les valeurs dont j'ai besoins.
Le problème est que le dossier d'archive 2012 contient à ce jour 530 fichiers et donc la macro est très longue à s'executer !!
Peut-on l'accélérer ???
Dernière édition: