Macro recherche fichiers
Résolu
happy4u
Messages postés
39
Statut
Membre
-
happy4u Messages postés 39 Statut Membre -
happy4u Messages postés 39 Statut Membre -
Bonjour,
Etant novice en vba je sollicite votre aide.
j'ai fait une macro qui permest à aprtir de deux workbooks ("Stress_CA_06012017.xls" ; "Global_Stress_CACIB_REG_06012017") les deux workbooks se trouvent dans le même dossier) et copier certains éléments vers un autre workbook. J'ai réussi à faire un code sauf que à chaque fois je reçois des nouveaux fichiers, cependant Le nom des fichiers évolue chaque jour (il comporte la date...forme NOM_DATE.XLS) .
J'aimerai bien savoir s'il y a une méthode pour ajuster mon code pour que à chaque fois il cherche les deux récents fichiers . (J'ai essayé de faire un petit code en commentaire mais ça a pas marché)
https://www.cjoint.com/c/GAtop6mwMvH
Fichiers sources:
http://www.cjoint.com/c/GAto6DfXPdH
http://www.cjoint.com/c/GAto7bROUgH
Merci de votre aide
Etant novice en vba je sollicite votre aide.
j'ai fait une macro qui permest à aprtir de deux workbooks ("Stress_CA_06012017.xls" ; "Global_Stress_CACIB_REG_06012017") les deux workbooks se trouvent dans le même dossier) et copier certains éléments vers un autre workbook. J'ai réussi à faire un code sauf que à chaque fois je reçois des nouveaux fichiers, cependant Le nom des fichiers évolue chaque jour (il comporte la date...forme NOM_DATE.XLS) .
J'aimerai bien savoir s'il y a une méthode pour ajuster mon code pour que à chaque fois il cherche les deux récents fichiers . (J'ai essayé de faire un petit code en commentaire mais ça a pas marché)
https://www.cjoint.com/c/GAtop6mwMvH
Fichiers sources:
http://www.cjoint.com/c/GAto6DfXPdH
http://www.cjoint.com/c/GAto7bROUgH
Merci de votre aide
2 réponses
-
Bonjour,
Pour trouver le fichier le plus récent :Option Explicit Sub FichierLePlusRécent() Dim rep As String 'Répertoire Dim fic As String 'Fichier Dim daR As Date 'Date fichier récent Dim nom As String 'Nom fichier récent rep = "N:\Projets02\RFC2\B- Groupe CA\DEV\" & _ "Historical_Hypothetical_Stress\" fic = "Global_Stress_CACIB_REG_*.xls" daR = 0 nom = "" fic = Dir(rep & fic) Do While fic <> "" If daR < FileDateTime(rep & fic) Then 'mémoriser le nom du fichier le plus récent daR = FileDateTime(rep & fic) nom = fic End If fic = Dir Loop If nom <> "" Then MsgBox nom End If End Sub -
Bonjour,
Une solution serait de stocker le nom des fichiers déjà reçus dans une autre feuille. Et avec une fonction comme celle ci-dessous, tu saurais quels sont les fichiers déjà importés.
Bon courage.Private Sub ImporterFichiers() strNomFichier = Dir(strRepertoireFichiers & "*.xlsx", vbNormal) 'Pour chaque fichier xlsm While strNomFichier <> "" 'On vérifie si on ne l'a pas déjà importé If VerifierSiDejaImporte(strNomFichier) = False Then 'On traite le fichier et on enregistre qu'on la traité Call AjouterFichierAListeDesFichiersDejaImportes(strNomFichier) End If WEnd End Sub Private Function VerifierSiDejaImporte(ByVal pin_strNomFichierAVerifier As String) Dim i As Integer Dim blnTrouve As Boolean Dim strNomFichierTraite As String 'Cette fonction recherche dans la feuille 2 de classeur Excel, si le fichier est déjà présent blnTrouve = False i = 2 'On commence à 2 car la 1ère ligne contient le titre de colonne Do 'Dans la Worksheet n°2, colonne A, il y a les noms des fichiers strNomFichierTraite = ThisWorkbook.Worksheets(2).Range("A" & CInt(i)).Value 'Si le nom de fichier correspond, on l'a trouvé ! If strNomFichierTraite = pin_strNomFichierAVerifier Then blnTrouve = True End If i = i + 1 Loop While strNomFichierTraite <> "" And blnTrouve = False VerifierSiDejaImporte = blnTrouve End Function Private Sub AjouterFichierAListeDesFichiersDejaImportes(pin_strNomFichier As String) Dim i As Integer Dim strNomFichierTraite As String 'Ici on va chercher la prochaine cellule vide dans la liste des fichiers traités i = 2 Do strNomFichierTraite = ThisWorkbook.Worksheets(2).Range("A" & CInt(i)).Value If strNomFichierTraite <> "" Then i = i + 1 End If Loop While strNomFichierTraite <> "" And strNomFichierTraite <> pin_strNomFichier 'i contient le numéro de la prochaine ligne libre, on ajoute le nom du fichier ThisWorkbook.Worksheets(2).Range("A" & CInt(i)).Value = pin_strNomFichier End Sub