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:
ç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
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