Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formule avec calcul VRAIMENT TRES LONG à optimiser...

2 réponses
Avatar
Domi
Bonsoir,

Je suis confronté à un gros problème. J'utilise, sur une grande plage, une
formule (qui m'a été donné par un généreux participant de ce groupe et qui
m'excusera de ne pas le citer.) qui fonctionne très bien mais qui est
TERRIBLEMENT LONGUE. Près d'une seconde de calcul par cellule... et j'ai une
bonne machine...!



J'ai 3 plages

Une plage nommée REF1 qui contient des cellules vides ou des références
d'articles au format TEXTE.

Une plage nommée REF2 qui contient des cellules vides ou des références
d'articles au format TEXTE.

Une plage nommée REF qui contient des références d'articles au format TEXTE.



Dans une plage TEST

Je veux connaitre, pour chaque article de REF, le nombre d'articles
différents de REF2 auquels est associé cet article dans REF1.

C'est assez simple mais difficile à ennoncer !



Exemple : j'ai "toto" dans REF.

Dans REF1, j'ai 3 fois "toto", je veux conaitre le nombre d'articles
différents qu'il y a en face de "toto" dans REF2

Cela pourra être 0, 1, 2 ou 3

On peut aussi trouver #N/A si toto est présent dans REF mais pas dans REF1.



La formule que j'utilise est la suivante :

=SOMME((FREQUENCE((REF1=$D5)*EQUIV(REF2;REF2;0);(REF1=$D5)*EQUIV(REF2;REF2;0
))>0)+0)-(MIN((REF1=$D5)*1)=0)

que j'utilise dans une macro :

Sub Test()

With Range("test")

.FormulaR1C1 =
"=SUM((FREQUENCY((BasMont=R[1]C4)*MATCH(BasCuvP,BasCuvP,0),(BasMont=R[1]C4)*
MATCH(BasCuvP,BasCuvP,0))>0)+0)-(MIN((BasMont=R[1]C4)*1)=0)"

.Value = .Value

End With

End Sub

Pour ceux qui voudraient un fichier exemple, il est là :

http://cjoint.com/?cvtrtu5quJ



Merci

Domi

2 réponses

Avatar
AV
Pour "optimiser" un poil, suppression des cellules non significatives pour le
calcul :

http://cjoint.com/?cwp2cFJvOi

PS : On atteint là les limites des formules matricielles qui, avec de grandes
plages, donnent lieu à des temps de calcul rédhibitoires...
AV
Avatar
Domi
Merci beaucoup, c'est déjà nettement mieux. Et je ne vais pas faire la fine
gueule... ;o)
Salutations
Domi
"AV" a écrit dans le message de
news:
Pour "optimiser" un poil, suppression des cellules non significatives pour
le

calcul :

http://cjoint.com/?cwp2cFJvOi

PS : On atteint là les limites des formules matricielles qui, avec de
grandes

plages, donnent lieu à des temps de calcul rédhibitoires...
AV