j'ai des machine paramétré avec le '.' en séparateur décimal, d'autre avec une ','.
J'ai aussi des données entré avec des '.' ou des ','.
j'ai donc crée un fonction de conversion en double qui s'affranchit de se séparateur.
attention cette fonction ne gère pas le séparateur des milliers.
Source / Exemple :
' Fonction de conversion en double personnalisé
Public Function MyCDbl(str As String) As Double
'on remplace le . ou la , par le separateur decimal en vigueur
Dim strt As String
Dim Sep As String
Dim i As Integer
If IsNumeric(str) Then
'La machine sait déjà le convertir alors go !!
MyCDbl = CDbl(str)
Else
'je trouve le séparateur de la machine
Sep = Mid(Format(1 / 2, ""), 2, 1)
'je recherche le séparateur dans la chaine
Select Case Sep
Case "."
i = InStr(1, str, ",")
Case ","
i = InStr(1, str, ".")
End Select
If i = 0 Then
'il n y a pas de séparateur dans la chaine , ce n'est donc pas un nombre
MyCDbl = Empty
Else
strt = Mid(str, 1, i - 1) & Sep & Mid(str, i + 1)
' on a remplacer le séparateur décimal
If IsNumeric(strt) Then
'gagné , c'est un nombre !!!
MyCDbl = CDbl(strt)
Else
'on revoit empty, je ne sais pas le convertir
MyCDbl = Empty
End If
End If
End If
End Function
Conclusion :
ce code me sert deja pas mal ...
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.