XL 2019 Enregistrement au format ".txt" AVEC et SANS Guillemets

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

Titof06

XLDnaute Junior
Bonjour,

Je vous joins 3 fichiers.
Celui en ".xlsm" qui contient une macro pour enregistrer au format ".txt"
2 fichiers en ".txt".
Celui qui se nomme "TEST.txt" a été fait de façon manuellement, SANS macro.
Soit Fichier, Enregistrer Sous, Type : Text (séparateur : tabulation) (*.txt)

Celui qui se nomme "TEST1.txt" a été fait de façon automatique, AVEC la macro.

Je ne comprends pas pourquoi le fichier "TEST.txt" ne contient pas de Guillements en ligne 44, et d'autres, alors que le fichier "TEST1.txt" en contient.

La colonne qui me sert de test commence par "CHAPEAU.....", en ligne 43, 44 etc.

Est-ce que quelqu'un pourrait m'expliquer le pourquoi du comment, svp ?

Je ne comprends pas, également, pour dans le fichier "TEST1.txt", certaines lignes contiennent des Guillemets et d'autres non.
Par exemple, la ligne 43 n'en contient pas, à l'inverse de la ligne 44.

Je vous remercie et vous souhaite une agréable journée,

Titof06
 

Pièces jointes

Solution
Que veut dire "le classeur n'est pas fermé" ?
Si vous dites que je laisse un classeur Excel ouvert pendant le traitement, c'est le cas.
Je voulais dire que j'ai travaillé sur le classeur que vous avez fourni avec la macro qui y était .
Utiliser la méthode ActiveWorkbook.SaveAs fait qu'excel crée ou met à jour le fichier cible, ferme le classeur actuel et ouvre la cible , c'est son mécanisme interne immuable ...
Le code proposé utilise une autre méthode et vous permet de créer le fichier cible au format attendu et de conserver votre classeur ouvert ( pour comparaison par exemple )
Je vous joint le classeur amendé pour test : cliquez sur le bouton Export en A1
Bonjour
La différence entre Test.txt (valeurs numérique avec virgules pour décimales) et Test1.txt (valeurs numérique avec points pour décimales)
Pour supprimer les doubles quotes : https://www.exceldemy.com/save-excel-as-text-without-quotes/
Bonjour Scraper,

Je vous remercie pour votre réponse, mais dans mon cas, je ne parle pas de valeur numérique ou pas, je parle d'un colonne au format "Texte" (les colonnes W & X).

Je ne comprends pas qu'en mode manuel, cela fonctionne (SANS guillemet), mais pas avec la macro (guillemets qui apparaissent sur certaines lignes).

Je vous souhaite une agréable journée,

Titof06
 
Bonjour Titof, Scraper,
A voir vos fichiers, les apostrophes existent dans les txt si la chaine dans XL contient des apostrophes.
Comme par ex :
XL : GRILLE INOX 316 10X10 VERROUILLABLE "RUNNER"
Txt : "GRILLE INOX 316 10X10 VERROUILLABLE '""RUNNER'"""
Une possibilité peut être serait des supprimer les guillemets avant d'enregistrer en txt, si l'absence de ces guillemets ne vous dérangent pas.

[Add] ou encore enregistrer en créant un format txt : Lien
 
Dernière édition:
Bonjour,
Pour moi, quand Excel "enclose" un champ par des "double cotes" dans votre classeur , c'est parce qu'il contient une virgule .
Quoi qu'il en soit, le code ci-dessous devrait convenir :
VB:
Sub Macro0()
Dim Buffer As String, I As Long, J As Long
NomFichier = "D:\Test2.txt"
    Open NomFichier For Output As #1
        Target = [A1].CurrentRegion
        For I = 1 To UBound(Target, 1)
            For J = 1 To UBound(Target, 2)
                If J = 1 _
                Then Buffer = Target(I, J) _
                Else Buffer = Buffer & vbTab & Target(I, J)
            Next J
           ' Une image de l'ensemble des données aurait pu être faite
           ' mais écrire chaque ligne ne prend pas plus de temps
            Print #1, Buffer ' surtout pas write
        Next I
    Close #1
End Sub
 
Bonjour scraper, sylvanu et fanch55,

Merci pour vos réponses et solutions, mais pour répondre et donner un complément d'informations, car j'ai dû mal m'exprimer.

Oui, dans mon fichier Excel, il y a des guillemets à l'intérieur des cellules, en colonne W et quelquefois en colonne X.
Pourquoi 2 colonnes, parce que je suis limité à 119 caractères par cellule, donc si cela déborde, j'en mets le reste en colonne X.

Celles qui me dérangent, sont celles situées en premier et en dernier lors de la conversion en fichier ".txt".

Les guillemets à l'intérieur sont pour informer la désignation du produit en "pouce".
En plomberie, on peut utiliser :
- des nombres du type 42/33
- des chiffres avec des guillemets pour indiquer des pouces, par exemple 1"1/4 = 1 pouce 1/4

Ce que j'essaie de faire, c'est d'enlever le premier et le dernier guillemet de ma cellule dans mon fichier ".txt".

Je vous souhaite une agréable fin de journée,

Titof06
 
Bonjour,


Il n'y a que deux cellules en colonne W qui contiennent des guillemets, et ce n'est pas pour indiquer des pouces.


Je pense comme fanch55 : si ton fichier texte contient des guillemets, c'est à cause de la virgule contenue dans la cellule.

Bonjour TooFatBoy et fanch55,

Je vous remercie pour votre réponse.

OK, si je comprends bien, lors de la présence de virgule dans la cellule au format texte ou standard, cela génère des guillemets lors de l'enregistrement au format .txt

Je ne comprends pas pourquoi, mais c'est comme ça.

Existe-t-il un moyen de supprimer le guillemet en début et en fin, afin de garder ceux à l'intérieur qui servent pour les références en pouce ?

Je vais essayer de remplacer les virgules par des point-virgules ou tirets pour voir comment cela réagit.

Je vous souhaite une agréable journée,

Titof06
 
OK, si je comprends bien, lors de la présence de virgule dans la cellule au format texte ou standard, cela génère des guillemets lors de l'enregistrement au format .txt

Je ne comprends pas pourquoi, mais c'est comme ça.
Je pense que la virgule est un séparateur "naturel / de base" de données, donc pour la masquer quand elle ne joue pas réellement le rôle de séparateur, toute la donnée est mise entre guillemets.
 
Je pense que la virgule est un séparateur "naturel / de base" de données, donc pour la masquer quand elle ne joue pas réellement le rôle de séparateur, toute la donnée est mise entre guillemets.

Bonjour TooFatBoy,

Je vous remercie pour cette réponse rapide.

Comme je l'ai dit, je vais faire un test dans la matinée, en enlevant les virgules.

Je reviens vers vous pour vous dire comment cela se passe.

Encore merci pour votre aide.

Je vous souhaite une agréable journée,

Titof06
 
Le code proposé le fait et de plus, le classeur originel n'est pas fermé au profit du fichier txt.

Bonjour fanch55,

Là, je ne comprends pas votre réponse.

Que veut dire "le classeur n'est pas fermé" ?
Si vous dites que je laisse un classeur Excel ouvert pendant le traitement, c'est le cas.
En fait, je copie un onglet, je fais un traitement afin de mettre en forme les colonnes (numérique ou texte selon le cas), et je l'enregistre au format .txt
Si c'est dans ce sens que vous me dites cela, c'est vrai.

Je cherche une solution.

Je vous souhaite une agréable journée,

Titof06
 
Que veut dire "le classeur n'est pas fermé" ?
Si vous dites que je laisse un classeur Excel ouvert pendant le traitement, c'est le cas.
Je voulais dire que j'ai travaillé sur le classeur que vous avez fourni avec la macro qui y était .
Utiliser la méthode ActiveWorkbook.SaveAs fait qu'excel crée ou met à jour le fichier cible, ferme le classeur actuel et ouvre la cible , c'est son mécanisme interne immuable ...
Le code proposé utilise une autre méthode et vous permet de créer le fichier cible au format attendu et de conserver votre classeur ouvert ( pour comparaison par exemple )
Je vous joint le classeur amendé pour test : cliquez sur le bouton Export en A1
 

Pièces jointes

Je voulais dire que j'ai travaillé sur le classeur que vous avez fourni avec la macro qui y était .
Utiliser la méthode ActiveWorkbook.SaveAs fait qu'excel crée ou met à jour le fichier cible, ferme le classeur actuel et ouvre la cible , c'est son mécanisme interne immuable ...
Le code proposé utilise une autre méthode et vous permet de créer le fichier cible au format attendu et de conserver votre classeur ouvert ( pour comparaison par exemple )
Je vous joint le classeur amendé pour test : cliquez sur le bouton Export en A1

Bonjour fanch55,

Je vous remercie pour cette solution qui fonctionne admirablement bien avec mon fichier 👍
Je ne connaissais pas du tout ce type d'enregistrement.

Je vais l'adapter à mes besoins.

J'ai juste une question.
Le fichier fourni avait environ 500 lignes et la dernière colonne était AJ.

Est-ce que "Données = [A1].CurrentRegion" peut s'adapter à d'autres fichiers avec 10.000 lignes et la dernière colonne allant jusqu'en CD.

J'ai même ajouté, pour faire des tests, des valeurs en pouce (à savoir 1"1/4) en milieu de cellule, et l'enregistrement au format .txt les a gardées, sans ajouter de guillemets en début ou fin, vous êtes TOP👍 .

Je vous remercie encore énormément pour le temps passé à m'aider.

Je vous souhaite une agréable fin de journée,

Titof06
 
- 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
2
Affichages
667
Retour