OVH Cloud OVH Cloud

SUMPRODUCT (Phase II)

7 réponses
Avatar
Denys
Bonjour =E0 tous,

Avec l'aide de certains d'entre vous, j'ai pu obtenir avec=20
la fonction SUMPRODUCT le nombre de fois qu'une date d'un=20
certain mois apparaissait dans une plage donn=E9e (ici la=20
colonne A). Cependant, il est vrai que ces calculs=20
automatiques ralentissent passablement l'application. Je=20
voudrais donc ins=E9rer un bouton de commande sur la feuille=20
excel et le calcul ne pourrait se faire que sur demande.

Cependant la formule qui suit (en VBA) me retourne une=20
valeur #Value!. Je ne comprends pas pourquoi. De plus, est-
il possible que seulement la valeur du mois de l'ann=E9e=20
courante soit rapport=E9e?

Sub SomProduit()

With ActiveSheet
.Range("Q1").Value =3D Evaluate("=3Dsumproduct _
(($A$8:$A$50000<>"")*(Month($A$8:$A$50000)=3DROW())")
.Range("Q2").Value =3D Evaluate("=3Dsumproduct _
(($A$8:$A$50000<>"")*(Month($A$8:$A$50000)=3DROW())")
etc...'jusqu'=E0 Q12
=20
End With
End Sub

Merci beaucoup pour votre temps.

Denys

7 réponses

Avatar
AV
Faut dire que 50000 lignes...ben c'est pas rien !

Sub zz_SP()
Application.ScreenUpdating = False
Application.Calculation = xlManual
[Q1:Q12] "=sumproduct(($A$8:$A$50000<>"""")*(year($A$8:$A$50000)=year(today())*(month($A$
8:$A$50000)=row())))"
Application.Calculation = xlAutomatic
[Q1:Q12] = [Q1:Q12].Value
End Sub

AV

"Denys" a écrit dans le message news:
043101c34160$776c06a0$
Bonjour à tous,

Avec l'aide de certains d'entre vous, j'ai pu obtenir avec
la fonction SUMPRODUCT le nombre de fois qu'une date d'un
certain mois apparaissait dans une plage donnée (ici la
colonne A). Cependant, il est vrai que ces calculs
automatiques ralentissent passablement l'application. Je
voudrais donc insérer un bouton de commande sur la feuille
excel et le calcul ne pourrait se faire que sur demande.

Cependant la formule qui suit (en VBA) me retourne une
valeur #Value!. Je ne comprends pas pourquoi. De plus, est-
il possible que seulement la valeur du mois de l'année
courante soit rapportée?

Sub SomProduit()

With ActiveSheet
.Range("Q1").Value = Evaluate("=sumproduct _
(($A$8:$A$50000<>"")*(Month($A$8:$A$50000)=ROW())")
.Range("Q2").Value = Evaluate("=sumproduct _
(($A$8:$A$50000<>"")*(Month($A$8:$A$50000)=ROW())")
etc...'jusqu'à Q12

End With
End Sub

Merci beaucoup pour votre temps.

Denys
Avatar
Denys
Bonjour Alain,

Merci infiniment pour ta réponse...Ca marche à merveille.
Je devrais probablement réduire la taille à 5000

Si je comprends bien....

Merci encore tu m'a sauvé beaucoup de temps...

Denys


-----Original Message-----
Faut dire que 50000 lignes...ben c'est pas rien !

Sub zz_SP()
Application.ScreenUpdating = False
Application.Calculation = xlManual
[Q1:Q12] =
"=sumproduct(($A$8:$A$50000<>"""")*(year($A$8:$A$50000)
=year(today())*(month($A$

8:$A$50000)=row())))"
Application.Calculation = xlAutomatic
[Q1:Q12] = [Q1:Q12].Value
End Sub

AV

"Denys" a écrit dans le message
news:

043101c34160$776c06a0$
Bonjour à tous,

Avec l'aide de certains d'entre vous, j'ai pu obtenir avec
la fonction SUMPRODUCT le nombre de fois qu'une date d'un
certain mois apparaissait dans une plage donnée (ici la
colonne A). Cependant, il est vrai que ces calculs
automatiques ralentissent passablement l'application. Je
voudrais donc insérer un bouton de commande sur la feuille
excel et le calcul ne pourrait se faire que sur demande.

Cependant la formule qui suit (en VBA) me retourne une
valeur #Value!. Je ne comprends pas pourquoi. De plus,
est-

il possible que seulement la valeur du mois de l'année
courante soit rapportée?

Sub SomProduit()

With ActiveSheet
.Range("Q1").Value = Evaluate("=sumproduct _
(($A$8:$A$50000<>"")*(Month($A$8:$A$50000)=ROW())")
.Range("Q2").Value = Evaluate("=sumproduct _
(($A$8:$A$50000<>"")*(Month($A$8:$A$50000)=ROW())")
etc...'jusqu'à Q12

End With
End Sub

Merci beaucoup pour votre temps.

Denys


.



Avatar
Daniel.M
Salut Denys,

Je devrais probablement réduire la taille à 5000


Tu devrais plutôt calculer tes plages DYNAMIQUEMENT (à l'aide de la fonction
DECALER()).

Je suis même pas convaincu que tu aurais alors besoin de changer tes
formules pour les valeurs (mais au moins, tu as maintenant les 2
alternatives).

Salutations,

Daniel M.

Avatar
AV
Je devrais probablement réduire la taille à 5000


Je dirais même plus, tu devrais ajuster la plage au strict nécessaire, à savoir
la dernière cellule renseignée
Soit la soluce de Daniel, soit (dans l'éventualité de cellules vides qui ne
plaisent pas du tout à la fonction DECALER) :

Sub zz_SP()
Application.ScreenUpdating = False
derL = [A65536].End(3).Row
Application.Calculation = xlManual
[Q1:Q12] = "=sumproduct(($A$8:$A$" & derL & "<>"""")*(year($A$8:$A$" & derL &
")=year(today())*(month($A$8:$A$" & derL & ")=row())))"
Application.Calculation = xlAutomatic
[Q1:Q12] = [Q1:Q12].Value
End Sub

AV


Si je comprends bien....

Merci encore tu m'a sauvé beaucoup de temps...

Denys


-----Original Message-----
Faut dire que 50000 lignes...ben c'est pas rien !

Sub zz_SP()
Application.ScreenUpdating = False
Application.Calculation = xlManual
[Q1:Q12] >"=sumproduct(($A$8:$A$50000<>"""")*(year($A$8:$A$50000)
=year(today())*(month($A$

8:$A$50000)=row())))"
Application.Calculation = xlAutomatic
[Q1:Q12] = [Q1:Q12].Value
End Sub

AV

"Denys" a écrit dans le message
news:

043101c34160$776c06a0$
Bonjour à tous,

Avec l'aide de certains d'entre vous, j'ai pu obtenir avec
la fonction SUMPRODUCT le nombre de fois qu'une date d'un
certain mois apparaissait dans une plage donnée (ici la
colonne A). Cependant, il est vrai que ces calculs
automatiques ralentissent passablement l'application. Je
voudrais donc insérer un bouton de commande sur la feuille
excel et le calcul ne pourrait se faire que sur demande.

Cependant la formule qui suit (en VBA) me retourne une
valeur #Value!. Je ne comprends pas pourquoi. De plus,
est-

il possible que seulement la valeur du mois de l'année
courante soit rapportée?

Sub SomProduit()

With ActiveSheet
.Range("Q1").Value = Evaluate("=sumproduct _
(($A$8:$A$50000<>"")*(Month($A$8:$A$50000)=ROW())")
.Range("Q2").Value = Evaluate("=sumproduct _
(($A$8:$A$50000<>"")*(Month($A$8:$A$50000)=ROW())")
etc...'jusqu'à Q12

End With
End Sub

Merci beaucoup pour votre temps.

Denys


.



Avatar
modeste
-----Message d'origine-----
Faut dire que 50000 lignes...ben c'est pas rien !


pffff......
ouf.... l'a échappé belle !!!!
cela aurait été plus que 65536 lignes.

ben nous z'otes les exceliens, bel et bien la patée !!!
;-)))

Avatar
Denys
Salut Alain et Daniel,

Quelle excellente idée! Je n'avais jamais essayé cela
auparavant! La différence de temps est incroyable!
Je vais adopter cette méthode à l'avenir...

Merci les gars!!!

Denys


-----Original Message-----
Je devrais probablement réduire la taille à 5000


Je dirais même plus, tu devrais ajuster la plage au
strict nécessaire, à savoir

la dernière cellule renseignée
Soit la soluce de Daniel, soit (dans l'éventualité de
cellules vides qui ne

plaisent pas du tout à la fonction DECALER) :

Sub zz_SP()
Application.ScreenUpdating = False
derL = [A65536].End(3).Row
Application.Calculation = xlManual
[Q1:Q12] = "=sumproduct(($A$8:$A$" & derL & "<>"""")*(year
($A$8:$A$" & derL &

")=year(today())*(month($A$8:$A$" & derL & ")=row())))"
Application.Calculation = xlAutomatic
[Q1:Q12] = [Q1:Q12].Value
End Sub

AV


Si je comprends bien....

Merci encore tu m'a sauvé beaucoup de temps...

Denys


-----Original Message-----
Faut dire que 50000 lignes...ben c'est pas rien !

Sub zz_SP()
Application.ScreenUpdating = False
Application.Calculation = xlManual
[Q1:Q12] =
"=sumproduct(($A$8:$A$50000<>"""")*(year($A$8:$A$50000)
=year(today())*(month($A$

8:$A$50000)=row())))"
Application.Calculation = xlAutomatic
[Q1:Q12] = [Q1:Q12].Value
End Sub

AV

"Denys" a écrit dans le message
news:

043101c34160$776c06a0$
Bonjour à tous,

Avec l'aide de certains d'entre vous, j'ai pu obtenir
avec


la fonction SUMPRODUCT le nombre de fois qu'une date d'un
certain mois apparaissait dans une plage donnée (ici la
colonne A). Cependant, il est vrai que ces calculs
automatiques ralentissent passablement l'application. Je
voudrais donc insérer un bouton de commande sur la
feuille


excel et le calcul ne pourrait se faire que sur demande.

Cependant la formule qui suit (en VBA) me retourne une
valeur #Value!. Je ne comprends pas pourquoi. De plus,
est-

il possible que seulement la valeur du mois de l'année
courante soit rapportée?

Sub SomProduit()

With ActiveSheet
.Range("Q1").Value = Evaluate("=sumproduct _
(($A$8:$A$50000<>"")*(Month($A$8:$A$50000)=ROW())")
.Range("Q2").Value = Evaluate("=sumproduct _
(($A$8:$A$50000<>"")*(Month($A$8:$A$50000)=ROW())")
etc...'jusqu'à Q12

End With
End Sub

Merci beaucoup pour votre temps.

Denys


.




.




Avatar
Jacquouille
Bonsoir
Moi no comprendo comment 50.000 est " plus " que 65.536 lignes.......
????? -))

--
Jacquouille (dit Saint Jacques)

"modeste" a écrit dans le message news:
0eb601c3416a$edc0a4f0$
-----Message d'origine-----
Faut dire que 50000 lignes...ben c'est pas rien !


pffff......
ouf.... l'a échappé belle !!!!
cela aurait été plus que 65536 lignes.

ben nous z'otes les exceliens, bel et bien la patée !!!
;-)))