Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 
?? c'est quoi [e1] , [e15] comment je reformate ma cellule ici de A1 à A7 ? en E c'est juste pour les essais et faire du copier /coller de E en A afin de retrouver les data de base
 
re
comme ça
VB:
Sub test3()
    For Each cel In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Cells
        cel.NumberFormat = "dd-mm-yyyy hh:mm"
        cel.Value = Format(Replace(cel.Value, "h", ":"), "mm-dd-yyyy hh:mm")
    Next
End Sub
 
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
778
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…