Excel et Unicode

Le
Pierre Goiffon
Bonjour,

J'ai eu une surprise aujourd'hui en aidant une collègue qui avait à
traiter un fichier multilingue.
Nous avons régulièrement l'habitude dans notre société d'utiliser Excel
2007 ou 2003 et d'enregistrer le résultat en "Texte (Unicode)" (cad
UTF-16 LE) car plusieurs fichiers contiennent plusieurs scripts (latins,
asiatiques, ).

Cette fois un gros fichier de 40Mo a été d'abord traité dans Excel,
enregistré en UTF-16, puis passé à une moulinette développée en interne,
qui a bien lu le fichier source et écrit le fichier destination avec le
bon codage (vérifié avec plusieurs éditeurs textes). Cette moulinette
peut écrire ou non le BOM (Excel l'écrit bien systématiquement de son côté).

Lorsque le fichier destination est ouvert dans Excel, l'assistant
d'import ne propose pas comme codage UTF-16, mais uniquement UTF-7 ou
UTF-8. On laisse donc la valeur par défaut "Windows ANSI", mais le
contenu du fichier est alors incohérent. A peu près tous les caractères
de us-ascii sont ok, mais tous les autres ne correspondent à rien. De
plus, si le fichier contenait un BOM, il est affiché sous forme de
caractères en préfixe du 1er mot du fichier !

Un test simple d'enregistrer un fichier contenant une phrase en japonais
depuis Excel et en UTF-16 puis de l'ouvrir en choisissant Windows ANSI
dans l'assistant affiche bien toujours la même phrase. Je suppose donc
qu'il y a un mécanisme d'auto-détection, et qu'il ne fonctionne pas dans
le cas de notre gros fichier.
Y-a-t-il donc un moyen quelconque d'indiquer explicitement à Excel de
lire le fichier texte en UTF-16 ? Que ça soit dans Excel 2007 ou 2003

Merci de vos réponses !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Modeste
Le #20433851
Bonsour® Pierre Goiffon avec ferveur ;o))) vous nous disiez :

Un test simple d'enregistrer un fichier contenant une phrase en
japonais depuis Excel et en UTF-16 puis de l'ouvrir en choisissant
Windows ANSI
dans l'assistant affiche bien toujours la même phrase. Je suppose donc
qu'il y a un mécanisme d'auto-détection, et qu'il ne fonctionne pas
dans
le cas de notre gros fichier.
Y-a-t-il donc un moyen quelconque d'indiquer explicitement à Excel de
lire le fichier texte en UTF-16 ? Que ça soit dans Excel 2007 ou
2003...



;o)))
il ne faut pas laisser l'auto-détection s'activer...
;o)))

BOM ????

une des méthodes possibles est de changer l'extension du fichier à lire ( exemple fichier.xtx)
puis d'utiliser la méthode "OpenText"

*OpenText*, méthode
Cette méthode ouvre et redistribue un fichier texte sous la forme d'un nouveau classeur ne comportant qu'une seule feuille dans laquelle se trouvent les données du fichier texte distribuées.
expression.OpenText(FileName, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Local)

expression Obligatoire. Expression qui renvoie un des objets répertoriés dans la liste S'applique à.
FileName Argument de type String obligatoire. Indique le nom du fichier texte à ouvrir et à distribuer.
Origin Argument de type Variant facultatif. Indique l'origine du fichier texte.
Il peut s'agir de l'une des constantes XlPlatform suivantes : xlMacintosh, xlWindows ou xlMSDOS.
!!!!!!!!!!!
Si vous ne spécifiez pas cet argument, la méthode utilise les paramètres en cours de l'option File Origin dans le Text Import Wizard.
!!!!!!!!!!!

quelques essais seront cerainement necessaire pour la mise au point,
il y aura certainement d'autres parametres à préciser, notament les délimiteurs, les séparateurs
et notament l'option ,Local:=True
Pierre Goiffon
Le #20434811
Modeste wrote:
Un test simple d'enregistrer un fichier contenant une phrase en
japonais depuis Excel et en UTF-16 puis de l'ouvrir en choisissant
Windows ANSI
dans l'assistant affiche bien toujours la même phrase. Je suppose donc
qu'il y a un mécanisme d'auto-détection, et qu'il ne fonctionne pas
dans
le cas de notre gros fichier.
Y-a-t-il donc un moyen quelconque d'indiquer explicitement à Excel de
lire le fichier texte en UTF-16 ? Que ça soit dans Excel 2007 ou
2003...



;o)))
il ne faut pas laisser l'auto-détection s'activer...
;o)))



Si "UTF-16" était présent dans la liste des codages, ce serait possible
:) Mais peut-être que UTF-16 apparait en fait sous un autre nom ? Je
n'ai pas réussi à le retrouver moi-même ??

BOM ????



Le Byte Order Mask, c'est l'entête très caractéristique que l'on peut
ajouter dans l'un des codages Unicode autre que UTF-7 :
http://www.unicode.org/faq/utf_bom.html#bom4

une des méthodes possibles est de changer l'extension du fichier à lire ( exemple fichier.xtx)
puis d'utiliser la méthode "OpenText"



Enfin une piste ! Merci !
Je suppose qu'il s'agit de VBA ?
Publicité
Poster une réponse
Anonyme