XL 2016 Inversion jour / mois

SNOP

XLDnaute Nouveau
Bonjour à tous,
J’ai un petit souci que je n’arrive pas à résoudre au sujet assez classique sur les formats de dates :
J’ai un champ qui a ce format, exemple pour le 8 novembre : « 08 11 2023 17:43:21 » et je dois le convertir, dans une macro en « 8-nov »
Comme je suis fainéant j’enregistre la macro en faisant :
- Pour supprimer l’heure je remplace " ??:*", par rien  Résultat « 08 11 2023 »
- Je remplace les espaces par des "/",  Résultat « 08/11/2023 »
- Mise au format date « jj-mmm »  Résultat parfait : « 8-nov »
Dans la macro ceci me donne :
Selection.Replace What:=" ??:*", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=True
Selection.Replace What:=" ", Replacement:="/", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=True
-  Mauvais résultat : « 8-août » les mois et jours sont inversés comme en anglais. J’ai essayé de jouer sur les paramètres régionaux mais rien n’y fait et bien sûr si le jour est supérieur à 12 il ne reconnait pas une date puisqu’il n’y a rien après décembre.
Pourquoi le résultat de la macro est-il différent de ce qui est fait manuellement ?
Me faut-il faire du code pour passer de J/M/A à M/J/A ?
Si une bonne âme avait une piste je serais bien preneur, merci.
 

fanfan38

XLDnaute Barbatruc
Bonjour et bienvenu sur le forum
Sans macro, si 08 11 2023 17:43:21 en A1
mettre en A2 =DATEVAL(GAUCHE(A1;2) &"/" & STXT(A1;4;2)&"/" &STXT(A1;7;4))
et en VBA
VB:
Sub convert()
  Dim varan As Integer, varmois As Byte, varjour As Byte
  varjour = Left(Range("A1").Value, 2)
  varmois = Mid(Range("A1").Value, 4, 2)
  varan = Mid(Range("A1"), 7, 4)
  Range("A1") = DateSerial(varan, varmois, varjour)
End Sub
A+ François
 

Discussions similaires

Réponses
1
Affichages
218

Statistiques des forums

Discussions
315 095
Messages
2 116 165
Membres
112 675
dernier inscrit
Tazra_IMOU