Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 VBA Matrice de Covariance tableau

  • Initiateur de la discussion Initiateur de la discussion james7734
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

james7734

XLDnaute Junior
Bonjour à tous,

Je possède un code VBA pour calculer une matrice de variance-covariance qui se lance grâce à un bouton. Le calcul se fait depuis les données dans l'onglet "Returns".
Cependant, je souhaite que mon code ne prenne pas en compte la colonne "A" de mon onglets "Returns".
J'ai essayer de remplacer les A2 par B2 mais j'ai une erreur!

VB:
tablo(i, j) = Application.Covar(.[A2].Offset(, i).Resize(n), .[A2].Offset(, j).Resize(n)) 'Calcul de la matrice synthétique

Je ne suis donc pas sur que c'est cela mais mon objectif est de ne pas prendre en compte la colonne A, autrement dit la colonne des dates.

Merci beaucoup de votre aide!
 

Pièces jointes

Solution
Bonjour James,
Ecrit comme ça, ça ne génère pas d'erreur :
VB:
Private Sub CommandButton1_Click()
Dim n%, d%, tablo#(), i%, j%

With Sheets("Returns")
  n = Application.Count(.Columns(1))    'nombre de valeurs étudiées par titre
  d = Application.CountA(.Rows(1)) - 1  'nombre de titres (dimensions du tableau)
  ReDim tablo(d - 1, d - 1)
  For i = 0 To d - 1
    For j = i To d - 1
      tablo(i, j) = Application.Covar(.[B2].Offset(, i).Resize(n), .[B2].Offset(, j).Resize(n)) 'Calcul de la matrice synthétique
      tablo(j, i) = tablo(i, j)
    Next
  Next
End With

Range("E5").Resize(d, d) = tablo 'Coller valeurs de la matrice synthétique

End Sub
Je pense que la matrice de réception doit être carré.
Bonjour James,
Ecrit comme ça, ça ne génère pas d'erreur :
VB:
Private Sub CommandButton1_Click()
Dim n%, d%, tablo#(), i%, j%

With Sheets("Returns")
  n = Application.Count(.Columns(1))    'nombre de valeurs étudiées par titre
  d = Application.CountA(.Rows(1)) - 1  'nombre de titres (dimensions du tableau)
  ReDim tablo(d - 1, d - 1)
  For i = 0 To d - 1
    For j = i To d - 1
      tablo(i, j) = Application.Covar(.[B2].Offset(, i).Resize(n), .[B2].Offset(, j).Resize(n)) 'Calcul de la matrice synthétique
      tablo(j, i) = tablo(i, j)
    Next
  Next
End With

Range("E5").Resize(d, d) = tablo 'Coller valeurs de la matrice synthétique

End Sub
Je pense que la matrice de réception doit être carré.
 
Bonjour,

Essaie :

VB:
Private Sub CommandButton1_Click()
Dim n%, d%, tablo#(), i%, j%

With Sheets("Returns")
  n = Application.Count(.Columns(1)) 'nombre de valeurs étudiées par titre
  d = Application.CountA(.Rows(1)) 'nombre de titres (dimensions du tableau)
  ReDim tablo(d - 2, d - 2)
  For i = 0 To d - 2
    For j = i To d - 2
      tablo(i, j) = Application.Covar(.[A2].Offset(, i).Resize(n), .[A2].Offset(, j).Resize(n)) 'Calcul de la matrice synthétique
      tablo(i, j) = Application.Covar(.[B2].Offset(, i).Resize(n), .[B2].Offset(, j).Resize(n))
      tablo(j, i) = tablo(i, j)
    Next
  Next
End With

Range("E5").Resize(d - 1, d - 1) = tablo 'Coller valeurs de la matrice synthétique

End Sub

Cordialement.

Daniel
 
Bonjour.
On peut aussi faire :
VB:
Private Sub CommandButton1_Click()
   Dim Rng As Range, AdrExt
   Set Rng = Feuil4.[A1].CurrentRegion
   Set Rng = Rng(2, 2).Resize(Rng.Rows.Count - 1, Rng.Columns.Count - 1)
   AdrExt = Rng.Address(True, True, xlR1C1, True)
   With Me.[E5].Resize(Rng.Rows.Count, Rng.Rows.Count)
      .FormulaR1C1 = "=COVAR(INDEX(" & AdrExt & ",0,ROW()-4),INDEX(" & AdrExt & ",0,COLUMN()-4))"
      .Value = .Value
      End With
   End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
82
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…