VBA Ouvrir un fichier qui change de nom tous les jours

merguez59

XLDnaute Nouveau
Bonjour à tous,

Je souhaite, par une macro, ouvrir un fichier qui change de nom tous les jours (pour ensuite en faire un copié collé)

En fait un requêteur envoie chaque jour dans un répertoire (qui est toujour le même) un fichier excel. Si ce fichier avait le même nom tous les jours (et écrasait le précédent), il n'y aurait pas de problème. Mais chaque jour le fichier s'appelle:

extraction 2014-08-07-08-45-29
demain, ce sera
extraction 2014-08-08-08-45-28
après demain
extraction 2014-08-09-08-45-32

en fait:
c'est l'année, le mois, le jour, l'heure, la minute ET (là où ça se complique), la seconde... qui malheureusement, elle, est assez aléatoire...

Deux possibilités:
• aller chercher le fichier le plus récent du répertoire
• trouver un moyen de chercher le fichier qui se rapproche de "extraction" + date du jour...

Merci d'avance pour votre aide!
 

job75

XLDnaute Barbatruc
Bonjour le forum,
Vous l'aurez compris, le numéro de version du fichier est susceptible de changer.
Pour rester dans la logique de mon post #3 (plusieurs versions du fichier dans le dossier) :
Code:
Sub RechercheFichier()
Dim chemin$, nomfich$, version#, der#, fich$
'chemin = ThisWorkbook.Path & "\" 'pour tester facilement
chemin = "\\nas\Dossier1\Dossier2\2. Excel\"
nomfich = Dir(chemin & "ASP - Fichier V*.xlsm") '1er fichier du dossier
While nomfich <> ""
    version = Val(Mid(nomfich, InStrRev(nomfich, "V") + 1))
    If version > der Then der = version: fich = nomfich 'dernière version
    nomfich = Dir 'fichier suivant
Wend
If fich = "" Then
    MsgBox "Aucun fichier trouvé..."
Else
    MsgBox "Ouverture de '" & fich & "'"
    Workbooks.Open (chemin & fich)
    '---suite éventuelle---
End If
End Sub
A+
 

senpan

XLDnaute Junior
Bonjour à tous,

J'ai finalement opter pour :
VB:
Sub TOTO()

Dim ws As Worksheet
    Workbooks.Open ("\\nas\Dossier1\Dossier2\2. Excel\ASP - TITI*.xlsm")
    Set ws = ActiveWorkbook.Worksheets("MIMI")
    Set ws = Nothing

End Sub


J'ai vu en interne pour la gestion des fichiers dans les répertoires du NAS. Avec cette nouvelle méthode et ce bout de code : plus aucun soucis.

Je vous remercie de votre aide et de votre implication.
 

Dranreb

XLDnaute Barbatruc
J'ai essayé chez moi, avec la même version d'Excel, et, alors que le MsgBox dit que je l'ai, ça me fait ça :
upload_2018-7-28_15-53-59.png

Édition: êtes-vous sûr que ça marche chez vous, ou vous parait-il seulement, à tort, tellement évident que ça doit forcément marcher que vous n'avez même pas chercher à vérifier en essayant ?
À moins que ce ne soit spécifique des chemins commençant par "\\" ?
Ça marche aussi chez vous avec un dossier débutant par une lettre de lecteur et":\" ?
Sinon je ne pourrais quant à moi jamais utiliser cette spécificité…
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonsoir Dranreb
la configuration du texte de merguez59 est Dir("\\nas\Dossier1\Dossier2\2. Excel " & "ASP - Fichier V" & "*.xlsm").
ce qui est un peu différente de ta version.
juste une question Lol
As tu essaye cette configuration ? (si tu n'as déjà était testé)

Bonne fin de Journée peut etre
jean marie
 

Dranreb

XLDnaute Barbatruc
Pour synthétiser les deux dernières interventions, pas besoin de tester un Dir suivi d'un Workbooks.Open qui reprend le nom de fichier trouvé par Dir: ça je sais que ça marche. Mais senpan prétend au poste #17 pouvoir faire directement un Workbooks.Open à partir d'une identification de fichier contenant des caractères joker réservés au Dir. J'ai de très gros doutes, et comme je le montrai au #21, chez moi ça ne marche pas !
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
OK. Ben on tâchera de s'en souvenir, pour ceux qui travaillent avec des réseaux informatiques d'entreprises.
Mais du coup ça soulève une question: Si on attribue une lettre de lecteur à ce domaine, est que ça ne marche plus parce que c'est la forme qui ne marche pas, ou ça marche toujours parce que c'est un support réseau ?
 

Dranreb

XLDnaute Barbatruc
Moi c'est Dranreb.
À mon avis c'est une disposition hardware particulière propre au serveur central du réseau, qui n'a rien à voir avec Windows.
Il se pourrait même que ça ne marche plus si la boîte changeait de matériel. À moins que cette facilité soit très répandue dans tous les réseaux modernes. Windows, lui, n'accepte pas les "*" dans les références de fichiers à ouvrir, mais seulement dans l'instruction Dir.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Est-ce que ça marche toujours en utilisant le chemin courant ?
(On ne peut pas le positionner avec ChDir pour les chemins réseau parce que vba cherche toujours à ne l'appliquer qu'au lecteur spécifié devant, or il n'y en a pas pour ceux ci. Il faut donc utiliser l'API SetCurrentDirectoryA) :
VB:
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function CheminMisCourant Lib "kernel32" _
   Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
#Else
Private Declare Function CheminMisCourant Lib "kernel32" _
   Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
#End If
Sub TOTO()
Dim Wbk As Workbook
If CheminMisCourant("\\nas\Dossier1\Dossier2\2. Excel") Then
   Set Wbk = Workbooks.Open("ASP - TITI*.xlsm")
   MsgBox CurDir & vbLf & Wbk.Name & vbLf & Wbk.Sheets(1).Name, vbInformation
Else
   MsgBox "Impossible de changer le chemin courant", vbCritical
   End If
End Sub
 
Dernière édition:

Discussions similaires