XL 2010 Symbole monétaire changé en point d'interrogation dans fichier CSV

g.milano

XLDnaute Junior
Bonjour

Jusqu’à hier, je pouvais enregistrer des fichiers CSV avec le symbole monétaire yen (¥) ; mais aujourd'hui les symboles sont remplacés par des points d'interrogation. Je ne me souviens pas avoir trifouillé quoi que ce soit dans mes réglages.
J'ai ouvert un fichier ok créé hier (les ¥ y sont toujours) et je l'ai sauvegardé de nouveau : les "¥" sont devenus des "?" dans le nouveau fichier (donc c'est bien un problème logiciel/réglage)

Je vous joins les 2 fichiers, des fois que certains d'entre vous puissent y trouver un indice ou quelque chose.
タグリスト2020-05-20.1.csv (fichier d'hier ok)
タグリスト2020-05-20.1.1.csv (fichier d'hier réenregistrer aujourd'hui et buggé)

Pour information, le fichier CSV est utilisé pour imprimer des étiquettes (donc le prix en format "¥#,##0" est nécessaire) via un logiciel tier (le fichier y est glisser-déposé)

Merci pour votre aide m(_ _)m.

PS : tiens, on ne peut pas joindre de fichier CSV o0!? (je me suis permis de leur rajouter une extension ".xls" ; n'oubliez-pas de les renommer avant de les ouvrir)
 

Pièces jointes

  • タグリスト2020-05-19.1.csv.xls
    8.2 KB · Affichages: 31
  • タグリスト2020-05-20.1.1.csv.xls
    290 bytes · Affichages: 18

Patrice33740

XLDnaute Impliqué
Bonjour,

Que soit l'un ou l'autre des 2 fichiers, il n'y a pas de yen, j'ai des ? à la place.
Le problème vient très probablement d'une ouverture avec un codage différent de l'original

Yen.jpg
 
Dernière édition:

g.milano

XLDnaute Junior
Bonjour Patrice

Merci pour votre aide.

Je viens de vérifier et les 2 fichiers ont le même encodage (japonais Shift-JIS). J'ai tenté de les ouvrir en passant par données > fichier texte ; et malgré l'encodage identique, le fenêtre de visualisation montre bien des "¥"et des "?" selon le fichier choisi. Même en changeant d'encodage (UTF-8, ansi, msdos pc8), il n'y a aucun changement après traitement.
Y'a-t-il un moyen de forcer un encodage lors de la sauvegarde ?
 

Patrice33740

XLDnaute Impliqué
Si tu regardes le fichier de mon image (ouvert avec NPP++), tu verras qu'il y a bel et bien des ? dans le fichier original et que le champ est au format texte (délimité par des "), il est donc totalement normal d'obtenir des ?
Si tu obtiens des yens parce que lors de l'import, Excel interprète la colonne et la transforme en nombre monétaire, mais ce n'est pas ce que contient le fichier .csv.
Ce n'est qu'une interprétation parmi toutes celles possibles.
 

fanch55

XLDnaute Barbatruc
Bonjour, comme @Patrice33740 ,
Edité les 2 fichiers avec notepad++ et éditeur Android,
Même combat, que des ? dans les 2 fichiers .
J'ai transformé les sommes en tant que champ monétaire avec symbole du Yen, j'ai dû retaper tous les chiffres .
Sauvegardé ensuite en Csv virgules et Csv points virgules, les 2 fichiers sont corrects.
1590051447666.png

Peux-tu reposter tes fichiers dans un fichier Zip, car c'est étonnant, les 2 que tu as postés initialement sont structurellement identiques.
 

g.milano

XLDnaute Junior
Bonjour fanch55

Merci pour votre aide

Je vous joins un fichier zip comme demandé. Meme punition via notepad : chaque fichier garde son symbole "?" pour l'un et "¥" pour l'autre (par contre, je n'ai pas d’éditeur Android).

D'origine, le fichier CSV est une copie d'un onglet sauvegardé par Macro (bout de code ci-dessous). Serait-il possible de modifier ce code pour une sauvegarde ne nécessitant pas une édition par Notepad ?

VB:
    Tagu.Copy
    ActiveWorkbook.Columns("D").NumberFormatLocal = "¥#,##0"
    ActiveWorkbook.SaveAs ListDir & "タグリスト" & toujitsu & "." & i & ".csv", FileFormat:=xlCSV, AddToMru:=False
    ActiveWorkbook.Close False
 

Pièces jointes

  • リスト.zip
    799 bytes · Affichages: 15
Dernière édition:

fanch55

XLDnaute Barbatruc
Pourrais-tu modifier ton code ainsi:
VB:
    Tagu.Copy
    ActiveWorkbook.Columns("D").NumberFormatLocal = "[$¥-ja-JP]##0.000"
    ActiveWorkbook.SaveAs ListDir & "タグリスト" & toujitsu & "." & i & ".csv", _
        FileFormat:=xlCSVUTF8
    ActiveWorkbook.Close False
Je suis en Excel 2016, j'espère que cela passera en 2010 ..
 

g.milano

XLDnaute Junior
Absolument pas !!!!
Le premier fichier (qui n'est pas le même que celui posté précédemment, voir mon post précédent), ouvert avec NotePad (c'est-à-dire le bloc note) contient des \ à la place du Yen :
Je peux vous assurer que sur mon PC (harware et software 100% japonais), les "?" et "¥" sont tels quels.



Pourrais-tu modifier ton code ainsi:
VB:
    Tagu.Copy
    ActiveWorkbook.Columns("D").NumberFormatLocal = "[$¥-ja-JP]##0.000"
    ActiveWorkbook.SaveAs ListDir & "タグリスト" & toujitsu & "." & i & ".csv", _
        FileFormat:=xlCSVUTF8
    ActiveWorkbook.Close False
Je suis en Excel 2016, j'espère que cela passera en 2010 ..
Malheureusement, cette modification déclenche une erreur 438 pour le format "[$¥-ja-JP]##0.000" et une erreur 1004 pour le FileFormat:=xlCSVUTF8.


En fait, si mon problème pouvait se résumer a un remplacement des "¥" par des "?" , pourrait-on avoir un code vba qui remplace les "?" par des "¥" dans le CSV sauvegardé (genre essayer de shunter l'encodage qui se fait lors de la sauvegarde par excel) ?


EDIT 1 : J'ai trifouiller mon code en repartant de 0 et je suis tombé sur un truc encore plus bizarre. En enlevant la commande "ActiveWorkbook.Columns("D").NumberFormatLocal = "¥#,##0" de mon code et en formatant la cellule avant l’exécution de la macro, le CSV me change la devise en $ !! (visible aussi via notepad)

Edit 2 : J'ai trouvé sur le net une macro qui convertit un fichier CSV en UTF8. Je voudrais savoir s'il n'y a pas moyen de sauvegarder mon fichier avec une partie de ce code ?
 
Dernière édition:

Patrice33740

XLDnaute Impliqué
EDIT 1 : J'ai trifouiller mon code en repartant de 0 et je suis tombé sur un truc encore plus bizarre. En enlevant la commande "ActiveWorkbook.Columns("D").NumberFormatLocal = "¥#,##0" de mon code et en formatant la cellule avant l’exécution de la macro, le CSV me change la devise en $ !! (visible aussi via notepad)
J'ai l'impression que nous ne parlons pas de la même chose....
Excel ne modifie pas le fichier original si tu ne lui demandes pas !
Il ne peut donc pas y avoir des $ à la place des yens dans le fichier original ouvert avec notepad.

Peux-tu poster le fichier csv original, celui qui contient les yens et qui n'est pas modifié ?
et une image avec notepad, pour voir si le notepad vf affiche la même chose que le notepad jpn.
 

g.milano

XLDnaute Junior
Je m'explique mal.

Tout d'abord, le classeur initial est un fichier issu d'un modèle XLTM qui subit moult opérations par macro. Quand l'onglet des étiquettes est rempli, je le copie et le sauvegarde en format CSV.

Suite aux différents tests que j'ai fais, je pense que Excel fait quelque chose pendant la sauvegarde qui change les "¥" du format monétaire en "?" (ou en "$" avec ma dernière modification).
Ouvrir le CSV dans notepad montre bien les "¥", "?" et "$" dans le fichier sauvegardé (et aussi quand je les ouvre de nouveau dans Excel). Je me demande s'il n'y a pas des méta-données planquées dans le fichier pour qu'une même source donne 2 symboles différents.


Par exemple, j'ai aussi un sujet sur des cellules contenant des "-A" qui sont sauvegardées en CSV (avec un format texte "@"), donc le fichier sauvegarde contient bien les "-A" ; sauf que quand je le rouvre dans Excel, il les considère comme des formules et insère automatiquement des = et affiche des "#NAME?" (le format texte n'est pas conservé). Dans ce dernier cas, le bug est a l'ouverture. Mais comme le CSV est exportable en l’état, je n'ai pas cherché a réparer ce problème.


Concernant votre demande, j'ai réussi a reproduire le problème et lever un nouveau loup ! dans le Zip ci-joint, vous avez un fichier XLTM (je l'ai extrait de mon fichier original) avec une macro inclue dedans. Où ça devient délirant, c'est qu’après avoir sauvegarder le fichier au format CSV (j'ai mis une invite de sauvegarde), vous allez le fermer (le croix en haut a droite). A ce moment, Excel vous demande si vous voulez enregistrer les modifications (il n'y en a pas eu normalement). Si vous dites NON (fichier NON.CSV dans le Zip), vous devriez trouver des "$". MAIS si vous refaites un tour de macro et choisissez OUI + réécrire le fichier, vous devriez obtenir des "?" (fichier OUI.CSV dans le Zip).

J’espère que vous aurez le même résultat, sinon, je suis marron. Merci.
 

Pièces jointes

  • FormatFinancierCSV.zip
    12.1 KB · Affichages: 11

eriiic

XLDnaute Barbatruc
Bonjour,

ce que je trouve bizarre dans tes fichiers c'est que tu as les codes 5C "\", 3F "?" alors que le code ANSI pour ¥ est A5
Si je met ce code dans un de tes fichier, je retrouve bien ¥ en ouvrant le csv sur excel.

Tu pourrais essayer de mettre ta colonne (avec les ¥) par .Value = .Text, le A5 sera conservé en .csv.
eric
 

Docmarti

XLDnaute Occasionnel
Bonjour g.milano, le Forum.

Dans la ligne de code suivante tu as 3 erreurs.
VB:
ActiveWorkbook.Columns("D").NumberFormatLocal = "¥#,##0"

1. Remplace ActiveWorkbook.Columns("D")
par ActiveSheet.Columns("D")

2. Utilise NumberFormat au lieu de NumberFormatLocal

3. Remplace ¥#,##0
par $#,##0
ou par $#,##0_);[Red]($#,##0)

Pour savoir quoi mettre dans la propriete NumberFormat Monetaire, mieux vaut se fier a Excel qu'a nos intuitions.
Donc sur la feuille utilise Format de cellule et choisis Monetaire comme Format de nombre d'une cellule.
Ensuite va dans VBA pour recuperer la propriete Numberformat recommandee par Excel pour cette cellule.

Code:
LeFormat = Cells(1, 1).NumberFormat

Ca va te donner
Code:
ActiveSheet.Columns("D").NumberFormat = "$#,##0"

Dans le code suivant, il y a une erreur d'omission. Tu dois mettre le parametre Local:=True. En fait tu dois toujours mettre Local:=True sauf si tu desires obtenir des valeurs aux formats americains.

Donc tu dois ajouter Local:=True a ce code
Code:
 ActiveWorkbook.SaveAs ListDir & "タグリスト" & toujitsu & "." & i & ".csv", FileFormat:=xlCSV, AddToMru:=False

ce qui donne

Code:
 ActiveWorkbook.SaveAs ListDir & "タグリスト" & toujitsu & "." & i & ".csv", FileFormat:=xlCSV,  local:=True, AddToMru:=False
 
Dernière édition:

Statistiques des forums

Discussions
312 083
Messages
2 085 187
Membres
102 809
dernier inscrit
Sandrine83