formule matricielle et plage dynamique

teter

XLDnaute Junior
Bonjour le forum,

Me voici avec un problème qui me bloque depuis ce matin. J'ai inséré dans une matrice via l'enregistreur de macros une formule matricielle qui fait référence à deux ranges, dont l'un se trouve sur un autre onglet.
Le problème vient du fait que les références de cellules sont relatives (RxCy) et surtout fixes alors que mes ranges sont amenés à évoluer.
J'ai donc essayé de les dynamiser en remplacant les références de cellules par des variables, j'ai également essayé des les transfomer via Application.ConvertFormula mais je n'obtiens pas de résultat convaincant ou accepté. De plus, la conversion du range se trouvant sur l'autre onglet, qui fonctionne quand-même me renvoie le nom du fichier : '[TEST.xls]CORR'!C3:S19, alors que je ne veux que CORR'!C3:S19.

le code VBA non dynamique :
range("G5:W25").FormulaArray = _
"=CORR!R[-2]C[-4]:R[18]C[16]*(TRANSPOSE(RC[-2]:R[20]C[-2])*RC[-2]:R[20]C[-2])"

son résultat dans chaque cellule de la matrice :
{=CORR!C3:W23*(TRANSPOSE(E5:E25)*E5:E25)}

ma tentative uniquement sur l'expression CORR!C3:W23 :
Dim corrmtx As range
Set corrmtx = Sheets("CORR").range("C3:W23") (ici non dynamique ici pour le test)
strFormula = "CORR!" & corrmtx.Address
range("G5:W21").FormulaArray = Application.ConvertFormula(strFormula, FromReferenceStyle:=xlA1, ToReferenceStyle:=xlA1, ToAbsolute:=xlRelative)

et le résultat : pas de signe égal, ni les parenthèses de la formule matricielle et nom du fichier dont je ne pense pas avoir besoin :
'[TEST.xls]CORR'!C3:S19

Une ch'tite idée ?

Merci d'avance et bon WE

Cordialement
 

teter

XLDnaute Junior
Re : formule matricielle et plage dynamique

Bonjour,

Etant donné le succès rencontré par ma question :), j'ai tenté de trouver une solution en contournant le problème.
Au cas où ça puisse aider quelqu'un j'attache mon fichier : il s'agit d'une matrice de variance-covariance calculée depuis une matrice de corrélation, basée elle sur des rendements journaliers de titres.
Pour dynamiser les formules matricielles de ma macro, j'établis mes formules avec des données fixes, puis je remplace les coordonnées des cellules concernées par celles dont j'ai mémorisé les adresses dans la macro.
Si le nombre de données augmente ou diminue, la macro établit les bons ranges des formules matricielles.

C'est une solution de substitution mais bon, ça fonctionne

Voila pour ma modeste contribution.

Cordialement

Teter
 

Pièces jointes

  • TEST_matrices.zip
    36.7 KB · Affichages: 44

Statistiques des forums

Discussions
312 347
Messages
2 087 501
Membres
103 563
dernier inscrit
samyezzehar