Supprimer les guillemets doubles dans un fichier txt apres une importation

bonsoir, désolé pour le long titre, c'est le mieux que je pouvais faire, j'utilise une macro pour faire l'importation des données d'un classeur excel vers un fichier txt, le problème est qu’après dans le fichier txt des guillemets double apparaissent a certain endroit, au début je me suis dit que c’était a cause de la macro mais après une importation manuel je constate le même problème, si quelqu'un une idée d’où peut venir le problème cela m'aiderais beaucoup. j'ai ci-joint une image ou je montre les guillemets double en question ainsi que le fichier txt et excel. merci d'avance pour vos réponses

37classeur3.xlsm (19.52 Ko)
24classeur4.txt (10.94 Ko)

bonjour,

je n'ai peut-être pas bien compris le problème. Tu souhaites exporter tes données excel vers un fichier TXT. et tu retrouves des double-guillemets dans ton fichier txt.

Il suffit de les supprimer dans le fichier excel avant d'exporter.

bonjour ghislain leon,

ces gillemets ne sont pas toujours un désadvantage ! I ici on veut souligner Concerto

Montre femme """"Concerto"""""

Sub gillemets()

     mypath = ThisWorkbook.Path & "\"
     myfile = "Classeur4.txt"

     txt = CreateObject("Scripting.FileSystemObject").OpenTextFile(mypath & myfile).ReadAll
     txt = Replace(txt, Chr(34), "")

     With CreateObject("scripting.filesystemobject").createtextfile(mypath & "Sans_Gillemets.txt") 
          .Write txt
          .Close
     End With

End Sub

le truc c'est que certain de ces guillemets ne sont pas dans le fichier excel de base, il ne sont présent que dans le fichier txt. lorsque j'essaie d'importer le fichier txt vers l'application prévue pour cela, ça me génère une erreur a cause de ces guillemets. après suis obliger de les retirés manuellement, pour le moment c'est pas compliqué vue que le fichier n'est pas trop grand mais a l'avenir ça risque devenir une tache fastidieuse et énervente

BsAlv

ta macro marche bien, mais elle retire tout les guillemets alors certain doivent être présent, je dois avoir exactement les mèmes données du fichier excel dans le fichier txt.

ça veut dire quoi avec par exemple Montre femme """"Concerto""""" ?

re, désolé pour le long retard, oui c'est comme tu l'as dis. montre femme concerto est écrit de cette façon dans le fichier excel ""concerto"" or dans le fichier text y'a des guillemets en plus genre """concerto""", je voudrais pouvoir exporter mon fichier mon fichier sans aucune modification des données(genre les guillemets), ou trouver un moyen d'annuler ces modifications

re,

le problème, c'est au moment où on sauvegarde le fichier ? Les guillemets dans la colonne A n'y sont plus, mais le nombre de guillemets autour de "concerto" doublent, ce qui est normal.

Sub Macro3()
   ActiveWorkbook.SaveAs Filename:=thisworkbookpath & "\classeur3.txt", FileFormat:=xlText, CreateBackup:=False
End Sub

j'arrive pas a exécuter la macro, ça me dis : impossible d’accéder au document en lecture seule 'classeur3.text'
en effet je pense que le problème est au niveau de l'enregistrement, y'a pas que les guillemets de concerto qui son double, certain guillemet apparaissent a des endroit ou ils ne devraient pas être, et aussi la moindre modification d'un nom ou type de donnée rend le fichier inutilisable pour moi

Sub Ghislain_Leon()
     Sheets(1).Copy
     Cells.NumberFormat = "General"
     With ActiveWorkbook
          .SaveAs Filename:=ThisWorkbook.Path & "\classeur3.txt", FileFormat:=xlText, CreateBackup:=False
          .Close 0
     End With
End Sub
18classeur3-6.xlsm (29.46 Ko)

Est-ce que ceci fonctionne ?

bonjour l'emplacement des guillemets ont juste changer, normalement il y'a que concerto qui a des guillemets je crois, ta macro marche plutôt bien, mais comme dit plus tôt la moindre modification du fichier le rend inutilisable pour moi, je devrais peut être chercher une solution sans macro et l'enregistrer plus tard.
j'ai joint l'exemple de résultat que j’attends, j’espère que ça pourras t'aider, merci pour tout les efforts déjà déployés sur m

8classseur1.txt (28.63 Ko)

a question ça m'aide beaucoup

re,

c'est déjà mieux ? Il y a un "TAB" entre chaque colonne

7classeur3-6.xlsm (32.32 Ko)

bonjour

on peu s'amuser a tout faire soi même

libre a vous de laisser le caractere de séparation ou pas

libre a vous d'augmenter la marge

adapter le chemin du fichier bien sur

Sub recordformatCadText()
    Dim Mask$, T, tbClenCol, Lig&, C&, TxT$, X&, marge&, tVal$
    marge = 1
    With Feuil1
        T = [A1].Resize(.UsedRange.Rows.Count, .UsedRange.Columns.Count)
        ReDim tbClenCol(UBound(T, 2))
        'création de la matrice de chaine pour chaque colonne
        'les chaines auront le len correspondant a la chaine la plus longue de la colonne
        For Lig = 1 To UBound(T)
            For C = 1 To UBound(T, 2)
                tbClenCol(C) = Application.Max(tbClenCol(C), Len(Trim(T(Lig, C))))
            Next
        Next

        'inscription dans la variable texte
        For Lig = 1 To UBound(T)
            For C = 1 To UBound(T, 2)
                 Mask = String(Val(tbClenCol(C)) + marge, " ")
                 tVal = Replace(Trim(T(Lig, C)), Chr(34), vbNullString)
                 Mid(Mask, 1, Len(tVal)) = tVal
                TxT = TxT & Mask & "|"
            Next
            TxT = TxT & vbCrLf
        Next
   End With

  'ecriture du fichier text
  fichier = ThisWorkbook.Path & "\" & Replace(ThisWorkbook.Name, ".xlsm", ".txt")
    X = FreeFile:    Open fichier For Output As #X:    Print #X, TxT: Close #X
End Sub

resultat

image

re,

maintenant vraiment sans guillemets

Sub Ghislain_Leon()
     With ActiveSheet.UsedRange              'avec la copie
          For i = 1 To .Rows.Count           'boucler les lignes
               s = s & vbLf & Replace(Join(Application.Transpose(Application.Transpose(.Rows(i))), vbTab), Chr(34), "")     'un tab entre chaque colonne et un saute de ligne au bout
          Next

          With CreateObject("scripting.filesystemobject").Createtextfile(ThisWorkbook.Path & "\Vraiment_Sans_Gillemets.txt")     'écrire vers ce fichier "Sans_Gillemets.txt"
               .Write Mid(s, 2)              'supprimer premier saute de ligne
               .Close
          End With
     End With
End Sub
image

Bonjour bsalv

pour la ligne tu peux utiliser index et travailler sur une variable tableau pour aller légèrement plus vite

With ActiveSheet           'avec la copie
         t = .UsedRange.Value
         For i = 1 To UBound(t)           'boucler les lignes
               s = s & vbLf & Replace(Join(Application.Index(t, i, 0), vbTab), Chr(34), "")   'un tab entre chaque colonne et un saute de ligne au bout
          Next

merci pour vos solution cela vas résoudre une bonne partie de mes problèmes

re, @patrickT,

travailler sur une variable tableau pour aller légèrement plus vite

D'accord, avec ce tableau mais pour concatener une ligne, cet 'index' est encore plus "lent" qu'un boucle. Mais cela ne se voit pas sur ce nombre de lignes

re, des résultats surprenants avec 2.000 lignes

21classeur3-6.xlsm (220.83 Ko)

la taille du fichier de PatrickT est un petit peu plus élevé, parce que vous utilisez "la chaine la plus longue de la colonne"

image

les chronos, mais version originale est la plus vite (très surprenant) et puis celle avec le double boucle, les 2 autres sont vraiment lentes.

image

on s'amuse comme des fous ici woaw!!

tu veux du rapido de chez rapido

méthode patricktoulon en mode mercenaire

'patricktoulon
'au choix selon l'OS
 Public Property Get presse_papier_Window() As String    'uniquement windows
    presse_papier_Window = CreateObject("htmlfile").parentwindow.clipboardData.GetData("TEXT")
End Property

Public Property Get presse_papier_Mac_window()    'mac et windows (early binding!!!!!!! Implique l'activation de la ref )
    With New DataObject: .GetFromClipboard: presse_papier_Mac_window = .GetText(1): End With
End Property

Public Property Get press_papier_WIN_late_Binding() 'uniquement windows pas ref à activer
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .GetFromClipboard: press_papier_WIN_late_Binding = .GetText(1): End With
End Property

Sub test()
    Dim X&, TxT$
    ActiveSheet.UsedRange.Copy
    TxT = press_papier_WIN_late_Binding 'recolte la plage en format text

    TxT = Replace(TxT, Chr(34), "") 'suppression des guillemets

     TxT = Replace(TxT, vbTab, vbTab & "|") 'mumuse avec le separateur(on peut faire ce que l'on veut )

    'voir pour l'adaptation pour le chemin et l'ecriture du fichier sur MAC
    fichier = ThisWorkbook.Path & "\" & Replace(ThisWorkbook.Name, ".xlsm", ".txt")
    X = FreeFile: Open fichier For Output As #X: Print #X, TxT,: Close #X
End Sub

LOL

@patrickT,

LOL belle manip

Rechercher des sujets similaires à "supprimer guillemets doubles fichier txt importation"