XL 2013 Excel VBA : recherche et ouverture de fichiers récents

Phillip

XLDnaute Occasionnel
Bonjour,

J'ai un code ci-dessous, qui à partir d'un fichier ouvert (fichier_tempo) dans un mail, va chercher le dernier fichier d'un répertoire donné, et travaille dessus. Ca marche très bien, si j'ai "déjà" un fichier existant avec la date du jour....Mais comme je lance ma macro une fois par semaine, sur un fichier de la semaine dernière, voire des semaines précédentes je n'ai PAS encore de fichier du jour...

VB:
Dim fichier_tempo As Workbook
Dim fichier_final  As Workbook
Dim ledernier As Workbook
Dim onglet_donnees As Worksheet
Dim chemin_fichier_final As String
Dim dernier_onglet As Worksheet


Application.ActiveProtectedViewWindow.Edit
Application.ScreenUpdating = False

vyear = Year(Date)
vmonth = MonthName(Month(Date))
vday = Day(Date)

vdate = vday & vmonth & vyear


'chemin du fichier final
chemin_fichier_final = "C:\Phillip_PrO\macro\Suivi_voix\Dossiers-voix- " & vdate & ".xlsm"


''Appeler la macro qui permet d'ouvrir le dernier fichier du repertoire
'car il cherche le fichier de la date du jour
'Call OuvFichrecent

'=================identifier fichiers et onglets============================================
Set fichier_tempo = ActiveWorkbook
Set onglet_donnees = fichier_tempo.Worksheets(1)
Set fichier_final = Application.Workbooks.Open(chemin_fichier_final)
'Set fichier_final = Application.Workbooks.Open(ledernier)
Set dernier_onglet = fichier_final.Worksheets(Worksheets.Count)
'Set dernier_onglet = ledernier.Worksheets(Worksheets.Count)

Alors, j'ai pensé utiliser la macro OuvFichrecent, qui m'ouvre le dernier fichier dans le répertoire.
Code:
Sub OuvFichrecent()

'========================================================================================
''permet de trouver le fichier le plus récent dans un repertoire
Dim monrep As String
Dim monfichier As String
Dim derdate As Date
Dim ledernier As String

Application.ScreenUpdating = False


  monrep = "C:\Phillip_PrO\macro\Suivi_voix\"
  monfichier = Dir(monrep & "*.xlsm")
  derdate = DateSerial(1, 1, 1)
  Do While monfichier <> ""
    If FileDateTime(monrep & monfichier) > derdate Then
      ledernier = monrep & monfichier
      derdate = FileDateTime(monrep & monfichier)
    End If
    monfichier = Dir
  Loop
  'MsgBox "le plus récent des fichiers txt dans ce répertoire est " & ledernier
Application.Workbooks.Open (ledernier)

End Sub


Je modifie le code dans ma macro principale, puisque mon fichier est ledernier, et non plus chemin_fichier_final, appelle OuvFichRecent
Set fichier_final = Application.Workbooks.Open(ledernier)
Set dernier_onglet = ledernier.Worksheets(Worksheets.Count)

Et...ça ne marche pas...J'ai une erreur...Je dois faire une erreur dans mes sets, mais où ?
(même si je désactive la ligne qui ouvre ledernier dans ma sub OuvFichrecent !

Pouvez-vous m'éclairer ?

Merci

Cordialement
Phillip
 
Dernière édition:

Phillip

XLDnaute Occasionnel
Bon, alors je pense avoir trouvé une partie du problème : J'ai déclaré le dernier en temps que workbook, alors que c'est une string.
Et enfin, quand j'appelle ma macro, à la fin la variable se réinitialise, donc je ne peux pas la réutiliser dans ma macro principale...
 

Discussions similaires

Statistiques des forums

Discussions
311 726
Messages
2 081 955
Membres
101 852
dernier inscrit
dthi16088