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

Calcul extremement long

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 !

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
 
Re : Calcul extremement long

Re,

L'Algo auquel je pense est le suivant

On trie les Numéros, puis

Pour chaque Numéro
Si num_précédent <> Num_suivant Alors Total = Total + 1

Afficher Total

Qu'en penses-tu ?

A plus
 
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

Dernière édition:
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
 
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
 
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+
 
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

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

Discussions similaires

  • Question Question
XL 2021 Macro
Réponses
6
Affichages
316
Réponses
16
Affichages
601
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…