Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Importer un csv avec des dates

  • Initiateur de la discussion Initiateur de la discussion jhofman
  • Date de début Date de début

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 !

jhofman

XLDnaute Occasionnel
🙂Bonjour,


J'importe dans EXCEL via VBA un fichier CSV.
Les dates sont interprétés selon les valeurs !
soit
>> 25/03/2009 donne bien le 25 mars
mais
>> 10/03/2009 donne le 03 novembre !

j'ai essayé le code suivant qui n'apporte aucun avantage.
Code:
If IsDate(Cells(i, j)) Then
        Cells(i, j) = CDate(Cells(i, j))
End If


voici comment j'importe le fichier csv ouvert avec Application.Dialogs(xlDialogOpen).Show

Code:
    Sheets(1).Select
    L = Sheets(1).Range("A65536").End(xlUp).Row 'dernière ligne du tableau
    Sheets(1).Range("A1:AZ" & L).Select
    Selection.Copy

Windows("REPORTING.xls").Activate
Sheets(1).Select
Range("A1").Select
Selection.PasteSpecial _
Paste:=xlValues _
, Operation:=xlNone _
, SkipBlanks:=False _
, Transpose:=False

  Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, Semicolon:=True


Merci de votre aide
 
Dernière édition:
Re : Importer un csv avec des dates

Bonjour,
C'est le bazar avec les CSV et les dates
Lors de l'import via VBA, essaies de convertir ta colonne Date en sélectionnant JJ/MM/AA (de mémoire).

Il est vrai que lorsque le jour est < 13, il met le mois au lieu du jour.
 
Dernière édition:
Re : Importer un csv avec des dates

Bonjour jfhofman, Eric

modifies peut être ainsi :

Code:
Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        FieldInfo:=Array(0, 4), TextQualifier:=xlDoubleQuote, Semicolon:=True

constante de l'argument"fieldinfo" à adapter selon tableau ci dessous en fonction du format de date dans ton csv.


bonne soirée
@+
 
Re : Importer un csv avec des dates

Merci Pierrot93

j'ai trouvé grace à ta aide sur le site Ce lien n'existe plus a priori le complément d'information que je teste dès demain !
🙂

Les options ci dessous ne sont valides que si DataType:=xlFixedWidth

FieldInfo: est une suite de Array(x,y) où x correspond à l'index de la première
colonne et y au type de la colonne. y peut prendre les valeurs suivantes :
xlGeneralFormat Général : 1
xlTextFormat Texte : 2
xlMDYFormat Format de date Mois-Jour-Année : 3
xlDMYFormat Format de date Jour-Mois-Année : 4
xlYMDFormat Format de date Année-Mois-Jour : 5
xlMYDFormat Format de date Mois-Année-Jour : 6
xlDYMFormat Format de date Jour-Année-Mois : 7
xlYDMFormat Format de date Année-Jour-Mois : 8
xlEMDFormat Date EMD : 9
xlSkipColumn Non distribuée : 10

Voici un exemple où vous souhaitez charger sur 3 colonnes. La première colonne commence à 0 (début de la feuille), la deuxième à la 10e colonne et la troisième à la 15e colonne. Le code obtenu est FieldInfo:=Array(0,1), Array(10,1), Array(15,1)
 
Re : Importer un csv avec des dates

re bonjour


La solution proposée ne fonctionne pas car je ne suis pas en xlFixedWidth.

mon problème est comment convertir les données suivantes
A2= 16249;25/03/2009
A3= 16248;10/03/2009

sans avoir comme résultat
A2= 16249 B2 = 25/03/2009 .... ( ici pas de soucis)
A3= 16248 C3 = 10/03/2009 .... et non 03/10/2009 !!
 
Re : Importer un csv avec des dates

j'ai trouvé a priori grace à catrice la solution

Code:
Sub Test()
Dim DialOuvr As FileDialog, Rep, Chemin As String
Set DialOuvr = Application.FileDialog(msoFileDialogOpen)
DialOuvr.Filters.Clear
DialOuvr.Filters.Add "Fichiers CSV", "*.csv", 1
DialOuvr.AllowMultiSelect = False
DialOuvr.Title = "Ouverture du fichier CSV"
DialOuvr.InitialView = msoFileDialogViewList
'DialOuvr.InitialFileName = "C:\Mes Fichiers CSV\"
Rep = DialOuvr.Show
    If Rep = 0 Then
        MsgBox "Opération annulée"
        Exit Sub
    End If
Chemin = DialOuvr.SelectedItems(1)
'-----------------------
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Chemin, Destination:=Range("A1"))
    .Name = "test"
    .AdjustColumnWidth = False
    .TextFileParseType = xlDelimited
    .TextFileCommaDelimiter = True
    .Refresh BackgroundQuery:=False
End With
'------------------------
ActiveSheet.Rows("3:30").Delete Shift:=xlUp
ActiveSheet.Columns("I:M").Clear
End Sub
 
Re : Importer un csv avec des dates

Bonjour

Si tu renommes ton fichier avec une extension txt et tu l'importes avec l'enregistreur macro activé, tu auras la possibilité de paramétrer tous les aspects y compris dates. Cela devrait te donner le code pour le VBA.
 
- 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

Réponses
5
Affichages
718
Réponses
2
Affichages
1 K
J
Réponses
22
Affichages
3 K
jui42
J
G
  • Question Question
Réponses
1
Affichages
802
Grouchet
G
D
Réponses
4
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…