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: