limite de la fonction SOMMEPROD

  • Initiateur de la discussion Initiateur de la discussion strawberry
  • Date de début Date de début

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 !

S

strawberry

Guest
Salut le forum !!

En consultant le forum, j'ai trouvé la réponse à ma question. La formule =SOMMEPROD(1/NB.SI(Plage;Plage)) marche super bien. Cependant, je pense qu'en raison de l'importance de la plage (+ 43000 lignes) que je dois traiter, mon fichier plante !!!
Avez vous un avis sur le pb ?
Merci d'avance,
Strawberry
 
Re : limite de la fonction SOMMEPROD

Bonsoir

Difficile de comprendre ce que tu cherches à obtenir !

La formule =SOMMEPROD(1/NB.SI(Plage;Plage)) est étrange. Elle aboutit normalement au même résultat que nb(Plage)

Une explication complémentaire s'impose avec un bout de fichier si c'est possible.

Cordialement

Bernard
 
Re : limite de la fonction SOMMEPROD

Bonsoir Bernard,

Cette formule permet de donner le nombre d'éléments différents (et donc ne prend pas en compte les doublons et plus).

Notre ami souhaite faire un calcul sur 43000 lignes et il se trouve que cette fonction SOMMEPROD (même si elle ne demande pas de validation matricielle) est une formule matricielle gourmande en temps de calcul.

Sur 43000 lignes, il est évident que le temps de calcul peut être ... très important, au point que Excel ou le micro déclare forfait.

Je viens de tenter et effectivement il vaut mieux éviter.

Je pense que la solution est d'envisager un traitement VBA, mais là, je ne sais pas faire.

Bonne soirée à tous

@+

Edit : l'essai chez moi sur 43000 lignes (et avec une seule colonne de données) ne fait pas planter Excel. Mais toute modif de donnée déclenche des temps de calcul de plusieurs minutes et n'est donc guère exploitable.

@+
 
Dernière édition:
Re : limite de la fonction SOMMEPROD

Bonsoir,

Bonsoir, CBernardT
Bonsoir, Tibo

@ Tibo, j'ai fait le même essai que toi, sur 40 000 lignes => Ctrl + Alt + Suppr....

Ci joint une petite fonction personnalisée, qui met 1.2 secondes, pour 40 000 lignes, avec 26 441 valeurs différentes :

Code:
Function NbUnique(Plg As Range)
Dim Uniques As Object, Cel As Range
Set Uniques = CreateObject("Scripting.Dictionary")
For Each Cel In Plg
    If Not Uniques.Exists(Cel.Value) Then Uniques.Add Cel.Value, Cel.Value
Next Cel
NbUnique = Uniques.Count
End Function

et dans une cellule, entrer cette fonction :

Code:
=NbUnique(A1:A40000)

Pour remettre à jour la formule, une façon assez simple est de sélectionner la cellule contenant la formule, Appui sur F2, puis "Entrer"
 
Re : limite de la fonction SOMMEPROD

Bonsoir à tous,

Dans le même esprit que bh2, mais avec une collection :

Code:
Function Compte(plage As Range) As Long
Dim cel As Range, c As New Collection
On Error Resume Next
For Each cel In plage
c.Add cel, CStr(cel)
Next
Compte = c.Count [COLOR="Red"]'-1 'éventuellement s'il y a des cellules vides...[/COLOR]
End Function

Le temps de calcul pour 43000 cellules et 43000 valeurs différentes est aussi de l'ordre de la seconde.

A+
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

N
  • Question Question
Réponses
8
Affichages
1 K
E
Réponses
1
Affichages
1 K
C
Réponses
0
Affichages
2 K
ckman
C
R
Réponses
6
Affichages
3 K
G
  • Question Question
Réponses
3
Affichages
959
gagatetloulou
G
D
Réponses
1
Affichages
727
S
Réponses
12
Affichages
2 K
supernarvalot
S
Y
Réponses
6
Affichages
2 K
yichaam
Y
Retour