OVH Cloud OVH Cloud

excel sommeprod

4 réponses
Avatar
massonlafayette
bonjour,
je reviens avec mon prob de lenteur d'excel avec mon énorme tableau de 2500
lignes avec des formules du type:
=SI(E2572="ph";SOMMEPROD(($D$5:$D$4954=D2572)*($E$5:$E$4954="PH")*($C$5:$C
$4954>=37622)*($C$5:$C$4954<=37986)*($I$5:$I$4954));SOMMEPROD(($D$5:$D$495
4=D2572)*($E$5:$E$4954="PA")*($C$5:$C$4954>=37622)*($C$5:$C$4954<=37986)*(
$I$5:$I$4954)))
y a-t'il 1 possibilité de le traduire en vba et est-ce que ça aurait 1
incidence sur la rapidité de calcul?
merci de me donner 1 réponse détaillée, sinon je vais vous la demander en
réponse et ça va vous énerver!
Merci pour votre aide

4 réponses

Avatar
FxM
Bonjour,

Pourrais-tu nous dire :
- en quelle cellule est cette formule,
- ce que contiennent globalement les différentes colonnes,
- ce que tu fais du résultat obtenu pour cette formule ?

On peut effectivement la traduire directement en VBA mais ça n'aura pas
grande influence sur le temps de calculs si les x sommeprod sont
maintenus. Il faut tenter de passer outre.
S'il n'y a rien de confidentiel, tu as mon adresse email (merci de ne
pas la diffuser) pour y mettre une copie du fichier.

@+
FxM




Massonlafayette wrote:

bonjour,
je reviens avec mon prob de lenteur d'excel avec mon énorme tableau de 2500
lignes avec des formules du type:
=SI(E2572="ph";SOMMEPROD(($D$5:$D$4954Ò572)*($E$5:$E$4954="PH")*($C$5:$C
$4954>7622)*($C$5:$C$4954<7986)*($I$5:$I$4954));SOMMEPROD(($D$5:$D$495
4Ò572)*($E$5:$E$4954="PA")*($C$5:$C$4954>7622)*($C$5:$C$4954<7986)*(
$I$5:$I$4954)))
y a-t'il 1 possibilité de le traduire en vba et est-ce que ça aurait 1
incidence sur la rapidité de calcul?
merci de me donner 1 réponse détaillée, sinon je vais vous la demander en
réponse et ça va vous énerver!
Merci pour votre aide


Avatar
berwatt
=SI(E2572="ph";SOMMEPROD(($D$5:$D$4954Ò572)*
($E$5:$E$4954="PH")*($C$5:$C

$4954>7622)*($C$5:$C$4954<7986)*
($I$5:$I$4954));SOMMEPROD(($D$5:$D$495

4Ò572)*($E$5:$E$4954="PA")*($C$5:$C$4954>7622)*
($C$5:$C$4954<7986)*(

$I$5:$I$4954)))


Es-tu sur de ta formule?
Pour ce que j'ai testé (avec excel 2003),
$E$5:$E$4954="PH" ne donne un résultat que sur la cellule
$E$4954. Quelque soit le contenu des autres cellules,
c'est la dernière qui était prise en compte.
bernard

Avatar
Philippe.R
Bonjour,
Peut être pourrais tu essayer sans la fonction si, de cette manière :

=EXACT(E2572;"ph")*SOMMEPROD(($D$5:$D$4954Ò572)*($E$5:$E$4954="PH")*($C$5:$C$4954>7622)*($C$5:$C$495
4<7986)*($I$5:$I$4954))+SOMMEPROD(($D$5:$D$4954Ò572)*($E$5:$E$4954="PA")*($C$5:$C$4954>7622)*($C$5
:$C$4954<7986)*($I$5:$I$4954))
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"Massonlafayette" a écrit dans le message de
news:
bonjour,
je reviens avec mon prob de lenteur d'excel avec mon énorme tableau de 2500
lignes avec des formules du type:
=SI(E2572="ph";SOMMEPROD(($D$5:$D$4954Ò572)*($E$5:$E$4954="PH")*($C$5:$C
$4954>7622)*($C$5:$C$4954<7986)*($I$5:$I$4954));SOMMEPROD(($D$5:$D$495
4Ò572)*($E$5:$E$4954="PA")*($C$5:$C$4954>7622)*($C$5:$C$4954<7986)*(
$I$5:$I$4954)))
y a-t'il 1 possibilité de le traduire en vba et est-ce que ça aurait 1
incidence sur la rapidité de calcul?
merci de me donner 1 réponse détaillée, sinon je vais vous la demander en
réponse et ça va vous énerver!
Merci pour votre aide


Avatar
Daniel.M
Bonjour,

AMA, les problèmes de lenteur au niveau des calculs se résolvent des manières
suivantes:

1. Optimiser la formule
2. Reporter à des moments fixes les recalculs, soit:
a. en continuant d'utiliser les formules mais passant en calcul manuel (au
lieu d'automatique)
b. en utilisant des tableaux croisés dynamiques au lieu des formules
c. en utilisant des tables de décisions (what-if tables) au lieu de formules
d. en utilisant du code VBA qui calcule les résultats lorsqu'on l'invoque et
les recopie en dur sur la plage qui contenait les formules.
3. Restructurer les données

Avisez si vous désirez une des solutions 2b, 2c, 2d (solution 2a vous a déjà été
donnée).

Pour la solution 1, votre formule pourrait être légèrement plus courte ainsi
(c'est une formule matricielle, donc à saisir avec Ctrl-Maj-Entrée):

=SOMME(($D$5:$D$4954Ò572)*($E$5:$E$4954=SI(E2572="ph";"PH";
"PA"))*(ANNEE($C$5:$C$4954) 03)*($I$5:$I$4954))

Dans ce cas-ci, je ne crois pas que ça va améliorer vraiment beaucoup les
problèmes de performance.
Je ne crois pas que c'est UNE seule formule qui cause ce problème mais bien le
fait qu'elle est présente à chaque ligne. D'où l'idée d'avoir recours à des
méthodes moins coûteuses d'aggrégations de résultats (2b et 2c), mais qui
nécessitent, par ailleurs, d'être explicitement mises-à-jour pour afficher les
bons résultats.

Salutations,

Daniel M.

"Massonlafayette" wrote in message
news:
bonjour,
je reviens avec mon prob de lenteur d'excel avec mon énorme tableau de 2500
lignes avec des formules du type:
=SI(E2572="ph";SOMMEPROD(($D$5:$D$4954Ò572)*($E$5:$E$4954="PH")*($C$5:$C
$4954>7622)*($C$5:$C$4954<7986)*($I$5:$I$4954));SOMMEPROD(($D$5:$D$495
4Ò572)*($E$5:$E$4954="PA")*($C$5:$C$4954>7622)*($C$5:$C$4954<7986)*(
$I$5:$I$4954)))
y a-t'il 1 possibilité de le traduire en vba et est-ce que ça aurait 1
incidence sur la rapidité de calcul?
merci de me donner 1 réponse détaillée, sinon je vais vous la demander en
réponse et ça va vous énerver!
Merci pour votre aide