VB

Fermé
yasmina - 25 oct. 2008 à 00:02
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 25 oct. 2008 à 00:43
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
A voir également:

1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 oct. 2008 à 00:43
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