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 :

probleme incompatibilité de type appel de fonction


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 93
    Par défaut probleme incompatibilité de type appel de fonction
    Bonjour

    J'ai un petit problème, je fais appel à une fonction dans une fonction, mais arrivé à celle ci, elle ne se lance pas et me sort incompatiblité de type... J'ai bien vérifié si mes expressions étaient bien des nombres, et c'est bien le cas, j'ai pas de string..

    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
    Sub test()
     
    Dim base As Single, val As Double, dt_final As Date, couru As Double, duree As Single, cpn As Double
     
    dt_final = CDate("28/12/2022")
    couru = (Now() - CDate("28/12/2016")) / 365
    duree = Round((dt_final - CDate("28/12/2017")) / 365, 0)
    cpn = equiv_taux(0.034, 4)
    base = 1
     
    val = 119.215
     
    essaie = newton(0.034, cpn, 100, duree, couru, 1, val, 100)
     
     
     
    End Sub
    ici tout va bien

    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
    30
    31
    32
    33
    34
    Function testote(x0, cpn, remb, duree, couru, freq, val, price)
     
    Dim essai As Double, f As Double, f1 As Double
    Dim test As String
     
    test = ""
    i = 0
    f = 0
    f1 = 0
     
    Do
        f = price(cpn, remb, duree, couru, x0)
        f1 = deriv1(cpn, remb, duree, couru, rdmt)
        newton = x0 - f / f1
     
        essai = price(cpn, remb, duree, couru, newton)
     
        If val - essai < 0.00001 Then
            test = "ok"
        Else
            xo = newton
        End If
     
        i = i + 1
     
        If i > 1000 Then
            Exit Do
        End If
     
    Loop While test = "ok"
     
     
     
    End Function

    ça me bloque au niveau de f=price(), incompatibilité de type...je vous mets ma fonction price() :

    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
    Function price(cpn, remb, duree, couru, rdmt) As Double
     
    price = 0
    For i = 0 To duree
     
        If i = 0 Then
            price = cpn / ((cpn * couru) * (1 + rdmt) ^ (couru + 1))
        Else
            price = price + cpn / ((1 + rdmt) ^ (i + 1))
        End If
     
        If i = duree Then
     
            price = price + remb / ((1 + rdmt) ^ (duree + 1))
        End If
     
    Next i
     
    End Function

    si vous savez pourquoi ? Je pense bien que c'est surement une maladresse mais bon je trouve pas malheureusement...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cint(CDate("28/12/2017"))

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 93
    Par défaut
    non ma variable duree est bien "single" aprés... du coup je l'ai changé en déclaration en integer, c'était plus logique... mais le problème ne vient pas de là, j'ai quand même essayé, ça me prend même pas la variable en compte, ça bug direct "dépassement de capacité"...

    Merci pour votre temps

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    type tes variable!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
    Sub test()
    Function testote(x0 as ?, cpn as ?, remb as ?, duree as ?, couru as ?, freq as ?, valeur  as ?, price as ?) as ? 'Val est un fonction VBA ne pas nommer une variable avec!
    Function price(cpn, remb, duree, couru, rdmt) As Double

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 93
    Par défaut
    Bonjour


    Maintenant il s'attend à ce que ma fonction price soit un tableau ...Je vois vraiment pas en quoi ça le dérange de lancer une fonction...je vais essayer de limiter les variables au maximum

  6. #6
    Invité
    Invité(e)
    Par défaut
    mais avec le bon type de variable et ce pour toute les méthode!

    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
    Function price(cpn As Date, remb As String, duree As Boolean, couru As Integer, rdmt As Long) As Double 
    price = 0
    For I = 0 To duree
     
        If I = 0 Then
            price = cpn / ((cpn * couru) * (1 + rdmt) ^ (couru + 1))
        Else
            price = price + cpn / ((1 + rdmt) ^ (I + 1))
        End If
     
        If I = duree Then
     
            price = price + remb / ((1 + rdmt) ^ (duree + 1))
        End If
     
    Next I
     
    End Function

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 93
    Par défaut
    Désolé je n'ai pas précisé, c'est pas fonction price qui bloque, elle ne se lance même pas... ça bloque avant à la fonction testote, qui ne se lance pas parce qu'elle s'attend que la fonction soit un tableau... Je vais déclarer les variables pricipales en public pour voir..

  8. #8
    Invité
    Invité(e)
    Par défaut
    tu as écris ta fonction dans un module standard ou dans ThisWorkbook!

    si ell est tans ThisWorkbook c'est normal il faut quelle soit dans un module standard!
    Images attachées Images attachées  

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 93
    Par défaut
    oui c'était bien dans module...j'ai fait autrement au finale, j'ai mis ma boucle et mon test directement dans mon sub test et j'ai laissé ma fonction testo faire le calcul simple...

    Merci en tout cas pour votre temps

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

Discussions similaires

  1. [AC-2010] ¨Probleme Incompatibilité de type
    Par lavoyech dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/10/2014, 09h27
  2. [E-07] probleme incompatibilité de type textbox
    Par law56100 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/03/2009, 20h06
  3. Probleme lors de l'appel à une fonction
    Par jonnyboy dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/08/2007, 10h15
  4. probleme incompatibiliter de type
    Par popofpopof dans le forum VBA Access
    Réponses: 7
    Dernier message: 04/06/2007, 23h25
  5. Réponses: 8
    Dernier message: 13/08/2004, 13h32

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