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

Microsoft 365 Récupérer la date contenue dans le nom du classeur actif

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite une belle journée

Comme l'indique le titre du fil, je souhaite récupérer la date contenue dans le nom de mon classeur actif.

J'ai trouvé comment récupérer tout le nom (merci à l'auteur) :
VB:
Sub TestNomFichier()
MsgBox Split(ActiveWorkbook.Name, ".")(0)
End Sub

Toutefois, je voudrais juste la date qui est toujours au même format mais qui peut se trouver dans des positions différentes :
1 - isiTel_lionel_Global 2022 06 24,
2 - isiTel_lionel_Global 2022 06 24-ok,
3 - isiTel_lionel_Global 2022 06 24-ok_bon, et peut-être d'autres possibilités,

Est-il possible de récupérer la date où qu'elle soit ? et la coller, par exemple, en cellule A1 de la feuille active,

Un grand merci par avance et je continue mes recherches,
Amicalement,
lionel
 
Solution
Bonjour @Usine à gaz ,
Est-ce que l'année comme indiquée sur les exemples sera toujours la première valeur numérique ?
Si OUI, peut être comme ceci
Code:
Sub Test()
    xNom = ActiveWorkbook.Name
    xPos = InStr(1, xNom, 2)
    xDat = Mid(xNom, xPos, 10)
    xDecoupe = Split(xDat, " ")
    xDateFinale = CDate(xDecoupe(2) & "/" & xDecoupe(1) & "/" & xDecoupe(0))
End Sub
@+ Lolote83

Lolote83

XLDnaute Barbatruc
Bonjour @Usine à gaz ,
Est-ce que l'année comme indiquée sur les exemples sera toujours la première valeur numérique ?
Si OUI, peut être comme ceci
Code:
Sub Test()
    xNom = ActiveWorkbook.Name
    xPos = InStr(1, xNom, 2)
    xDat = Mid(xNom, xPos, 10)
    xDecoupe = Split(xDat, " ")
    xDateFinale = CDate(xDecoupe(2) & "/" & xDecoupe(1) & "/" & xDecoupe(0))
End Sub
@+ Lolote83
 
Dernière édition:

Lolote83

XLDnaute Barbatruc
Re bonjour @Usine à gaz ,
Je viens de voir ton fichier joint, mais la macro n'est pas complète et le résultat du coup n'est pas bon.
Ton fichier s'appelle Recupere 2022 03 24_date.xlsm
La date que tu inscris en A1 = 24/06/2022 soit la date du jour avec la commande [A1]=Date.

Reprends la macro du post#2 et à la fin tu peux rajouter [A1]=xDateFinale
@+ Lolote83
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Si la date peut être "dans des positions différentes", pourquoi ne donner que des exemples où elle est toujours au même endroit ???
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Lolote83
Le code fonctionne super bien, encore merci

Mais c'était trop simple
Pour que nos fichiers journaliers soient toujours dans l'ordre de dates :
La date est toujours sous cette forme "2022 06 24"
la date est toujours au même format mais peut se trouver en positions différentes dans le nom du classeur.
1 - isiTel_lionel_Global 2022 06 23,
2 - isiTel_lionel_Global 2022 06 23-ok,
3 - isiTel_lionel_Global 2022 06 23-ok_bon, et peut-être d'autres possibilités,

Dans mon fichier de travail, pour que je puisse faire une compraison de dates
Il faudrait que ça apparaisse en "G7" comme cela : 23.06.22
Je joins le fichier avec le résultat attendu.

Je continue mes recherches,
lionel
 

Pièces jointes

  • 2022 06 23Recupere_date2.xlsm
    18.7 KB · Affichages: 1

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Lolote83
Merci, c'est exactement ça
 

job75

XLDnaute Barbatruc
Bonsoir Lionel, Lolote83, TooFatBoy,

Voyez le fichier joint et cette fonction VBA qui utilise une expression régulière :
VB:
Function RecupDate() As Date
Application.Volatile
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp") 'expression régulière
RegEx.Pattern = "20\d(2)\s[01]\d\s[0-3]\d" 'années 2000 à 2099
RecupDate = Replace(RegEx.Execute(ThisWorkbook.Name)(0), " ", "/")
End Function
A+
 

Pièces jointes

  • Recupere 2022 03 24_date.xlsm
    16 KB · Affichages: 4
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…