Encodage d'un fichier texte

[Résolu]
Signaler
Messages postés
80
Date d'inscription
mercredi 6 octobre 2004
Statut
Membre
Dernière intervention
26 septembre 2006
-
Messages postés
7
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
8 décembre 2004
-
Bonsoir,

Voici mon souci : j'ai fait une macro qui génére des fichiers textes, qui doivent être utilisés par un programme que j'écris sous Linux.
D'où, problème .....pour les caractères spéciaux ('éèà...)

Ce qui m'arrangerais, c'est que ma macro Excel fasse directement les fichiers au bon format... (==> Conversion en VBA )

Remarque : Sous Linux le codage utilisé est du UTF (à ma connaissance)

Merci pour votre aide

Nico
Strasbourg
France

8 réponses

Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
Petite fonction d'encodage UTF(8)

Function UTF8Encode(ByVal wText As String) As String
Dim vNeeded As Long
Dim vSize As Long
vSize = Len(wText)
vNeeded = WideCharToMultiByte(CP_UTF8, 0, StrPtr(wText), vSize, "", 0, 0, 0)
UTF8Encode = String(vNeeded, 0)
WideCharToMultiByte CP_UTF8, 0, StrPtr(wText), vSize, UTF8Encode, vNeeded, 0, 0
End Function

@+

E.B.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
Ce sera un fichier ASCII

Pour les def :

Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long

Public Declare Function ntohl Lib "ws2_32.dll" (ByVal netlong As Long) As Long
Public Declare Function ntohs Lib "ws2_32.dll" (ByVal netshort As Integer) As Integer
Public Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long)

Private Const CP_UTF8 As Long = 65001

@+

E.B.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
80
Date d'inscription
mercredi 6 octobre 2004
Statut
Membre
Dernière intervention
26 septembre 2006

Merci pour ta répose rapide EB ...

Pourtant, il y a un petit pb :

L'idéale pour moi, serrait d'intégrer cette fonction dans une macro Excel ; le Pb, c'est qu'il ne connait pas la fonction WideCharToMultiByte().

J'ai essayé ensuite d'implémenté cette fonction dans un projet Bisual Basic. Là, la fonction WideCharToMultiByte() est connue, mais pas le paramètre CP_UTF8 ; dans la MSDN, j'ai pas trouvé non plus la valaur ce paramètre pour definir la constante.

Merci beaucoup

Nico
Strasbourg
France

P.S. Dans le cas où on est obligé de passer par unprogramme indépendant (hors Excel), il est facile de faire "traduire" tout un fichier entier ?
Messages postés
80
Date d'inscription
mercredi 6 octobre 2004
Statut
Membre
Dernière intervention
26 septembre 2006

Encore une question rapidement : en tapant
Open "C:\fichier1.cmt For Output As #FNb
Print #FNb, Cells(i, NumColonne).Value
Quel est le ffotmat du fichier qui sortira ?

Merci ....

Nico
Strasbourg
France
Messages postés
80
Date d'inscription
mercredi 6 octobre 2004
Statut
Membre
Dernière intervention
26 septembre 2006

La fonction marche !!!!.....
Seul problème, ça a sucré les ' à â , et enlevé les accents.

C'est peut être pas de l'UTF-8 qu'il me faut ?
Ma plateforme tourne sur un OS de type UNIX, qui s'appelle QNX.

Si tu as une solution ....?

Sinon, je cgercherais moi-même.

Merci déjà pour toutes ces infos.

Où as tu trouver la valeur de CP_UTF8 ? J'essayerais avec d'autres codages.

Nico
Strasbourg
France
Messages postés
80
Date d'inscription
mercredi 6 octobre 2004
Statut
Membre
Dernière intervention
26 septembre 2006

Merci beaucoup EB !!! Tout fonctionne !!!
C'est moi qui ai merdé...

En fait, sans passer par aucune macro, le texte est en "WESTERN EUROPEAN (Winoows)"

En passant par la macro, on arrive en UTF8

Encore un grand merci

Nico
Strasbourg
France
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
De rien :) et bonne prog

E.B.
Messages postés
7
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
8 décembre 2004

SVP je souhaite encoder tout un fichier en UTF8 avant de les integrer ds une Base Oracle utf8.

MiKL