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.
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.
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.
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
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
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
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" a écrit dans le message de news: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
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" <dZZZcolardelle@free.fr> a écrit dans le message de news:
ev3JOouGIHA.5544@TK2MSFTNGP02.phx.gbl...
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
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" a écrit dans le message de news: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
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" a écrit dans le message de news: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
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" <dZZZcolardelle@free.fr> a écrit dans le message de news:
ev3JOouGIHA.5544@TK2MSFTNGP02.phx.gbl...
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
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" a écrit dans le message de news: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
Pour élargir la question, n'y a-t-il pas un moyen de "forcer" VB à
utiliser les paramètres régionaux du poste ?
Pour élargir la question, n'y a-t-il pas un moyen de "forcer" VB à
utiliser les paramètres régionaux du poste ?
Pour élargir la question, n'y a-t-il pas un moyen de "forcer" VB à
utiliser les paramètres régionaux du poste ?
Il me semble que quelque chose comme ceci devrait fonctionner
peu importe le séparateur décimal
Dim T As Variant
' à tester aussi avec un point comme séparateur décimale
T = "125,36"
T = Application.WorksheetFunction.Substitute(T, ",", ".")
T = Val(T)
'T = Format(T, "0.000000")
OU
w = Evaluate("2 * (1 - NormSDist(" + Format$(T, "0.000000") + "))")
Il me semble que quelque chose comme ceci devrait fonctionner
peu importe le séparateur décimal
Dim T As Variant
' à tester aussi avec un point comme séparateur décimale
T = "125,36"
T = Application.WorksheetFunction.Substitute(T, ",", ".")
T = Val(T)
'T = Format(T, "0.000000")
OU
w = Evaluate("2 * (1 - NormSDist(" + Format$(T, "0.000000") + "))")
Il me semble que quelque chose comme ceci devrait fonctionner
peu importe le séparateur décimal
Dim T As Variant
' à tester aussi avec un point comme séparateur décimale
T = "125,36"
T = Application.WorksheetFunction.Substitute(T, ",", ".")
T = Val(T)
'T = Format(T, "0.000000")
OU
w = Evaluate("2 * (1 - NormSDist(" + Format$(T, "0.000000") + "))")
Il me semble que quelque chose comme ceci devrait fonctionner
peu importe le séparateur décimal
Dim T As Variant
' à tester aussi avec un point comme séparateur décimale
T = "125,36"
T = Application.WorksheetFunction.Substitute(T, ",", ".")
T = Val(T)
'T = Format(T, "0.000000")
OU
w = Evaluate("2 * (1 - NormSDist(" + Format$(T, "0.000000") + "))")
Il me semble que quelque chose comme ceci devrait fonctionner
peu importe le séparateur décimal
Dim T As Variant
' à tester aussi avec un point comme séparateur décimale
T = "125,36"
T = Application.WorksheetFunction.Substitute(T, ",", ".")
T = Val(T)
'T = Format(T, "0.000000")
OU
w = Evaluate("2 * (1 - NormSDist(" + Format$(T, "0.000000") + "))")
Il me semble que quelque chose comme ceci devrait fonctionner
peu importe le séparateur décimal
Dim T As Variant
' à tester aussi avec un point comme séparateur décimale
T = "125,36"
T = Application.WorksheetFunction.Substitute(T, ",", ".")
T = Val(T)
'T = Format(T, "0.000000")
OU
w = Evaluate("2 * (1 - NormSDist(" + Format$(T, "0.000000") + "))")