Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 récupération d'info à partir du nom du fichier

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 !

philmaure

XLDnaute Impliqué
Bonjour,

J'ai un fichier qui s'appelle (exemple) Test2016-09-23-15-54-19.XLS

Existe t il une solution pour récupérer la date et l'heure pour l'indiquer à l'intérieur du fichier Excel ?
dans mon fichier test : en colonne B et C

Merci pour votre aide
Cdlt
Philmaure
 

Pièces jointes

c'est pour ca que j'avais mis en D19 un nom qui corresponde
avec ton nouveau fichier, suffit d'adapter
en B2
=DATE(STXT(NOMCLASSEUR();NBCAR(NOMCLASSEUR())-22;4);STXT(NOMCLASSEUR();NBCAR(NOMCLASSEUR())-17;2);STXT(NOMCLASSEUR();NBCAR(NOMCLASSEUR())-14;2))
et en C2
=TEMPS(STXT(NOMCLASSEUR();NBCAR(NOMCLASSEUR())-11;2);STXT(NOMCLASSEUR();NBCAR(NOMCLASSEUR())-8;2);STXT(NOMCLASSEUR();NBCAR(NOMCLASSEUR())-5;2))
 
Bonjour philmaure, vgendron,

un essai macro :

Code:
Sub Recup()
dim DateT as string, d
DateT = ThisWorkbook.Name
d = Split(Left(Right(DateT, 23), 19), "-")
With Worksheets("Rapport 1")
.Range("B2") = DateSerial(d(0), d(1), d(2))
.Range("C2") = TimeSerial(d(3), d(4), d(5))
.Range("C2").NumberFormat = "[$-F400]h:mm:ss AM/PM" ' à adapter
End With
End Sub

A+
 
re,

la macro renvoie une erreur sur la ligne
.Range("B2") = DateSerial(d(0), d(1), d(2))

Pourtant ça tourne sur le classeur joint au post 3

et pour la reponse de Paf j'ai toujours une erreur Nom ?

il doit y avoir confusion de qui a envoyé quoi ??


Un essai par fonctions personnalisées

en B2 : =RecupDate() , en C2 : =RecupHeure()

dans un module standard

Code:
Function RecupDate()
DateT = ThisWorkbook.Name
d = Split(Left(Right(DateT, 23), 19), "-")
RecupDate = DateSerial(d(0), d(1), d(2))
End Function

Function RecupHeure()
DateT = ThisWorkbook.Name
d = Split(Left(Right(DateT, 23), 19), "-")
RecupHeure = TimeSerial(d(3), d(4), d(5))
End Function

ou bien si on veut date et heure dans la même cellule:

en B2 : =RecupDateHeure()

dans un module standard :
Code:
Function RecupDateHeure()
DateT = ThisWorkbook.Name
d = Split(Left(Right(DateT, 23), 19), "-")
RecupDateHeure = CDbl(DateSerial(d(0), d(1), d(2))) + CDbl(TimeSerial(d(3), d(4), d(5)))
End Function

A+
 
re,

le classeur est il toujours de la forme :
Test2016-09-23-15-54-19.XLS

tout caractère en plus ou en moins fera planté dateserial et timeserial qui ne reconnaitont plus le découpage comme élément de date ( ou time).

A+

Edit : le problème sera le même sur les formules
 
re,

oui je fais les tests avec le meme fichier.
J'ai trouve un contournement. Je récupère le nom du fichier dans une cellule avec la formule :
=STXT(CELLULE("filename";A1);TROUVE("[";CELLULE("filename";A1))+1;SOMME(TROUVE({"[";"]"};CELLULE("filename";A1))*{-1;1})-5)

puis je récupère l'heure avec la fonction Droite

Je suis certain que les solutions proposées fonctionnent mais je trouve pas d'où vient le pb. Je continue à chercher.

Si je peux abuser est ce que la macro fonctionne chez vous sur mon fichier ?

Cdlt
Philmaure
 
- 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

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…