XL 2016 VBA - Ouvrir un fichier par le début de son nom

rounil09

XLDnaute Occasionnel
Bonjour la liste

Je souhaite faire la mise à jour d’un fichier à partir d’un autre fichier qui a une partie fixe nommée MaListe_ et une partie variable (en fait la date du jour).
Pour éviter de modifier à chaque fois ma macro qui fonctionne avec le nom complet du fichier (exemple MaListe_2020-03-06) j’ai remplacé la partie terminale par une étoile mais la macro ne fonctionne pas. Un message m’indique que le fichier est introuvable. Code :

Sub ImportFichierMaListe()

Dim wb As Workbook

Dim ws As Worksheet

Workbooks.Open ("C:\Users\gerar\Documents\MaListe_*.xls")

Set ws = ActiveWorkbook.Worksheets("MaListe_*")

Set ws = Nothing

End Sub

Merci par avance pour votre aide.
 

jmfmarques

XLDnaute Accro
Bonjour rounil09
Tu es donc en présence de plusieurs fichiers de même "préfixe"
Deux solutions (selon que tu veux choisir parmi eux ou décider d'ouvrir le plus récent) :
Les deux utilisent la fonction Dir, mais différemment selon ce que tu veux faire. Et que veux-tu faire ? Choisir ou ouvrir le plus récent ? ;)
 

rounil09

XLDnaute Occasionnel
Bonjour rounil09
Tu es donc en présence de plusieurs fichiers de même "préfixe"
Deux solutions (selon que tu veux choisir parmi eux ou décider d'ouvrir le plus récent) :
Les deux utilisent la fonction Dir, mais différemment selon ce que tu veux faire. Et que veux-tu faire ? Choisir ou ouvrir le plus récent ? ;)
Merci de ton aide jmfmarques.
Je pesais garder dans "Mes documents" le dernier fichier mais si c'est possible de choisir le fichier le plus récent je suis évidemment partant.
Cela permet de conserver tous les fichiers un moment en d'erreurs avant de faire le ménage.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Pour information
Dans les dernières versions d'Excel, il existe plusieurs versions d'un même fichier
Fichier/Informations/Gérer les versions
C'est une piste à explorer, non ?
Et tu n'aurais alors qu'un seul fichier ;)
 

rounil09

XLDnaute Occasionnel
Bonsoir le fil

Pour information
Dans les dernières versions d'Excel, il existe plusieurs versions d'un même fichier
Fichier/Informations/Gérer les versions
C'est une piste à explorer, non ?
Et tu n'aurais alors qu'un seul fichier ;)
Bonjour,
Merci Sptaple 1600 de ta suggestion mais je ne vois pas comment je peux avancer avec cette piste que je viens d'examiner
En fait, ce n'est pas un problème pour moi de garder un seul fichier.
Le problème c'est que la partie finale du fichier est variable et que les 2 macros (voir ci-dessus) qui appellent la seule partie variable ne fonctionnent pas.
Comme suggéré par jfm marques je vais explorer la fonction dir, mais mon niveau VBA est faible...
 

jmfmarques

XLDnaute Accro
Observation/précision : il est clair que doit être connu le chemin complet du dossier contenant le(s) fichier(s) ainsi nommé(s)
Confirme-nous que tel est bien le cas et indique-nous ce chemin complet.
Si tel n'était pas le cas, ce serait dans le meilleur des cas plutôt risqué, plusieurs fichiers en "harmonie" pouvant être présents dans des dossiers différents (à commencer par des sauvegardes éventuelles)
Le développeur averti utilise en général un chemin de dossier relatif à celui de son classeur.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
Rounil, dans ma macro il y a un bug. Il manque un guillemet.
A la fin de Rep = "C:\Users\gerar\Documents\ mettre un guillemet.
Rep = "C:\Users\gerar\Documents\"

Désolé, mais je n'ai pas testé ce chemin qui ne veut rien dire chez moi.
La macro ne peut pas répondre Non trouvé si votre fichier contient "MaListe_"
 

patricktoulon

XLDnaute Barbatruc
bonjour
chemin=dir("C:\Users\gerar\Documents\MaListe_*.xls")
' ca te choppe le premier de la liste si plusieurs fichier même préfixe
if chemin<>"" then
Workbooks.Open (chemin )

'...
'...
end if

[parenthèses]
".xls" avec 2016????
[parenthèses]
;)
 

rounil09

XLDnaute Occasionnel
bonjour
chemin=dir("C:\Users\gerar\Documents\MaListe_*.xls")
' ca te choppe le premier de la liste si plusieurs fichier même préfixe
if chemin<>"" then
Workbooks.Open (chemin )

'...
'...
end if

[parenthèses]
".xls" avec 2016????
[parenthèses]
;)
Merci patricktoulon
Je viens de tester le code, il fonctionne parfaitement.
".xls" avec 2016???? : Le fichier que je reçois n'est pas de mon cru, il m'arrive à ce format.
 

Discussions similaires

Réponses
49
Affichages
970

Statistiques des forums

Discussions
314 562
Messages
2 110 728
Membres
110 908
dernier inscrit
François19