OVH Cloud OVH Cloud

Countif phase II

7 réponses
Avatar
Denys
Bonjour =E0 tous,

Avec l'aide d'Alain et de Denis j'ai =E9crit le code suivant:

Sub SLA()
Application.ScreenUpdating =3D False
derL =3D [A65536].End(3).Row
Application.Calculation =3D xlManual
[r1:r12] =3D "=3Dsumproduct(($G$8:$G$" & derL & "<>"""")>
($I$8:$I$" & derL & "))=3Dyear(today())*(month($E$8:$E$" &=20
derL & "))=3Drow()"
Application.Calculation =3D xlAutomatic
[r1:r12] =3D [r1:r12].Value

End Sub

Ce que c'est suppos=E9 faire, c'est que Excel doit compter=20
le nombre de fois ou la valeur en colonne G est plus=20
grande que la valeur en colonne I (les deux =E9tant des=20
nombres entiers), puis regarder le mois dans la colonne E=20
(format mm/dd/yyyy) et rapporter le r=E9sultat dans la bonne=20
case.

Les r=E9sultats que me donne cette formule vont de #Value!=20
pour les sept premiers mois =E0 FALSE pour le reste..

Quelqu'un aurait-il une id=E9e de ce qui se passe?

Merci beaucoup pour votre temps.

Denys

7 réponses

Avatar
Denys
Salut Denis,

Voici la question originale (elle n'était peut-être pas
bien formulée:

Comment faire pour calculer les conditions suivantes:
Avoir le compte de chaque nombre en colonne B (résultant
d'une formule) plus grand que celui en colonne C pour
chaque mois de l'année.

Autrement dit, je voudrais savoir combien de fois
l'utilisateur a pris plus de jours pour accomplir une
tâche qu'il n'aurait dû, et ce pour chaque mois de l'année.

Maintenant en R1:R12 je veux simplement obtenir les
résultats pour chaque mois de l'année courante, résultats
que je reporterai dans la plage Z11:AK11

Si j'ai bien compris la formule, R1:R12 correspond à
chaque mois de l'année avec le =row()

Denys

-----Original Message-----
Bonjour à tous,

Avec l'aide d'Alain et de Denis j'ai écrit le code
suivant:


Sub SLA()
Application.ScreenUpdating = False
derL = [A65536].End(3).Row
Application.Calculation = xlManual
[r1:r12] = "=sumproduct(($G$8:$G$" & derL & "<>"""")>
($I$8:$I$" & derL & "))=year(today())*(month($E$8:$E$" &
derL & "))=row()"
Application.Calculation = xlAutomatic
[r1:r12] = [r1:r12].Value

End Sub

Ce que c'est supposé faire, c'est que Excel doit compter
le nombre de fois ou la valeur en colonne G est plus
grande que la valeur en colonne I (les deux étant des
nombres entiers), puis regarder le mois dans la colonne E
(format mm/dd/yyyy) et rapporter le résultat dans la
bonne

case.

Les résultats que me donne cette formule vont de #Value!
pour les sept premiers mois à FALSE pour le reste..

Quelqu'un aurait-il une idée de ce qui se passe?

Merci beaucoup pour votre temps.

Denys
.



Avatar
michdenis
Bonjour Denys,

C'est sensiblement la même procédure que Celle D'AV.

Sauf que tu dois faire attention au plage de cellules
et tu dois adapter le nom de la feuille.


'-----------------------
Sub SLA()
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD((($B$1:$B$" & derl & "<>"""")>$C$1:$C$" & derl & ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"
Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------

Salutations!



"Denys" a écrit dans le message de news:5c6a01c3423c$fbed26c0$
Salut Denis,

Voici la question originale (elle n'était peut-être pas
bien formulée:

Comment faire pour calculer les conditions suivantes:
Avoir le compte de chaque nombre en colonne B (résultant
d'une formule) plus grand que celui en colonne C pour
chaque mois de l'année.

Autrement dit, je voudrais savoir combien de fois
l'utilisateur a pris plus de jours pour accomplir une
tâche qu'il n'aurait dû, et ce pour chaque mois de l'année.

Maintenant en R1:R12 je veux simplement obtenir les
résultats pour chaque mois de l'année courante, résultats
que je reporterai dans la plage Z11:AK11

Si j'ai bien compris la formule, R1:R12 correspond à
chaque mois de l'année avec le =row()

Denys

-----Original Message-----
Bonjour à tous,

Avec l'aide d'Alain et de Denis j'ai écrit le code
suivant:


Sub SLA()
Application.ScreenUpdating = False
derL = [A65536].End(3).Row
Application.Calculation = xlManual
[r1:r12] = "=sumproduct(($G$8:$G$" & derL & "<>"""")>
($I$8:$I$" & derL & "))=year(today())*(month($E$8:$E$" &
derL & "))=row()"
Application.Calculation = xlAutomatic
[r1:r12] = [r1:r12].Value

End Sub

Ce que c'est supposé faire, c'est que Excel doit compter
le nombre de fois ou la valeur en colonne G est plus
grande que la valeur en colonne I (les deux étant des
nombres entiers), puis regarder le mois dans la colonne E
(format mm/dd/yyyy) et rapporter le résultat dans la
bonne

case.

Les résultats que me donne cette formule vont de #Value!
pour les sept premiers mois à FALSE pour le reste..

Quelqu'un aurait-il une idée de ce qui se passe?

Merci beaucoup pour votre temps.

Denys
.



Avatar
michdenis
Bonjour Denys,

j'ai apporté un léger correctif à la formule :
'-----------------------
Sub SLA()
Dim DerL as Long
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD(($B$1:$B$" & derl & ">$C$1:$C$" & derl & ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"
Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------


Salutations!




"michdenis" a écrit dans le message de news:%
Bonjour Denys,

C'est sensiblement la même procédure que Celle D'AV.

Sauf que tu dois faire attention au plage de cellules
et tu dois adapter le nom de la feuille.


'-----------------------
Sub SLA()
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD((($B$1:$B$" & derl & "<>"""")>$C$1:$C$" & derl & ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"
Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------

Salutations!



"Denys" a écrit dans le message de news:5c6a01c3423c$fbed26c0$
Salut Denis,

Voici la question originale (elle n'était peut-être pas
bien formulée:

Comment faire pour calculer les conditions suivantes:
Avoir le compte de chaque nombre en colonne B (résultant
d'une formule) plus grand que celui en colonne C pour
chaque mois de l'année.

Autrement dit, je voudrais savoir combien de fois
l'utilisateur a pris plus de jours pour accomplir une
tâche qu'il n'aurait dû, et ce pour chaque mois de l'année.

Maintenant en R1:R12 je veux simplement obtenir les
résultats pour chaque mois de l'année courante, résultats
que je reporterai dans la plage Z11:AK11

Si j'ai bien compris la formule, R1:R12 correspond à
chaque mois de l'année avec le =row()

Denys

-----Original Message-----
Bonjour à tous,

Avec l'aide d'Alain et de Denis j'ai écrit le code
suivant:


Sub SLA()
Application.ScreenUpdating = False
derL = [A65536].End(3).Row
Application.Calculation = xlManual
[r1:r12] = "=sumproduct(($G$8:$G$" & derL & "<>"""")>
($I$8:$I$" & derL & "))=year(today())*(month($E$8:$E$" &
derL & "))=row()"
Application.Calculation = xlAutomatic
[r1:r12] = [r1:r12].Value

End Sub

Ce que c'est supposé faire, c'est que Excel doit compter
le nombre de fois ou la valeur en colonne G est plus
grande que la valeur en colonne I (les deux étant des
nombres entiers), puis regarder le mois dans la colonne E
(format mm/dd/yyyy) et rapporter le résultat dans la
bonne

case.

Les résultats que me donne cette formule vont de #Value!
pour les sept premiers mois à FALSE pour le reste..

Quelqu'un aurait-il une idée de ce qui se passe?

Merci beaucoup pour votre temps.

Denys
.



Avatar
Denys
ReBonjour Denis,

Encore une fois merci pour tout le temps que tu me
consacres. La formule me donne des résultats vraiment
bizarre: j'ai dû la traduire en anglais:

Sub SLA()
Dim DerL As Long
Application.ScreenUpdating = False
With ActiveSheet()
DerL = .[a65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=Sumproduct((($G$8:$G$" & DerL & "<>"""")>$I$8:$I$" &
DerL & ")*(MONTH($E$8:$E$" & DerL & ")=ROW(A7)))"
Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

Voici ce que j'ai à partir des lignes 8 colonnes E G I
E G I
06/12/03 3
06/13/03 5 4
06/13/03 4
06/17/03 4
06/19/03 4
06/20/03 4
06/25/03 10 4
06/25/03 10 4
06/27/03 8 4
06/25/03 2
07/04/03 2 1
07/10/03 4
12/01/04 365
07/10/03 4

Les résultats de R1:R12 sont les suivants: 3 0 0 0 0 1 0 0
0 0 0 0

Alors qu'en R6 (Juin)on devrait avoir 4, en R7 (Juillet) 1
et 0 pour le reste.
Je n'y comprends rien. Je t'en demande beaucoup, mais
pourrais-tu m'expliquer cela??


-----Original Message-----
Bonjour Denys,

j'ai apporté un léger correctif à la formule :
'-----------------------
Sub SLA()
Dim DerL as Long
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD(($B$1:$B$" & derl & ">$C$1:$C$" & derl
& ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"

Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------


Salutations!




"michdenis" a écrit dans le
message de news:%

Bonjour Denys,

C'est sensiblement la même procédure que Celle D'AV.

Sauf que tu dois faire attention au plage de cellules
et tu dois adapter le nom de la feuille.


'-----------------------
Sub SLA()
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD((($B$1:$B$" & derl & "<>"""")>$C$1:$C$" &
derl & ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"

Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------

Salutations!



"Denys" a écrit dans le message
de news:5c6a01c3423c$fbed26c0$

Salut Denis,

Voici la question originale (elle n'était peut-être pas
bien formulée:

Comment faire pour calculer les conditions suivantes:
Avoir le compte de chaque nombre en colonne B (résultant
d'une formule) plus grand que celui en colonne C pour
chaque mois de l'année.

Autrement dit, je voudrais savoir combien de fois
l'utilisateur a pris plus de jours pour accomplir une
tâche qu'il n'aurait dû, et ce pour chaque mois de
l'année.


Maintenant en R1:R12 je veux simplement obtenir les
résultats pour chaque mois de l'année courante, résultats
que je reporterai dans la plage Z11:AK11

Si j'ai bien compris la formule, R1:R12 correspond à
chaque mois de l'année avec le =row()

Denys

-----Original Message-----
Bonjour à tous,

Avec l'aide d'Alain et de Denis j'ai écrit le code
suivant:


Sub SLA()
Application.ScreenUpdating = False
derL = [A65536].End(3).Row
Application.Calculation = xlManual
[r1:r12] = "=sumproduct(($G$8:$G$" & derL & "<>"""")>
($I$8:$I$" & derL & "))=year(today())*(month($E$8:$E$" &
derL & "))=row()"
Application.Calculation = xlAutomatic
[r1:r12] = [r1:r12].Value

End Sub

Ce que c'est supposé faire, c'est que Excel doit compter
le nombre de fois ou la valeur en colonne G est plus
grande que la valeur en colonne I (les deux étant des
nombres entiers), puis regarder le mois dans la colonne E
(format mm/dd/yyyy) et rapporter le résultat dans la
bonne

case.

Les résultats que me donne cette formule vont de #Value!
pour les sept premiers mois à FALSE pour le reste..

Quelqu'un aurait-il une idée de ce qui se passe?

Merci beaucoup pour votre temps.

Denys
.





.




Avatar
Denys
Bonjour Denis,
Oui toutes les colonnes ont exactement la même longueur.
Cependant pour moi ça ne fonctionne pas. Maintenant, j'ai
des 0 partout. Peut-être ai-je autre chose qui empêche de
fonctionner, ou peut-être Excel ne reconnait pas les mois
de l'année. C'est curieux car l'instruction suivante
fonctionne très bien:

Sub SomProduit()
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

Elle me sert à avoir le nombre de fois qu'un utilisateur a
eu des tâches à accomplir durant le mois de Q1 à Q12 Q1
étant janvier, Q2 février, etc...

Quoiqu'il en soit je te remercie énormément pour tout ton
temps. C'est très apprécié crois-moi

Denys

-----Original Message-----
Bonjour Denys,

Tu utilises la colonne A pour déterminer le nombre de
lignes dans ton tableau,

DerL = .[a65536].End(3).Row

Est-ce que la Colonne A:A a exactement le même nombre de
ligne que la colonne G et I ?


Sinon, tu devrais modifier la ligne de code de cette
façon :

DerL = .[D65536].End(3).Row

J'ai testé ce qui suit et cela fonctionne !

'-------------------------------
Sub SLA()
Dim DerL As Long
Application.ScreenUpdating = False
With ActiveSheet()
DerL = .[a65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").Formula = _
"=Sumproduct((($G$8:$G$" & DerL & ")>$I$8:$I$" & DerL
& ")*(MONTH($E$8:$E$" & DerL & ")=ROW(A1)))"

Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With
'-------------------------------


Salutations!






"Denys" a écrit dans le message
de news:5db201c3424e$0caafa80$

ReBonjour Denis,

Encore une fois merci pour tout le temps que tu me
consacres. La formule me donne des résultats vraiment
bizarre: j'ai dû la traduire en anglais:

Sub SLA()
Dim DerL As Long
Application.ScreenUpdating = False
With ActiveSheet()
DerL = .[a65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=Sumproduct((($G$8:$G$" & DerL & "<>"""")>$I$8:$I$" &
DerL & ")*(MONTH($E$8:$E$" & DerL & ")=ROW(A7)))"
Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

Voici ce que j'ai à partir des lignes 8 colonnes E G I
E G I
06/12/03 3
06/13/03 5 4
06/13/03 4
06/17/03 4
06/19/03 4
06/20/03 4
06/25/03 10 4
06/25/03 10 4
06/27/03 8 4
06/25/03 2
07/04/03 2 1
07/10/03 4
12/01/04 365
07/10/03 4

Les résultats de R1:R12 sont les suivants: 3 0 0 0 0 1 0 0
0 0 0 0

Alors qu'en R6 (Juin)on devrait avoir 4, en R7 (Juillet) 1
et 0 pour le reste.
Je n'y comprends rien. Je t'en demande beaucoup, mais
pourrais-tu m'expliquer cela??


-----Original Message-----
Bonjour Denys,

j'ai apporté un léger correctif à la formule :
'-----------------------
Sub SLA()
Dim DerL as Long
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD(($B$1:$B$" & derl & ">$C$1:$C$" & derl
& ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"

Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------


Salutations!




"michdenis" a écrit dans le
message de news:%

Bonjour Denys,

C'est sensiblement la même procédure que Celle D'AV.

Sauf que tu dois faire attention au plage de cellules
et tu dois adapter le nom de la feuille.


'-----------------------
Sub SLA()
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD((($B$1:$B$" & derl & "<>"""")>$C$1:$C$" &
derl & ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"

Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------

Salutations!



"Denys" a écrit dans le message
de news:5c6a01c3423c$fbed26c0$

Salut Denis,

Voici la question originale (elle n'était peut-être pas
bien formulée:

Comment faire pour calculer les conditions suivantes:
Avoir le compte de chaque nombre en colonne B (résultant
d'une formule) plus grand que celui en colonne C pour
chaque mois de l'année.

Autrement dit, je voudrais savoir combien de fois
l'utilisateur a pris plus de jours pour accomplir une
tâche qu'il n'aurait dû, et ce pour chaque mois de
l'année.


Maintenant en R1:R12 je veux simplement obtenir les
résultats pour chaque mois de l'année courante, résultats
que je reporterai dans la plage Z11:AK11

Si j'ai bien compris la formule, R1:R12 correspond à
chaque mois de l'année avec le =row()

Denys

-----Original Message-----
Bonjour à tous,

Avec l'aide d'Alain et de Denis j'ai écrit le code
suivant:


Sub SLA()
Application.ScreenUpdating = False
derL = [A65536].End(3).Row
Application.Calculation = xlManual
[r1:r12] = "=sumproduct(($G$8:$G$" & derL & "<>"""")

($I$8:$I$" & derL & "))=year(today())*(month($E$8:$E$" &
derL & "))=row()"
Application.Calculation = xlAutomatic
[r1:r12] = [r1:r12].Value

End Sub

Ce que c'est supposé faire, c'est que Excel doit compter
le nombre de fois ou la valeur en colonne G est plus
grande que la valeur en colonne I (les deux étant des
nombres entiers), puis regarder le mois dans la colonne
E



(format mm/dd/yyyy) et rapporter le résultat dans la
bonne

case.

Les résultats que me donne cette formule vont de #Value!
pour les sept premiers mois à FALSE pour le reste..

Quelqu'un aurait-il une idée de ce qui se passe?

Merci beaucoup pour votre temps.

Denys
.





.




.





Avatar
michdenis
Bonjour Denys,

Si tu le désires, envoie moi seulement la feuille de ton classeur.

Salutations!



"Denys" a écrit dans le message de news:5ea901c3425f$b78048f0$
Bonjour Denis,
Oui toutes les colonnes ont exactement la même longueur.
Cependant pour moi ça ne fonctionne pas. Maintenant, j'ai
des 0 partout. Peut-être ai-je autre chose qui empêche de
fonctionner, ou peut-être Excel ne reconnait pas les mois
de l'année. C'est curieux car l'instruction suivante
fonctionne très bien:

Sub SomProduit()
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

Elle me sert à avoir le nombre de fois qu'un utilisateur a
eu des tâches à accomplir durant le mois de Q1 à Q12 Q1
étant janvier, Q2 février, etc...

Quoiqu'il en soit je te remercie énormément pour tout ton
temps. C'est très apprécié crois-moi

Denys

-----Original Message-----
Bonjour Denys,

Tu utilises la colonne A pour déterminer le nombre de
lignes dans ton tableau,

DerL = .[a65536].End(3).Row

Est-ce que la Colonne A:A a exactement le même nombre de
ligne que la colonne G et I ?


Sinon, tu devrais modifier la ligne de code de cette
façon :

DerL = .[D65536].End(3).Row

J'ai testé ce qui suit et cela fonctionne !

'-------------------------------
Sub SLA()
Dim DerL As Long
Application.ScreenUpdating = False
With ActiveSheet()
DerL = .[a65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").Formula = _
"=Sumproduct((($G$8:$G$" & DerL & ")>$I$8:$I$" & DerL
& ")*(MONTH($E$8:$E$" & DerL & ")=ROW(A1)))"

Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With
'-------------------------------


Salutations!






"Denys" a écrit dans le message
de news:5db201c3424e$0caafa80$

ReBonjour Denis,

Encore une fois merci pour tout le temps que tu me
consacres. La formule me donne des résultats vraiment
bizarre: j'ai dû la traduire en anglais:

Sub SLA()
Dim DerL As Long
Application.ScreenUpdating = False
With ActiveSheet()
DerL = .[a65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=Sumproduct((($G$8:$G$" & DerL & "<>"""")>$I$8:$I$" &
DerL & ")*(MONTH($E$8:$E$" & DerL & ")=ROW(A7)))"
Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

Voici ce que j'ai à partir des lignes 8 colonnes E G I
E G I
06/12/03 3
06/13/03 5 4
06/13/03 4
06/17/03 4
06/19/03 4
06/20/03 4
06/25/03 10 4
06/25/03 10 4
06/27/03 8 4
06/25/03 2
07/04/03 2 1
07/10/03 4
12/01/04 365
07/10/03 4

Les résultats de R1:R12 sont les suivants: 3 0 0 0 0 1 0 0
0 0 0 0

Alors qu'en R6 (Juin)on devrait avoir 4, en R7 (Juillet) 1
et 0 pour le reste.
Je n'y comprends rien. Je t'en demande beaucoup, mais
pourrais-tu m'expliquer cela??


-----Original Message-----
Bonjour Denys,

j'ai apporté un léger correctif à la formule :
'-----------------------
Sub SLA()
Dim DerL as Long
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD(($B$1:$B$" & derl & ">$C$1:$C$" & derl
& ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"

Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------


Salutations!




"michdenis" a écrit dans le
message de news:%

Bonjour Denys,

C'est sensiblement la même procédure que Celle D'AV.

Sauf que tu dois faire attention au plage de cellules
et tu dois adapter le nom de la feuille.


'-----------------------
Sub SLA()
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD((($B$1:$B$" & derl & "<>"""")>$C$1:$C$" &
derl & ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"

Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------

Salutations!



"Denys" a écrit dans le message
de news:5c6a01c3423c$fbed26c0$

Salut Denis,

Voici la question originale (elle n'était peut-être pas
bien formulée:

Comment faire pour calculer les conditions suivantes:
Avoir le compte de chaque nombre en colonne B (résultant
d'une formule) plus grand que celui en colonne C pour
chaque mois de l'année.

Autrement dit, je voudrais savoir combien de fois
l'utilisateur a pris plus de jours pour accomplir une
tâche qu'il n'aurait dû, et ce pour chaque mois de
l'année.


Maintenant en R1:R12 je veux simplement obtenir les
résultats pour chaque mois de l'année courante, résultats
que je reporterai dans la plage Z11:AK11

Si j'ai bien compris la formule, R1:R12 correspond à
chaque mois de l'année avec le =row()

Denys

-----Original Message-----
Bonjour à tous,

Avec l'aide d'Alain et de Denis j'ai écrit le code
suivant:


Sub SLA()
Application.ScreenUpdating = False
derL = [A65536].End(3).Row
Application.Calculation = xlManual
[r1:r12] = "=sumproduct(($G$8:$G$" & derL & "<>"""")

($I$8:$I$" & derL & "))=year(today())*(month($E$8:$E$" &
derL & "))=row()"
Application.Calculation = xlAutomatic
[r1:r12] = [r1:r12].Value

End Sub

Ce que c'est supposé faire, c'est que Excel doit compter
le nombre de fois ou la valeur en colonne G est plus
grande que la valeur en colonne I (les deux étant des
nombres entiers), puis regarder le mois dans la colonne
E



(format mm/dd/yyyy) et rapporter le résultat dans la
bonne

case.

Les résultats que me donne cette formule vont de #Value!
pour les sept premiers mois à FALSE pour le reste..

Quelqu'un aurait-il une idée de ce qui se passe?

Merci beaucoup pour votre temps.

Denys
.





.




.





Avatar
Denys
Allo Denis,

Je te l'ai fait parvenir. Il n'y a qu'une feuille.

Merci infiniment

Denys


-----Original Message-----
Bonjour Denys,

Si tu le désires, envoie moi seulement la feuille de ton
classeur.


Salutations!



"Denys" a écrit dans le message
de news:5ea901c3425f$b78048f0$

Bonjour Denis,
Oui toutes les colonnes ont exactement la même longueur.
Cependant pour moi ça ne fonctionne pas. Maintenant, j'ai
des 0 partout. Peut-être ai-je autre chose qui empêche de
fonctionner, ou peut-être Excel ne reconnait pas les mois
de l'année. C'est curieux car l'instruction suivante
fonctionne très bien:

Sub SomProduit()
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

Elle me sert à avoir le nombre de fois qu'un utilisateur a
eu des tâches à accomplir durant le mois de Q1 à Q12 Q1
étant janvier, Q2 février, etc...

Quoiqu'il en soit je te remercie énormément pour tout ton
temps. C'est très apprécié crois-moi

Denys

-----Original Message-----
Bonjour Denys,

Tu utilises la colonne A pour déterminer le nombre de
lignes dans ton tableau,

DerL = .[a65536].End(3).Row

Est-ce que la Colonne A:A a exactement le même nombre de
ligne que la colonne G et I ?


Sinon, tu devrais modifier la ligne de code de cette
façon :

DerL = .[D65536].End(3).Row

J'ai testé ce qui suit et cela fonctionne !

'-------------------------------
Sub SLA()
Dim DerL As Long
Application.ScreenUpdating = False
With ActiveSheet()
DerL = .[a65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").Formula = _
"=Sumproduct((($G$8:$G$" & DerL & ")>$I$8:$I$" & DerL
& ")*(MONTH($E$8:$E$" & DerL & ")=ROW(A1)))"

Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With
'-------------------------------


Salutations!






"Denys" a écrit dans le message
de news:5db201c3424e$0caafa80$

ReBonjour Denis,

Encore une fois merci pour tout le temps que tu me
consacres. La formule me donne des résultats vraiment
bizarre: j'ai dû la traduire en anglais:

Sub SLA()
Dim DerL As Long
Application.ScreenUpdating = False
With ActiveSheet()
DerL = .[a65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=Sumproduct((($G$8:$G$" & DerL & "<>"""")>$I$8:$I$"
&


DerL & ")*(MONTH($E$8:$E$" & DerL & ")=ROW(A7)))"
Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

Voici ce que j'ai à partir des lignes 8 colonnes E G I
E G I
06/12/03 3
06/13/03 5 4
06/13/03 4
06/17/03 4
06/19/03 4
06/20/03 4
06/25/03 10 4
06/25/03 10 4
06/27/03 8 4
06/25/03 2
07/04/03 2 1
07/10/03 4
12/01/04 365
07/10/03 4

Les résultats de R1:R12 sont les suivants: 3 0 0 0 0 1 0
0


0 0 0 0

Alors qu'en R6 (Juin)on devrait avoir 4, en R7 (Juillet)
1


et 0 pour le reste.
Je n'y comprends rien. Je t'en demande beaucoup, mais
pourrais-tu m'expliquer cela??


-----Original Message-----
Bonjour Denys,

j'ai apporté un léger correctif à la formule :
'-----------------------
Sub SLA()
Dim DerL as Long
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD(($B$1:$B$" & derl & ">$C$1:$C$" & derl
& ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"

Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------


Salutations!




"michdenis" a écrit dans le
message de news:%




Bonjour Denys,

C'est sensiblement la même procédure que Celle D'AV.

Sauf que tu dois faire attention au plage de cellules
et tu dois adapter le nom de la feuille.


'-----------------------
Sub SLA()
Application.ScreenUpdating = False
With Worksheets("Feuil1")
derl = .[B65536].End(3).Row
Application.Calculation = xlManual
.Range("r1:r12").FormulaLocal = _
"=SOMMEPROD((($B$1:$B$" & derl & "<>"""")>$C$1:$C$"
&



derl & ")*(MOIS($D$1:$D$" & derl & ")=LIGNE(A7)))"
Application.Calculation = xlAutomatic
.[r1:r12] = .[r1:r12].Value
End With

End Sub
'-----------------------

Salutations!



"Denys" a écrit dans le
message



de news:5c6a01c3423c$fbed26c0$
Salut Denis,

Voici la question originale (elle n'était peut-être pas
bien formulée:

Comment faire pour calculer les conditions suivantes:
Avoir le compte de chaque nombre en colonne B (résultant
d'une formule) plus grand que celui en colonne C pour
chaque mois de l'année.

Autrement dit, je voudrais savoir combien de fois
l'utilisateur a pris plus de jours pour accomplir une
tâche qu'il n'aurait dû, et ce pour chaque mois de
l'année.


Maintenant en R1:R12 je veux simplement obtenir les
résultats pour chaque mois de l'année courante,
résultats



que je reporterai dans la plage Z11:AK11

Si j'ai bien compris la formule, R1:R12 correspond à
chaque mois de l'année avec le =row()

Denys

-----Original Message-----
Bonjour à tous,

Avec l'aide d'Alain et de Denis j'ai écrit le code
suivant:


Sub SLA()
Application.ScreenUpdating = False
derL = [A65536].End(3).Row
Application.Calculation = xlManual
[r1:r12] = "=sumproduct(($G$8:$G$" & derL
& "<>"""")





($I$8:$I$" & derL & "))=year(today())*(month($E$8:$E$"
&




derL & "))=row()"
Application.Calculation = xlAutomatic
[r1:r12] = [r1:r12].Value

End Sub

Ce que c'est supposé faire, c'est que Excel doit
compter




le nombre de fois ou la valeur en colonne G est plus
grande que la valeur en colonne I (les deux étant des
nombres entiers), puis regarder le mois dans la colonne
E



(format mm/dd/yyyy) et rapporter le résultat dans la
bonne

case.

Les résultats que me donne cette formule vont de
#Value!




pour les sept premiers mois à FALSE pour le reste..

Quelqu'un aurait-il une idée de ce qui se passe?

Merci beaucoup pour votre temps.

Denys
.





.




.




.