Format de date - inversion jour et mois

rin01

XLDnaute Nouveau
J'ai une macro chargée d'importer des données issues d'un fichier csv dont le contenu ressemble à :
Code:
1731;03/01/2011 09:52;03/01/2011 09:52;03/01/2011 10:22;
1788;07/01/2011 10:32;07/01/2011 10:32;07/01/2011 10:32;
2055;26/01/2011 15:00;26/01/2011 15:14;26/01/2011 15:28
A à la fin du traitement j'ai un problème sur le format de la date!
- 03/01/2011 est affichée comme 01/03/2011
- 07/01/2011 est affichée comme 01/07/2011
Pour les jours >= 12, il n'a pas de soucis.

Il y aurait donc une confusion entre formats US et FR...?

-> J'ai vérifié les options régionales de mon PC mais rien n'y fait
-> J'ai essayé de formater la colonne en précisant le format de la date sans succès
-> J'ai essayé de convertir la colonne en date JMA, sans résultat non plus

Visiblement c'est un problème connu, donc est-ce que quelqu'un a une solution pour afficher correctement ces dates au format français: JJ/MM/AAAA HH:MM

Merci à vous
 

Pierrot93

XLDnaute Barbatruc
Re : Format de date - inversion jour et mois

Bonsoir rin, Victor

@rin
il y a sans doute lien de préciser le format lors de l'importation du fichier source, montres nous le code utiliser....

@Victor
il eut été préférable que tu démarre une discussion... Pas trop sympa pour rin... Essaye ceci :
Code:
.Cells(dl, Int(ctl.Tag)) = CDate(ctl.Value)
bonne soirée
@+
 

rin01

XLDnaute Nouveau
Re : Format de date - inversion jour et mois

Bonjour Victor,

J'utilise la fonction

Code:
OpenText(FileName, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Local)
avec TextQualifier = xlTextQualifierNone

J'ai rattaché le code avec un fichier csv de test.

Merci
 

Fichiers joints

Pierrot93

XLDnaute Barbatruc
Re : Format de date - inversion jour et mois

Bonjour,

essaye ceci, attention j'ai modifié le nom de ta variable "path" en "MonFichier", en effet "path" est un mot réservé vba, il est préférable de ne pas utiliser ces mots comme nom d'objet ou de variable... :

Code:
Dim MonFichier As String
    
MonFichier = Application.GetOpenFilename
    If Len(MonFichier) <= 0 Then Exit Sub
    If Len(Dir(MonFichier)) <= 0 Then Exit Sub
    
Workbooks.Open Filename:=MonFichier
Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlNone, Semicolon:=True, FieldInfo:=Array(Array(1, 1), Array(2, 4), Array(3, 4), Array(4, 4))
bon après midi
@+

PS Merci à Victor d'avoir édité son message...
 

rin01

XLDnaute Nouveau
Re : Format de date - inversion jour et mois

@Pierrot, merci pour ton retour.
J'ai remplacé l'intégralité de mon code par ce que tu as mis et j'obtiens une erreur.
Pourrais-tu stp me dire comment le mettre en oeuvre?
Merci beaucoup
 

Pierrot93

XLDnaute Barbatruc
Re : Format de date - inversion jour et mois

Re,

Aarf, c'est vrai tu avais placé le code dans le module de la feuille, modifie comme suit :
Code:
Dim MonFichier As String
    
MonFichier = Application.GetOpenFilename
    If Len(MonFichier) <= 0 Then Exit Sub
    If Len(Dir(MonFichier)) <= 0 Then Exit Sub
    
Workbooks.Open Filename:=MonFichier
With ActiveSheet
    .Columns("A:A").TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlNone, Semicolon:=True, FieldInfo:=Array(Array(1, 1), Array(2, 4), Array(3, 4), Array(4, 4))
End With
 

rin01

XLDnaute Nouveau
Re : Format de date - inversion jour et mois

Voici le contenu de mon code
Code:
Private Sub CommandButton1_Click()
    Dim MonFichier As String
    MonFichier = Application.GetOpenFilename
    If Len(MonFichier) <= 0 Then Exit Sub
    If Len(Dir(MonFichier)) <= 0 Then Exit Sub
    
    Workbooks.Open Filename:=MonFichier
    Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlNone, Semicolon:=True, FieldInfo:=Array(Array(1, 1), Array(2, 4), Array(3, 4), Array(4, 4))
End Sub
J'obtiens une erreur '1004' Aucune donnée à convertir n'a été sélectionnée et j'ai la flèche jaune qui pointe sur
Code:
Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlNone, Semicolon:=True, FieldInfo:=Array(Array(1, 1), Array(2, 4), Array(3, 4), Array(4, 4))
 

rin01

XLDnaute Nouveau
Re : Format de date - inversion jour et mois

Le résultat semble identique

01/03/2011 09:52 alors que l'on devrait avoir 03/01/2011 09:52
01/07/2011 10:32 (idem)
26/01/2011 15:00 (correct)
...
 

Pierrot93

XLDnaute Barbatruc
Re : Format de date - inversion jour et mois

Re,

Aarf, pas de souci chez moi, me renvoie bien la bonne date.... voir peut être du coté des paramètres régionaux de ton ordi... pas d'autre idée pour le moment....
 

Pierrot93

XLDnaute Barbatruc
Re : Format de date - inversion jour et mois

Re,

essaye peut être en modifiant les 4 pas des 3 :
Code:
Array(2, 3), Array(3, 3), Array(4, 3))
 

rin01

XLDnaute Nouveau
Re : Format de date - inversion jour et mois

Même résultat avec
Code:
.Columns("A:A").TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, TextQualifier:=xlNone, Semicolon:=True, FieldInfo:=Array(Array(2, 3), Array(3, 3), Array(4, 3))
 

MJ13

XLDnaute Barbatruc
Re : Format de date - inversion jour et mois

Bonjour Rin, Pierrot

Quelque fois, on peut utiliser local: = true dans les paramètres d'import en VBA.


ex:

Code:
Sub test_Import_CSV()
Workbooks.OpenText "C:\test\test.csv", _
Origin:=xlMSDOS, _
DataType:=xlDelimited, _
TextQualifier:=xlTextQualifierDoubleQuote, _
Other:=True, _
OtherChar:="""", _
local:=True
'DataType:=xlDelimited
'TextQualifier:=xlDoubleQuote
End Sub
 

rin01

XLDnaute Nouveau
Re : Format de date - inversion jour et mois

Bingo! ça fonctionne en mettant le paramètre local à true
03/01/2011 09:52
07/01/2011 10:32
26/01/2011 15:00
Merci beaucoup car je commençais à m'arracher les cheveux!
Pierrot & MJ13 merci de votre précieuse aide!
 

Discussions similaires


Haut Bas