XL 2010 vba : replace modifie le format

  • Initiateur de la discussion Initiateur de la discussion dev_co
  • 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 !

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

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:
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
 
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
 
et ben ca n'est pas ça que tu veux ?
demo7.gif
 
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
 
- 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
7
Affichages
702
Retour