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
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