Value = Replace

Bonjour tout le monde,

J'ai un problème. Avec se code, je copie un format "jj.mm.aaaa hh:mm:ss" mais au moment du collage, il inversse le moi et les jours

Je me retrouve avec 06.05.2017 23:13:52 alors que la base copier est 05.06.2017 23:13:52

Auriez vous une solution?

Merci d'avance

Sub LireCsv(NomFichier)
Dim Ar() As String
Dim LastLig As Long
Feuil4.Select
   With Application
      .ScreenUpdating = False
      .EnableEvents = False
      .Calculation = xlManual
   End With

     LastLig = Cells(Rows.Count, 1).End(xlUp).Row + 1                                  'LastLig est la dernière ligne remplie du fichier csv ouvert

Sep = ";"
Lig = LastLig
' -----------------------------------------
'On Error Resume Next
   Open NomFichier For Input As #1
        Do While Not EOF(1)
            Line Input #1, Chaine
               Ar = Split(Chaine, Sep)
               Col = 1
               If Lig <> 10 Then
               On Error Resume Next
                  For X = LBound(Ar) To UBound(Ar)
                     If Col = 1 Then
                           Cells(Lig, Col).Value = Replace(Ar(X), ".", "/")
                        Else
                           Cells(Lig, Col).Value = CStr(Ar(X))
                     End If
                     Col = Col + 1
                  Next
               End If
            Lig = Lig + 1
        Loop
    Close #1
' -----------------------------------------
   With Application
      .ScreenUpdating = True
      .Calculation = xlCalculationAutomatic
      .EnableEvents = True
      .CutCopyMode = False
      .Goto [A1], True
   End With
End Sub

Bonjour Vincent, bonjour le forum,

Pour éviter ce genre de problème, j'utilise le code ci-dessous mais je ne sais pas comment l'adapter à ton code. Si ça peut t'aider :

Sub Macro1()
Dim D As Long
Dim H As Single
Dim DH As Variant
'Copie
D = DateSerial(Year(Range("A1").Value), Month(Range("A1").Value), Day(Range("A1").Value))
H = TimeSerial(Hour(Range("A1").Value), Minute(Range("A1").Value), Second(Range("A1").Value))
DH = D + H
'colle
Range("B1").Value = DH
Range("B1").NumberFormat = "dd/mm/yyyy hh:mm:ss"
End Sub

Marche pas!!! Mais pourquoi il inverse le jj et le mm alors qu'il est juste sensé remplacer les . par des /

Quelqu'un a-t-il déjà eu le cas?

Re,

Quand on traite une date par VBA et si l'inversion jour/mois est possible, les dates sont systématiquement inversées car VBA utilise le format américain des dates. C'est pour cela que j'utilise le numéro de série de la date (en entier long) car lui ne peut pas s'inverser. Ensuite je renvoie ce numéro en le formatant au format date que je désire...

La grande classe!!! Merci ThauThème

J'ai implanté ton code et ça marche tip top. J'avais pas réussi la première fois mais avec un peut d'aide et d’obstination on y arrive toujours.

Encore un grand merci à vous tous et une bonne journée

Vincent

Rechercher des sujets similaires à "value replace"