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!
 

Dranreb

XLDnaute Barbatruc
Mais tu me confirme bien que c'est seulement quand il y a une "*" dans le nom de fichier, sinon ça marche ? Parce que là aussi, s'il y a quelque chose qui gène sans étoile parce que c'est un chemin réseau, c'est normal que ça gène aussi avec :rolleyes:
Ça me rassurerait presque qu'il y ait autre chose qui coince plutôt que l'inexplicable fait que ça marche avec l'idt. complète, au nom de fichier près, et que ça ne marche plus juste si le chemin est dans CurDir.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Si la ligne d'ouverture indique le nom entier du classeur, le classeur est ouvert
Sub TOTO()
Dim Wbk As Workbook
If CheminMisCourant("\\servername\user$\username\Documents") Then
Set Wbk = Workbooks.Open("tempTest1234.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

PS; Je retesterai demain (car tu m'as mis le doute ;) )
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

@Dranreb
J'ai donc retesté (comme promis)
Et je confirme:
SetCurrentDirectoryA change bien le path
mais si on essaie d'ouvrir un classeur avec seulement une partie de son nom : tem*
Erreur 1004

Par contre cette syntaxe fonctionne avec la macro test2 et le fichier est ouvert par la macro.
Sub test2()
Dim strPath$
strPath ="\\servername\user$\username\Documents"
Workbooks.Open strPath & "\tem*.xlsm"
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonsoir Staple1600.
Merci de m'avoir confirmé cela.
Je n'utilise donc pas cette possibilité dans mon code visant à offrir une solution générale et facile à utiliser pour ce problème récurrent.
 

Pièces jointes

  • FonctionClasseur.xlsm
    38.5 KB · Affichages: 22

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum, Dranreb

@Dranreb
résultats des tests
Au préalable, j'ai créé 3 fichiers Excel
tempABC.xlsx, tempDEF.xlsm, tempGHI.xlsb
Ensuite j'ai testé les string suivantes en A3
Dans tous les cas, les fichiers sont listés (c'est normal puisque prévu dans le code VBA => *.xl*)
\\servername\dossier\users$\username\Documents\tem*
\\servername\dossier\users$\username\Documents\*em*
\\servername\dossier\users$\username\Documents\t*

Avec ce test :
\\servername\dossier\users$\username\Documents\*
'Liste tous les types de fichiers dont l'extension correspond à: *.xl*

J'ai une question, j'ai beau chercher, je ne comprends pas ce qui déclenche le redimensionnement du userform
Au début dans la liste apparait: le nom classeur actif et PERSONAL.XLSB
Ensuite si je clique sur la bordure de la listbox, l'userform se redimensionne et liste tous les fichier avec une extension *.xl*
(Or je ne trouve pas de procédure ListBox_Click)

Tu peux éclairer ma lanterne, stp ? ;)

PS: Ah oui, j'oubliais le principal, le fichier sélectionné dans la ListBox est bien ouvert par le code VBA.
 

Dranreb

XLDnaute Barbatruc
Bonsoir Staple1600
Youpi ! Tout baigne jusqu'à ce que je trouverai quand même un ou deux bogues…
Un clic sur la bordure ça équivaut à un clic sur un peu n'importe quoi, tout ça est regroupé tout à la fin en de très courtes procédures qui se bornent à masquer l'UserForm afin de terminer le Me.Show à la fin de la Function Choix, et poursuivre du coup aussi la séquence principale de la Function Classeur. Les dimensionnements de LabChemin, LBxFiche , LabErreur et de l'UFmWbk sont effectués par la Function Choix. Elle est appelée principalement en deux endroits: pour lister les fichier déjà ouvert et ensuite ceux à ouvrir.
Espérant que les choses te paraissent plus claires, sinon n'hésite pas à me poser d'autre questions…
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@Dranreb
Tel que s'affichait l'userform quand j'ai testé, j'ai cru que je cliquais sur la bordure de la ListBox.
(D'ailleurs, si je peux me permettre, ce n'est pas ergonomique, j'ai cliqué au début par hasard.
Rien n'indique qu'il faille le faire ;))


Je viens de tester ceci
SF16\*
Là Excel bronche et affiche le MsgBox
If MsgBox("Il a bien été trouvé un classeur...
Alors que ce n'est pas le cas avec un path \\...
(voir mon message précédent)
 

Dranreb

XLDnaute Barbatruc
Le message que tu cite est émis à la fin par la Function Classeur quand elle a été conduite à retenir un classeur déjà ouvert mais dont le Path n'est pas le dossier précisé à l'appel de UFmWbk.Classeur. Je n'ai pas réussi à intégrer au style du reste un affichage aussi clair que ce MsgBox.
Si on ne veut choisir aucun fichier proposé on peut demander la fermeture de l'UserForm.
 

Staple1600

XLDnaute Barbatruc
Re

Ça, j'ai bien compris que le Msgbox est prévu dans le code VBA mais ma question c'est:
Pourquoi elle ne s'affiche pas si en B3 on a un path du style: \\servername\dossier\users$\username\Documents\*
(dans ce cas, la listbox se remplit avec tous *.xl* présents dans CurDir)

Alors qu'elle s'affiche avec : SF16\*
(et dans ce cas, la listbox ne se remplit pas avec tous *.xl* présents dans CurDir)
 

Dranreb

XLDnaute Barbatruc
Tu peux me montre une image du début de la feuille ?
S'il y a un dysfonctionnement avec un path du style \\servername\dossier\… je ne vais pas savoir quoi y faire.
Normalement si on précise un tel chemin il doit afficher la liste s'il y en a plusieurs qui peuvent correspondre.
S'il n'y en a qu'un il ne s'affiche pas: il l'ouvre si nécessaire et le renvoie.
 

Staple1600

XLDnaute Barbatruc
Re

Non c'est le contraire, il n'y aucun problème avec un path réseau mais seulement avec un path local
01Dranreb.jpg

Quand j'ai au boulot sur une ressource réseau avec un \\...\username\Documents\*
La liste de tous les fichiers *.xl s'affiche dans la ListBox
Ce qui n'est pas le cas en local

NB: D'ailleurs, si le nom du classeur contenant le code commence comme la string du path, là aussi problème
PS: Tous les fichiers issus d'XLD sont renommés TODELNomfichier.xl? (pour me faciliter le ménage sur mon HD)
Donc avec cette chaine : \to* il y a un problème.
 
Dernière édition:

Discussions similaires