Excel conversion .txt fait apparaitre des "

Résolu
stitchbouck Messages postés 131 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 10 décembre 2024 - 11 juin 2024 à 17:12
stitchbouck Messages postés 131 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 10 décembre 2024 - 13 juin 2024 à 09:51

Bonjour !

Lorsque j'enregistre mon fichier Excel (Office 365), toutes mes cellules "texte" comprenant un " acquièrent un " en début et fin de cellule, plus un autre " à la suite de celui existant. Visible uniquement en lecture bloc-note. si on ouvre le .txt avec Excel, les " surnuméraires n'apparaissent pas...

J'ai beaucoup de mesures en pouces qui s'expriment par ce symbole, et j'ai besoin du fichier texte pour incorporer les données dans un logiciel. 

Mais je ne vois pas comment modifier cela sur un bloc-note ? Il n'y a pas de fonction là dessus...

Fichier Excel https://www.cjoint.com/c/NFlpj7XhUVD

Fichier .txt https://www.cjoint.com/c/NFlpkL2ZyBD

Vous avez une idée ? Vous savez pourquoi la conversion engendre cela ?

Merci !!

A voir également:

11 réponses

jee pee Messages postés 40600 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 décembre 2024 9 466
11 juin 2024 à 17:39

Bonjour,

Pourquoi ce fonctionnement : dans un fichier texte généré par excel, une chaine de caractère est encadrée par des guillemets. Mais si la chaine de caractère comporte un guillemet, il faut le distinguer des guillemets débuts et fin de chaine, il est alors doublé.


1
danielc0 Messages postés 1356 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 27 décembre 2024 155
11 juin 2024 à 18:27

Tu pourrais remplacer les guillemets par des pipes "|" avant l'enregistrement et remettre les guillemets dans le bloc-notes.

Daniel


1
danielc0 Messages postés 1356 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 27 décembre 2024 155
13 juin 2024 à 09:04

Bonjour,

Je m'étais basé sur l'exemple. J'ai modifié la macro pour accepter un nombre variable de colonnes :

Sub test()
  Dim C As Range, Enrgt As String, I As Long
  '#1, #2... désignent des fichiers texte.
  'je me sers de #1. Pour être sûr qu'il n'est pas déjà ouvert, je le ferme
  'ça n'arrive qu'en phase de test, quand la macro plante avant le "close" final
  Close #1
  'ouverture du fichier en sortie
  Open "d:\Users\dcola\Downloads\Testquotes.txt" For Output As #1
  '"C" désigne chaque cellule de la colonne A
  'Boucle sur les cellules remplies de la colonne A
  For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp))
    'on fait une châine de caractères en concaténant, la cellule de la colonne A,
    'une tabulation et la cellule d'à côté (C.Offset(, 1))
    'effacement de "Enrgt"
    Enrgt = ""
    'boucle sur les colonne de la ligne (I représente le n° de colonne)
    For I = 1 To Cells(C.Row, Columns.Count).End(xlToLeft).Column
      'concaténation des cellules de la ligne
      Enrgt = Enrgt & Chr(9) & Cells(C.Row, I).Value
    Next I
    'suppression de la tabulation de tête
    Enrgt = Right(Enrgt, Len(Enrgt) - 1)
      'on écrit cette chaîne de caractères
    Print #1, Enrgt
  Next C
  'fermeture du fichier
  Close #1
End Sub

1
stitchbouck Messages postés 131 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 10 décembre 2024 2
11 juin 2024 à 17:29

Ha ben j'ai trouvé une piste de correction, en passant par Word.

Je change les "" par des @, je supprime tous les " qui restent et je change enfin les @ par des ".

Il faut aussi changer dans les options de Word le changement automatique des guillemets (Vérification, onglet "lors de la frappe", case à cocher dans les premières).

Mais cela n'explique pas vraiment le phénomène...

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
danielc0 Messages postés 1356 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 27 décembre 2024 155
Modifié le 11 juin 2024 à 17:53

Bonjour,

Si tu enregistre au format texte, il me semble que c'est "normal".

Daniel


0
danielc0 Messages postés 1356 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 27 décembre 2024 155
11 juin 2024 à 18:07

"Fields with embedded commas or double-quote characters must be quoted."

(les champs contenant des virgules ou des guillemets doivent être encadrés de guillemets).

Fields with embedded commas or double-quote characters must be quoted.

(A l'intérieur des champs, les guillemets doivent être doublés)

Source Wikipedia :

https://en.wikipedia.org/wiki/Comma-separated_values#Basic_rules

Daniel


0
danielc0 Messages postés 1356 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 27 décembre 2024 155
12 juin 2024 à 10:13

Bonjour,

Cette macro fait l'exportation au format texte (il reste à gérer le nom du fichier texte) :

Sub test()
  Dim C As Range, Enrgt As String
  Close #1
  Open "d:\Users\dcola\Downloads\Testquotes.txt" For Output As #1
  For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp))
    Enrgt = C.Value & Chr(9) & C.Offset(, 1).Value
    Print #1, Enrgt
  Next C
  Close #1
End Sub

Daniel


0
stitchbouck Messages postés 131 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 10 décembre 2024 2
12 juin 2024 à 14:57

Bonjour !

hé bien merci beaucoup pour ces retours. Je n'avais pas pensé à allez voir Wikipédia pour ce genre de choses !!

Oui, je remplace et remets dans le blocnote avec un notepad, c'est très bien aussi. Mais je n'avais pas compris que le notepad a des fonctions bien plus poussées, dont le "cherche et remplace" :)

J'essaie de décrypter la macro ! Vous voulez bien m'y aider ?

je ne comprends / connais pas le #1, le For Output As...

Comment cela se fait-il que la macro enregistre la colonne A1 et A2, alors que vous lui indiquez juste A1 et la dernière ligne non vide ?

Et aussi, pourquoi Print ? plus simple qu'un Save As ? (et d'ailleurs ça n'imprime pas^^ mais j'ai bien compris que ça n'étais pas fait pour)

Merci !!!

0
danielc0 Messages postés 1356 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 27 décembre 2024 155
Modifié le 12 juin 2024 à 16:17

J'ai mis les explications en commentaire :

Sub test()
  Dim C As Range, Enrgt As String
  '#1, #2... désignent des fichiers texte.
  'je me sers de #1. Pour être sûr qu'il n'est pas déjà ouvert, je le ferme
  'ça n'arrive qu'en phase de test, quand la macro plante avant le "close" final
  Close #1
  'ouverture du fichier en sortie
  Open "d:\Users\dcola\Downloads\Testquotes.txt" For Output As #1
  '"C" désigne chaque cellule de la colonne A
  'Boucle sur les cellules remplies de la colonne A
  For Each C In Range("A1", Cells(Rows.Count, 1).End(xlUp))
    'on fait une châine de caractères en concaténant, la cellule de la colonne A,
    'une tabulation et la cellule d'à côté (C.Offset(, 1))
    Enrgt = C.Value & Chr(9) & C.Offset(, 1).Value
    'on écrit cette chaîne de caractères
    Print #1, Enrgt
  Next C
  'fermeture du fichier
  Close #1
End Sub

PS "Print" est la commande d'écriture quand on écrit séquentiellement :

https://learn.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/printstatement

Daniel


0
stitchbouck Messages postés 131 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 10 décembre 2024 2
Modifié le 13 juin 2024 à 08:42

Bonjour,

Ok !! compris. Je comprends son fonctionnement maintenant.

Mais comment lui indiquer qu'il y a d'autres colonnes à prendre en compte ? 

Là, j'ai vu qu'en mettant pour chaque colonne à ajouter une tabulation et Offset(,2) (pour la suivante), ça marche. mais si j'ai 10 colonnes, je me retrouve avec une ligne allant jusqu'à Offset(,10). Y a-t-il plus simple ?

En tout cas, merci beaucoup pour l'aide apportée, et les explications !!! 

0
stitchbouck Messages postés 131 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 10 décembre 2024 2
13 juin 2024 à 09:51

Ok !! oui oui, c'est moi qui ait donné un exemple trop simplifié au départ.

Ben, c'est super. N'importe lequel de mes fichiers qui pose ce problème peut être réglé par cette macro.

Merci beaucoup !!!

Bonne continuation.

0