Ouverture dernier fichier

  • Initiateur de la discussion Initiateur de la discussion Fox
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Fox

Guest
mes fichiers sont automatiquement sauvegardées avec le nom Rapport_ + date du jour sour la forme aammdd
Rapport_030527

J'aimerai réalisé un macro qui me permet d'ouvrir automatiquement le fichier qui comporte la date la plus avancée.

Exemple: dans mon répertoire j'ai:
Rapport_030525
Rapport_030526
Rapport_030527

il devra donc m'ouvrir le fichier Rapport_030527

Bien à vous.
 
voilà une procédure qui fera ça assez simplement.


Option Explicit

Private Function RecupereFichiers(Rep As String)
Dim Fs As Object, Boucle As Long, Tableau()
Set Fs = Application.FileSearch
With Fs
.LookIn = Rep
.Filename = "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
ReDim Tableau(1 To .FoundFiles.Count)
For Boucle = 1 To .FoundFiles.Count
Tableau(Boucle) = .FoundFiles(Boucle)
Next Boucle
RecupereFichiers = Tableau
Else
RecupereFichiers = False
End If
End With
End Function

Sub OuvreFichiers()
Dim NomFichier As String
Dim Dossier, Fichiers, Boucle As Long
Dim NomDernier As String, NomTemp As String, Numero As Long
Const Rapport As String = "Rapport_"

'pour récupérer le chemin du dossier si on ne le connaît pas
'sinon on peut mettre simplement :
'Dossier = "C:\...."
Dossier = Application.GetOpenFilename("Dossier (*.xls),*.xls", , "Sélectionner le premier fichier")
If Dossier = False Then Exit Sub
Dossier = Left(Dossier, InStrRev(Dossier, "\"))

Fichiers = RecupereFichiers(CStr(Dossier))

If IsArray(Fichiers) Then
For Boucle = 1 To UBound(Fichiers)
NomFichier = Fichiers(Boucle)
If InStr(1, NomFichier, Rapport, vbTextCompare) > 0 Then
NomTemp = Mid(NomFichier, InStrRev(NomFichier, "\") + 1)
NomTemp = Left(NomTemp, InStrRev(NomTemp, ".") - 1)
NomTemp = Mid(NomTemp, Len(Rapport) + 1)
If Val(NomTemp) > Numero Then
NomDernier = NomFichier
Numero = Val(NomTemp)
End If
End If
Next Boucle
End If

Workbooks.Open NomFichier

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
134
Affichages
4 K
Retour