XL XP: Ouverture d'un fichier CSV

W

webcyril

Guest
Hello,

Sous Excel XP, je cherche à ouvrir via VBA un fichier texte au format CSV
et j'ai un comportement bizarre ...

J'utilise la commande OpenText telle que ci-dessous:
Workbooks.OpenText Filename:="L:\PROJETS\cyril.csv", _
Origin:=xlWindows, DataType:=xlDelimited, other:=True, otherchar:=";"

Mon fichier s'ouvre bien mais les données de chaque ligne sont en colonne 1 !!!
Si je renomme le fichier en cyril.txt, ça marche très bien !!

Cette routine fonctionne sans pb sous NT4 !!

Avez-vous une idée ou une autre solution ??

Merci
webcyril
 
M

Moa

Guest
Salut WebCyril !

Il existe deux moyen d'ouvrir un fichier.

Le premier est de double-cliquer sur le fichier en question, et l'appli qui le concerne , s'ouvre en même temps.

Le second est d'ouvrir l'appli, puis à l'aide de l'option ouvrir un fichier, ouvrir le fichier qui nous intéresse.

Ca, tout le monde le sait.

Par contre selon les applis, le résultat n'est pas forcément le même.

Et justement en ce qui concerne Excel et les fichiers Csv, c'est le cas.

En effet, si tu ouvres ton fichier Csv, en double-cliquant dessus, ou par une macro, il s'ouvrira selon l'origine du Csv.

C'est à dire avec tout écrit dans une seule colonne, et une seule cellule par ligne, et dont les données sont séparées par des points-virgules.

Par contre si tu ouvres ton fichier Csv par le menu Fichier / Ouvrir / Tous les Fichiers / "TonFichier.Csv", alors là tes données seront bien séparées dans plusieurs colonnes.

Donc, tu as le choix de modifier ta macro.

Soit tu modifies la façon d'ouvrir ton fichier.

Soit tu rajoutes à ta macro existante une partie de conversion, que tu pourras faire avec l'enregistreur de macros, en te servant du menu Données / Convertir / Délimité / Point-virgule.

Voilà...tout simplement

@ +

Moa
 
M

Moa

Guest
Re-WebCyril !

J'ai fait le test, en faisant deux maxros avec l'enregistreur :

La conversion :

Sub ConversionCsv()

Range("A1:A12").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
))

End Sub

Comme, c'est une macro faîte avec l'enregistreur, je pense que tu dois pouvoir éliminer les parties "=False".

L'ouverture avec Menu...bla bla bla :

Sub TestCsv()
ChDir "C:\Documents and Settings\Propriétaire\Bureau\Foot"
Workbooks.Open Filename:= _
"C:\Documents and Settings\Propriétaire\Bureau\Foot\TestCsv.csv"
End Sub

Et là, on constate une différence avec ta macro.

Workbooks.Open Filename:= à la place de Workbooks.OpenText Filename:="

C'est peut-être juste cela à changer.

@ +

Moa
 
W

webcyril

Guest
Moa,

Merci pour ta solution mais ...

En utilisant le paramètre Local:=True à la fin de la routine .Open, ça marche aussi et c'est plus rapide !

exemple:
Workbooks.Open Filename:="L:\PROJETS\cyril.csv", _
Origin:=xlWindows, Local:=True

Merci encore
A+
webcyril
 

Statistiques des forums

Discussions
313 091
Messages
2 095 193
Membres
106 218
dernier inscrit
TontonAnton