Conversion texte en date
Résolu
Akatsucki
Messages postés
94
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je sèche un peu sur le code à mettre en place pour convertir un texte en date …
Je m’explique, j’ai réalisé un dossier d’archive de fichier ou je met le Nomfichier+date+format (exemple: toto06012021.xlsm
Puis je souhaite supprimer les fichiers qui ont plus de 30jours pour ne pas remplir mon dossier à l’infini
Du coup j’ai créé une boucle dans mon dossier qui récupère les noms des fichiers et qui compare la date du fichier à la date du jours -30 jours et si vrai alors supprime le fichier
Le format que j’ai est en texte 06012021 et la date pour comparer est 05/02/2021
Du coup ça me met un debugage
Je vous remercie si vous avez une solution
--
Akatsucki
Je sèche un peu sur le code à mettre en place pour convertir un texte en date …
Je m’explique, j’ai réalisé un dossier d’archive de fichier ou je met le Nomfichier+date+format (exemple: toto06012021.xlsm
Puis je souhaite supprimer les fichiers qui ont plus de 30jours pour ne pas remplir mon dossier à l’infini
Du coup j’ai créé une boucle dans mon dossier qui récupère les noms des fichiers et qui compare la date du fichier à la date du jours -30 jours et si vrai alors supprime le fichier
Le format que j’ai est en texte 06012021 et la date pour comparer est 05/02/2021
Du coup ça me met un debugage
Je vous remercie si vous avez une solution
--
Akatsucki
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
je pense qu'il faut modifier ton code VBA.-
Comment tu vois la chose ?
Je pensais au pire rajouter des - entre le jour,le mois et l’année pour que mon fichier ce nomme toto09-01-2021.xlsm puis je récupère uniquement la date 09-01-2021 ou je peux remplacer les "-" par "/" pour obtenir 09/01/2021 et ainsi mon format sera de type texte mais je sais pas si je pourrais le comparer à la date limite de -30jours sinon suppression ??- Si tu as le choix, pourquoi ne pas nommer le fichier toto20210109?
Tu peux facilement comparer 20210109 à 20210929, non?
Sinon, tu peux utiliser la fonction dateserial() pour créer une date à partir des nombres de l'année, du mois et du jour.
Comme tu ne montres pas ton code, difficile d'être plus précis.
Si jamais tu montres ton code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code 'Declaration des variables Dim DateLimite As Date: DateLimite = DateSerial(Year(Date), Month(Date), Day(Date) - 30) Dim NomDossier As String Dim DateJour As String Dim NomFichier As Variant: NomDossier = "C:\mesdocuments\" Application.DisplayAlerts = False 'Affectations des variables jour = Day(Date) Select Case Len(jour) Case 1 jour = "0" & jour Case 2 End Select Mois = Month(Date) Select Case Len(Mois) Case 1 Mois = "0" & Mois Case 2 End Select DateJour = jour & Mois & Year(Date) NomFichier = "STOCK CEINTURE" & DateJour & ".xlsm" 'on sauvegarde le fichier de backup ActiveWorkbook.SaveCopyAs NomDossier & NomFichier 'Suppression des fichiers qui ont plus de 30 jours de sauvegarde NomFichier = Dir(NomDossier & "*.xlsm") Do While Len(NomFichier) > 0 'suppression de .xlsm NomFichier = Left(NomFichier, Len(NomFichier) - 5) 'suppression de STOCK CEINTURE NomFichier = Right(NomFichier, Len(NomFichier) - 14) If IsDate(NomFichier) Then If CDate(NomFichier) < DateLimite Then Kill NomDossier & NomFichier & "*.xlsm" End If NomFichier = Dir() Loop
-
-
Après que quelqu'un m'est aidé sur comment convertir mon texte en date le code ci dessous fonctionne correctement !!! maintenant si vous avez des idées d'amélioration niveau rapidité je suis preneur merci !! ;)
'Declaration des variables Dim DateLimite As Date: DateLimite = DateSerial(Year(Date), Month(Date), Day(Date) - 30) Dim NomDossier As String: NomDossier = "C:\archive_ceinture\" Dim DateJour As String Dim NomFichier As Variant, DateFichier As Variant Application.DisplayAlerts = False 'Affectations des variables jour = Day(Date) Select Case Len(jour) Case 1 jour = "0" & jour End Select Mois = Month(Date) Select Case Len(Mois) Case 1 Mois = "0" & Mois End Select DateJour = jour & Mois & Year(Date) NomFichier = "STOCK CEINTURE" & DateJour & ".xlsm" 'on sauvegarde le fichier de backup ActiveWorkbook.SaveCopyAs NomDossier & NomFichier 'Suppression des fichiers qui ont plus de 30 jours de sauvegarde NomFichier = Dir(NomDossier & "*.xlsm") Do While Len(NomFichier) > 0 DateFichier = Mid(NomFichier, 15, 8) DateFichier = DateSerial(Right(DateFichier, 4), Mid(DateFichier, 3, 2), Left(DateFichier, 2)) If IsDate(CDate(DateFichier)) Then If CDate(DateFichier) < DateLimite Then Kill NomDossier & NomFichier End If NomFichier = Dir() Loop
-
moi j'écrirais plutôt:
Dim DateLimite As Date Dim NomDossier As String: NomDossier = "C:\archive_ceinture\" Dim DateJour As String, cejour as date, jour as string, Mois as string Dim NomFichier As Variant, sDateFichier As string, dDateFichier as date Application.DisplayAlerts = False 'Affectations des variables cejour=date() DateLimite = cejour-30 jour = Day(cejour) if Len(jour) = 1 then jour = "0" & jour End if Mois = Month(cejour) if Len(Mois) = 1 then Mois = "0" & Mois End if DateJour = jour & Mois & Year(cejour) NomFichier = "STOCK CEINTURE" & DateJour & ".xlsm" 'on sauvegarde le fichier de backup ActiveWorkbook.SaveCopyAs NomDossier & NomFichier 'Suppression des fichiers qui ont plus de 30 jours de sauvegarde NomFichier = Dir(NomDossier & "*.xlsm") Do While Len(NomFichier) > 0 sDateFichier = Mid(NomFichier, 15, 8) dDateFichier = DateSerial(Right(sDateFichier, 4), Mid(sDateFichier, 3, 2), Left(sDateFichier, 2)) If dDateFichier) < DateLimite Then Kill NomDossier & NomFichier End If NomFichier = Dir() Loop
-