Bonsoir,
Comment améliorer Sommeprod() lorsque cette fonction
- travaille sur des champs de taille importante
- est recopiée x1000 fois
Sur l'exemple en PJ, avec une fonction perso matricielle, on passe d'un temps de recalcul de 3 sec à 0,05 sec pour 4.000 lignes
=SOMMEPROD((dates=A2)*(numero=B2))
ou
=CombienFois(numero; dates)
JB
Formules Matricielles
Comment améliorer Sommeprod() lorsque cette fonction
- travaille sur des champs de taille importante
- est recopiée x1000 fois
Sur l'exemple en PJ, avec une fonction perso matricielle, on passe d'un temps de recalcul de 3 sec à 0,05 sec pour 4.000 lignes
=SOMMEPROD((dates=A2)*(numero=B2))
ou
=CombienFois(numero; dates)
Code:
Function CombienFois(champ, champcritere)
Application.Volatile
Set mondico = CreateObject("scripting.dictionary")
a = champ
b = champcritere
For i = 1 To UBound(a)
temp = a(i, 1) & " " & b(i, 1)
mondico(temp) = mondico(temp) + 1
Next i
Dim retour()
ReDim retour(LBound(b) To UBound(b))
For i = LBound(b) To UBound(b)
temp = a(i, 1) & " " & b(i, 1)
retour(i) = mondico(temp)
Next i
CombienFois = Application.Transpose(retour)
End Function
JB
Formules Matricielles
Pièces jointes
Dernière édition: