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 :

Incompatibilité de type [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut Incompatibilité de type
    Bonsoir à tous,

    Ca doit bien faire une heure que je tente de manipuler le code dans tous les sens mais je n'arrive pas à résoudre ce problème. J'imagine que ça se joue à un détail

    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 fnAlpha(r As Variant, rm As Variant, r0 As Variant) As Variant
    
    Dim i, j, nb, observ, tai As Integer
    Dim err, beta() As Variant
    Dim moy, ET As Double
    
    Set ws = ThisWorkbook.Worksheets("titres")
    Set wer = ThisWorkbook.Worksheets("er")
    
    nb = ws.Cells(Rows.Count, 1).End(xlUp).Row - 1
    observ = wer.Cells(Rows.Count, 2).End(xlUp).Row - 1
    
    ReDim beta(1, 1)
    beta = WorksheetFunction.LinEst(r, rm)
    
    tai = UBound(r, 1)
    
    
    
    ReDim err(tai, 1)
    
    For i = 1 To tai
    
    err(i, 1) = r(i, 1) - (r0(i, 1) - beta * (rm(i, 1) - r0(i, 1)))
    Next i
    moy = WorksheetFunction.Average(err)
    ET = WorksheetFunction.stdev(err)
    fnAlpha = Array(moy, ET)
    End Function
    La ligne "err(i,1)..." m'annonce une incompatibilité de type, certainement du au calcul du "Beta" malheureusement je n'arrive pas à sortir ce problème.

    Pouvez vous me dire ou ça coince ?

    Merci d'avance

    Cordialement

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ReDim Beta(1, 1)
    '....
    Err(i, 1) = R(i, 1) - (R0(i, 1) - Beta * (Rm(i, 1) - R0(i, 1)))
    '...
    Beta est redimensionnée comme tableau, alors que tu multiplie ce tableau avec des valeurs.

    PS: déclarer quasi toutes les variables comme des variants n'est pas une solution optimale

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    beta = WorksheetFunction.LinEst(r, rm)
    Même en posant seulement beta comme si dessus (sans dimensionner) j'obtiens une erreur d'incompatibilité sur la même ligne.

    Merci pour cette réponse rapide malgré tout

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Ton Beta est un tableau Beta(1) et Beta(2) (Équation ax+b: a=Beta(1),b=Beta(2) d'interpolation)
    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
    Function fnAlpha(R As Variant, Rm As Variant, R0 As Variant) As Variant
    Dim i As Integer, j As Integer, Tai As Integer
    Dim Moy As Double, ET As Double
    Dim Nb As Long, Observ As Long
    Dim Ws As Worksheet
    Dim Err(), Beta()
     
    Set Ws = ThisWorkbook.Worksheets("titres")
    Nb = Ws.Cells(Ws.Rows.Count, 1).End(xlUp).Row - 1
    Set Ws = ThisWorkbook.Worksheets("er")
    Observ = Ws.Cells(Ws.Rows.Count, 2).End(xlUp).Row - 1
    Set Ws = Nothing
     
    ReDim Beta(1 To 2)
    Beta = Application.WorksheetFunction.LinEst(R, Rm)
    Tai = UBound(R, 1)
    ReDim Err(1 To Tai, 1 To 1)
    For i = 1 To Tai
        Err(i, 1) = R(i, 1) - R0(i, 1) + Beta(1) * (Rm(i, 1) - R0(i, 1))
    Next i
    Moy = Application.WorksheetFunction.Average(Err)
    ET = Application.WorksheetFunction.StDev(Err)
    fnAlpha = Array(Moy, ET)
    End Function

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    J'crois avoir pigé où étais le soucis.

    Merci pour ton aide

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

Discussions similaires

  1. Incompatibilité de type ListBox
    Par priest69 dans le forum Access
    Réponses: 1
    Dernier message: 16/11/2005, 11h19
  2. Message incompatibilité de type
    Par Daniel MOREAU dans le forum Access
    Réponses: 5
    Dernier message: 10/10/2005, 20h57
  3. incompatibilité de type
    Par zooffy dans le forum Access
    Réponses: 2
    Dernier message: 13/06/2005, 15h12
  4. Incompatibilité de types dans un formulaire
    Par ahage4x4 dans le forum ASP
    Réponses: 3
    Dernier message: 03/05/2005, 15h39
  5. [XSD] Incompatibilité des types xs:ID et xs:IDREF ?
    Par Cpt.FLAM dans le forum Valider
    Réponses: 6
    Dernier message: 08/04/2005, 14h54

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