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

remplacer Virgule par point et reciproquement en fonction des parametres regionnaux

6 réponses
Avatar
musecyan
Bonjour je reccupere des donn=E9es (sous la forme d'une chaine de
caracteres) dans excell 2003 de type numerique du genre 12.325

Pour que excel les reconnaissent comme des valeurs numeriques il faut
soit que je parametre les "regionnal settings" de windaub en separateur
decimal =3D .
Soit que je le laisse par defaut en "," dans windows et qu'en vba je
remplace ce "." par une virgule. Ce que je fait comme ceci
If InStr(1, cell.Text, ".") > 0 Then
cell.Value =3D CDbl(Val(cell.Text))

Bon ca marche sans probleme mais j'aimerais bien que cela fonctionne
tout le temps que l'utilisateur est regle les parametre regionnaux
windaub en . ou en , et moi dans VBA savoir si j'ai besoin de modifier
ma chaine ou non en fonction d'un parametre que je reccupererai qui me
dirai comment windows est configure par defaut (et donc excell aussi
car il utilise ses parametres) parce que l'erreur 13 incompatibilite de
type ca fait pas tres serieux

d'avance Merci ...

(ps si il n'y a pas de solution direct je placerait un userform sur la
feuille pour que l'utilisateur choisisse "." ou "," comme sperateur
decimal mais je suis sur qu'il y a des super programmeur qui ont deja
ete confronte a ce probleme et qui on une solution)

6 réponses

Avatar
musecyan
bin en fait ca marche c'est bon puisque la fonction CDbl(Val(Chaine)
convertit ma chaine de caractere en nombre en se demerdant avec le .
qui devient , au besoin ou qui reste un point si on est en parametre
regionnaux .


Bonjour je reccupere des données (sous la forme d'une chaine de
caracteres) dans excell 2003 de type numerique du genre 12.325

Pour que excel les reconnaissent comme des valeurs numeriques il faut
soit que je parametre les "regionnal settings" de windaub en separateur
decimal = .
Soit que je le laisse par defaut en "," dans windows et qu'en vba je
remplace ce "." par une virgule. Ce que je fait comme ceci
If InStr(1, cell.Text, ".") > 0 Then
cell.Value = CDbl(Val(cell.Text))

Bon ca marche sans probleme mais j'aimerais bien que cela fonctionne
tout le temps que l'utilisateur est regle les parametre regionnaux
windaub en . ou en , et moi dans VBA savoir si j'ai besoin de modifier
ma chaine ou non en fonction d'un parametre que je reccupererai qui me
dirai comment windows est configure par defaut (et donc excell aussi
car il utilise ses parametres) parce que l'erreur 13 incompatibilite de
type ca fait pas tres serieux

d'avance Merci ...

(ps si il n'y a pas de solution direct je placerait un userform sur la
feuille pour que l'utilisateur choisisse "." ou "," comme sperateur
decimal mais je suis sur qu'il y a des super programmeur qui ont deja
ete confronte a ce probleme et qui on une solution)


Avatar
AV
<bin en fait ca marche c'est bon puisque la fonction CDbl(Val(Chaine)
<convertit ma chaine de caractere en nombre en se demerdant avec le .
<qui devient , au besoin ou qui reste un point si on est en parametre
<Regionnaux .

Une simple opération arithmétique neutre devrait suffire :

x = chaîne * 1
x = chaîne + 0

AV
Avatar
Modeste
Bonsour® AV avec ferveur ;o))) vous nous disiez :

Une simple opération arithmétique neutre devrait suffire :
x = chaîne * 1
x = chaîne + 0


on pourrait faire aussi :
x = chaîne ^ 1
x = N(chaîne)

et puis ...
pfff...zut.....il me semble que j'en oublie une autre ;o)))



--
--
@+
;o)))

Avatar
isabelle
salut modeste,

pfff...zut.....il me semble que j'en oublie une autre ;o)))


x = chaîne / 1

bisou
isabelle

Avatar
Clément Marcotte
Meuhnon,

C'est bien plusse beau:

2 *((Chaine *1,5 + Chaine *0,5)/4)

"isabelle" a écrit dans le message de news:

salut modeste,

pfff...zut.....il me semble que j'en oublie une autre ;o)))


x = chaîne / 1

bisou
isabelle



Avatar
AV
x = N(chaîne)


Hum... je pense pas que ça puisse faire...

pfff...zut.....il me semble que j'en oublie une autre ;o)))


Je vois même pas ce dont tu veux parler ....;-)

AV