Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro faire aux US ne marche en France: Problème de décimales

3 réponses
Avatar
Mirage
J'ai récupéré une macro programmée aux US.
Pour qu'elle fonctionne, j'avais deux solutions:

Modifier mon environnement au format US (décimale, et autres caractères
internationaux) , faire marcher la macro puis me remettre en envronnement
Européen...
OU
Faire marcher la macro directement en environnement Européen (et là les €
s'affichent à la place des $ dans les formats numériques )
Sauf que bizarrement, lorsque je suis en environnement Européen,
l'instruction SUMIF ne fonctionne pas avec un critère "<10,5"
mais elle fonctionne avec le critère "<10.5"
Le problème c'est que le reste de la macro, et plus généralement excel, ne
reconnait pas le format décimal "." dans le reste de la macro !!

Donc finalement, ma macro ne marche que lorsque les données utilisées pour
le critère sont des entiers.

Si quelqu'un a la solution je prends !
Merci de votre aide

3 réponses

Avatar
michdenis
Bonjour Mirage,

Pour la fonction SumIf, tu peux utiliser ce type de syntaxe :

Toto = Plage nommée (insertion / nom / définir ...
'----------------------
Dim X As String
Dim LaSomme As Double
X = 10.5
X = Application.Substitute(10.5, ",", ".")
LaSomme = Application.SumIf(Range("Toto"), "<" & X)
MsgBox LaSomme
'----------------------


Salutations!


"Mirage" a écrit dans le message de news:
J'ai récupéré une macro programmée aux US.
Pour qu'elle fonctionne, j'avais deux solutions:

Modifier mon environnement au format US (décimale, et autres caractères
internationaux) , faire marcher la macro puis me remettre en envronnement
Européen...
OU
Faire marcher la macro directement en environnement Européen (et là les ?
s'affichent à la place des $ dans les formats numériques )
Sauf que bizarrement, lorsque je suis en environnement Européen,
l'instruction SUMIF ne fonctionne pas avec un critère "<10,5"
mais elle fonctionne avec le critère "<10.5"
Le problème c'est que le reste de la macro, et plus généralement excel, ne
reconnait pas le format décimal "." dans le reste de la macro !!

Donc finalement, ma macro ne marche que lorsque les données utilisées pour
le critère sont des entiers.

Si quelqu'un a la solution je prends !
Merci de votre aide
Avatar
Mirage
Merci beaucoup.
Bizarrement, la fonction substitute ou substitue, ne fonctionne pas ! elle
n'est pas reconnue...ou ne fonctionne pas avec une variable (mon 10.5 est en
fait une variable)
En revanche tu m'as mis sur la bonne piste: après quelques tatonnements
j'aii utilisé la fonction "replace (string,".",",") et là ça marche !

Merci de ton aide.
Mirage


Bonjour Mirage,

Pour la fonction SumIf, tu peux utiliser ce type de syntaxe :

Toto = Plage nommée (insertion / nom / définir ...
'----------------------
Dim X As String
Dim LaSomme As Double
X = 10.5
X = Application.Substitute(10.5, ",", ".")
LaSomme = Application.SumIf(Range("Toto"), "<" & X)
MsgBox LaSomme
'----------------------


Salutations!


"Mirage" a écrit dans le message de news:
J'ai récupéré une macro programmée aux US.
Pour qu'elle fonctionne, j'avais deux solutions:

Modifier mon environnement au format US (décimale, et autres caractères
internationaux) , faire marcher la macro puis me remettre en envronnement
Européen...
OU
Faire marcher la macro directement en environnement Européen (et là les ?
s'affichent à la place des $ dans les formats numériques )
Sauf que bizarrement, lorsque je suis en environnement Européen,
l'instruction SUMIF ne fonctionne pas avec un critère "<10,5"
mais elle fonctionne avec le critère "<10.5"
Le problème c'est que le reste de la macro, et plus généralement excel, ne
reconnait pas le format décimal "." dans le reste de la macro !!

Donc finalement, ma macro ne marche que lorsque les données utilisées pour
le critère sont des entiers.

Si quelqu'un a la solution je prends !
Merci de votre aide





Avatar
michdenis
Bonjour Mirage,


As-tu essayé ceci :
Dans cette ligne : X = Application.Substitute(10.5, ",", ".")
J'ai oublié de remplacer 10.5 par la variable X ....

Dim LaSomme As Double
X = 10.5
X = Application.WorksheetFunction.Substitute(X, ",", ".")
LaSomme = Application.SumIf(Range("Toto"), "<" & X)
MsgBox LaSomme


Salutations!



"Mirage" a écrit dans le message de news:
Merci beaucoup.
Bizarrement, la fonction substitute ou substitue, ne fonctionne pas ! elle
n'est pas reconnue...ou ne fonctionne pas avec une variable (mon 10.5 est en
fait une variable)
En revanche tu m'as mis sur la bonne piste: après quelques tatonnements
j'aii utilisé la fonction "replace (string,".",",") et là ça marche !

Merci de ton aide.
Mirage


Bonjour Mirage,

Pour la fonction SumIf, tu peux utiliser ce type de syntaxe :

Toto = Plage nommée (insertion / nom / définir ...
'----------------------
Dim X As String
Dim LaSomme As Double
X = 10.5
X = Application.Substitute(10.5, ",", ".")
LaSomme = Application.SumIf(Range("Toto"), "<" & X)
MsgBox LaSomme
'----------------------


Salutations!


"Mirage" a écrit dans le message de news:
J'ai récupéré une macro programmée aux US.
Pour qu'elle fonctionne, j'avais deux solutions:

Modifier mon environnement au format US (décimale, et autres caractères
internationaux) , faire marcher la macro puis me remettre en envronnement
Européen...
OU
Faire marcher la macro directement en environnement Européen (et là les ?
s'affichent à la place des $ dans les formats numériques )
Sauf que bizarrement, lorsque je suis en environnement Européen,
l'instruction SUMIF ne fonctionne pas avec un critère "<10,5"
mais elle fonctionne avec le critère "<10.5"
Le problème c'est que le reste de la macro, et plus généralement excel, ne
reconnait pas le format décimal "." dans le reste de la macro !!

Donc finalement, ma macro ne marche que lorsque les données utilisées pour
le critère sont des entiers.

Si quelqu'un a la solution je prends !
Merci de votre aide