VBA : Transformer du texte en numérique

Cette petite fonction sans prétention permet de transformer une chaine de caractères 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.

Bonne utilisation !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *