KTM
XLDnaute Impliqué
Bonsoir chers tous
A l'aide de la macro ci dessous j'insère en colonne P une formule matricielle contenant la fonction INDIRECT.
Mais il se trouve que ma macro est extrêmement lente et Il m'a été recommandé de réécrire ma formule en évitant la fonction INDIRECT.
j'ai essayé d'adapter un exemple avec la macro suivante mais je me mélange un peu les pédales .
Je vous prie de bien vouloir me corriger .Merci
A l'aide de la macro ci dessous j'insère en colonne P une formule matricielle contenant la fonction INDIRECT.
VB:
Sub Formule1()
Dim dl As Long
With Sheets("Grille_de_Disp")
dl = .Range("A" & Rows.Count).End(xlUp).Row + 1
.[Q11] = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("P2").FormulaArray = _
"=MAX((R2C1:INDIRECT(""$A$""&R11C[1])=RC[-15])*(R2C2:INDIRECT(""$B$""&R11C[1])=RC[-14])*(R2C3:INDIRECT(""$C$""&R11C[1])=RC[-13])*(R2C11:INDIRECT(""$K$""&R11C[1])))"
.Range("P2").AutoFill Destination:=.Range("P2:P" & .Range("A" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
End With
End Sub
Mais il se trouve que ma macro est extrêmement lente et Il m'a été recommandé de réécrire ma formule en évitant la fonction INDIRECT.
j'ai essayé d'adapter un exemple avec la macro suivante mais je me mélange un peu les pédales .
Je vous prie de bien vouloir me corriger .Merci
Code:
Sub Formule2()
Dim dl As Long
With Sheets("Grille_de_Disp")
dl = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("P2").FormulaArray = "=MAX("&"($A$2:$A$" & dl &")=A2)"&"*"&"($B$2:$B$" & dl &")=B2)"&"*"&"($C$2:$C$" & dl & ")=C2)"&"*"&"($K$2:$K$" & dl)"
.Range("P2").AutoFill Destination:=.Range("P2:P" & .Range("A" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault
End With
End Sub