Pb d'accent dans l'ouverture d'un fichier texte sous Excel via Vb.net

Signaler
Messages postés
19
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2012
-
Messages postés
19
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2012
-
Bonjour,

je sais pas trop si c'est le lieu car c'est la 1ère fois que je poste sur le forum même si je suis un gd utilisateur du site

J'ai un fonction qui permet d'ouvrir via Vb.net un fichier texte que je met en forme sous Excel.
Ce fichier texte est au format UTF-8
Je n'arrive pas à gérer correctement les accents qui sont mal interprétés par Excel (alors que je fais la même opération depuis Excel, en choisissant le format de fichier UTF-8 ... cela ne pose pas de pb mais le copier/coller du même code ne donne pas le même résultat via vb.net)

Mon code :
Dim oApp As New Microsoft.Office.Interop.Excel.Application
Dim CurrentCI As System.Globalization.CultureInfo
Dim VFieldInfo(,) As VariantType

....

oApp.Visible = False
oApp.UserControl = True
CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")
oApp.ScreenUpdating = False
' Ouverture du fichier Excel
Try
oApp.Workbooks.OpenText(StrFileExportText, _
Origin:=-535, StartRow:=1, DataType:=1, TextQualifier:= _
1, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=VFieldInfo, _
TrailingMinusNumbers:=True)
Catch ex As Exception
MessageBox.Show("Une erreur est survenue lors de l'ouverture du fichier Excel " & vbCrLf & "Vérifiez que Excel n'est pas utilisé par une autre application", "Impossible d'ouvrir le fichier Excel !", MessageBoxButtons.OK, MessageBoxIcon.Stop)
'Fermeture Excel
ClassTechnique.Fermeture_Excel()
End Try

Il me semble que pour indiquer le UTF-8 cela correspond à Origin:=-535 mais cela ne fonctionne pas.
Je tourne un peu en rond sur le sujet

Si quelqu'un a une idée ou une piste, je suis preneur

Merci

6 réponses

Messages postés
19
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2012

Personne n'est inspiré ...

Zut alors !

Même pas une petite piste
Messages postés
19
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2012

Bonjour à tous,

je suis toujours en but à ce problème et je n'arrive pas à le résoudre...

Est-ce que quelqu'un aurait une idée géniale car je coince

Merci

Bonjour,

Je ne sais pas trop si cela vba t'aider beaucoup, mais je me lance.

Si tu n'a pas trop de misère avec l'anglais, je te suggère d'aller fouiller sur http://www.codeproject.com

Il y a un paquet d'articles sur VB.net et Excel ensemble, et même des dll et/ou des classes toutes faites. Il faut être membre pour télécharger. Pour peu que j'ai pu constater depuis quelques années, il semblent très respectueux des renseignements personnels.
Chez CodeProject, il y a, entre autres, cet article qui donne un lien vers un composant tout fait:

http://www.codeproject.com/Articles/12170/FileHelpers-v2-0-Delimited-CSV-or-Fixed-Data-Import


Je n'ai pas de codes touts faits sous la main, mais au lieu d'échanger des fichiers textes, j'accèderais à Excel avec OLEDB, j'ai comme la vague impression que ce serait moins problématique au niveau des accents. Là encore, CodeProject a un paquet d'exemples.

Ceci dit, je viens de jeter un oeil dans l'aide de VBA d'Excel. L'instruction Workbook.saveas permet de choisir le format csv, le format texte unicode et plusieurs autres.

Mais là, je dois retourner chez-moi (Sans Internet) et brancher mon portable
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
Il est vraisemblable que ce fameux fichier texte soit assez particulier et le résultat de l'exploitation d'une base de données.
Essaye d'ajouter la référence Microsoft ActiveX Data Object au classeur Excel
    Dim toto As New ADODB.stream
    toto.Charset = "UTF-8"
    toto.Open
    toto.LoadFromFile "..\...\....txt"
    titi =  toto.ReadText
    toto.Close

puis, toujours dans ton objet excel, de travailler avec titi

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
19
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2012

Hello,

Merci pour vos retours.
J'ai résolu une partie du problème , au lieu d'utiliser la macro :
oApp.Workbooks.OpenText(StrFileExportText, _
Origin:=-535, StartRow:=1, DataType:=1, TextQualifier:= _
1, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=VFieldInfo, _
TrailingMinusNumbers:=True)

Je fais moi-même l'alimentation en parcourant le fichier texte et là plus de problème : j'ai réécrit et c'est même plus rapide

Il me reste juste que l'accent et pas bon en entrée d'Excel mais il doit me rester une déclaration de stream qui est pas ok, je vais vérifier
Messages postés
19
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2012

Au fait,
Merci pour vos retours qui m'ont mis sur la piste