Conserver le format des date avec ActiveWorkbook.SaveAs

leyeti77

XLDnaute Nouveau
Bjr,

Je galère pour sauvegarder un workbook, tout en conservant les dates au bon format dans le cellules.

Dans les cellules j'ai la date sous le format Date jj/mm/yyyy
Je sauvegarde le fichier au format .txt.

Quand je le fait manuellement, tout va bien, même si je dois 3 répondre 3 fois YES.
J'ai enregistré ma séquence en VBA, et quand j'utilise la macro résultante là les date changent de format, et passe en mm/dd/yyyy :(

Dans le régional setting de Windows je suis bien en dd/mm/yyyy.
Je ne sais plus quoi faire

============================
Columns("V:W").Select
Selection.NumberFormat = "m/d/yyyy"

Dim strFile As String
strFile = "C:\$user\Backfill\Bench\2.0_ROAT_Input\" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1) & _
Format(Date, "yyyymmdd") & ".txt"
ActiveWorkbook.SaveAs Filename:=strFile, FileFormat:=xlText

ActiveWindow.Close , SaveChanges:=True
 

job75

XLDnaute Barbatruc
Re : Conserver le format des date avec ActiveWorkbook.SaveAs

Bonsoir leyeti77,

Le phénomène que vous décrivez avec les dates est classique en VBA.

Une solution est de reproduire exactement ce qui est fait manuellement, donc remplacer :

ActiveWindow.Close , SaveChanges:=True

par :

SendKeys "^{F4}~~~"

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Conserver le format des date avec ActiveWorkbook.SaveAs

Re,

Une autre solution, nettement meilleure, c'est de conserver la fin de la macro avec .Close, mais de transformer les dates en texte en modifiant le début ainsi :

Code:
Dim plage As Range
Application.DisplayAlerts = False
Set plage = Intersect(ActiveSheet.UsedRange, Range("V:W"))
plage.NumberFormat = "m/d/yyyy"
[COLOR="Red"]plage = plage.Text[/COLOR]

Edit : j'ai ajouté Application.DisplayAlerts = False, nécessaire il me semble...

A+
 
Dernière édition:

Discussions similaires