XL 2010 vba : replace modifie le format

dev_co

XLDnaute Occasionnel
Bonsoir
Je pige pas trop ; je mets du texte formaté comme tel en col A , je désire traiter comme date , donc je remplace le - en / là ça va
ensuite je modifie le "h" en ":" mais là Malheureusement après chaque REPLACE le jour et mois sont inversés ????? je ne trouve pas
j'ai laissé en 'pause' le résultat de A en E c'est l'original
 

Pièces jointes

  • test-repl.xlsm
    15.7 KB · Affichages: 16

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Une possibilité parmi d'autres :

VB:
c.Value = DateValue(Left(c, 8)) + TimeValue(Replace(Right(c, 5), "h", ":"))

Plus court puisque jj-mm-aaaa est un format "officiel" de date (le système reconnait le - comme séparateur de date en plus du séparateur indiqué dans ses options) :

Code:
        c.Value = CDate(Replace(c.Text, "h", ":"))


Et une seule boucle suffit

Et pour aller plus vite si vous avez beaucoup de date à transformer :
Code:
Sub convert()
    Dim t(), i As Integer
    dl = Worksheets("Feuil1").Range("A100").End(xlUp).Row
    t = Range("A1:A" & dl)
    For i = LBound(t) To UBound(t)
        t(i, 1) = CDate(Replace(t(i, 1), "h", ":"))
    Next i
    Range("A1:A" & dl).Value = t
End Sub

Cordialement
 
Dernière édition:

dev_co

XLDnaute Occasionnel
dernier point : je n'arrive pas à retrouver le format d'origine pour les heures en A après le replace et malgré un format d ecellules : jj/mm/aaaa hh:mm ;@ par exemple pour 22/06/2021 16:00 dans la cellule dans la barre de formule on voit 16:00:00 idem si je mets dans une variable car je dois revenir en texte avec 16:00
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir
m'en voulez pas trop je vais continuer a travailler avec le value moi
VB:
Sub test()
[E1] = Format(CDate([A1].Value), "dd-mm-yyyy hh""h""mm")
End Sub
reste plus qu'a vous mettre ça dans une boucle

pour faire l'inverse ben l'astuce est simple
vous replacez et formatez en date inverse
la date atterri dans le bon ordre
Code:
Sub test3()
[e15] = Format(Replace([e14].value, "h", ":"), "mm-dd-yyyy hh:mm")
End Sub
 

patricktoulon

XLDnaute Barbatruc
et ben ca n'est pas ça que tu veux ?
demo7.gif
 

dev_co

XLDnaute Occasionnel
Non ,est ce que t'as vu la VRAIE valeur dans fx ligne de formule qui elle donne le bon résultat informatique donc en VBA je récupère 16:00:00 et pas 16:00 ?
j'en ai besoin pour créer une string et comparer 16:00:00 n'est pas égal à 16:00
 

Discussions similaires

Réponses
7
Affichages
529

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
315 124
Messages
2 116 472
Membres
112 753
dernier inscrit
PUARAI29