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!
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

[POUR INFO]
Testé sur Excel 2013 et WIN10
Même message d'erreur que Dranreb
(avec les deux macros)
VB:
Sub test1()
Dim strPath
strPath = CreateObject("WScript.Shell").SpecialFolders(16)
ChDir strPath
MsgBox CurDir & Chr(13) & Dir("tem*.xlsm")
Workbooks.Open "tem*.xlsm"
End Sub
Sub test2()
Dim strPath
strPath = CreateObject("WScript.Shell").SpecialFolders(16)
Workbooks.Open strPath & "\tem*.xlsm"
End Sub
[/POUR INFOS]
@Dranreb
Je testerai lundi au boulot sur une ressource réseau et également sur Sharepoint
 

Patrice33740

XLDnaute Impliqué
Bonjour Danreb

Je viens de tester :
Workbooks.Open ("D:\nas\Dossier1\Dossier2\2. Excel\ASP - TITI*.xlsm")
Même erreur que toi !

Par contre, en passant par le réseau sur mon PC (WIN10) :
Workbooks.Open ("\\MONPC\nas\Dossier1\Dossier2\2. Excel\ASP - TITI*.xlsm")
Fonctionne et ouvre le premier des fichiers du répertoire dans l'ordre alphabétique
 

Dranreb

XLDnaute Barbatruc
Et en mettant, dans Workbooks.Open ("D:\nas\Dossier1\Dossier2\2. Excel\ASP - TITI*.xlsm"), à la place de ASP - TITI*.xlsm le nom d'un fichier existant, ça marche ?
Et le code du #30, qui m'intéresse surtout, il marche ?
(En mettant If CheminMisCourant("\\MONPC\nas\Dossier1\Dossier2\2. Excel") Then évidemment. Ça change tout le temps ?? Édition; Ah, non, je confond les intervenants)
@Staple1600 s'il te plait, j'aimerais que tu fasse des tests quand même.
 
Dernière édition:

Patrice33740

XLDnaute Impliqué
Et en mettant, dans Workbooks.Open ("D:\nas\Dossier1\Dossier2\2. Excel\ASP - TITI*.xlsm"), à la place de ASP - TITI*.xlsm le nom d'un fichier existant, ça marche ? [...]
Évidemment, c'est la commande normale d'ouverture fichier !

[...]
Et le code du #30, qui m'intéresse surtout, il marche ?
[...]
.
J'ai pas essayé et j'ai détruit les fichiers et répertoires d'essai ...
 

Dranreb

XLDnaute Barbatruc
Peut-on déjà en déduire avec certitude que le dispositif ne marche pas avec une lettre de lecteur même si celle ci représente à coup sûr un chemin réseau auquel on a attribué cette lettre, et non un périphérique géré par Windows ?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@Dranreb
J'ai donc fais les tests suivants
Test de la macro du message#30
Erreur 1004

Test de la macro test2 (du message#31)
Le classeur est bien ouvert

NB: Le classeur est stocké sur un emplacement réseau
Le chemin est du type: \\servername\user$\username\Documents

PS: En remontant le fleuve du temps, je suis retombé sur ce vieux fil ;)
Le changement de répertoire se fait bien mais ensuite comme avec ta macro, si j'ajoute une ligne dans le code pour ouvrir le classeur => Erreur 1004
 

Dranreb

XLDnaute Barbatruc
Bonjour Staple1600
Merci. Tu ne précise pas en revanche si à ta boite un Workbooks.Open d'une identification de fichier complète à des "*" près passe comme chez deux autres intervenants ? Parce que si là ça ne passe pas, c'est normal que les autres variantes testées ne passent pas non plus !
 

Dranreb

XLDnaute Barbatruc
Àh oui, j'avais pas capté. Ça ramène quoi CreateObject("WScript.Shell").SpecialFolders(16) ?
Chez moi ça me ramène mon dossier de documents du disque C.
je suppose que chez toi aussi, et tu dis que tu peux faire derrière un Workbooks.Open strPath & "\tem*.xlsm" ???
De plus en plus bizarre cette affaire là.
Édition: Ah non, là c'est pas comme au post #31.
En tout cas il est clair que ça ne marche pas partout dans tous les cas. Alors dans le module de service que je suis en train d'élaborer pour obtenir facilement un classeur ouvert selon une idt de fichier partielle spécifiée, je ne vais pas tenir compte de cette possibilité.
Surtout que ça à l'air d'ouvrir le premier venu par ordre alpha. Je prévois de pouvoir le choisir s'il y a ambiguïté.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

J'avais adapté la macro test2 pour tester
(voir le message#41)

Oui, normalement sur tous les PC sont Windows, cette ligne pointe sur Mes Documents
CreateObject("WScript.Shell").SpecialFolders(16)

Mais comme dit plus haut et dans le message#39, j'ai modifié pour tester sur une ressource réseau

Donc je réprecise
Un classeur nommé tempTest1234.xlsm a été copié sur une ressource réseau
Dans un classeur vierge
J'ai d'abord testé une version modifiée de ta macro TOTO
=> Erreur 1004
(Le fichier est introuvable)
Puis j'ai testé une version modifiée de la macro test2
Et là le fichier est bien trouvé et ouvert par la macro.

Ci-dessous les macros modifiées
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("\\servername\user$\username\Documents") Then
   Set Wbk = Workbooks.Open("tem*.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
Sub test2()
Dim strPath$
strPath ="\\servername\user$\username\Documents" 
Workbooks.Open strPath & "\tem*.xlsm"
End Sub
 

Dranreb

XLDnaute Barbatruc
Ok. Donc quand le chemin réseau est mis dans CurDir avec SetCurrentDirectoryA, ça ne marche qu'avec un nom de fichier existant spécifié sans "*". Bon ben comme dit je n'essayerai pas autre chose dans mon module de service. Il y a des chance que ce soit finalement un UserForm d'ailleurs, mais qui ne s'affichera que si besoin.
 

Staple1600

XLDnaute Barbatruc
Re

J'ai aussi fait ce test
VB:
Sub TOTO_b()
If CheminMisCourant("\\servername\user$\username\Documents") Then
   MsgBox CurDir '& vbLf & Wbk.Name & vbLf & Wbk.Sheets(1).Name, vbInformation
Else
   MsgBox "Impossible de changer le chemin courant", vbCritical
   End If
End Sub
Le chemin est bien changé et s'affiche dans le MsgBox
C'est la ligne d'ouverture du classeur qui coince
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 868
dernier inscrit
JJV