MS ACCESS : Transformer du texte en numérique

Cette petite fonction sans prétention permet de transformer une chaine de caractère en valeur numérique. « Quoi de nouveau ! » me direz-vous. A la différence des fonctions natives de types Val(), CDbl() et autre, cette fonction épure tous les caractères non numérique en tenant compte du signe et du séparateur décimal.

Function fSupprimerAlpha(mValeur As Variant) As Variant
'------------------------------------------------------
' Procedure    : fSupprimerAlpha / Function
' Author       : fabrice CONSTANS (MVP)
' Date         : 03/06/2012
' Modified     :
' Description  : épure une chaine de caractère pour
                    retourner une valeur numérique
'                tient compte du sép. décimal et des + et -
' Parameters   : mValeur contient la valeur à transformer
' Return Value : retourne une valeur numérique valide
'------------------------------------------------------

Dim i As Integer

If IsNull(mValeur) Or Len(mValeur) = 0 Then
   fSupprimerAlpha = Null
   Exit Function
End If
' à inverser suivant le type de séparateur utilisé
mValeur = Replace(mValeur, ",", ".")

' supprime tous les caracteres alpha 
For i = 1 To Len(mValeur)
    ' tout ce qui n'est pas numérique sauf +,- et sepérateur dec.
    If Not IsNumeric(Mid(mValeur, i, 1)) And _
       Not Mid(mValeur, i, 1) Like "*[,,.]*" And _
       Not Mid(mValeur, i, 1) Like "*[+,-]*" Then
       ' remplace par un espace
       mValeur = Replace(mValeur, Mid(mValeur, i, 1), " ")

    End If

Next
' renvoi la nouvelle valeur sans les espaces
fSupprimerAlpha = Replace(mValeur, " ", "")

End Function

Vous pouvez facilement y faire appel depuis une requête par exemple.