macro, ouverture du fichier le plus récent, puis actions

merguez59

XLDnaute Nouveau
Bonjour,

je cherchais une marcro qui ouvre le fichier le plus récent d'un répertoire, j'ai trouvé quelque chose d'intéressant sur le net:


Code:
Option Explicit
Option Base 1
 
Dim h As Integer
Dim Tableau2()
 
 
Sub listeDossiersEtSousDossiers()
Dim Racine As String, recentDir As String
 
Racine = "C:\Documents and Settings\michel\dossier"
ListeSousRepertoires Racine, True 'recherche le repertoire le + récent
 
    recentDir = triDecroissant(Tableau2())
    Erase Tableau2
    h = 0
 
    listeFichiers_dateModification recentDir
    MsgBox triDecroissant(Tableau2())
 
Erase Tableau2
h = 0
End Sub

Code:
Sub ListeSousRepertoires(SourceFolderName As String, _
IncludeSubfolders As Boolean) ' adapté de Ole P Erlandsen
Dim Fso As Object, SourceFolder As Object, SubFolder As Object
Dim RepItem As Object
 
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(SourceFolderName)
 
    h = h + 1
    ReDim Preserve Tableau2(2, h)
    Tableau2(1, h) = SourceFolder
    Tableau2(2, h) = SourceFolder.DateLastModified
 
    If IncludeSubfolders Then
        For Each SubFolder In SourceFolder.subFolders
        ListeSousRepertoires SubFolder.Path, IncludeSubfolders
        Next SubFolder
    End If
 
End Sub

Code:
Sub listeFichiers_dateModification(Chemin As String)
Dim Fichier As String
Dim Fso As Object, FileItem As Object
 
Fichier = Dir(Chemin & "\*.*")
 
Do
    h = h + 1
    ReDim Preserve Tableau2(2, h)
 
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set FileItem = Fso.GetFile(Chemin & "\" & Fichier)
 
    Tableau2(1, h) = FileItem
    Tableau2(2, h) = FileItem.DateLastModified 'lastmodified
 
    Fichier = Dir
Loop Until Fichier = ""
 
End Sub

Code:
Function triDecroissant(Tableau()) As String
Dim i As Integer
Dim z As Byte, Valeur As Byte
Dim Cible As Variant
 
Do
    Valeur = 0
    For i = 1 To h - 1
        If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
            For z = 1 To 2
                Cible = Tableau(z, i)
                Tableau(z, i) = Tableau(z, i + 1)
                Tableau(z, i + 1) = Cible
            Next z
        Valeur = 1
        End If
    Next i
Loop While Valeur = 1
 
 
'--- le plus récent ---
triDecroissant = Tableau(1, 1)
End Function


ça fonctionne (même si je ne saisi pas bien le fonctionnement), il me suffit d'indiquer mon dossier de recherche.

Maintenant, je veux dans une seconde macro (ou alors à la suite de celle-ci, mais je ne vois pas bien comment), faire une suite d'actions (tris, recherchev, mise en forme etc) qui utilise pour partie le fichier ouvert par la 1ere macro.

Le problème, c'est que le nom du fichier appelé par la 1ere macro est amené à être changé chaque jour: comment faire pour que ce cette seconde macro sache de quel fichier je parle quand je lui demande d'aller y faire ses recherchev etc...?

merci d'avance, pour votre aide!

cordialement
 

job75

XLDnaute Barbatruc
Re : macro, ouverture du fichier le plus récent, puis actions

Bonjour merguez59,

S'il y a un seul répertoire à étudier, pas besoin d'aller chercher midi à quatorze heures :

Code:
Sub OuvrirDernierFichier()
Dim chemin$, fich$, dat As Date, derfich$, wb As Workbook
chemin = ThisWorkbook.Path & "\" 'chemin à adapter
'---ouverture du dernier fichier Excel---"
fich = Dir(chemin & "*.xls*") '1er fichier du dossier
While fich <> ""
  If fich <> ThisWorkbook.Name Then
    If FileDateTime(chemin & fich) > dat Then
      dat = FileDateTime(chemin & fich)
      derfich = fich
    End If
  End If
  fich = Dir 'fichier suivant du dossier
Wend
If dat = 0 Then Exit Sub
Application.ScreenUpdating = False
Set wb = Workbooks.Open(chemin & derfich)
'---traitement du fichier wb ouvert---
'suite du code, à vous de jouer...
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : macro, ouverture du fichier le plus récent, puis actions

Bonjour,

Si c'est le même problème que l'an passé alors bis repetita :

Code:
Sub DernierFichier()
Dim chemin$, fich$, derfich$, wb As Workbook
chemin = ThisWorkbook.Path & "\" 'chemin à adapter
'---ouverture du dernier fichier Excel---"
fich = Dir(chemin & "*.xls*") '1er fichier du dossier
While fich <> ""
  If fich <> ThisWorkbook.Name And _
    fich Like "####-##-##-##-##-##.xls*" And _
      fich > derfich Then derfich = fich
  fich = Dir 'fichier suivant du dossier
Wend
If derfich = "" Then Exit Sub
Application.ScreenUpdating = False
Set wb = Workbooks.Open(chemin & derfich)
'---traitement du fichier wb ouvert---
'suite du code, à vous de jouer...
End Sub
A+
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
197
Réponses
0
Affichages
133

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi