Gestion des float : "," et "."

Gestion des float : "," et "." - VB/VBA/VBS - Programmation

Marsh Posté le 22-04-2003 à 11:04:42    

Lors d'une extraction, des variables de types 12.000 sont sorties d'une base
 
Je veux les utiliser comme des float, probleme, mon PC a comme séparateur ","
Dans l'enteprise le Control Panel est bloqué.
Donc je cherche la commande, macro éventuelle qui me permet de faire reconnaitre 1.000 (string) en 1 (variable integer ou decimale)
 
Merci aux Nurs, Drashes etc etc qui vondront bien m'aider...
Ralala ces stages où on nous mets sur VBA alors qu'on est pas spécialiste :p

Reply

Marsh Posté le 22-04-2003 à 11:04:42   

Reply

Marsh Posté le 22-04-2003 à 12:48:12    

Vous n'avez pas d'idée ce matin ? Je suis presque persuadé qu'il y a une commande... ou un NumberFormat spécifique... reste à trouver lequel

Reply

Marsh Posté le 22-04-2003 à 12:59:05    

Jamais trouvé.
 
J'utilise cette fonction (de merde :D)
 

Code :
  1. function doDouble(val as string) as Double
  2.    dim localSep
  3.    dim inputSep
  4.    localSep = mid(cstr(1.1), 2, 1)
  5.    if instr(val, "." ) > 0 then
  6.       inputSep = "."
  7.    elseif instr(val, "," ) > 0 then
  8.       inputSep = ","
  9.    else
  10.       inputSep = ""
  11.    end if
  12.    if inputSep <> "" then
  13.       doDouble = cdbl(replace(val, inputSep, localSep))
  14.    else
  15.       doDouble = cdbl(val)
  16.    end if
  17. end function


 
 
C pas terrible, mais j'ai rien trouvé de mieu :D

Reply

Marsh Posté le 22-04-2003 à 13:01:26    

Txs ! je m'étais codé une petite moulinette à partir des strings en attendant une commande VBA... Il n'y en a pas, je reste à ma moulinette !
 
:)
Ralala ce VBA/Excel :p

Reply

Marsh Posté le 24-04-2003 à 07:52:33    

Ton problème est que VB ne comprend que les expressions du genre "3.14" et non "3,14".  Si tu essayes de taper l'expression string "3.14" dans une variable de type Double, ça marchera.  Mais "3,14" générera une erreur.  Quand le cas se présente, il y a une manière courte de procéder:
 

Code :
  1. variable = CDbl(Replace("3,14", ",", "." ))


 
Dans mon boulot, je reçois jamais de nombre avec séparateur de milliers, et si tu en reçois, il faudra procéder de la même manière, mais pour les éliminer (donc remplacer par chaîne vide).


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 24-04-2003 à 11:27:24    

drasche a écrit :

Ton problème est que VB ne comprend que les expressions du genre "3.14" et non "3,14".  Si tu essayes de taper l'expression string "3.14" dans une variable de type Double, ça marchera.  Mais "3,14" générera une erreur.  Quand le cas se présente, il y a une manière courte de procéder:
 

Code :
  1. variable = CDbl(Replace("3,14", ",", "." ))


 
Dans mon boulot, je reçois jamais de nombre avec séparateur de milliers, et si tu en reçois, il faudra procéder de la même manière, mais pour les éliminer (donc remplacer par chaîne vide).


Bah nan, le problème justement, c'est que si c'est du VBA (et non VB) le séparateur reconnu lors de l'interprétation des chaînes est dépendant des paramètres de l'utilisateur.
 
Autrement dis, si tu t'amuse à mettre "@" comme sépartateur de décimale dans tes paramètres régionnaux, ben ton VBA, il n'acceptera que "3@14", et non "3,14" ni "3.14" (par contre, il acceptera 3.14 :pt1cable:
 
Du coup ma fonction me semble la plus correcte, puisqu'elle permet de s'en sortir à coup sûr dans 100% des cas, même si l'utilisateur est un débile profonds qui utilise n'importe quoi.

Reply

Marsh Posté le 24-04-2003 à 12:27:22    

déformation professionnelle, je suis sur le même projet depuis 4 ans et le séparateur décimal ne peut strictement être que la virgule dans notre configuration  :pt1cable:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed