Ouverture CSV en macro

  • Initiateur de la discussion Initiateur de la discussion Jeromalin
  • 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 !

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
 
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
 
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.
 
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
 
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+
 
- 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