IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème avec la fonction Val


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 36
    Points : 32
    Points
    32
    Par défaut Problème avec la fonction Val
    Bonjour j ai crreer une fonction en l occurrence celle ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Function stkr(code As String) As Variant
    Dim y, z As Variant
     
    If code Like "*Capspread*" Then
    z = Split(code, " ")
    y = Split(z(2), "/")
     If z(2) Like "*%*" Then
    stkr = Abs(Val(y(0)) - Val(y(1))) * 100
    Else: stkr = Abs(Val(y(0)) - Val(y(1)))
    End If
    ElseIf code Like "*Floorspread*" Then
    z = Split(code, " ")
    y = Split(z(2), "/")
     If z(2) Like "*%*" Then
    stkr = -Abs(Val(y(0)) - Val(y(1))) * 100
    Else: stkr = -Abs(Val(y(0)) - Val(y(1)))
    End If
    Else: stkr = " "
    End If
    End Function
     
     
    Sub teststkr()
    Dim code As String
    code = "3m Floorspread 2/2.5% 30s2s  4.5/ "
    MsgBox "la valeur cherchee vaut " & stkr(code)
    End Sub
    *

    totoufois apres m y etre penche je pense que l erreur provient des lignes 7 et 14 donc ds le cas ou y a un % dans mon code j ai l impression que la fonction val l interprete mal , j aimerais savoir comment reparer cettte erreur ou au moins comprendre ce que mon code a .

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour, test ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Function stkr(code As String) As Variant
    Dim y, z As Variant
     
    If code Like "*Capspread*" Then
    z = Split(code, " ")
    y = Split(z(2), "/")
     If z(2) Like "*%*" Then
    stkr = Abs(ConvertNumérique(y(0)) - ConvertNumérique(y(1))) * 100
    Else: stkr = Abs(ConvertNumérique(y(0)) - ConvertNumérique(y(1)))
    End If
    ElseIf code Like "*Floorspread*" Then
    z = Split(code, " ")
    y = Split(z(2), "/")
     If z(2) Like "*%*" Then
    stkr = -Abs(ConvertNumérique(y(0)) - ConvertNumérique(y(1))) * 100
    Else: stkr = -Abs(ConvertNumérique(y(0)) - ConvertNumérique(y(1)))
    End If
    Else: stkr = " "
    End If
    End Function
     
    Function ConvertNumérique(v) As Double
    Dim N
    N = Replace(v, "%", "")
    N = Replace(N, ",", ".")
    If IsNumeric(N) Then ConvertNumérique = N: Exit Function
    N = Replace(N, ".", ",")
    If IsNumeric(N) Then ConvertNumérique = N: Exit Function
    End Function

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 36
    Points : 32
    Points
    32
    Par défaut
    Bonjour merci pour votre aide effectivement passer par une fonction que me convertit numeriquement mes donnees de mon tableau c est une bonne idee pour contourner l erreur . merci pour votre aide .
    Toutefois juste par simple curiosite , quesqui clochait au juste au niveau de l interpretation de la fonction val?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Val retourne du texte au format double.
    le problème déjà le % qui interdit la conversion.
    de plus le caractère des décimale.
    en vb [.] Windows option régionale [,] val("0,10")=0 val("0.10")=0,10 (Double)

    hors si la valeur est 0,10 elle devient "0,10" avec le Val("0,10") =0
    val(replace("" & 0,10,",","."))=0,10

    m'a fonction supprime le "%".
    puis test si numérique "0.10" Windows option régionale si ok retourne sous forme double
    puis test si numérique "0,10" Windows option régionale si ok retourne sous forme double
    si ko dans les 2 cas retourne 0

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec la fonction Val()
    Par RenaudM dans le forum Langage
    Réponses: 4
    Dernier message: 06/08/2012, 17h37
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 21h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 14h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 13h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo