XL XP: Ouverture d'un fichier CSV

  • Initiateur de la discussion Initiateur de la discussion webcyril
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Import CSV
Réponses
9
Affichages
2 K
Retour