jax54000
Messages postés44Date d'inscriptionmercredi 8 septembre 2004StatutMembreDernière intervention24 mai 2008
-
23 mai 2008 à 23:52
jepassaisparla
Messages postés8Date d'inscriptionvendredi 25 avril 2008StatutMembreDernière intervention14 juin 2008
-
24 mai 2008 à 16:29
Bonjour,
Je cherche à copier le contenu d'une feuille d'un fichier CSV, dans une feuille d'un fichierXLS.
Mon problème:
Lorsque j'ouvre un fichier CSV à la main (double clic), il apparaît comme un fichier xls (données réparties dans les différentes cellules) et je peux copier/coller son contenu sans problème.
Lorsque j'ouvre un fichier CSV via VBA (Set book = Workbooks.Open("C:\file.csv")) il m'ouvre le fichier mais il m'affiche le contenu en CSV (avec les ;) et non pas comme quand je le fais à la main.
Du coup lorsque j'essaie de copier coller (via VBA/ou à la main) ce contenu dans un fichier xls, le xls contient un contenu CSV (avec les ;) mais en aucun cas me met en forme les données CSV dans les différentes lignes/colonnes.
Y a-t-il d'autre moyen d'ouvrir un CSV de sorte à ce qu'il apparaîsse comme un fichier XLS ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 24 mai 2008 à 10:42
Salut Casy;
merci pour ton inter, je pensais aussi qu'il y a une façon plus simple, mais dur dur de trouver
Je pense que j'ai buggé Excel avec mon ShellExecute, car ta méthode avait été tenté (OpenText *.csv) mais sans résultat concluant !
Ou alors suis trop crevé et je fais n'importe quoi
Je reverrai ça à tête reposé, pis j'ai mis une autre personne à contribution pour chercher la soluce et voir si lui même à des bugs ou des soucis d'affichage des valeurs dans XL.
Merci en tout cas de tes infos, vais m'y pencher cette niut
jepassaisparla
Messages postés8Date d'inscriptionvendredi 25 avril 2008StatutMembreDernière intervention14 juin 2008 24 mai 2008 à 16:29
bonjour,
dans ce cas de figure on connait la structure du fichier texte ( csv ou autre) on peut donc lire le texte et le tansférer directement dans une feuille comme suit:
Sub OuvrirCsv()
fic = Application.GetOpenFilename("fichier CSV,*.csv")
Open fic For Input As #1
Workbooks.Add ' là ou ailleur
Set c = Cells(1, 1)
Do While True
Line Input #1, txt
d = 1
nc = 0
f = InStr(d, txt, ";")
Do While f
c.Offset(0, nc) = Mid(txt, d, f - d)
nc = nc + 1
d = f + 1
f = InStr(d, txt, ";")
Loop
c.Offset(0, nc) = Mid(txt, d)
Set c = c.Offset(1, 0)
If EOF(1) Then Exit Do
Loop
End Sub