Microsoft 365 Format dates incorrect

Ragnarok001

XLDnaute Nouveau
Bonjour le Forum,

j'ai un souci de format de dates, je me suis fait une petite macro pour formater un CSV correctement dans Excel, lorsque je fais la manip via Text to columns tout se passe correctement mais quand j'utilise ensuite le bouton pour le faire automatiquement le format des dates est inversé ! vous pouvez voir les données d'origine dans le premier onglet et le résultat sur les dates dans le 2eme onglet

Si vous voyez ce qui cloche ça m'intéresse car je ne saisis pas !

merci bp!!
 

Pièces jointes

  • Format Dates.xlsm
    18.4 KB · Affichages: 9
Solution
les quantité doivent s'accumler ou se remplacer
si tu remplace a chaque fois
VB:
Sub testfcsv()
    With Sheet2
        tbl = .[A1].Resize(.UsedRange.Rows.Count, 2).Value
        For i = 1 To UBound(tbl)
            l = Split(tbl(i, 1), ",")
            tbl(i, 1) = CDate(l(0)): tbl(i, 2) = CDate(l(1))
        Next
        With Sheet1
            .[c:d].ClearContents
            .[C3:D3].Resize(UBound(tbl)) = tbl
        End With
    End With
End Sub
si tu accumule
Code:
Sub testfcsv()
    With Sheet2
        tbl = .[A1].Resize(.UsedRange.Rows.Count, 2).Value
        For i = 1 To UBound(tbl)
            l = Split(tbl(i, 1), ",")
            tbl(i, 1) = CDate(l(0)): tbl(i, 2) = CDate(l(1))
        Next
        With Sheet1
            dl =...

vgendron

XLDnaute Barbatruc
hello
dans les options de conversion, il y a l'option JMA à selectionner

par contre;. je ne vois pas comment ca transparait dans le code
et surtout. ca fonctionne pour la première date. mais pas la seconde

VB:
Sub Macro2()
'
' Macro2 Macro
'

    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=True, Other:=False, FieldInfo:= _
        Array(Array(1, 4), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True
End Sub
 

Ragnarok001

XLDnaute Nouveau
hello
dans les options de conversion, il y a l'option JMA à selectionner

par contre;. je ne vois pas comment ca transparait dans le code
et surtout. ca fonctionne pour la première date. mais pas la seconde

VB:
Sub Macro2()
'
' Macro2 Macro
'

    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=True, Other:=False, FieldInfo:= _
        Array(Array(1, 4), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True
End Sub
Hello,

oui en effet j'ai bien essayé de sélectionner Date et de préciser dd/MM/YY mais ça ne change absolument rien bizarremment.. et quand je regarde le format de date dans excel il est indiqué France alors que le format est bien passé en mode US !
 

patricktoulon

XLDnaute Barbatruc
bonjour
juste en passant

VB:
Sub testfcsv()
    With Sheet2
        tbl = .[A1].Resize(.UsedRange.Rows.Count, 2).Value
        For i = 1 To UBound(tbl)
            l = Split(tbl(i, 1), ",")
            tbl(i, 1) = CDate(l(0)): tbl(i, 2) = CDate(l(1))
        Next
        Sheet1.[A2:B2].Resize(UBound(tbl)) = tbl
    End With
End Sub
 

Ragnarok001

XLDnaute Nouveau
bonjour
juste en passant

VB:
Sub testfcsv()
    With Sheet2
        tbl = .[A1].Resize(.UsedRange.Rows.Count, 2).Value
        For i = 1 To UBound(tbl)
            l = Split(tbl(i, 1), ",")
            tbl(i, 1) = CDate(l(0)): tbl(i, 2) = CDate(l(1))
        Next
        Sheet1.[A2:B2].Resize(UBound(tbl)) = tbl
    End With
End Sub
merci bp Patricktoulon! ça fonctionne bien sûr mais je ne saisis pas très bien le code, je souhaiterais l'adapter à mon tableau et les dates se trouvent dans les colonnes C et D
En fait ma manip initiale et quotidienne est de copier des données provenant d'un CSV directement dans Excel, ensuite je fais tourner une macro qui s'occupe de mettre en page dans les bonnes colonnes et ton code doit me permettre de conserver le bon format de date, ça fonctionne ! mais je voudrais que cela s'applique sur toute la colonne C et D car la quantité de données varient quotidiennement
Je me permets de te demander car je ne comprends où dans ton code je peux faire cette modif
Encore merci!!
 

Pièces jointes

  • Format Dates.xlsm
    18.9 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
les quantité doivent s'accumler ou se remplacer
si tu remplace a chaque fois
VB:
Sub testfcsv()
    With Sheet2
        tbl = .[A1].Resize(.UsedRange.Rows.Count, 2).Value
        For i = 1 To UBound(tbl)
            l = Split(tbl(i, 1), ",")
            tbl(i, 1) = CDate(l(0)): tbl(i, 2) = CDate(l(1))
        Next
        With Sheet1
            .[c:d].ClearContents
            .[C3:D3].Resize(UBound(tbl)) = tbl
        End With
    End With
End Sub
si tu accumule
Code:
Sub testfcsv()
    With Sheet2
        tbl = .[A1].Resize(.UsedRange.Rows.Count, 2).Value
        For i = 1 To UBound(tbl)
            l = Split(tbl(i, 1), ",")
            tbl(i, 1) = CDate(l(0)): tbl(i, 2) = CDate(l(1))
        Next
        With Sheet1
            dl = [d100000].End(xlUp).Offset(1).Row
            .Range("C" & dl).Resize(UBound(tbl), 2) = tbl
        End With
    End With
End Sub
 

Ragnarok001

XLDnaute Nouveau
les quantité doivent s'accumler ou se remplacer
si tu remplace a chaque fois
VB:
Sub testfcsv()
    With Sheet2
        tbl = .[A1].Resize(.UsedRange.Rows.Count, 2).Value
        For i = 1 To UBound(tbl)
            l = Split(tbl(i, 1), ",")
            tbl(i, 1) = CDate(l(0)): tbl(i, 2) = CDate(l(1))
        Next
        With Sheet1
            .[c:d].ClearContents
            .[C3:D3].Resize(UBound(tbl)) = tbl
        End With
    End With
End Sub
si tu accumule
Code:
Sub testfcsv()
    With Sheet2
        tbl = .[A1].Resize(.UsedRange.Rows.Count, 2).Value
        For i = 1 To UBound(tbl)
            l = Split(tbl(i, 1), ",")
            tbl(i, 1) = CDate(l(0)): tbl(i, 2) = CDate(l(1))
        Next
        With Sheet1
            dl = [d100000].End(xlUp).Offset(1).Row
            .Range("C" & dl).Resize(UBound(tbl), 2) = tbl
        End With
    End With
End Sub
merci encore ! y-a t-il une possibilité que le code traite toute la colonne C automatiquement ? j'ai testé la seconde option mais cela ne traite que 12 lignes à la fois
désolé de ne pas comprendre plus..
 

Discussions similaires

Statistiques des forums

Discussions
312 204
Messages
2 086 198
Membres
103 154
dernier inscrit
jefferson6488