Ouverture CSV en macro

J

Jeromalin

Guest
Bon, ca fait 1h30 que je tourne sur tous les sites de la terre pour trouver la réponse à cette question :

J'ai un fichier *.csv que je souhaite ouvrir par une macro. Il utilise le ";" comme séparateur et il a deux colonnes ou il y a des listes d'éléments séparés par des virgules.

Excel XP l'ouvre très bien ! Jamais eu un soucis, les colonnes sont bien respectées et j'ai bien une colonne avec plein d'éléménts séparés par des virgules que je récupère plus loin avec une autre macro.

Seulement voila : la fonction
Workbooks.OpenText Filename:= _
"C:\...\Mes documents\e-mailings\emailing_in-04345.csv", _
DataType:=xlDelimited, Semicolon:=True, Comma:=False
Fait ce qu'elle veut c'est à dire utiliser la virgule comme séparateur.... Pourtant, si je ne m'abuse, les paramètres lui indiquent bien d'utiliser semicolon ( ; ) et non Comma ( , ) comme séparateur !!!

Aidez-moi, parce que je sens que je vais craquer dans pas longtemps !

++
Jerome
 
W

Wilfried

Guest
Salut jérôme,

Se n'est qu'une proposition mais essaye :

Workbooks.OpenText Filename:= _
"C:\...\Mes documents\e-mailings\emailing_in-04345.csv", _
DataType:=xlDelimited, Semicolon:=false, Comma:=False, otherchar:=";"

Cela peut peut-être fonction

A+ et bonne fêtes de fin d'année

Wilfried ;op
 
J

Jeromalin

Guest
Merci Yea mais ce n'est pas exactement le même problème.

Le fichier CSV s'ouvre, il n'y a pas de problème, mais il ne reconnaît pas le ";" comme séparateur de colonne dans la macro, alors qu'il le reconnaît parfaitement bien pour une ouverture manuelle.

en gros ma lignes est :
"NomColonne1";"NomColonne2";"NomColonne3";"NomColonne4"
"Valeur1";"Valeur2";"Valeur3,Valeur3bis,Valeur3Ter";"Valeur4"

Et il n'arrive pas à formater les colonnes correctement...

Merci de vos réponses.

J.
 
J

Jeromalin

Guest
Après plusieurs essais, j'ai réussi à ouvrir mon fichier correctement en le renommant avec l'extension .txt et en utilisant :

Workbooks.OpenText Filename:= _
"C:\[...]\e-mailings\txts\emailing_in-04345.txt" _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:= _
True, Comma:=False, Space:=False, Other:=False, OtherChar:=";", _
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))

Ca marche. Va juste falloir que je remette le fichier en txt sur le serveur et pas en CSV... Mais Franchement, si vous saviez faire pareil en CSV, ça m'arrangerait franchement !!!

++
J
 
Y

Yeahou

Guest
Re bonjour Jeromalin

Il s'agit exactement du problème décrit dans ce fil, l'impossibilité d'ouvrir correctement un CSV par macro. Tu utilises d'ailleurs pour contourner une des solutions préconisées dans le fil concerné:
"2-renommer ton fichier avec une extension txt et utiliser opentext en spécifiant tes données de type string (la, tu pourras utiliser l'enregistreur à l'ouverure du TXT pour avoir un code utilisable contrairement à l'ouverture d'un csv)
... le format csv étant connu d'excel, le convertisseur prendra le pas sur toute méthode. En clair, il ne sert à rien d'utiliser opentext sans avoir préalablement renommé ton fichier pour rompre l'association avec csv, la méthode de lecture séquentielle utilise quand à elle un canal d'accés direct au fichier."

ton problème étant plus simple que celui décrit dans ce fil, il suffit d'ouvrir le fichier avec la méthode Workbooks.Open Filename:="nomfichier" et d'appliquer ensuite a méthode texttocolumns avec les paramètres que tu utilises pour opentext ce qui donne en code:

Workbooks.Open Filename:="C:\[...]\e-mailings\txts\emailing_in-04345.txt"
Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:= _
True, Comma:=False, Space:=False, Other:=False, OtherChar:=";", _
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))

Cela devrait fonctionner mais je ne peux tester sans le fichier CSV.

Cordialement, A+
 

Discussions similaires

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

Statistiques des forums

Discussions
312 496
Messages
2 088 979
Membres
103 996
dernier inscrit
KB4175