Ouvrir un classeur au nom variable

  • Initiateur de la discussion Initiateur de la discussion chris
  • 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 !

C

chris

Guest
Salut à tous,

Voilà mon pb : au boulot on me demande d'automatiser la mise en page d'un tableau excel arrivant chaque jour par mail.

Seulement voilà, le nom du tableau change chaque jour, car il contient la date du jour :
"Prog_De_Marche_Du_11_mai_04.xls"

Dans ce tableau, impossible de rajouter quoi que ce soit, ni fomule ou macro.
Alors j'ai créé un autre fichier excel perso : une fois le tableau et mon fichier ouverts ensembles, je lance une macro de mon fichier avec l'instruction :

Workbooks(2).Activate

cela sélectionne donc le second classeur ouvert à ce moment, puis il fait un copier coller des valeurs pour en faire ce que je veux.

Mais n'étant pas le seul utilisateur, j'ai bien peur que certains ouvrent plusieurs fichiers excel, et dans ce cas le Workbooks(2) peut être n'importe lequel d'entre eux.

Le nom du tableau arrivant par mail commence toujours par "Prog_De_Marche_Du ...... .xls"

Y a t'il une instruction genre :
Sélectionner le fichier "Prog_De_Marche_Du*.xls"

Ecrit comme ça, ça marche pas...
 
Bonjour Chris et le forum

Pour le jour en cours voici une méthode pour récupérer le nom de ton fichier

MonJour = Format(Date, "dd")
MonMois = Format(Date, "mmmm")
MonAnnee = Format(Date, "yy")

Monfichier = "Prog_De_Marche_Du_" & MonJour & "_" & MonMois & "_" & MonAnnee & ".xls"

Bon courage

Pascal
 
Bonjour Chris, le forum

Tu peux essayer aussi :

FichierDuJour = Application.GetOpenFilename("Tous les fichiers Microsoft Excel(*.xls), *.xls", , "Recherche du fichier du jour")

et récupérer FichierDuJour pour Workbooks(FichierDuJour).Activate par exemple.

Abel
 
Merci !

Deux excellentes idée, mais elles posent problème toutes les deux dans mon cas : (même si je m'empresse en même temps de les copier dans un coin du PC...)

Le fichier portant la date du jour change effectivement de nom chaque jour, ce nom commence bien par "Prog_De_Marche_.......xls" mais la seconde partie change régulièrement de forme !

En effet ce fichier nous est envoyé par Outlook chaque jour par une autre société que nous ne contrôlons pas.

Quelques fois nous recevons : "Prog_De_Marche_03052004.xls"
ou encore : "Prog_De_Marche_03_mai_04.xls"
etc...

De plus ce fichier reçut n'est pas enregistré sur le disque dur. Il est simplement ouvert dans outlook, imprimé puis refermé.

Je souhaiterai trouvé une instruction me permettant de sélectionner à partir d'un classeur perso le second classeur reçut par outlook. Ce second classeur est donc également ouvert, MAIS un 3ème classeur qui n'a rien à voir peut lui aussi être ouvert (je sais, mais j'ai des collègues qui ne touchent que très peu aux PC et ils ne lisent jamais les instructions...

Il faut une instruction genre :

Windows("PROG_DE_MARCHE * .xls").Activate

Mais avec une étoile ça marche pas sous excel...

snif
 
Bonjour Chris, le forum,

J'ai bien une idée mais je n'ai pas le temps dans l'immédiat de concrétiser en code.

Si au moment où tu cherches le fichier "Prog_De_Marche*.xls", celui-ci est ouvert : on pourrait alors demander à Excel de regarder dans Workbooks les noms des fichiers ouverts et de les mettre dans un tableau.

On peut alors tester les entrées de ce tableau en regardant si les 14 premiers caractères à gauche de chaque entrée correspondent à "Prog_De_Marche". Avec éventuellement une validation sur le nom du fichier au cas où il y aurait plusieurs "Prog_De_Marche" ouverts.


Si j'ai le temps à midi, je regarderai pour faire quelque lignes.

Pascal, si tu as quelque chose dans le genre de tout prêt, à toi de transformer.

Bon courage.

A+

Abel
 
Bin oui !!!!! VOILA LA SOLUTION !!!!! *se tape sur le front*

Merci !


J'avais pas pensé à ça. Bon ça doit pas être dur de récupérer les noms de fichiers ouverts actuellement. Je vais tester ça de suite et je vous tient au courant.
 
Merci ! C'est bien ça que je cherchais. En fait je ne connaissais pas l'instruction "If Left" qui simplifie bien la chose !

Sinon de mon côté j'ai testé ta idée et ça donne ça :
-----------------------
Sub SELECTclasseur()

' Inscrit les noms de tous les classeurs ouverts :
A = 0
For Each Wk In Workbooks
Range("B1").Offset(A, 0).Select
If Wk.Name <> ThisWorkbook.Name Then
Selection = Wk.Name
A = A + 1
End If
Next Wk

' Cherche le classeur ouvert dont le nom commence par "PROG_DE_MARCHE...."
For Each NOM In [A1:C5]
If NOM Like "PROG_DE_MARCHE*" Then
Windows(NOM.Text).Activate
End If
Next
End Sub

------------------------------

ça fonctionne aussi mais il faut effectivement passer par un tableau...
Merci encore, de la part de tout mon service !
 
Bonjour le forum,

comment faire pour adapter cette solution à un fichier non ouvert? Ie je veux ouvrir un fichier dont je connais le début du nom et le directory.
Merci de vos conseils lumineux.
Guillaume
 
- 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
4
Affichages
201
Réponses
4
Affichages
864
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
376
Retour