pb avec le point décimal
Le
Piotr
bonjour,
Je rencontre un problème avec VB-Excel concernant le "point décimal" pour
une fonction qui devrait être partagée sur plusieurs postes ayant des
"paramètres régionaux" différents.
Voici la formule (partie problèmatique de la fonction) :
(pour information, il s'agit du test de Student en statistique)
w = Evaluate("2 * (1 - NormSDist(" + Format$(t, "0.000000") + "))")
"NormSDist" est une fonction Excel. J'obtiens donc le résultat en VB avec la
fonction "Evaluate".
"t" est déclaré et calculé précédemment (Double). Il est traduit en texte
avec la fonction "Format$".
Sur mon poste, le séparateur de décimal est le point ("." car j'utilise des
logiciels américains qui s'adpatent mal aux import-exports). Mais sur la
plupart des autres postes, c'est classiquement la virgule ("," définie par
défaut dans les paramètres régionaux en France).
J'ai testé la fonction sur un poste à virgule : cela ne marche pas. J'ai
testé plusieurs configurations avec
- un point ou une virgule dans la formule ("0.000000" ou "0,000000")
- un point ou une virgule dans les paramètres régionaux
- un point ou une virgule dans les paramètres d'Excel
La seule combinaison qui fonctionne est celle qui combine le point dans la
formule ET dans les paramètres régionaux (indifféremment des paramètres
d'Excel). Tout se passe donc comme si VB ne comprenait que l'américain et
nous imposait de l'être ! (je précise que je ne suis pas a priori
anti-américian, mais qu'il ne faut pas exagérer)
Pouvez-vous m'aider à adapter cette formule pour qu'elle fonctionne sur tous
les postes, qu'ils soient configurés "à l'américaine" ou "à la française" ?
Merci.
Piotr.
Je rencontre un problème avec VB-Excel concernant le "point décimal" pour
une fonction qui devrait être partagée sur plusieurs postes ayant des
"paramètres régionaux" différents.
Voici la formule (partie problèmatique de la fonction) :
(pour information, il s'agit du test de Student en statistique)
w = Evaluate("2 * (1 - NormSDist(" + Format$(t, "0.000000") + "))")
"NormSDist" est une fonction Excel. J'obtiens donc le résultat en VB avec la
fonction "Evaluate".
"t" est déclaré et calculé précédemment (Double). Il est traduit en texte
avec la fonction "Format$".
Sur mon poste, le séparateur de décimal est le point ("." car j'utilise des
logiciels américains qui s'adpatent mal aux import-exports). Mais sur la
plupart des autres postes, c'est classiquement la virgule ("," définie par
défaut dans les paramètres régionaux en France).
J'ai testé la fonction sur un poste à virgule : cela ne marche pas. J'ai
testé plusieurs configurations avec
- un point ou une virgule dans la formule ("0.000000" ou "0,000000")
- un point ou une virgule dans les paramètres régionaux
- un point ou une virgule dans les paramètres d'Excel
La seule combinaison qui fonctionne est celle qui combine le point dans la
formule ET dans les paramètres régionaux (indifféremment des paramètres
d'Excel). Tout se passe donc comme si VB ne comprenait que l'américain et
nous imposait de l'être ! (je précise que je ne suis pas a priori
anti-américian, mais qu'il ne faut pas exagérer)
Pouvez-vous m'aider à adapter cette formule pour qu'elle fonctionne sur tous
les postes, qu'ils soient configurés "à l'américaine" ou "à la française" ?
Merci.
Piotr.

Poser une question


J'ai déjà rencontré ce type de problème. De guerre lasse, j'ai changé le
séparateur décimal le temps de l'exécution de la macro.
Cordialement.
Daniel
"Piotr" fg7101$uo9$
Ce problème VB m'en rappelle un autre : l'export de dates au format texte.
En "manuel", c'est bien le format "français" (jj/mm/aaa) qui est utilisé,
mais en VB c'est le format américain (mm/jj/aaaa).
Pour élargir la question, n'y a-t-il pas un moyen de "forcer" VB à utiliser
les paramètres régionaux du poste ?
Pour les dates, je m'en étais sorti en passant par un champ texte. Mais pour
mon "Evaluate" je suis concé (je dois avoir des paramètres régionaux
américains pour que la formule puisse être évaluée). A moins de les changer
temporairement et automatiquement durant l'appel de la fonction ? (remarque
: il s'agit d'une fonction d'utilisation récurrente et non pas d'une macro
d'utilisation ponctuelle)
NB : j'utilise Excel 2003 SP3 avec un poste sur XP professionnel V5.1.2600
SP2 Nu 2600. Ce problème est-il présent également dans la version 2007/vista
?
Piotr.
"Daniel.C"
Avec la macro complémentaire Paramreg.xla de Laurent Longre tu pourras le
faire :
http://xcell05.free.fr/
Cordialement
Pascal
"Piotr" fg780d$215$
la version d'Excel, ce qui est plus surprenant; par exemple un code
développé et testé avec la virgule avec XL2003 ne fonctionnait pas avec
XL2000. Peut-être, dans ton cas, essaie d'utiliser une cellule pour
récupérer le résultat, ou de mettre la formule dans une cellule.
Bon courage.
Daniel
"Piotr" fg780d$215$
Set NewBook = Workbooks.Add
NewBook.SaveAs Filename:=fName, Local:=True
----Tiré de l'aide F1
Filename Argument de type Variant facultatif. Chaîne qui indique le nom du
fichier à enregistrer. Vous pouvez inclure un chemin complet ; si vous ne le
faites pas, Microsoft Excel enregistre le fichier dans le dossier en cours.
../..
../..
Local Argument de type Variant facultatif. La valeur True enregistre les
fichiers en fonction de la langue de Microsoft Excel (y compris les paramètres
du Panneau de configuration). La valeur False (valeur par défaut) enregistre les
fichiers en fonction de la langue de Visual Basic pour Applications (VBA) (qui
est généralement l'anglais des États-Unis)
@+
;o)))