ultator
Messages postés4Date d'inscriptionjeudi 10 février 2005StatutMembreDernière intervention10 mars 2005
-
9 mars 2005 à 18:18
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 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 ???????
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 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
ultator
Messages postés4Date d'inscriptionjeudi 10 février 2005StatutMembreDernière intervention10 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.....
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 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
ultator
Messages postés4Date d'inscriptionjeudi 10 février 2005StatutMembreDernière intervention10 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) ???
Vous n’avez pas trouvé la réponse que vous recherchez ?