.reg pour modifier separateur décimal / val()

l3lackswordman -  
 l3lackswordman -
Bonjour,

J'ai créé un classeur excel intégrant des macros devant être utilisé par de nombreuses personnes sur de nombreux postes différents. Selon le goût des utilisateurs, les paramètres linguistiques des différents postes utilisent le "." ou la "," comme séparateur décimale.

Lorsque ma macro vba utilise la fonction val(), elle ne tient pas compte du séparateur d'excel, mais de celui du système (pour une raison que j'ignore). J'ai donc créé deux petits .reg que je lance dans mon classeur afin de modifier le séparateur décimal et le replacer tel qu'il était à la fin de mon code.

J'utilise le code suivant :

REGEDIT4

[HKEY_CURRENT_USERS\Control Panel\International]
"sDecimal"="."

[HKEY_USERS\.DEFAULT\Control Panel\International]
"sDecimal"="."

Malheureusement, même si la base du registre est modifiée, excel et windows semblent s'en fo$%totalement. Est-ce qu'il y a une autre clef registre a modifier ou est-ce que je ne m'y prends pas de la bonne façon ?

Quelqu'un a une suggestion ?

p.s. : On m'a demandé de déplacer mon post de windows a programmation alors voilà !

1 réponse

Moyjin Messages postés 138 Statut Membre 10
 
si tu t'y connai un peu en Vb pourkoi tout simplment ne pas rechercher la val ASCII de ton caractére et de remodier ce caractére a la fin de ton traitement pour l'afichage .
0
l3lackswordman
 
Tout simplement parce que ce caractère n'est jamais le même.
Exemple : parfois la valeur peut être
12.14
ou encore
88,54
ou bien
#1.00
0
Moyjin Messages postés 138 Statut Membre 10
 
et je suppose que tu n'a pas de nombre limite de caractère pour vérifier chaque caractère 1a 1 ou que cela prendrai trop de temps
0
l3lackswordman
 
Ça pourrait être une bonne option, je place le contenu de la cellule dans un string, je compare chacun des caractère, je remplace la virgule en point et je remet le tout en double avec VAL()

ça va être long mais ça va marche ! Merci!!!
0