Macro recherche fichiers

Résolu/Fermé
Signaler
Messages postés
39
Date d'inscription
vendredi 28 octobre 2016
Statut
Membre
Dernière intervention
17 septembre 2017
-
Messages postés
39
Date d'inscription
vendredi 28 octobre 2016
Statut
Membre
Dernière intervention
17 septembre 2017
-
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

2 réponses

Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 734
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
1
Messages postés
39
Date d'inscription
vendredi 28 octobre 2016
Statut
Membre
Dernière intervention
17 septembre 2017

Merci Patrice
0
Messages postés
23
Date d'inscription
samedi 14 janvier 2017
Statut
Membre
Dernière intervention
28 janvier 2017
1
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
0
Messages postés
39
Date d'inscription
vendredi 28 octobre 2016
Statut
Membre
Dernière intervention
17 septembre 2017

Merci
0