Fonction VBA pour renvoyer une matrice de Covariance

Bonjour tout le monde,

J'ai cherché des réponses à mon problème sur tous les forums mais je n'ai rien trouvé, je viens donc vers vous aujourd'hui.

Voici mon problème : j'ai dans un classeur Excel une feuille avec des données (des rendements) (cette feuille est appelée 'Données') et je souhaite dans une autre feuille (nommée 'Gestion de Portefeuille') faire afficher la matrice de variance/covariance de ces données.

Tout ça grâce à une fonction VBA (consigne donnée donc je ne peut pas faire autrement) et rien d'autre !

Voici le code que j'ai écrit mais qui me renvoie l'erreur #VALEUR! quand je la rentre dans excel....

Avez vous des pistes ?

Merci de votre aide !!

Function cov(plage As Range)

End Function

Dim I As Integer
Dim J As Integer
Dim largeur As Integer
Dim plage_1 As Range
Dim plage_2 As Range

largeur = plage.Columns.Count
Dim Result As Integer

For I = 1 To largeur
    For J = 1 To largeur
        ReDim Preserve Result(1 To I)
        plage_1 = plage.Columns(I).Select
        plage_2 = plage.Columns(J).Select
            Result(I, J) = Application.WorksheetFunction.Covariance_S(plage_1, plage_2)
        Next J
Next I

cov = Result
End Function

bonjour,

une proposition de correction de ton code

Function cov(plage As Range)
    Dim I As Long
    Dim J As Long
    Dim largeur As Long
    Dim plage_1 As Range
    Dim plage_2 As Range
    Dim Result()

    largeur = plage.Columns.Count
    ReDim Result(1 To largeur, 1 To largeur)
    For I = 1 To largeur
        For J = 1 To largeur
            Set plage_1 = plage.Cells(I, 1).Resize(1, largeur)
            Set plage_2 = plage.Cells(1, J).Resize(largeur, 1)
            Result(I, J) = Application.WorksheetFunction.Covariance_S(plage_1, plage_2)
        Next J
    Next I

    cov = Result
End Function

Bonjour h2so4,

Merci infiniment pour votre réponse, ça marche super bien ! Mille fois merci !

Bonne journée !

Rechercher des sujets similaires à "fonction vba renvoyer matrice covariance"