Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Comment améliorer Sommeprod()

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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)

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:
Re : Comment améliorer Sommeprod()

Bonsour®

Merci Jacques pour ce rappel à privilégier l'utilisation de ("scripting.dictionary")dans de nombreux cas matricielles.

pour info :
(merci Misange pour la "résurrection" du site de LL)

Ce lien n'existe plus

Ce lien n'existe plus
 
Re : Comment améliorer Sommeprod()

Bonjour,

SOMMEPROD étant une fonction faite avant tout pour faire la somme des produits, autant la comparer dans ce cadre.

Ci-joint 2 tests entre SOMMEPROD et 2 fonctions personnalisées utilisant Dictionary et la trame initiale de Jacques.

Attention toutefois à comparer ce qui est comparable : outre le fait qu'une fonction personnalisée bien construite sera généralement plus rapide qu'une fonction matricielle "généraliste" (puisque pensée et construite pour ce problème spécifique), le mode de validation de ces fonctions personnalisées (entrée de la formule en une seule fois dans l'ensemble de la plage d'un côté, validation de SOMMEPROD cellule par cellule de l'autre) ne permet pas à mon avis de jauger la vitesse de traitement de SOMMEPROD.

Constatons simplement que les fonctions personnalisées sont plus rapides et plus adaptées dans ce contexte précis.
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
494
Réponses
3
Affichages
513
Réponses
12
Affichages
556
Réponses
3
Affichages
680
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
827
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…