XL 2013 remplacement . / sur date

  • Initiateur de la discussion Initiateur de la discussion Jmichel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jmichel

XLDnaute Nouveau
Bonjour

petit problème que je n'arrive pas à régler 🙁
j'ai une extraction de données avec une colonne date sous forme 10.01.1989
si je passe en manuel avec le fonction remplacer (les . par /) cette colonne est bien reconnue en date nickel
par contre si j'automatise ce remplacement dans une une macro
le résultat devient : 01/10/1989 et toute les dates ou le jour est supérieur à 12 ne sont plus reconnue en date et reste en texte
il y a conversion sous forme anglaise alors que tout mes paramètres sont en français

quelqu'un aurait déjà trouvé une solution ?

a vous lire
 
Bonjour
Convertissez le texte obtenu en date : Cells(X, Y).Value = CDate(Replace(LeTexte, ".", "/"))
Ceci afin d'éviter que ce soit Excel qui la fasse en appliquant la règle d'interprétation internationale des textes affectés aux cellules dans les macros.
 
Dernière édition:
Bonjour.
VB:
Option Explicit
Sub Macro1()
   Dim Rng As Range, T(), L As Long
   Set Rng = Intersect(Feuil1.[E2:E1000000], Feuil1.UsedRange)
   T = Rng.Value
   For L = 1 To UBound(T, 1)
      T(L, 1) = CDate(Replace(T(L, 1), ".", "/"))
      Next L
   Rng.Value = T
   End Sub
 
bonjour
pour tes dates si tu ne veux pas qu'elle soient transformées en format US l'ors du replace ".","/"
il te faut faire ca dans une variable tableau

VB:
Sub test()
    With Range("E2", Cells(Rows.Count, "E").End(xlUp))
        tablo = .Value
        For i = LBound(tablo) To UBound(tablo)
            tablo(i, 1) = DateValue(Replace(tablo(i, 1), ".", "/"))
        Next
        .Value = tablo
    End With
End Sub

le fait d'utiliser "datevalue" fait que les item du tableau deviennent des dates et non un string de date
ce qui fait que l'ors du transfert sur la plage comme ce n'est pas des string excel ne fera pas la conversion automatique et donc ne mettra pas les dates en US
demo4.gif



on aurais pu faire simple mais plus lourd puisque acces au cells x fois
exemple
VB:
Sub test2()
    With Range("E2", Cells(Rows.Count, "E").End(xlUp))
        For Each cel In .Cells
            cel.Value = DateValue(Replace(cel.Text, ".", "/"))
        Next
    End With
End Sub
ce qu'il faut comprendre une bonne fois pour toute !!!!!!!!!!!
c'est que le replace n'est pas suffisant , il faut que la chaine soit une date et non le string d'une date

sinon excel interprète et met au format US "mm/dd/yyyy"
d'ailleurs @Dranreb la bien spécifié en post #2 et #4

alors on peut utiliser DateValue ou Cdate
exemple
cells(1,1) = replace("20.04.2020",".","/")' PAS BIEN DU TOUT !!!!!!!!!!!!!

cells(1,1) = DateValue(replace("20.04.2020",".","/")) ' BIEN !!!!😉

cells(1,1) = Cdate(replace("20.04.2020",".","/")) ' BIEN !!!!😉

pour ma part j'ai une petite préférence pour Datevalue qui est bien plus riche en acceptation de donnée
elle interprète très bien les date avec mois en lettre(abrégés ou pas) alors que cdate non!!!

exemple
msgbox datevalue("01 janvier 2020")' qui donnera "01/01/2020"
msgbox datevalue("05 jan. 2020")' qui donnera "05/01/2020"
une autre particularité aussi c'est que si excel interprète en us quand c'est un string datevalue et cdate eux interprètent l'us en format utilisé par le system (ca c'est kool) après le 12 eme jour bien évidement
exemple avec une date en US

MsgBox DateValue("10/28/2020")'donnera "28/10/2020
MsgBox CDate("10/28/2020")'donnera "28/10/2020


voila
😉
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
13
Affichages
233
Réponses
5
Affichages
528
Retour