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

speyrard Messages postés 19 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 3 mars 2012 - 15 févr. 2012 à 14:10
speyrard Messages postés 19 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 3 mars 2012 - 3 mars 2012 à 10:01
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

speyrard Messages postés 19 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 3 mars 2012
16 févr. 2012 à 12:38
Personne n'est inspiré ...

Zut alors !

Même pas une petite piste
0
speyrard Messages postés 19 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 3 mars 2012
25 févr. 2012 à 10:48
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
0
Utilisateur anonyme
25 févr. 2012 à 19:18
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 févr. 2012 à 20:02
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
speyrard Messages postés 19 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 3 mars 2012
3 mars 2012 à 10:00
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
0
speyrard Messages postés 19 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 3 mars 2012
3 mars 2012 à 10:01
Au fait,
Merci pour vos retours qui m'ont mis sur la piste
0
Rejoignez-nous