Microsoft 365 Format dates incorrect

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 !

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

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 =...
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
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 !
 
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
 
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

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
 
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..
 
- 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

  • Question Question
Power Query Power Query
Réponses
26
Affichages
573
Réponses
20
Affichages
2 K
  • Question Question
Microsoft 365 Probleme format VBA
Réponses
8
Affichages
975
E
  • Résolu(e)
Réponses
9
Affichages
1 K
Réponses
5
Affichages
974
Retour