Formule matricielle : impossible de définir la propriété FormulaArray de la classe Range.
Bonjour à toutes et tous,
Je me présente, Florent :)
J'ai la formule suivante qui doit être matricielle :
Code:
{=SI(E16="";"";SI(ESTNA(INDEX(INDIRECT("'"&"Absences_"&Récap!$Q$1&"'"&"!U2:U300");EQUIV(N16&$A$2;INDIRECT("'"&"Absences_"&Récap!$Q$1&"'"&"!A2:A300")&INDIRECT("'"&"Absences_"&Récap!$Q$1&"'"&"!N2:N300");0)));"";INDEX(INDIRECT("'"&"Absences_"&Récap!$Q$1&"'"&"!U2:U300");EQUIV(N16&$A$2;INDIRECT("'"&"Absences_"&Récap!$Q$1&"'"&"!A2:A300")&INDIRECT("'"&"Absences_"&Récap!$Q$1&"'"&"!N2:N300");0))))}
N'étant pas un expert en macro, je la transforme via l'enregistreur de macro et il me donne ceci (le "Selection" est remplacé par Range("O4"):
Code:
1 2 3
| Selection.FormulaArray = _
"=IF(RC[-10]="""","""",IF(ISNA(INDEX(INDIRECT(""'""&""Absences_""&Récap!R1C17&""'""&""!U2:U300""),MATCH(RC[-1]&R2C1,INDIRECT(""'""&""Absences_""&Récap!R1C17&""'""&""!A2:A300"")&INDIRECT(""'""&""Absences_""&Récap!R1C17&""'""&""!N2:N300""),0))),"""",INDEX(INDIRECT(""'""&""Absences_""&Récap!R1C17&""'""&""!U2:U300""),MATCH(RC[-1]&R2C1,INDIRECT(""'""&""Absences_""&Récap!R" & _
"""&""!A2:A300"")&INDIRECT(""'""&""Absences_""&Récap!R1C17&""'""&""!N2:N300""),0))))" |
Il me donne Erreur d'exécution '1004' :
Impossible de définir la propriété FormulaArray de la classe Range.
En rouge, j'ai vu qu'Excel m'a fait un truc étrange puisque je suis censé avoir, je suppose Récap!R1C17 au lieu de Récap!R. J'ai bien compris que l'espace + "_" était pour passer à la ligne suivante mais lorsque j'essaie de compléter et de passer à la ligne suivante, j'ai une erreur de compilation et pourtant, il me semble faire attention à ne pas scinder des "".
Pourriez-vous, svp, m'aider à voir plus clair?
Merci d'avance,
Bien à vous,
Florent.
Le code VBA "Replace" ne remplace aucun texte dans FormulaArray
Citation:
Envoyé par
joe.levrai
Bonjour,
256 caractères est la limite de FormulaArray
pour la dépasser, on peut ruser
de mon côté, j'injecte via le FormulaArray le "squelette" de la formule avec des briques de remplacement
ensuite, je fais mes remplacement
exemple : j'ai une formule d'environ 500 caractères, où j'ai découpé 6 briques de remplacement
Code:
1 2 3 4 5 6 7 8 9
| With Feuille_Masque.Cells(1, 15)
.FormulaArray = "=AVERAGE(IF((1111)*(2222)*(3333)*(4444)*(5555),6666))"
.Replace 1111, Raccourci_BDD & "[DATE]=" & CDbl(CDate(LesJours(i))), lookat:=xlPart
.Replace 2222, Raccourci_BDD & "[MASTER_DOMAINE]=""" & LePartenaire(2) & """", lookat:=xlPart
.Replace 3333, Raccourci_BDD & "[FLUX]=""STOCK""", lookat:=xlPart
.Replace 4444, Raccourci_BDD & "[ITEM]<>""TRANS RC""", lookat:=xlPart
.Replace 5555, Raccourci_BDD & "[ITEM]<>""FAX""", lookat:=xlPart
.Replace 6666, Raccourci_BDD & "[PLUS_ANCIEN]", lookat:=xlPart
End With |
ainsi, après les remplacements, je retrouve ma formule matricielle intégrale
Bonjour, J'ai essayé l'astuce ci-dessus.
Ci suivant mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Sub test()
Dim ligneMois
ligneMois = "(IFERROR(MONTH('Rest. (Total)'!R1C1:R999C1),0)=MONTH(R1C9))*(IFERROR(YEAR('Rest. (Total)'!R1C1:R999C1),0)=YEAR(R1C9))*ROW('Rest. (Total)'!R1:R999)"
With Range("J1")
.FormulaArray = _
"=IFERROR(IF(SUMPRODUCT(1111)=0,0," & Chr(10) & _
"INDEX('Rest. (Total)'!R1C1:R999C5,SUMPRODUCT(1111)" & _
",COLUMN('Rest. (Total)'!R1C1))),0)" & _
""
.Replace What:="1111", Replacement:=ligneMois, LookAt:=xlPart
End With
End Sub |
Tout se déroule bien jusqu'à la fin sans message d'erreur, mais le remplacement n'a pas été effectué tel que demandé.
Pouvez vous m'aider svp?
D'avance un grand MERCI à tous qui prendront un temps pour mon problème!