lundi 19 août 2013

Excel le problème de l'importation de fichier CSV avec le point virgule comme délimiteur

Voici un des exemples de pseudo bug qui peuvent perdre une bonne demi-journée. Mon but était d'importer un fichier CSV dans un onglet Excel, à l'aide la macro OpenText (méthode associée à Workbooks). Normalement aucun soucis: pour importer un fichier avec comme séparateur le point virgule (";"), il suffit d'écrire cela:

 Workbooks.OpenText _
   Filename:="toto.csv", _
   DataType:=xlDelimited, _
   Semicolon:=True


Et bien non, cela ne marche pas avec mon Excel 2003. J'ai tout essayé: jouer avec tous les paramètres, changer le type de fin de ligne (LF => CR-LF), et autre gris-gris. A chaque fois, l'importation ne se faisait que sur une colonne. Seul le caractère virgule fonctionnait pour délimiter les colonnes. Le pire, c'est que cela fonctionnait parfaitement avec la méthode Open (l'équivalent de la fonction 'Open' du menu) sans arguments particuliers.

En cherchant sur internet, j'ai découvert que l'extention du fichier à importer devait être .txt. En renomant l'extention du fichier de CSV en TXT, tout fonctionne:


Name  "toto.csv" as "toto.txt"
Workbooks.OpenText _
   Filename:="toto.txt", _
   DataType:=xlDelimited, _
   Semicolon:=True


Et pourquoi? J'ai même pas envie de savoir pourquoi. L'informatique est remplie de bizarreries de ce type, parfaitement illogique, mais toujours chronophage. Merci au forum qui ma donnée la solution.

Voici ce qu'il faut retenir:
Si on tente d'importer un fichier avec l’extension .CSV avec la méthode OpenText, le point virgule ne peut pas être utilisé comme délimiteur, seule la virgule simple fonctionne. Dans ce cas, l’extension .TXT est obligatoire.

Bon courage à vous pour le prochain bug de ce genre.

Doc MicroS.
Merci à ce forum

Aucun commentaire: