VB

yasmina -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,
svp je vx comprendre un proramme ....
g pa compris cette fonction ..
Function value(text As String) As Double
pos = InStr(text, ",")
If (pos > 0) Then
Mid(text, pos) = "."
End If
value = Val(text)
End Function
merci
Configuration: Windows Vista
Internet Explorer 7.0

1 réponse

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Cette fonction reçoit en paramètre d'entrée txt de type string (alphanumérique) certainement saisie par l'utilisateur dans un textbox et retourne un Double (nombre décimal).

    InStr(text, ",") renvoie la position du caractère "," dans la chaine de caractère "text" ou 0 si elle ne trouve pas le caractère (stocké dans la variable "pos").

    Si "pos" est supérieur à 0 alors on positionne un "." à l'emplacement trouvé : Mid(text, pos) = "."

    Ensuite la fonction renvoie la valeur de "text" en double.

    On peut également faire :
    Function value(text As String) As Double
    
        text = Replace(text, ",", ".")
        value = Val(text)
        
    End Function

    Ce qui revient strictement à la même chose.

    S'il on veut être puriste on doit même s'assurer que la valeur passée en paramètre est bien de type numérique, pour éviter de faire planter l'appli en d'une erreur de saisie :
    Function value(text As String) As Double
    
        If IsNumeric(text) Then
            text = Replace(text, ",", ".")
            value = Val(text)
        Else
            MsgBox "La valeur n'est pas de type numérique", vbExclamation, "Erreur de saisie"
            Exit Function
        End If
        
    End Function

    Bonne continuation

    ;o)

    Polux

    -1