Création de CSV : pbm de guillemets

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

flyjodel

XLDnaute Junior
Bonjour à tous,

je me casse la tête depuis deux jours sur ce thème. J'ai déjà abordé le sujet, mais le thème affiché n'était pas lisible et on m'a conseillé de refaire un fil. D'ailleurs entre temps j'ai moi-même précisé ma question.

j'ai du texte dansune cellule qui contient des ' (guillemets CHR$(34) ). Je dois enregistrer cette feuille au format CSV. Or lors de l'enregistrement, Excel me rajoute un guillemet au début et à la fin, plus il me 'double' tous les guillemets déjà présents.

Or, comme je dois ensuite lire ce fichier avec un parser XML, il en devient inutilisable.

Quand j'ai le code
<?xml version='1.0' encoding='UTF-8'?>
dans la cellule A1
j'obtiens dans le fichier CSV le code suivant :
'<?xml version=''1.0'' encoding=''UTF-8''?>'


Comment faire pour éviter ces guillemets supplémentaires ?

J'aurais une piste, mais ce n'est pas élégant du tout (excusez, cela fait seulement 48 heures que je programme en VBA) : j'imagine que l'on doit pouvoir, après enregistrement, avec Excel aller manipuler un fichier TEXTE tout smplement et directement... C'est tout ce que je vois, à moins qu'il y ait une option cachée dans la fonction ActiveWorkbook.SaveAs FileFormat :=xlCSV


Merci pour votre aide, je bloque !

le thème initial ici :
Lien supprimé


[file name=enr_csv_guillemets_20050823234123.zip size=10228]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/enr_csv_guillemets_20050823234123.zip[/file]
 

Pièces jointes

Bonjour,

Parceque j'ai besoin des guillemets dans le fichier généré. Mais pas des guillemets doubles sinon le format n'est pas conforme au XML.

C'est la présence de guillemets qui en fait générer des doubles. Si je les supprime de la cellule source, il n'y en a pas du tout non plus à l'arrivée, ce qui n'est pas le résultat recherché.

Michel

Message édité par: flyjodel, à: 24/08/2005 13:08
 
Je n'arrive pas à joint un fichier , je t'envoie le code à insérer dans ton mondule

a+
bsh77

Sub CSV_Guillemets_Tes()

Dim derniereligne As Integer, i As Integer
Dim j As Integer
derniereligne = [a65536].End(xlUp).Row
Open 'c:\\Test.txt' For Output As 1

For i = 1 To derniereligne
Print #1, Chr(34) & Cells(i, 1).Value & Chr(34) _
; ';' & Chr(34) & Cells(i, 2).Value & Chr(34)
Next

Close
End Sub
 
Bonjour et merci de ton aide.

1. Pour envoyer un fichier XLS ici, il faut qu'il fasse moins de 50Ko mais surtout il doit être zippé avant l'envoi. C'est sans doute ce qui t'a empêché de mettre ton exemple.

2. je n'ai pas encore réussi à faire fonctionner ta macro, mais j'en saisis l'idée, celle d'écrire directement dans le fichier TEST.TXT
Je vais essayer de la faire fonctionner.

Merci !

ps : si tu réussis à poster ton exemple, je suis preneur
 
Bon, j'ai réussi à faire fonctionner cette macro.

Elle ne fait pas ce que je veux, mais c'est un début pour moi. Ta macro met toutes les valeurs entre guillemets, alors que je dois justement ENLEVER des guillemets en trop, ajoutés lors de l'enregistrement en CSV.

Donc ma nouvelle question est la suivante :
- Je vais enregistrer le fichier en CSV comme Excel le fait, mais je vais ensuite triturer le fichier obtenu avec cette méthode, par manipulation directe.

- comment fait-on pour retirer une ligne à un fichier, dans le but de la modifier dans une feuille excel, puis ensuite de la réécrire à la première ligne de ce fichier texte par exemple?

Parceque dans ton exemple, les lignes rajoutées le sont à la fin du fichier uniquement...

Si tout ceci ne marche pas, je ferai grâce à ta méthode mon enregistrement CSV moi-même !

Merci encore !
Michel
 
voici ton fichier initial auquel j'ai rajouté la macro :
par rapport à celle envoyée précédemment j'ai uniquement retirer
les 2 'chr(34)'
en souhaitant que ca répond à ton pb
bs
---------------------
Sub CSV_Guillemets_Tes()

Dim derniereligne As Integer, i As Integer
Dim j As Integer
derniereligne = [a65536].End(xlUp).Row
Open 'c:\\Test.txt' For Output As 1

For i = 1 To derniereligne
Print #1, Cells(i, 1).Value

Next

Close
End Sub

[file name=enr_csv_guillemetsv2.zip size=9822]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/enr_csv_guillemetsv2.zip[/file]
 

Pièces jointes

- 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

Discussions similaires

Réponses
8
Affichages
4 K
Retour