GNT sans publicité, site mobile, fonctionnalitées exclusives...

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.
Lire les 8 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #5013961
Bonjour.
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$
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.






Piotr
Le #5013901
Merci Daniel,

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"
Bonjour.
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


papou
Le #5013881
Bonjour
Avec la macro complémentaire Paramreg.xla de Laurent Longre tu pourras le
faire :
http://xcell05.free.fr/

Cordialement
Pascal


"Piotr" fg780d$215$
Merci Daniel,

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"
Bonjour.
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






Daniel.C
Le #5013871
Je n'ai pas tout essayé, mais je sais que le comportement varie aussi avec
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$
Merci Daniel,

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"
Bonjour.
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






Modeste
Le #5013861
Bonsour® Piotr avec ferveur ;o))) vous nous disiez :

Pour élargir la question, n'y a-t-il pas un moyen de "forcer" VB à
utiliser les paramètres régionaux du poste ?


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)))

Publicité
Suivre les réponses
Poster une réponse
Anonyme