Separateur decimal

ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 - 28 sept. 2006 à 16:50
ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 - 29 sept. 2006 à 17:17
bjr
je suis confronté a un pb du au separateur decimal;
dans un form l'utilisateur saisit une qté puis un prix (que je lui demande de saisir avec un point)
et bien sur un total est calculé,
et ce dans une base access.
dans cette base , la qté et le prix sont en format texte et le total en numérique ( si j'ai fait comme cela c'est que sinon dans la form  il m'arrondissait a l'unité superieure....)
bon, dans les options regionales de windows xp fam je suis en symbole décimal avec le point,
je mets mon prog sur la becane d'a coté qui lui est en symbole regional en virgule et paf
comme j'ai demandé de saisir avec un point il me met "type incompatible".....
comment contourner cela pour que , que se soit en virgule ou en point
la qte multipliée par le prix (+ eventuelement le port) donne un total  .....
là je vois pas ;;;;;
merci d'avance
patrik

6 réponses

alosamoelle Messages postés 129 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 23 mai 2009 1
28 sept. 2006 à 17:57
Tu peux essayer cela, ce n'est pas tres "propre" mais cela marche. En cas d'erreur tu change les points par des virgules
on error goto Changepoin

function Change point()

nouveau = Replace(chiffre, ",", ".")
end function

Bien sur a adapter a ton appli, bon courage
Je sais que tu peux changer le parametre regionale mais le probleme c'est qu'il faut tout remettre en place sinon les autres appli ne mmarcheront plus sur la becane
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 sept. 2006 à 18:06
Ou mieux, détecter ce qu'il faut utiliser.

If  Mid$(Cstr(1/2),2,1) = ",' Then
    nouveau = Replace(chiffre, ".", ",") ' Virgule : Replace les points par des virgules
Else
    nouveau = Replace(chiffre, ",", ".") ' Point : Replace les virgules par des points
End If

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 1
28 sept. 2006 à 18:18
merci je vais essayer....


patrik
0
ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 1
28 sept. 2006 à 18:42
ben ca a l'air de marcher, casy
du moins sur ma becane il faut que j'essaye sur la testeuse
maintenant mon total
quand je valide ma fiche , il ne me prend pas la virgule et ce qu'il y a derriere
si résultat 32.40   il m'affiche  32
si resultat  32.60  il m'affiche  33

ma formule est la suivante:
dans

Private Sub CmdValider_Click()
Dim I As Integer
Dim x As Double, y As Double, z As Double, W As Double
Dim sommecolonne As Integer
Dim m As Integer




If txtFields(6).Text "" Then txtFields(6).Text "0"If txtFields(7).Text "" Then txtFields(7).Text "0"If Frmpiece.txtFields(3) "" Then Frmpiece.txtFields(3) "0"If Frmpiece.txtFields(9) "" Then Frmpiece.txtFields(9) "..."





  On Error GoTo UpdateErr
 
  x = Frmpiece.txtFields(3)
  y = Frmpiece.txtFields(6).Text
  z = Frmpiece.txtFields(7).Text
  W = (x * y) + z
  Frmpiece.txtFields(8) = W 'Format(W, "#0.00")
  x = Frmpiece.txtFields(3)                        ' c'est la qté
  y = Frmpiece.txtFields(6).Text                 ' c'est le prix
  z = Frmpiece.txtFields(7).Text                  ' c'est le port
  W = (x * y) + z
  Frmpiece.txtFields(8) = Format(W, "#0.00")    'c'est le total



etc.....
merci de l'aide
patrik
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
29 sept. 2006 à 11:17
Salut, pour traiter le prob des séparateurs décimaux, j'ai un bout de code, si ça peut t'aider :

'déclaration des variables au niveau général
Public SeparateurDecimalOui As String
Public SeparateurDecimalNon As String


  'initialisation des variables
    If InStr(CStr(3 / 2), ".") Then
      SeparateurDecimalOui = "."
      SeparateurDecimalNon = ","
    Else
      SeparateurDecimalOui = ","
      SeparateurDecimalNon = "."
    End If
  
  'quand tu en as besoin
  If Not IsNumeric(TonNombre) then
   TonNombre = Replace(TonNombre, SeparateurDecimalNon, SeparateurDecimalOui)
  End If
  
0
ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 1
29 sept. 2006 à 17:17
CASY: ca ne marche pas....
en fait le probleme est que si les options regionales /symbole décimal de la machine ou est installé le prog est sur le point, alors pas de pb,
mais si il est sur la virgule et bien au lieu de me mettre 12.45 il me le transforme en 1245 .
(j'ai mis le format ds la bd access a monetaire pour le prix,port et total)
ce que je souhaite et on peut plus simple,
dans ma form et surtout sur n'importe quelle machine, le prix X qte + port = TOTAL
la formule je sais la faire , mais comment dois-je formater ces parametres dans ma bd , et dans le code pour que si on saisi:
12.00 X 2 = 24.00
+ port 6.99
=total 30.99
et ce SUR TOUTES LES MACHINES.....
ca me prend la tete.....
merci
patrik
0
Rejoignez-nous