Bonsoir,

Je me casse la tête depuis quelques jours sur une chose qui parait pourtant simple...
Je crée une macro Excel qui va suivre les étapes suivantes:
- Copie des données d'un .csv
- Collage des données dans un onglet de mon tableau Excel
- Conversion des données avec séparateur ","

Une des colonnes contient des dates que je souhaite exploiter.
Lorsque je fais la conversion de la colonne D où se trouvent ces dates en format Date courte, le résultat est conforme, j'ai bien uniquement des dates au format JJ/MM/AAAA.
Si par contre j'automatise cette conversion en VBA, le résultat obtenu est inexploitable : La colonne D (Et uniquement...) va passer en format Texte, et après impossible de changer le format, même manuellement.

J'ai trouvé une solution de contournement moche mais efficace: Je crée une nouvelle colonne en E une fois les données collées, où pour chaque cellule j'applique "=D1*1", "=D2*1"... Avant de formater en Date courte, ce qui me donne effectivement des dates courtes exploitables... SAUF pour les jours compris entre le 01 et le 12 du mois, où Excel inverse le mois et le jour
En gros je me retrouve avec :18/11/2017 - 17/11/2017 - 16/11/2017 - 15/11/2017 - 14/11/2017 - 13/11/2017 et... 11/12/2017.

J'imagine qu'il y a une méthode plus simple et propre pour exploiter les données de ce fichier .csv, et que le problème vient soit d'un problème de format horaire entre la source du CSV et mon OS, soit de la conversion.

Je ne peux malheureusement pas poster le .csv en question pour des questions de confidentialité, mais je peux mettre le code que j'utilise:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Windows("query.csv").Activate
    Cells.Select
    Selection.Copy
    Windows("XXXX.xlsm").Activate
    Sheets("Extract").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
        ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
        (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1)), TrailingMinusNumbers _
        :=True
 
    Columns("E:E").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "Open Date"
    Columns("E:E").Select
    Selection.NumberFormat = "General"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=RC[-1]*1"
    Range("E2").Select
    Selection.AutoFill Destination:=Range("E2:E1342")
    Range("E2:E1342").Select
    Columns("E:E").Select
    Selection.NumberFormat = "m/d/yyyy"
 
End Sub
Il doit y avoir quelque chose à modifier dans les Arrays au moment de la conversion, mais j'ai beau tester, je ne trouve pas quoi.

Avez-vous une idée pour fluidifier ce process svp?

Merci!