Forcer le "." point comme paramètre décimal dans les paramètres régionnaux ( ma solution)

Description

Il existait sur le site une source traitant de ce sujet qui avait même déclanshée pas mal de polémique. Elle avait l'avantage d'apporter pas mal de débat, solution avis sur la question. Malheureusement je viens de voir qu'elle a été désactivé par un ADMIN ! Pourqouoi ? pas d'infos c'est peut être un manque dans le site au lieu de mettre juste désactivé la raisson serait intéressante. La source s'appelait (TESTER SIMPLEMENT LA "," OU LE "." EN PARAMÈTRE REGIONAL http://www.vbfrance.com/code.aspx?id=32227 )

Enfin bref pour répondre à un problème récurent je poste ma solution à ce problème. C'est une solution un peu barbare qui consiste àa forcer le paramètre directement dans le registre. C'est pas propre mais efficace.

Le problème est le suivant dans les paramètres régionnaux sous windows tu peux fixer le format du symbol déciaml. En France c'est la virgule au US ou autre c'est le point. Le problème vient ensuite quand tu veux écrire ou relire un nonbre dans un fichier texte ou dans un controle. la conversion selon que tu as 0,2 ou 0.2 ne donnera pas la même chose. si tu es avec une virgule une fonction du type Val te retournera 0 de même l'écriture de 0.2 dans un fichier texte via une fonction comme format(MaValeurDouble,"0.000") ( pour écrire un nombre avec trois chiffres après la virgule te donnera 0,2 au lieu des 0.2 désirée.

Comme pour ma part toute mes applications utilise des format de type . avec séparateur décimal j'ai opté pour la solution radicale : Je force.

A l'ouverture du programme je test en regardant dans le registre le charactère (Y a plus simple voir autres sources sur le site ) si c'est pas le bon jécris le point et j'ouvre automatiquement le panneau des réglages régionnaux pour indiquer à l'utilisateur la modif. On est pas des bètes tout de même :)

Source / Exemple :


Private Sub Form_Load()
' test le charactere décimal
If test_decimal Then
    ' force le charactere à un point
    ' NE marche pas ...
    Call EcritureRegistre(HKEY_CURRENT_USER, "Control Panel\International", "sDecimal", REG_SZ, ".")
    Shell "rundll32 shell32,Control_RunDLL intl.cpl"    ' Regional setting
End If

End Sub

' test dans le registre le charactere de la décmal
Function test_decimal() As Boolean
Dim rc As Long
Dim SysDecimal As String
    

rc = GetKeyValue(HKEY_CURRENT_USER, "Control Panel\International", "sDecimal", SysDecimal)
If SysDecimal <> "," Then
    test_decimal = True
    MsgBox "Attention le caracthere décimal n'est pas un point"
Else
    test_decimal = False
End If

End Function

Conclusion :


Voilà vous pouvez Y aller de vos commentaires . Cette source est faites pour ca ...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.