En résumé, voici mon problème :
Avec VBA Access, je dois lire (puis traiter) une série de fichiers texte au format UNICODE UTF-8. Et VBA Access semble les lire comme des formats UTF-7, ce qui rend le texte difficilement lisible (tous les signes accentués sont transformés).
Après la méthode classique de l'Open, j'ai essayé avec OpenAsTextStream, mais ça ne change rien, quelque soit la valeur du Tristate (-2,-1 ou 0). Je ne sais pas comment spécifier que le fichier est en UTF-8.
Plus précisément :
J'ai par exemple une fichier TEMP1.txt qui contient cette ligne de texte :
Citation :
Au-delà des génétiquement modifiés
|
J'ai commencé à lire ce texte avec cette méthode :
Code :
- Open "C\...\TEMP1.txt" For Input As #1
- Line Input #1, TextArticle
- Debug.Print TextArticle
- Close #1
|
Voila ce que ça donne :
Citation :
Au-delÃ* des génétiquement modifiés
|
J'ai donc essayé avec cette méthode :
Code :
- Set objFSO = New Scripting.FileSystemObject
- Set objFile = objFSO.GetFile("C:\...\TEMP1.txt" )
- Set objtextstream = objFile.OpenAsTextStream(ForReading, TristateTrue)
- Debug.Print objtextstream.ReadLine
|
Mais ça ne change rien!
Je sais aussi qu'il y a bien une méthode avec ADODB qui marche :
Code :
- Set strm = CreateObject("adodb.stream" )
- With strm
- .Charset = "utf-8"
- .Type = 2
- .Open
- .LoadFromFile "C:\...\TEMP1.txt"
- t = .ReadText
- Debug.Print t
- .Close
- End With
|
Mais le problème est que je dois lire le fichier ligne par ligne, ce qui est impossible avec cette méthode.
J'ai également cru comprendre sur Internet qu'il existe une manière de spécifier le format avec cette instruction :
Code :
- objFile.Charset = "UTF-8"
|
Mais VB Access me répond que cette méthode n'est pas gérées par cet objet (erreur 438).
Une dernière chose : vu le nombre et la taille des fichier, leur simple conversion (avec Word par exemple) n'est pas envisageable.
Je suis donc bien embêté, et vous serai très reconnaissant de me tirer de ce mauvais pas!
Bien cordialement,
EL