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é).
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 :
J'ai commencé à lire ce texte avec cette méthode :Au-delà des génétiquement modifiés
Voila ce que ça donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Open "C\...\TEMP1.txt" For Input As #1 Line Input #1, TextArticle Debug.Print TextArticle Close #1
J'ai donc essayé avec cette méthode :Au-delÃ* des génétiquement modifiés
Mais ça ne change rien!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Set objFSO = New Scripting.FileSystemObject Set objFile = objFSO.GetFile("C:\...\TEMP1.txt") Set objtextstream = objFile.OpenAsTextStream(ForReading, TristateTrue) Debug.Print objtextstream.ReadLine
Je sais aussi qu'il y a bien une méthode avec ADODB qui marche :
Mais le problème est que je dois lire le fichier ligne par ligne, ce qui est impossible avec cette méthode.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 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
J'ai également cru comprendre sur Internet qu'il existe une manière de spécifier le format avec cette instruction :
Mais VB Access me répond que cette méthode n'est pas gérées par cet objet (erreur 438).
Code : Sélectionner tout - Visualiser dans une fenêtre à part objFile.Charset = "UTF-8"
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
Partager