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

Usine à gaz

XLDnaute Barbatruc
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,

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,
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
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
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
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

Statistiques des forums

Discussions
314 778
Messages
2 112 862
Membres
111 686
dernier inscrit
daniel delichy