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

Changer le séparateur décimal de virgule à point au niveau d'Acc es

12 réponses
Avatar
Eric
Bonjour,
Je cherche à changer le séparateur décimal de virgule à point au niveau
d'Access seulement (pas en changeant les paramètres régionaux car je souhaite
que mes autres applications continuent à fonctionner comme avant).
J'aurais besoin que cette modification concerne l'affichage et aussi les
macros visual basic.
Merci d'avance pour votre aide.

10 réponses

1 2
Avatar
Fabien
Eric a écrit :
Bonjour,
Je cherche à changer le séparateur décimal de virgule à point au niveau
d'Access seulement (pas en changeant les paramètres régionaux car je souhaite
que mes autres applications continuent à fonctionner comme avant).
J'aurais besoin que cette modification concerne l'affichage et aussi les
macros visual basic.
Merci d'avance pour votre aide.



Salut,
Pour l'affichage un simple replace (Me.leChamp,",",".") devrait suffire.
@+
Avatar
Eric
Merci Fabien. Malheureusement, je souhaite ne pas modifier mes données en
quoi que ce soit.

"Fabien" a écrit :

Eric a écrit :
> Bonjour,
> Je cherche à changer le séparateur décimal de virgule à point au niveau
> d'Access seulement (pas en changeant les paramètres régionaux car je souhaite
> que mes autres applications continuent à fonctionner comme avant).
> J'aurais besoin que cette modification concerne l'affichage et aussi les
> macros visual basic.
> Merci d'avance pour votre aide.
>
Salut,
Pour l'affichage un simple replace (Me.leChamp,",",".") devrait suffire.
@+



Avatar
Fabien
Eric a écrit :
Merci Fabien. Malheureusement, je souhaite ne pas modifier mes données en
quoi que ce soit.

"Fabien" a écrit :

Eric a écrit :
Bonjour,
Je cherche à changer le séparateur décimal de virgule à point au niveau
d'Access seulement (pas en changeant les paramètres régionaux car je souhaite
que mes autres applications continuent à fonctionner comme avant).
J'aurais besoin que cette modification concerne l'affichage et aussi les
macros visual basic.
Merci d'avance pour votre aide.



Salut,
Pour l'affichage un simple replace (Me.leChamp,",",".") devrait suffire.
@+





Le fait d'utiliser replace ne modifie pas la donnée initial a moins de
faire un me.lechamp=replace(....
Tu peux parfaitement attribuer a la propriété controle du champAffiché
la valeur =replace(me.lechampsource,",",".") en mettant le champsSource
en mode invisible.
;-)
Avatar
Gloops
Bonjour,

Fabien a écrit, le 27/08/2008 10:42 :
Salut,
Pour l'affichage un simple replace (Me.leChamp,",",".") devrait suffire .
@+



Absolument,

Dans une base j'ai même eu l'occasion de m'en servir si souvent que j'ai
créé pour ça une fonction "SansVirgule". A part la gestion de la valeur
nul, ça fait pile la même chose.

ça n'invente pas l'eau chaude, mais quand on parcourt un code avec u n
bon paquet de lignes, je trouve qu'on percute plus vite (on comprend
plus vite de quoi il retourne) en voyant SansVirgule qu'en voyant
Replace et en comptant les guillemets et les virgules.

Pour gérer le nul je me suis contenté d'entrer un variant, je n 'ai pas
encore poussé le bouchon jusqu'à créer un module de classe acceptant une
valeur chaîne de caractères ou nul -ce qui d'ailleurs sous Acce ss est un
petit peu plus lourd à l'appel car il faut déclarer un objet de cette
classe dans chaque module appelant, et l'initialiser juste avant
l'appel. Mais ce dernier paragraphe n'est dans le sujet qu'en cherchant
à être vraiment très rigoureux.
Avatar
Eric
Merci Gloops et Fabien ça marche déja pour une somme simple. J'imagine que je
peux faire pareil aussi avec du code VBA donc problème résolu.

"Gloops" a écrit :

Bonjour,

Fabien a écrit, le 27/08/2008 10:42 :
> Salut,
> Pour l'affichage un simple replace (Me.leChamp,",",".") devrait suffire.
> @+

Absolument,

Dans une base j'ai même eu l'occasion de m'en servir si souvent que j'ai
créé pour ça une fonction "SansVirgule". A part la gestion de la valeur
nul, ça fait pile la même chose.

ça n'invente pas l'eau chaude, mais quand on parcourt un code avec un
bon paquet de lignes, je trouve qu'on percute plus vite (on comprend
plus vite de quoi il retourne) en voyant SansVirgule qu'en voyant
Replace et en comptant les guillemets et les virgules.

Pour gérer le nul je me suis contenté d'entrer un variant, je n'ai pas
encore poussé le bouchon jusqu'à créer un module de classe acceptant une
valeur chaîne de caractères ou nul -ce qui d'ailleurs sous Access est un
petit peu plus lourd à l'appel car il faut déclarer un objet de cette
classe dans chaque module appelant, et l'initialiser juste avant
l'appel. Mais ce dernier paragraphe n'est dans le sujet qu'en cherchant
à être vraiment très rigoureux.




Avatar
Blaise Cacramp
Bjr,

Pour VBA, je crains que ce soit négatif...
--
Cdt

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

Merci Gloops et Fabien ça marche déja pour une somme simple. J'imagine que
je
peux faire pareil aussi avec du code VBA donc problème résolu.

"Gloops" a écrit :

Bonjour,

Fabien a écrit, le 27/08/2008 10:42 :
> Salut,
> Pour l'affichage un simple replace (Me.leChamp,",",".") devrait
> suffire.
> @+

Absolument,

Dans une base j'ai même eu l'occasion de m'en servir si souvent que j'ai
créé pour ça une fonction "SansVirgule". A part la gestion de la valeur
nul, ça fait pile la même chose.

ça n'invente pas l'eau chaude, mais quand on parcourt un code avec un
bon paquet de lignes, je trouve qu'on percute plus vite (on comprend
plus vite de quoi il retourne) en voyant SansVirgule qu'en voyant
Replace et en comptant les guillemets et les virgules.

Pour gérer le nul je me suis contenté d'entrer un variant, je n'ai pas
encore poussé le bouchon jusqu'à créer un module de classe acceptant une
valeur chaîne de caractères ou nul -ce qui d'ailleurs sous Access est un
petit peu plus lourd à l'appel car il faut déclarer un objet de cette
classe dans chaque module appelant, et l'initialiser juste avant
l'appel. Mais ce dernier paragraphe n'est dans le sujet qu'en cherchant
à être vraiment très rigoureux.






Avatar
Eric
Bonjour Blaise,
Merci pour l'info. Je ne suis pas très rassuré ... en fait pour expliquer un
peu j'ai 2 champs de données numériques, et j'ai un formulaire qui m'affiche
sur une courbe 2 axes l'un des champs en fonction de l'autre. Je crois que
pour faire ça il y a du code VBA. Mes champs ayant comme séparateur décimal
le point, l'affichage de la courbe ne fonctionne que si je change mes
paramètres régionaux. J'aurais espéré qu'en utilisant Replace (blabla) dans
le code VBA ça pourrait marcher sans que j'aie à modifier mes paramètres
régionaux, mais là tu me mets le doute.
Merci dans tous les cas,


"Blaise Cacramp" a écrit :

Bjr,

Pour VBA, je crains que ce soit négatif...
--
Cdt

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

> Merci Gloops et Fabien ça marche déja pour une somme simple. J'imagine que
> je
> peux faire pareil aussi avec du code VBA donc problème résolu.
>
> "Gloops" a écrit :
>
>> Bonjour,
>>
>> Fabien a écrit, le 27/08/2008 10:42 :
>> > Salut,
>> > Pour l'affichage un simple replace (Me.leChamp,",",".") devrait
>> > suffire.
>> > @+
>>
>> Absolument,
>>
>> Dans une base j'ai même eu l'occasion de m'en servir si souvent que j'ai
>> créé pour ça une fonction "SansVirgule". A part la gestion de la valeur
>> nul, ça fait pile la même chose.
>>
>> ça n'invente pas l'eau chaude, mais quand on parcourt un code avec un
>> bon paquet de lignes, je trouve qu'on percute plus vite (on comprend
>> plus vite de quoi il retourne) en voyant SansVirgule qu'en voyant
>> Replace et en comptant les guillemets et les virgules.
>>
>> Pour gérer le nul je me suis contenté d'entrer un variant, je n'ai pas
>> encore poussé le bouchon jusqu'à créer un module de classe acceptant une
>> valeur chaîne de caractères ou nul -ce qui d'ailleurs sous Access est un
>> petit peu plus lourd à l'appel car il faut déclarer un objet de cette
>> classe dans chaque module appelant, et l'initialiser juste avant
>> l'appel. Mais ce dernier paragraphe n'est dans le sujet qu'en cherchant
>> à être vraiment très rigoureux.
>>
>>





Avatar
Gloops
Eric a écrit, le 29/08/2008 10:29 :
Bonjour Blaise,
Merci pour l'info. Je ne suis pas très rassuré ... en fait po ur expliquer un
peu j'ai 2 champs de données numériques, et j'ai un formulair e qui m'affiche
sur une courbe 2 axes l'un des champs en fonction de l'autre. Je crois que
pour faire ça il y a du code VBA. Mes champs ayant comme sépa rateur décimal
le point, l'affichage de la courbe ne fonctionne que si je change mes
paramètres régionaux. J'aurais espéré qu'en utilisa nt Replace (blabla) dans
le code VBA ça pourrait marcher sans que j'aie à modifier mes paramètres
régionaux, mais là tu me mets le doute.
Merci dans tous les cas,




Salut,

ça remonte à quelques années que je me suis livré à   ce genre de
gymnastique, mais en tout cas la seule chose qu'on peut dire est qu'il
doit y avoir moyen d'y arriver. Si le séparateur qu'on reçoit e st la
virgule alors que la fonction attend un point, on met la fonction
SansVirgule entre les deux, sinon on ne la met pas, de mémoire ç a me
paraît aussi simple que ça.

Mais il me semble que le problème, a priori, ne devrait se poser que
pour un champ numérique converti en chaîne de caractères, non ? Par
exemple, dans le cadre d'une requête SQL. C'est à étudier au cas par
cas, le remplacement des virgules par un point est une astuce pour
contourner un problème qui se pose à cause d'un séparateur qui se trouve
être différent car il a suivi des trajets différents (à travers les
frontières, pour simplifier), si on arrive à retomber sur ses p ieds par
une fonction comme SansVirgule, a fortiori il devrait y avoir moyen
autrement si ceci ne s'applique pas.

J'en reste à des généralités puisqu'on parle de gé néralités. Pour faire
tourner une application, il n'y a pas à tortiller, il faut faire des
tests. Et si on voit qu'à un endroit on a une donnée pas dans l e format
attendu, c'est là qu'on convertit. Au demeurant, j'ai bien l'impress ion
que le succès du pack Office est dû pour bonne partie au fait q ue ce
problème se pose de façon beaucoup moins aiguë qu'avec les produits
précédents, du fait de conversions implicites et automatiques d ans la
plupart des cas.

[HS] Pour les développements sur la plateforme .Net Microsoft a pris le
parti d'en revenir à des données très typées, ce qui veut dire qu'une
erreur de type pardonnera moins, l'expérience montrera comment s'en
sortent les débutants, mais ça devrait être gérable c ar en général les
messages d'erreur sont assez explicites sur cette plateforme.
Avatar
Blaise Cacramp
Bonjour ou bonsoir, selon.

En interne, VBA utilise le point comme séparateur décimal : En programmation
la norme est anglo-saxonne

Une procédure telle que

Private Sub Texte0_Click()
Texte0.Text = Sin(20) * 2.5
End Sub

utilisera le point comme séparateur décimal en interne et la virgule ou
autre paramètre régional à l'affichage dans la zone de texte ou ailleurs.

Et inversement.

Attention pour la préparation d'une string SQL, point de virgules ( mais
bien un point-virgule final) et gare au format de date.

Cdt, Blaise
---- ---- ----


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

Bonjour Blaise,
Merci pour l'info. Je ne suis pas très rassuré ... en fait pour expliquer
un
peu j'ai 2 champs de données numériques, et j'ai un formulaire qui
m'affiche
sur une courbe 2 axes l'un des champs en fonction de l'autre. Je crois que
pour faire ça il y a du code VBA. Mes champs ayant comme séparateur
décimal
le point, l'affichage de la courbe ne fonctionne que si je change mes
paramètres régionaux. J'aurais espéré qu'en utilisant Replace (blabla)
dans
le code VBA ça pourrait marcher sans que j'aie à modifier mes paramètres
régionaux, mais là tu me mets le doute.
Merci dans tous les cas,


"Blaise Cacramp" a écrit :

Bjr,

Pour VBA, je crains que ce soit négatif...
--
Cdt

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

> Merci Gloops et Fabien ça marche déja pour une somme simple. J'imagine
> que
> je
> peux faire pareil aussi avec du code VBA donc problème résolu.
>
> "Gloops" a écrit :
>
>> Bonjour,
>>
>> Fabien a écrit, le 27/08/2008 10:42 :
>> > Salut,
>> > Pour l'affichage un simple replace (Me.leChamp,",",".") devrait
>> > suffire.
>> > @+
>>
>> Absolument,
>>
>> Dans une base j'ai même eu l'occasion de m'en servir si souvent que
>> j'ai
>> créé pour ça une fonction "SansVirgule". A part la gestion de la
>> valeur
>> nul, ça fait pile la même chose.
>>
>> ça n'invente pas l'eau chaude, mais quand on parcourt un code avec un
>> bon paquet de lignes, je trouve qu'on percute plus vite (on comprend
>> plus vite de quoi il retourne) en voyant SansVirgule qu'en voyant
>> Replace et en comptant les guillemets et les virgules.
>>
>> Pour gérer le nul je me suis contenté d'entrer un variant, je n'ai pas
>> encore poussé le bouchon jusqu'à créer un module de classe acceptant
>> une
>> valeur chaîne de caractères ou nul -ce qui d'ailleurs sous Access est
>> un
>> petit peu plus lourd à l'appel car il faut déclarer un objet de cette
>> classe dans chaque module appelant, et l'initialiser juste avant
>> l'appel. Mais ce dernier paragraphe n'est dans le sujet qu'en
>> cherchant
>> à être vraiment très rigoureux.
>>
>>







Avatar
Gloops
C'est ma foi vrai que tu le dis bien plus clairement que moi :)

_____________________________________________
Blaise Cacramp a écrit, le 31/08/2008 18:14 :
Bonjour ou bonsoir, selon.

En interne, VBA utilise le point comme séparateur décimal : En prog rammation
la norme est anglo-saxonne

Une procédure telle que

Private Sub Texte0_Click()
Texte0.Text = Sin(20) * 2.5
End Sub

utilisera le point comme séparateur décimal en interne et la virgul e ou
autre paramètre régional à l'affichage dans la zone de texte ou a illeurs.

Et inversement.

Attention pour la préparation d'une string SQL, point de virgules ( m ais
bien un point-virgule final) et gare au format de date.



Surtout dans une application internationale ; m'enfin comme ce n'est pas
le sujet aujourd'hui, soyons brefs.
1 2