Enregistrer fichier en .txt (codage UTF-8)

roidurif

XLDnaute Occasionnel
Bonjour,

Quelqu'un peux m'aider SVP pour savoir Comment avec cette macro, enregistrer un fichier .txt (avec séparateur point virgule) en codage UTF-8??

Code:
Sub Macro1()
Filename = Application.GetSaveAsFilename(Nom_Fichier, "Text Files (*.txt), *.txt")
ActiveWorkbook.SaveAs Filename:=Filename, FileFormat:=xlCSV, local:=True
End Sub

Merci
 

vbacrumble

XLDnaute Accro
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonjour



Cette macro issue de ton fichier ne fonctionne pas ?
(Fichier présent dans ce fil de discussion:
https://www.excel-downloads.com/threads/macro-supression-des-retours-lignes.113698/)


Code:
Sub Encode(ByVal sPath$, Optional SetChar$ = "UTF-8")
With CreateObject("ADODB.Stream")
.Open
.LoadFromFile sPath ' Loads a File
.Charset = SetChar ' sets stream encoding (UTF-8)
.SaveToFile sPath, 2 ' adSaveCreateOverWrite
.Close
End With
End Sub

Sub csvUTFHUIT()
Encode "C:\"
End Sub

A+
 

Namzip

XLDnaute Nouveau
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonjour,

J'utilise ça pour la sauvegarde

Workbooks.SaveAs Filename:=lefichier, Origin _
:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
Comma:=True, Space:=False, Other:=False, DecimalSeparator:=".", _
TrailingMinusNumbers:=True

Semicolon et comma qui doivent être positionner à True.

Cdt, Robert
 

roidurif

XLDnaute Occasionnel
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonjour

Pour répondre à vbacrumble, la macro fonctionne mais en résultat j'ai les accents ne sont pas reconnus et d'autre avec des formats bizarre.


Sinon, Comment dois je procéder pour utiliser le macro Namzip ci dessous ?
Car l'inseré seul, ca foctionne pas

Merci de votre aide

Code:
Workbooks.SaveAs Filename:=lefichier, Origin _
        :=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
        Comma:=True, Space:=False, Other:=False, DecimalSeparator:=".", _
        TrailingMinusNumbers:=True
 

roidurif

XLDnaute Occasionnel
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonsoir,

J ai trouver ceci (voir ci dessous), comment je peux adapter ceci à ma macro.

Merci

Code:
Private Sub CreateFile(ByVal pstrFile As String, ByVal pstrData As String)
    Dim objStream As Object
    'Create the stream
    Set objStream = CreateObject("ADODB.Stream")
 
    'Initialize the stream
    objStream.Open
 
    'Reset the position and indicate the charactor encoding
    objStream.Position = 0
    objStream.Charset = "UTF-8"
 
    'Write to the steam
    objStream.WriteText pstrData
 
    'Save the stream to a file
    objStream.SaveToFile pstrFile
End Sub

http://www.developpez.net/forums/d2...excel/vba-excel/vba-e-fichiers-texte-utf-8-a/
merci de votre aide
 

roidurif

XLDnaute Occasionnel
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonjour,

Je n'arrive pas à corriger cette macro faisant en sorte que lorsque je la lance,
- Si je clique sur enregistrer, ca s'enregistre sous un nom que j'aurais indiqué (.txt)
- Si je clique sur Annuler, ca ferme la fenetre enregistrer sous sans sauvegarder.

j'ai inseré "If SaveAs Then..." et ca n'a pas l'air de sauvegarder en txt mais annuler ca fonctonne.

Code:
Sub Convertir_txt()
Sheets("Feuil1").Select
Filename = Application.GetSaveAsFilename(Nom_Fichier, "Text Files (*.txt), *.txt")
If SaveAs Then
ActiveWorkbook.SaveAs Filename:=Filename, FileFormat:=xlCSV, local:=True
End If

If Cancel Then
Exit Sub
End If

End Sub
Merci de votre aide
 

chris

XLDnaute Barbatruc
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonjour

J'ai utilisé cela dans un projet sachant que le traitement de chaque ligne dépendait d'une boucle

Initialisation du fichier
Code:
Sub inistream()

'Initialisation du stream unicode

    Set objStream = New ADODB.Stream
    objStream.Charset = "utf-8"
    objStream.Mode = adModeReadWrite
    objStream.Type = adTypeText
    objStream.Open

End Sub
Puis pour chaque ligne, appel à

Code:
Public Function ConvertStringToUtf8Bytes(ByRef strText As String, fin, fic) As Byte()

    ' write bytes into stream

    objStream.WriteText strText
    objStream.Flush
    
    If fin = 0 Then Exit Function
    
    ' rewind stream and read text
    objStream.Position = 1
    
    objStream.SaveToFile fic & ".txt", 2
    objStream.Close

End Function
La variable fin permet de savoir si la boucle est terminée et le cas échéant de sauvegarder le fichier (variable fic).

Cela marche bien et génère de l'UTF 8 avec BOM.

A noter qu'Access génère directement de l'UTF8 sans BOM. Cela peut servir...
 

roidurif

XLDnaute Occasionnel
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonjour et merci,

Ca n a pas l air de fonctionner sur le fichier ke je joint

merci de votre aide
 

Pièces jointes

  • Classeur1.xls
    22.5 KB · Affichages: 138
  • Classeur1.xls
    22.5 KB · Affichages: 156
  • Classeur1.xls
    22.5 KB · Affichages: 163

chris

XLDnaute Barbatruc
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonjour

Il n'y a rien dans ton fichier à part mon code.

Ce code sert à écrire dans un fichier, ligne par ligne donc est appelé dans une boucle qui fabrique le texte de la ligne à partir de cellules puis la passe en paramètre.

Tu dois donc constituer des chaîne contenant les ; ligne par ligne.
 

roidurif

XLDnaute Occasionnel
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonjour,

Meme avec mon tableau de rempli ca ne fonctionne pas. tu peux voir stp

merci
 

Pièces jointes

  • tableau.xls
    45.5 KB · Affichages: 107
  • tableau.xls
    45.5 KB · Affichages: 119
  • tableau.xls
    45.5 KB · Affichages: 115

chris

XLDnaute Barbatruc
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonjour

Ci-joint le fichier avec un code qui enregistre le contenu de la feuil1 au format utf8 avec des séparateurs ;

Il faudra éventuellement modifier si tu veux des chaînes entre " d'autant qu'il y a des ; au milieu de tes valeurs.

Mais comme tu as aussi des nombres et des dates, plus des chaînes qui ressemblent à des dates, il faudrait tester cellule par cellule en fonction des formats utilisés.
 

Pièces jointes

  • roidurif.zip
    16.8 KB · Affichages: 380
  • roidurif.zip
    16.8 KB · Affichages: 415
  • roidurif.zip
    16.8 KB · Affichages: 428

roidurif

XLDnaute Occasionnel
Re : Enregistrer fichier en .txt (codage UTF-8)

Bonjour

Le fichier que tu ma joins fontionne à merveille, je t en suis tres reconnaissant.
Seulement je ne sais pas le repoduire dans un autre fichier, en faisant un copier/coller de la macro dans un autre document excel, j'ai la macro qui s'arrete en mettant un message erreur de compilation sur la ligne du module

Code:
Set objStream = New ADODB.Stream

Y'a t-il une manipulation à faire dans le tableau excel avant de lancer la macro? si oui comment doit je proceder?

Encore merci

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
299 792
Messages
1 979 143
Membres
206 586
dernier inscrit
Christian Guibourt