Pb ouverture csv avec date via VBA excel 2000

ultator Messages postés 4 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 10 mars 2005 - 9 mars 2005 à 18:18
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 - 10 mars 2005 à 18:57
Bonjour,

Je possède un fichier de données .csv (créée sous excel 97) que je n'arrive pas à ouvrir correctement sous excel 2000.
Lorsque je lance excel 2000 et que j'ouvre le fichier csv à partir du menu fichier\ouvrir et en sélectionnant le type de fichier "Fichiers texte (...,*.csv)", pas de problème. Par contre, si j'utilise sous VBA la fonction .open correspondant à cette manip, le fichier .csv s'ouvre avec les données sur une seule colonne. Donc mon code :
Workbooks.Open Filename:="....csv"
ne fonctionne pas sous 2000 alors qu'il n'y a pas de pb sous 97.
J'ai trouvé deux solutions de contournement :
1) Workbooks.OpenText Filename:="....csv"
pour ouvrir sous un format texte ou
2) Workbooks.Open Filename:="....csv", format:=5
Worksheets("....").Columns(1).Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited,Semicolon:=True

pour dispatcher les données dans les colonnes moi même.

Par contre dans les deux cas, si mon csv contient des dates (jj/mm/aa), les fichiers résultant (dans mes deux solutions) a les date avec je jour et le mois inversés si cela est possible (mm/jj/aa si jj était <= 12).

Mes paramètres régionaux semblent être bons alors est ce que quelqu'un a une solution ???????

5 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
9 mars 2005 à 19:24
Essaie ce code et vois si tu le mofier pour tes besoins ?

Sub ImportData()
Dim r As Long, Data
Open "Ton fichier.csv" For Input As #1
r = 0
Do Until EOF(1)
Line Input #1, Data
ActiveCell.Offset(r, 0) = Data
r = r + 1
Loop
Close #1
End Sub

jpleroisse
0
ultator Messages postés 4 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 10 mars 2005
10 mars 2005 à 13:52
Ca ne marche pas !!!
En utilisant ce code, l'open for input ouvre mon csv comme si on utilisait bloc note (et non wordpad) c'est à dire que tout est stocké en une seule ligne (comprenant un caractère spécial à la place du retour à la ligne). La variable Data contient alors toutes les données dans la première ligne de la première itération et la fonction me sort donc un problème de mémoire lors de l'execution de ActiveCell.....
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
10 mars 2005 à 14:53
Ok tu as raison c'est pas beau !
Essaie ce code, je crois qu'il conviendra mieux , ce qu'il ne fait pas c'est dimentionner les colonnes, à faire après.

Private Sub CommandButton2_Click()
Dim p, f, s, a, r, c
p = "C:\Mes documents"
s = "Feuil1"
f = "Pointeur.txt"
Application.ScreenUpdating = False
For r = 1 To 100
For c = 1 To 12
a = Cells(r, c).Address
Cells(r, c) = (p & f & s & a)
Next c
Next r
Application.ScreenUpdating = True


End Sub
0
ultator Messages postés 4 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 10 mars 2005
10 mars 2005 à 17:23
je ne comprends pas trop où tu veux en venir avec ce code !!!!
il m'ecrit dans la feuille active une chaine, par cellule selectionnée, concaténant les variables p, f s et a comme indiqué dans Cells(r, c) = (p & f & s & a).
Est ce que je déclare pas bien mes variables ????
A quel moment le fichier est ouvert ??
Qu'est supposé faire Cells(r, c) = (p & f & s & a) ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
10 mars 2005 à 18:57
OK je viens d'essayer le code chez moi, effectivement c'est un peu n'importe quoi
Vais essayer de corriger où trouver autre code.

jpleroisse
0
Rejoignez-nous