Calcul extremement long

alcalzone

XLDnaute Occasionnel
Bonsoir à tous,

Je sollicite une fois de plus votre aide.
J'utilise la formule =SOMMEPROD((1/NB.SI(Série;Série)))
qui permet de compter le nombre de N° de série différents dans une colonne.
Tout se passe bien quand j'ai une centaine de ligne.
Par contre, cas général, j'ai environ 30000 lignes.
Dans ce cas, le temps de calcul passe à 15 minutes.
Le problème c'est que j'utilise cette formule 17 fois dans la même feuille.
Le temps de calcul dépasse alors 1 heure.

N'y aurait-il pas une formule plus rapide??

Merci d'avance de votre aide
 

alcalzone

XLDnaute Occasionnel
Re : Calcul extremement long

Par défaut, ils sont triés par ordre alpha numériques et sont composés de 3 à 15 caractères
Je mets un exemple qui ne sera pas représentatif sur la durée de calcul
 

Pièces jointes

  • exemple.xls
    29 KB · Affichages: 107
  • exemple.xls
    29 KB · Affichages: 100
  • exemple.xls
    29 KB · Affichages: 98

soenda

XLDnaute Accro
Re : Calcul extremement long

Re,

Un exemple quelque peu bourrin, en PJ

Rectifié, maintenant je trouve 33 :D.
Merci Jocelyn :)

A plus
 

Pièces jointes

  • alcazone.xls
    23.5 KB · Affichages: 60
  • alcazone.xls
    23.5 KB · Affichages: 58
  • alcazone.xls
    23.5 KB · Affichages: 65
Dernière édition:

Jocelyn

XLDnaute Barbatruc
Re : Calcul extremement long

Bonjour le Forum,
Bonjour alcalzone, soenda,

une solution avec colonne intermédiaire mais attention si tes données ne sont triées elle ne fonctionnera pas.

la colonne supplementaire est la B en suite dans une cellule une simple somme(B:B)

Jocelyn

Edit : je trouve Bien 33 mais ton 32 est normal Soendapuisque la première valeur (-2103) est comptée 0 par ta formule;)
 

Pièces jointes

  • alcalzone.xls
    28 KB · Affichages: 71
Dernière édition:

alcalzone

XLDnaute Occasionnel
Re : Calcul extremement long

Merci de vos réponses Jocelyn, soenda,

Au départ, j'avais utilisé cette méthode mais elle alourdie le fichier qui fait déjà 20MO.
Je ne sais pas s'il y a un moyen de faire ce calcul sans rajouter de colonne et qui se calcule relativement rapidement.

Le problème n'est vraiment pas évident
 

Jocelyn

XLDnaute Barbatruc
Re : Calcul extremement long

re,

Sans colonnes intermédiaire la seule solution formule matricielle et la problème de temps elles son tres gourmande et SOMMEPROD est une formule matricielle

autre solution mais la je ne sais pas faire les macro

Jocelyn
 

job75

XLDnaute Barbatruc
Re : Calcul extremement long

Bonsoir alcalzone, soenda, Jocelyn,

Cette macro est très simple et très rapide :

Code:
Sub Compte()
Dim d As Object, cel As Range
Set d = CreateObject("Scripting.Dictionary")
For Each cel In [Série]
If Not d.Exists(cel.Value) Then d.Add cel.Value, CStr(cel)
Next
MsgBox d.Count 'nombre d'items différents
End Sub

A+
 

job75

XLDnaute Barbatruc
Re : Calcul extremement long

Re,

On peut aussi utiliser une fonction macro, c'est peut-être plus simple à utiliser :

Code:
Function CPT(plage As Range) As Long
Dim d As Object, cel As Range
Set d = CreateObject("Scripting.Dictionary")
For Each cel In plage
If Not d.Exists(cel.Value) Then d.Add cel.Value, CStr(cel)
Next
CPT = d.Count 'nombre d'items différents
End Function

A+
 

Pièces jointes

  • exemple(1).xls
    38 KB · Affichages: 65
  • exemple(1).xls
    38 KB · Affichages: 65
  • exemple(1).xls
    38 KB · Affichages: 66
Dernière édition:

Discussions similaires

Réponses
10
Affichages
274

Statistiques des forums

Discussions
312 669
Messages
2 090 740
Membres
104 644
dernier inscrit
MOLOKO67