Conversion texte en date
Résolu
Akatsucki
Messages postés
90
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Conversion texte en date
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Mettre un texte en majuscule - Guide
- Texte en gras - Guide
- Transcription texte en audio - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
je pense qu'il faut modifier ton code VBA.
je pense qu'il faut modifier ton code VBA.
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
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 ??
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