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

Férié WE hors T

49 réponses
Avatar
Manu
Bonjour,

Malgrés deja toute l'aide apporter par diverses personnes dont Daniel,
Misange, Sam..., je ne m'en sort pas encore totalement.

J'espere y parvenir à condition de réussir cette formule avec laquelle je
galere et que je vous détail sur le cijoint (ce sera + clair). Merci pour
toutes aides, j'en ai besoin.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijmesyLSw.xls
Merci

Manu

9 réponses

1 2 3 4 5
Avatar
Manu
C'etait trop beau, dans la colonne C puis D ...etc de recap se sont des
formules et malheureusement il les considere comme un contenu, il faudrait
pouvoir lui dire que si la formule renvoi rien alors qu'il ne compte pas. et
qu'il ne compte que lorsque du texte apparait hormis le T bien-sur

Manu

"Manu" a écrit dans le message de news:
%
Peut-etre que j'ai trouvé ce qui manquait, il faut encore que je test,

la formule devrait etre ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(Mescodes<>""))

Car si on ne rajoutes pas *(Mescodes<>"") alors il se moquera de ce qu'il
y a de taper dans la colonne C et ne compteras que les jours feriés
tombant un WE.

Dites moi ce que vous en pensez.

Merci

"Manu" a écrit dans le message de news:

J'ai suivi scrupuleusement tes informations, et si je supprime toutes les
frappes de la colonne C de la feuil recap, j'ai desormais un resultat de
1 si j'ajoute du texte dans la cellule C369 correspondant au samedi 25
decembre, le resultat est tjrs de 1 .......

Peux tu verifier sur mon fichier joint que j'ai bien suivi tes consignes.
Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijTV8Pe2X.xls

Manu


"Misange" a écrit dans le message de news:

mais non !
pour mesdates :
=INDIRECT("B" & EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

pour mescodes
=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

et pour trouver donc le nombre de jours fériés tombant un week end
pendant la période considérée et ou le code soit différent de T

=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
que tu mets où tu veux du moment que c'est dans la colonne correspondant
au salarié pour lequel tu fais le décompte.

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que pour mesdates, je garde ceci : =INDIRECT("B" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
Car pour l'instant avec ceci en mesdates et ton nouvel adressage dans
mescodes, j'ai toujours rien comme resultat.
Je pense qu'il ne faut pas toucher à ta formule :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
Manu

"Misange" a écrit dans le message de news:

Pour adapter à la colonne, plutot que de mettre le N° de la colonne
dans une cellule comme tu l'as fait, utilise soit colonne() qui te le
renvoie directement soit, pour récupérer la lettre de la colonne,
utilise ceci
=GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COL ONNE();4))-1)

avec cette dernière soluce, "ma" def de mescodes devient:

=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

il ne te reste plus qu'à la tirer vers la droite et ça marche. (ouf
!!)
après c'est comme tu veux t'y choises !

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que ca signifie que je devrais faire :
=equiv(datecherchée;touteslesdates;0)+11 ?

Pour le nombre de personnes ca peut s'arranger facilement et ca peut
se tirer vers la droite avec la methode de denis en faisant pour adrJ
:

j'ai remplacé
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);3)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);3)
par :
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);RECAP!C381)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);RECAP!C381)

J'ai tapé en C381 : 3
D381 : 4
etc... ainsi l'adressage de adrJ peut coller

Pour la tienne, je comptais remplacer mescodes : =INDIRECT("C" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":C" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
par des lettre en ligne 382 ce qui donnerais : =INDIRECT(C382 &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":"&C382 &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))

En revanche il est vrai que je n'ais absolument pas pensé à
l'hypothese du 08 mai et le jeudi de l'ascension si ils tombent le
même jour, mais je ne vois pas où ca peut me gener car je ne souhaite
compter que les cellules pleines tombant un jour ferié tombant un
samedi et dimanche, le jeudi de l'ascension tombant tjrs un jeudi, je
ne suis pas concerné.

Manu


"Misange" a écrit dans le message de
news:
Tu as loupé pas mal de choses en fait :-)
la fonction equiv te renvoie la position d'un item dans un tableau.
Dans le cas présent, si tu veux utiliser cette position pour la
transformer en adresse, il faut absolument que tu tiennes compte de
l'organisation de tes données. Dans ta feuille récap, tes dates
démarrent à la ligne 11
si tu fait =equiv(datecherchée;touteslesdates;0) ca va te renvoyer
par exemple 1 pour le premier janvier. MAis l'adresse de cette
cellule n'est pas B1 mais B12 car la première ligne de ton tableau
démarre en 12 !

donc ce qui débloque c'est la définition de tes noms, pas les
formules.
Par ailleurs tu nous as donné un exemple ou il n'y avait qu'une
personne. Voilà maintenant qu'il y en a plein. La formule (la mienne
ou celle de Denis d'ailleurs) telle qu'elle est écrite n'est pas
"tirable" vers la droite puisque mescodes (ou l'équivalent pour
Denis) fait référence explicitement à la colonne C qui est celle de
Titi.

Tu as encore oublié de gérer une situation qui ne se présente pas
tous les ans mais qui est bien réelle : que se passe-t-il quand le 8
mai et le jeudi de l'ascension tombent le même jour ?

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Tu as raison Misange, désolé pour ces changements de Ref, su le
fichier ci-dessous en esperant qu'il puisse s'ouvrir, j'ai adapté
ta methode ainsi que celle de denis dans la feuil recap. Le
resultat me donne tjrs un resultat vide, je pense que ce doit etre
une mini erreur de ma part, mais impossible à trouver.
Avec ce fichier exemple et adapté, j'epere que vous pourrez me
stipuler mon erreur. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijPwWyMbF.xls
Manu

"Misange" a écrit dans le message de
news:
Manu, si tu passes ton temps à changer les références dans les
exemples que tu donnes, tu ne nous simplifies pas le boulot !!!
de toutes façons je ne peux pas ouvrir ton classeur, excel y
trouve un contenu illisible.

A toi de comprendre (ou pas mais dans ce cas la demande des
explications) les formules qu'on te propose et de les adapter.
Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Ci joint le fichier, la formule se situe en C380 feuil Recap,
bizarre, car je pense ne pas avoir loupé quoi que ce soit.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijGld5maK.xls
Merci

"Manu" a écrit dans le message de news:

Je ne pige pas mon erreur,

Voici ce que j'ai mis comme Nom à adrD et adrJ
adrD :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);2)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);2)
adrJ :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);3)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);3)


















Mes dates criteres sont dans la feuil JT en E8 et E9
Mes dates de recherches sont dans la feuil RECAP de B11 à B376
et les recherches de PP ; KK ; RR ..... se trouvent de C11 à
C376

Et la formule de Denis, je l'ai placé sur la feuil RECAP en C380
:
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(adrD);JOURS_feries;0))*(JOURSEM(INDIRECT(adrD);2)>5)*(INDIRECT(adrJ)={"PP"."KK"."AA"."RR"});1))

Mes jours fériés sont sur une autre feuil mais nommé :
JOURS_feries

J'ai vraiment le sentiment de n'avoir fait aucune erreur et
pourtant si je met PP le samedi 25 decembre 2010, le resultat
est vide. la formule ne me renvoie un code erreur, mais me donne
un resultat vide

Avez vous une idée ?

Merci

Manu

"michdenis" a écrit dans le message de
news:
| inclure cette notion de choix des dates de facon
| que si je change de dates, la formules fonctionnes
| entre ces 2 dates.

Suppose que tu conserves ces 2 mêmes cellules pour faire
ton calcul mais que tu veuilles modifier les dates.

A ) Crée 2 noms (insertion / nom / définir
Nom 1 = AdrD pour la colonne des dates
Fait référence à :
­RESSE(EQUIV($E$11;$A:$A;1);1)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);1)
La formule suivante suppose que tes dates sont en ordre
croissant à cause de:
du "1" dans EQUIV($E$11;$A:$A;1). Le traitement est plus
rapide.

Nom 2 = AdrJ Pour la colonne des jours "B:B"
Fait référence à
­RESSE(EQUIV($E$11;$A:$A;1);2)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);2)

Maintenant tu insères ces 2 noms dans ta formule générale :

Validation Matricielle : Maj + Ctrl + Enter
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(AdrD);G2:G8;0))*(JOURSEM(INDIRECT(AdrD);2)>5)*(INDIRECT(AdrJ)={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Voilà.



"Manu" a écrit dans le message de
groupe de discussion :
#
Genial, ca fonctionne impec, et je vous avoue que je n'ais pas
tout saisi
surtout cette partie de la formule :
SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5

il faut juste desoramais inclure cette notion de choix des
dates de facon
que si je change de dates, la formules fonctionnes entre ces 2
dates.

C'est deja un super avancement,

merci encore

Manu

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

Si tu veux faire un peu plus court :

Validation matricielle :
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Je ne sais si PP.PL .... la liste est exhaustive !



"michdenis" a écrit dans le message de
groupe de
discussion :
#
Validation matricielle : Ctrl + Maj + Enter

Ta formule est longue parce que logiguement on ne peut
difficilement
utiliser en même temps <>"T" et <>""
La formule calcule d'abord <>"" et soustrait <>"T"

=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"");1))-SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25="T");1))



"Manu" a écrit dans le message de
groupe de
discussion :
e0#
Ben... désolé,

Je suppose que c'etait en matrice, je l'ai testé ainsi et si
je supprime
tout le texte en colonne B et que je tape EEE en B2 il me
donne un
resultat
de 3

J'ai testé la formule en normal et là quoi que je fasse le
resultat est
tjrs
egal à 0

Manu

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

Essaie cette formule et on en parle plus ;-))

=SI(NBCAR($B$2:$B$25)>0;SOMME(SI(ESTNUM(EQUIV($A$2:$A$25;$G$2:$G$8;0))*(JOURSEM($A$2:$A$25;2)>5)*($B$2:$B$25<>"T");1));0)



"Manu" a écrit dans le message de
groupe de
discussion :

Bonjour Michdenis,

Ca ne fonctionne pas, car meme si je supprime tout ce qui est
colonne B,
la
formule trouve toujours 3

Le but etant de compter les cellules pleine de la col B
hormis si c'est
un
T
et qui soit un jour férié et qui tombe un samedi / dimanche
entre le
critere
de date stipulé en E11:E12 (ces dates seront bien sur
variable).

Manu


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

Bonjour,

En supposant que j'ai compris ton problème, la formule
serait :

Validation matricielle : Ctrl + Maj + Enter
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"T");1))



"Manu" a écrit dans le message de
groupe de
discussion :
#
Bonjour,

Malgrés deja toute l'aide apporter par diverses personnes
dont Daniel,
Misange, Sam..., je ne m'en sort pas encore totalement.

J'espere y parvenir à condition de réussir cette formule
avec laquelle
je
galere et que je vous détail sur le cijoint (ce sera +
clair). Merci
pour
toutes aides, j'en ai besoin.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijmesyLSw.xls
Merci

Manu


































Avatar
Misange
hello Denis


Dans les références à mes deux noms, j'aurais pu inclure (indirect())


[...]
Ainsi ma formule aurait ressemblé à ceci dans la cellule : (sans indirect)
=SOMME(SI(ESTNUM(EQUIV(AdrD;G2:G8;0))*(JOURSEM(AdrD;2)>5)*(AdrJ={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Est-ce que cela change quelque chose au niveau de l'efficience et du
temps de traitement par Excel ? Je ne suis pas convaincu, mais
j'admets que cette présentation peut-être plus facile à lire.



surement pas plus rapide, juste plus facile à lire on est d'accord

Je suis d'accord avec toi, la présentation de ta formule est plus courte :
=INDIRECT("A" & EQUIV(bilan!$E$11;bilan!$A:$A;0) & ":A" &
EQUIV(bilan!$E$12;bilan!$A:$A;0))

Mais la mienne à l'avantage d'être plus simple à saisir ...;-)) , je n'ai qu'à modifier
le 1 pour le 2
selon la colonne. Perso, ce n'est pas négligeable... ;-))



c'est exact, mais Manu ne nous aviat pas dit qu'il devait changer la
colonne ! dans son exemple il n'y avait qu'une colonne au départ, sinon
je serai partie différemment

Manu pourrait aussi remplacer bilan!$E$11 et bilan!$E$12 par des "NOMS", toujours
utile en cas de suppression d'une ligne le cas échéant. La même chose pourrait
s'appliquer pour bilan!$A:$A



totafé totafé

En dans ma formule principale, on pourrait aussi remplacer le tableau
des codes par un NOM et faire de même pour la plage des jours fériés. La
nouvelle formule se lirait comme suit :
=SOMME(SI(ESTNUM(EQUIV(AdrD;JrsFériés;0))*(JOURSEM(AdrD;2)>5)*(AdrJ=Code);1))



ben voilà ça devient plus joli. Bon faut toujours saisir en matricielle
et moi j'aime pas :-P

Moi, je pense à Manu, il faut lui laisser un peu de travail sinon il va nous en vouloir !
;-)



ca je crois pas !

Maintenant concernant la formule principale :
| =SOMMEPROD((JOURSEM(mesdates;2)>5)*(NB.SI(fériés;mesdates)<>0)*(mescodes<>"T"))

Si tu compares le comportement de ta formule à la mienne, force est
de constater que les deux formules ne sont pas semblables et qu'elles
ne renvoient pas le même résultat. À titre d'exemple, si tu enlèves tous
les codes saisis en colonne B, ta formule retourne 3 au lieu de 0.
Manu, selon ses besoins décidera ce qui lui convient le mieux.



Nous sommes d'accord.
J'ai compris la question de manu comme
"nb de jours fériés tombant un WE et ou la lettre est différente de T"
si tu effaces tous les codes, cela doit donner 3, pas 0
Maintenant si tu veux que ce soit
nb de jours fériés tombant un WE et ou la lettre est différente de T et
n'est pas vide, ce qui n'est pas pareil du tout (mais ça c'est à Manu de
nous dire ce qu'il veut), il suffit d'ajouter une condition à ma formule :
=SOMMEPROD((JOURSEM(mesdates;2)>5)*(NB.SI(fériés;mesdates)<>0)*(mescodes<>"T")*(mescodes<>""))
L'avantage de ma formule c'est que tu peux ajouter des tas de codes
différents (dans la boiter de Manu, ils ont un nombre de raisons de
s'absenter, c'est hallucinant ! comment font-ils pour réussir à être là
;-) ? )

Encore une belle illustration du fait que la façon de poser de problème
est CRUCIALE. Le faire correctement c'est déjà avoir résolu une très
grande partie du chemin.
Cela dit, vu la complexité du truc, ça m'a amusé de réfléchir à une
solution, mais pour le coup une petite fonction en VBA me paraitrait
autrement plus simple à débugger. Sans compter que maintenant son
classeur est truffé de sommeprod ou de matricielles et que le temps de
calcul va vite devenir redhibitoire.



Bon dimanche.


Ah oui, j'ai retrouvé avec un plaisir non dissimulé le plaisir d'être au
soleil sur la terrasse. On respire enfin. happy canadien qui va profiter
de ce dimanche plus longtemps que moi maintenant :-)

Misange
Avatar
Manu
Je pense que c'est enfin OK avec ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(ESTTEXTE(Mescodes)*(Mescodes<>"")))
je ne veux pas me réjouir trop vite, donnez moi votre avis, mais apres
quelques tests, ca m'a l'air bon

J'attend votre avis, Merci

Manu


"Manu" a écrit dans le message de news:


C'etait trop beau, dans la colonne C puis D ...etc de recap se sont des
formules et malheureusement il les considere comme un contenu, il faudrait
pouvoir lui dire que si la formule renvoi rien alors qu'il ne compte pas.
et qu'il ne compte que lorsque du texte apparait hormis le T bien-sur

Manu

"Manu" a écrit dans le message de news:
%
Peut-etre que j'ai trouvé ce qui manquait, il faut encore que je test,

la formule devrait etre ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(Mescodes<>""))

Car si on ne rajoutes pas *(Mescodes<>"") alors il se moquera de ce qu'il
y a de taper dans la colonne C et ne compteras que les jours feriés
tombant un WE.

Dites moi ce que vous en pensez.

Merci

"Manu" a écrit dans le message de news:

J'ai suivi scrupuleusement tes informations, et si je supprime toutes
les frappes de la colonne C de la feuil recap, j'ai desormais un
resultat de 1 si j'ajoute du texte dans la cellule C369 correspondant au
samedi 25 decembre, le resultat est tjrs de 1 .......

Peux tu verifier sur mon fichier joint que j'ai bien suivi tes
consignes. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijTV8Pe2X.xls

Manu


"Misange" a écrit dans le message de news:

mais non !
pour mesdates :
=INDIRECT("B" & EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

pour mescodes
=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

et pour trouver donc le nombre de jours fériés tombant un week end
pendant la période considérée et ou le code soit différent de T

=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
que tu mets où tu veux du moment que c'est dans la colonne
correspondant au salarié pour lequel tu fais le décompte.

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que pour mesdates, je garde ceci : =INDIRECT("B" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
Car pour l'instant avec ceci en mesdates et ton nouvel adressage dans
mescodes, j'ai toujours rien comme resultat.
Je pense qu'il ne faut pas toucher à ta formule :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
Manu

"Misange" a écrit dans le message de
news:
Pour adapter à la colonne, plutot que de mettre le N° de la colonne
dans une cellule comme tu l'as fait, utilise soit colonne() qui te le
renvoie directement soit, pour récupérer la lettre de la colonne,
utilise ceci
=GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COL ONNE();4))-1)

avec cette dernière soluce, "ma" def de mescodes devient:

=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

il ne te reste plus qu'à la tirer vers la droite et ça marche. (ouf
!!)
après c'est comme tu veux t'y choises !

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que ca signifie que je devrais faire :
=equiv(datecherchée;touteslesdates;0)+11 ?

Pour le nombre de personnes ca peut s'arranger facilement et ca peut
se tirer vers la droite avec la methode de denis en faisant pour
adrJ :

j'ai remplacé
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);3)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);3)
par :
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);RECAP!C381)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);RECAP!C381)

J'ai tapé en C381 : 3
D381 : 4
etc... ainsi l'adressage de adrJ peut coller

Pour la tienne, je comptais remplacer mescodes : =INDIRECT("C" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":C" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
par des lettre en ligne 382 ce qui donnerais : =INDIRECT(C382 &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":"&C382 &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))

En revanche il est vrai que je n'ais absolument pas pensé à
l'hypothese du 08 mai et le jeudi de l'ascension si ils tombent le
même jour, mais je ne vois pas où ca peut me gener car je ne
souhaite compter que les cellules pleines tombant un jour ferié
tombant un samedi et dimanche, le jeudi de l'ascension tombant tjrs
un jeudi, je ne suis pas concerné.

Manu


"Misange" a écrit dans le message de
news:
Tu as loupé pas mal de choses en fait :-)
la fonction equiv te renvoie la position d'un item dans un tableau.
Dans le cas présent, si tu veux utiliser cette position pour la
transformer en adresse, il faut absolument que tu tiennes compte de
l'organisation de tes données. Dans ta feuille récap, tes dates
démarrent à la ligne 11
si tu fait =equiv(datecherchée;touteslesdates;0) ca va te renvoyer
par exemple 1 pour le premier janvier. MAis l'adresse de cette
cellule n'est pas B1 mais B12 car la première ligne de ton tableau
démarre en 12 !

donc ce qui débloque c'est la définition de tes noms, pas les
formules.
Par ailleurs tu nous as donné un exemple ou il n'y avait qu'une
personne. Voilà maintenant qu'il y en a plein. La formule (la
mienne ou celle de Denis d'ailleurs) telle qu'elle est écrite n'est
pas "tirable" vers la droite puisque mescodes (ou l'équivalent pour
Denis) fait référence explicitement à la colonne C qui est celle de
Titi.

Tu as encore oublié de gérer une situation qui ne se présente pas
tous les ans mais qui est bien réelle : que se passe-t-il quand le
8 mai et le jeudi de l'ascension tombent le même jour ?

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Tu as raison Misange, désolé pour ces changements de Ref, su le
fichier ci-dessous en esperant qu'il puisse s'ouvrir, j'ai adapté
ta methode ainsi que celle de denis dans la feuil recap. Le
resultat me donne tjrs un resultat vide, je pense que ce doit etre
une mini erreur de ma part, mais impossible à trouver.
Avec ce fichier exemple et adapté, j'epere que vous pourrez me
stipuler mon erreur. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijPwWyMbF.xls
Manu

"Misange" a écrit dans le message de
news:
Manu, si tu passes ton temps à changer les références dans les
exemples que tu donnes, tu ne nous simplifies pas le boulot !!!
de toutes façons je ne peux pas ouvrir ton classeur, excel y
trouve un contenu illisible.

A toi de comprendre (ou pas mais dans ce cas la demande des
explications) les formules qu'on te propose et de les adapter.
Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Ci joint le fichier, la formule se situe en C380 feuil Recap,
bizarre, car je pense ne pas avoir loupé quoi que ce soit.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijGld5maK.xls
Merci

"Manu" a écrit dans le message de
news:
Je ne pige pas mon erreur,

Voici ce que j'ai mis comme Nom à adrD et adrJ
adrD :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);2)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);2)
adrJ :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);3)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);3)


















Mes dates criteres sont dans la feuil JT en E8 et E9
Mes dates de recherches sont dans la feuil RECAP de B11 à B376
et les recherches de PP ; KK ; RR ..... se trouvent de C11 à
C376

Et la formule de Denis, je l'ai placé sur la feuil RECAP en
C380 :
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(adrD);JOURS_feries;0))*(JOURSEM(INDIRECT(adrD);2)>5)*(INDIRECT(adrJ)={"PP"."KK"."AA"."RR"});1))

Mes jours fériés sont sur une autre feuil mais nommé :
JOURS_feries

J'ai vraiment le sentiment de n'avoir fait aucune erreur et
pourtant si je met PP le samedi 25 decembre 2010, le resultat
est vide. la formule ne me renvoie un code erreur, mais me
donne un resultat vide

Avez vous une idée ?

Merci

Manu

"michdenis" a écrit dans le message de
news:
| inclure cette notion de choix des dates de facon
| que si je change de dates, la formules fonctionnes
| entre ces 2 dates.

Suppose que tu conserves ces 2 mêmes cellules pour faire
ton calcul mais que tu veuilles modifier les dates.

A ) Crée 2 noms (insertion / nom / définir
Nom 1 = AdrD pour la colonne des dates
Fait référence à :
­RESSE(EQUIV($E$11;$A:$A;1);1)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);1)
La formule suivante suppose que tes dates sont en ordre
croissant à cause de:
du "1" dans EQUIV($E$11;$A:$A;1). Le traitement est plus
rapide.

Nom 2 = AdrJ Pour la colonne des jours "B:B"
Fait référence à
­RESSE(EQUIV($E$11;$A:$A;1);2)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);2)

Maintenant tu insères ces 2 noms dans ta formule générale :

Validation Matricielle : Maj + Ctrl + Enter
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(AdrD);G2:G8;0))*(JOURSEM(INDIRECT(AdrD);2)>5)*(INDIRECT(AdrJ)={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Voilà.



"Manu" a écrit dans le message de
groupe de discussion :
#
Genial, ca fonctionne impec, et je vous avoue que je n'ais pas
tout saisi
surtout cette partie de la formule :
SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5

il faut juste desoramais inclure cette notion de choix des
dates de facon
que si je change de dates, la formules fonctionnes entre ces 2
dates.

C'est deja un super avancement,

merci encore

Manu

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

Si tu veux faire un peu plus court :

Validation matricielle :
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Je ne sais si PP.PL .... la liste est exhaustive !



"michdenis" a écrit dans le message
de groupe de
discussion :
#
Validation matricielle : Ctrl + Maj + Enter

Ta formule est longue parce que logiguement on ne peut
difficilement
utiliser en même temps <>"T" et <>""
La formule calcule d'abord <>"" et soustrait <>"T"

=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"");1))-SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25="T");1))



"Manu" a écrit dans le message de
groupe de
discussion :
e0#
Ben... désolé,

Je suppose que c'etait en matrice, je l'ai testé ainsi et si
je supprime
tout le texte en colonne B et que je tape EEE en B2 il me
donne un
resultat
de 3

J'ai testé la formule en normal et là quoi que je fasse le
resultat est
tjrs
egal à 0

Manu

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

Essaie cette formule et on en parle plus ;-))

=SI(NBCAR($B$2:$B$25)>0;SOMME(SI(ESTNUM(EQUIV($A$2:$A$25;$G$2:$G$8;0))*(JOURSEM($A$2:$A$25;2)>5)*($B$2:$B$25<>"T");1));0)



"Manu" a écrit dans le message de
groupe de
discussion :

Bonjour Michdenis,

Ca ne fonctionne pas, car meme si je supprime tout ce qui
est colonne B,
la
formule trouve toujours 3

Le but etant de compter les cellules pleine de la col B
hormis si c'est
un
T
et qui soit un jour férié et qui tombe un samedi / dimanche
entre le
critere
de date stipulé en E11:E12 (ces dates seront bien sur
variable).

Manu


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

Bonjour,

En supposant que j'ai compris ton problème, la formule
serait :

Validation matricielle : Ctrl + Maj + Enter
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"T");1))



"Manu" a écrit dans le message de
groupe de
discussion :
#
Bonjour,

Malgrés deja toute l'aide apporter par diverses personnes
dont Daniel,
Misange, Sam..., je ne m'en sort pas encore totalement.

J'espere y parvenir à condition de réussir cette formule
avec laquelle
je
galere et que je vous détail sur le cijoint (ce sera +
clair). Merci
pour
toutes aides, j'en ai besoin.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijmesyLSw.xls
Merci

Manu






































Avatar
Manu
Misange, quand tu dis :
"> Encore une belle illustration du fait que la façon de poser de problème
est CRUCIALE. Le faire correctement c'est déjà avoir résolu une très grande
partie du chemin."
Tu as totalement raison et désolé de ne pas avoir été suffisement clair, je
ferais plus attention la prochaine fois.

"> Cela dit, vu la complexité du truc, ça m'a amusé de réfléchir à une
solution, mais pour le coup une petite fonction en VBA me paraitrait
autrement plus simple à débugger. Sans compter que maintenant son classeur
est truffé de sommeprod ou de matricielles et que le temps de calcul va
vite devenir redhibitoire."
Tu crois pas si bien dire, il est d'une lenteur incroyable et encore quand
j'ai la chance qu'il ne me plombe pas. Je sais que la solution aurait été
meilleur en VBA, mais là pour moi c'est le flou le plus total hormis
quelques bricoles.

Ceci dis, pouvez vous verifier que ma proposition (ficelle plus bas) est OK

En tout cas, merci à vous deux, vous m'avez été totalement indispensable sur
ce fichier complexe, ca fait vraiment plaisir de ce sentir soutenu !

Manu

"Misange" a écrit dans le message de news:

hello Denis


Dans les références à mes deux noms, j'aurais pu inclure (indirect())


[...]
Ainsi ma formule aurait ressemblé à ceci dans la cellule : (sans
indirect)
=SOMME(SI(ESTNUM(EQUIV(AdrD;G2:G8;0))*(JOURSEM(AdrD;2)>5)*(AdrJ={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Est-ce que cela change quelque chose au niveau de l'efficience et du
temps de traitement par Excel ? Je ne suis pas convaincu, mais
j'admets que cette présentation peut-être plus facile à lire.



surement pas plus rapide, juste plus facile à lire on est d'accord

Je suis d'accord avec toi, la présentation de ta formule est plus courte
:
=INDIRECT("A" & EQUIV(bilan!$E$11;bilan!$A:$A;0) & ":A" &
EQUIV(bilan!$E$12;bilan!$A:$A;0))

Mais la mienne à l'avantage d'être plus simple à saisir ...;-)) , je
n'ai qu'à modifier le 1 pour le 2
selon la colonne. Perso, ce n'est pas négligeable... ;-))



c'est exact, mais Manu ne nous aviat pas dit qu'il devait changer la
colonne ! dans son exemple il n'y avait qu'une colonne au départ, sinon je
serai partie différemment

Manu pourrait aussi remplacer bilan!$E$11 et bilan!$E$12 par des "NOMS",
toujours
utile en cas de suppression d'une ligne le cas échéant. La même chose
pourrait
s'appliquer pour bilan!$A:$A



totafé totafé

En dans ma formule principale, on pourrait aussi remplacer le tableau
des codes par un NOM et faire de même pour la plage des jours fériés. La
nouvelle formule se lirait comme suit :
=SOMME(SI(ESTNUM(EQUIV(AdrD;JrsFériés;0))*(JOURSEM(AdrD;2)>5)*(AdrJ=Code);1))



ben voilà ça devient plus joli. Bon faut toujours saisir en matricielle et
moi j'aime pas :-P

Moi, je pense à Manu, il faut lui laisser un peu de travail sinon il va
nous en vouloir !
;-)



ca je crois pas !

Maintenant concernant la formule principale :
|
=SOMMEPROD((JOURSEM(mesdates;2)>5)*(NB.SI(fériés;mesdates)<>0)*(mescodes<>"T"))

Si tu compares le comportement de ta formule à la mienne, force est
de constater que les deux formules ne sont pas semblables et qu'elles
ne renvoient pas le même résultat. À titre d'exemple, si tu enlèves tous
les codes saisis en colonne B, ta formule retourne 3 au lieu de 0.
Manu, selon ses besoins décidera ce qui lui convient le mieux.



Nous sommes d'accord.
J'ai compris la question de manu comme
"nb de jours fériés tombant un WE et ou la lettre est différente de T"
si tu effaces tous les codes, cela doit donner 3, pas 0
Maintenant si tu veux que ce soit
nb de jours fériés tombant un WE et ou la lettre est différente de T et
n'est pas vide, ce qui n'est pas pareil du tout (mais ça c'est à Manu de
nous dire ce qu'il veut), il suffit d'ajouter une condition à ma formule :
=SOMMEPROD((JOURSEM(mesdates;2)>5)*(NB.SI(fériés;mesdates)<>0)*(mescodes<>"T")*(mescodes<>""))
L'avantage de ma formule c'est que tu peux ajouter des tas de codes
différents (dans la boiter de Manu, ils ont un nombre de raisons de
s'absenter, c'est hallucinant ! comment font-ils pour réussir à être là
;-) ? )

Encore une belle illustration du fait que la façon de poser de problème
est CRUCIALE. Le faire correctement c'est déjà avoir résolu une très
grande partie du chemin.
Cela dit, vu la complexité du truc, ça m'a amusé de réfléchir à une
solution, mais pour le coup une petite fonction en VBA me paraitrait
autrement plus simple à débugger. Sans compter que maintenant son classeur
est truffé de sommeprod ou de matricielles et que le temps de calcul va
vite devenir redhibitoire.



Bon dimanche.


Ah oui, j'ai retrouvé avec un plaisir non dissimulé le plaisir d'être au
soleil sur la terrasse. On respire enfin. happy canadien qui va profiter
de ce dimanche plus longtemps que moi maintenant :-)

Misange
Avatar
Daniel.C
Bonjour.
Mon avis... Tolstoi va être jaloux. Si tu veux concurrencer Guerre et
Paix, ouvre un deuxième tome (non, fil).
;-)))
Daniel

Je pense que c'est enfin OK avec ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(ESTTEXTE(Mescodes)*(Mescodes<>"")))
je ne veux pas me réjouir trop vite, donnez moi votre avis, mais apres
quelques tests, ca m'a l'air bon

J'attend votre avis, Merci

Manu


"Manu" a écrit dans le message de news:


C'etait trop beau, dans la colonne C puis D ...etc de recap se sont des
formules et malheureusement il les considere comme un contenu, il faudrait
pouvoir lui dire que si la formule renvoi rien alors qu'il ne compte pas.
et qu'il ne compte que lorsque du texte apparait hormis le T bien-sur

Manu

"Manu" a écrit dans le message de news:
%
Peut-etre que j'ai trouvé ce qui manquait, il faut encore que je test,

la formule devrait etre ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(Mescodes<>""))

Car si on ne rajoutes pas *(Mescodes<>"") alors il se moquera de ce qu'il
y a de taper dans la colonne C et ne compteras que les jours feriés
tombant un WE.

Dites moi ce que vous en pensez.

Merci

"Manu" a écrit dans le message de news:

J'ai suivi scrupuleusement tes informations, et si je supprime toutes les
frappes de la colonne C de la feuil recap, j'ai desormais un resultat de
1 si j'ajoute du texte dans la cellule C369 correspondant au samedi 25
decembre, le resultat est tjrs de 1 .......

Peux tu verifier sur mon fichier joint que j'ai bien suivi tes consignes.
Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijTV8Pe2X.xls

Manu


"Misange" a écrit dans le message de news:

mais non !
pour mesdates :
=INDIRECT("B" & EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

pour mescodes
=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

et pour trouver donc le nombre de jours fériés tombant un week end
pendant la période considérée et ou le code soit différent de T

=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
que tu mets où tu veux du moment que c'est dans la colonne correspondant
au salarié pour lequel tu fais le décompte.

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que pour mesdates, je garde ceci : =INDIRECT("B" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
Car pour l'instant avec ceci en mesdates et ton nouvel adressage dans
mescodes, j'ai toujours rien comme resultat.
Je pense qu'il ne faut pas toucher à ta formule :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
Manu

"Misange" a écrit dans le message de news:

Pour adapter à la colonne, plutot que de mettre le N° de la colonne
dans une cellule comme tu l'as fait, utilise soit colonne() qui te le
renvoie directement soit, pour récupérer la lettre de la colonne,
utilise ceci
=GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COL ONNE();4))-1)

avec cette dernière soluce, "ma" def de mescodes devient:

=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

il ne te reste plus qu'à la tirer vers la droite et ça marche. (ouf
!!)
après c'est comme tu veux t'y choises !

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que ca signifie que je devrais faire :
=equiv(datecherchée;touteslesdates;0)+11 ?

Pour le nombre de personnes ca peut s'arranger facilement et ca peut
se tirer vers la droite avec la methode de denis en faisant pour adrJ
:

j'ai remplacé
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);3)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);3)
par :
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);RECAP!C381)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);RECAP!C381)

J'ai tapé en C381 : 3
D381 : 4
etc... ainsi l'adressage de adrJ peut coller

Pour la tienne, je comptais remplacer mescodes : =INDIRECT("C" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":C" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
par des lettre en ligne 382 ce qui donnerais : =INDIRECT(C382 &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":"&C382 &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))

En revanche il est vrai que je n'ais absolument pas pensé à
l'hypothese du 08 mai et le jeudi de l'ascension si ils tombent le
même jour, mais je ne vois pas où ca peut me gener car je ne souhaite
compter que les cellules pleines tombant un jour ferié tombant un
samedi et dimanche, le jeudi de l'ascension tombant tjrs un jeudi, je
ne suis pas concerné.

Manu


"Misange" a écrit dans le message de
news:
Tu as loupé pas mal de choses en fait :-)
la fonction equiv te renvoie la position d'un item dans un tableau.
Dans le cas présent, si tu veux utiliser cette position pour la
transformer en adresse, il faut absolument que tu tiennes compte de
l'organisation de tes données. Dans ta feuille récap, tes dates
démarrent à la ligne 11
si tu fait =equiv(datecherchée;touteslesdates;0) ca va te renvoyer
par exemple 1 pour le premier janvier. MAis l'adresse de cette
cellule n'est pas B1 mais B12 car la première ligne de ton tableau
démarre en 12 !

donc ce qui débloque c'est la définition de tes noms, pas les
formules.
Par ailleurs tu nous as donné un exemple ou il n'y avait qu'une
personne. Voilà maintenant qu'il y en a plein. La formule (la mienne
ou celle de Denis d'ailleurs) telle qu'elle est écrite n'est pas
"tirable" vers la droite puisque mescodes (ou l'équivalent pour
Denis) fait référence explicitement à la colonne C qui est celle de
Titi.

Tu as encore oublié de gérer une situation qui ne se présente pas
tous les ans mais qui est bien réelle : que se passe-t-il quand le 8
mai et le jeudi de l'ascension tombent le même jour ?

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Tu as raison Misange, désolé pour ces changements de Ref, su le
fichier ci-dessous en esperant qu'il puisse s'ouvrir, j'ai adapté
ta methode ainsi que celle de denis dans la feuil recap. Le
resultat me donne tjrs un resultat vide, je pense que ce doit etre
une mini erreur de ma part, mais impossible à trouver.
Avec ce fichier exemple et adapté, j'epere que vous pourrez me
stipuler mon erreur. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijPwWyMbF.xls
Manu

"Misange" a écrit dans le message de
news:
Manu, si tu passes ton temps à changer les références dans les
exemples que tu donnes, tu ne nous simplifies pas le boulot !!!
de toutes façons je ne peux pas ouvrir ton classeur, excel y
trouve un contenu illisible.

A toi de comprendre (ou pas mais dans ce cas la demande des
explications) les formules qu'on te propose et de les adapter.
Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Ci joint le fichier, la formule se situe en C380 feuil Recap,
bizarre, car je pense ne pas avoir loupé quoi que ce soit.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijGld5maK.xls
Merci

"Manu" a écrit dans le message de news:

Je ne pige pas mon erreur,

Voici ce que j'ai mis comme Nom à adrD et adrJ
adrD :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);2)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);2)
adrJ :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);3)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);3)


















Mes dates criteres sont dans la feuil JT en E8 et E9
Mes dates de recherches sont dans la feuil RECAP de B11 à B376
et les recherches de PP ; KK ; RR ..... se trouvent de C11 à
C376

Et la formule de Denis, je l'ai placé sur la feuil RECAP en C380
:
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(adrD);JOURS_feries;0))*(JOURSEM(INDIRECT(adrD);2)>5)*(INDIRECT(adrJ)={"PP"."KK"."AA"."RR"});1))

Mes jours fériés sont sur une autre feuil mais nommé :
JOURS_feries

J'ai vraiment le sentiment de n'avoir fait aucune erreur et
pourtant si je met PP le samedi 25 decembre 2010, le resultat
est vide. la formule ne me renvoie un code erreur, mais me donne
un resultat vide

Avez vous une idée ?

Merci

Manu

"michdenis" a écrit dans le message de
news:
| inclure cette notion de choix des dates de facon
| que si je change de dates, la formules fonctionnes
| entre ces 2 dates.

Suppose que tu conserves ces 2 mêmes cellules pour faire
ton calcul mais que tu veuilles modifier les dates.

A ) Crée 2 noms (insertion / nom / définir
Nom 1 = AdrD pour la colonne des dates
Fait référence à :
­RESSE(EQUIV($E$11;$A:$A;1);1)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);1)
La formule suivante suppose que tes dates sont en ordre
croissant à cause de:
du "1" dans EQUIV($E$11;$A:$A;1). Le traitement est plus
rapide.

Nom 2 = AdrJ Pour la colonne des jours "B:B"
Fait référence à
­RESSE(EQUIV($E$11;$A:$A;1);2)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);2)

Maintenant tu insères ces 2 noms dans ta formule générale :

Validation Matricielle : Maj + Ctrl + Enter
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(AdrD);G2:G8;0))*(JOURSEM(INDIRECT(AdrD);2)>5)*(INDIRECT(AdrJ)={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Voilà.



"Manu" a écrit dans le message de
groupe de discussion :
#
Genial, ca fonctionne impec, et je vous avoue que je n'ais pas
tout saisi
surtout cette partie de la formule :
SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5

il faut juste desoramais inclure cette notion de choix des
dates de facon
que si je change de dates, la formules fonctionnes entre ces 2
dates.

C'est deja un super avancement,

merci encore

Manu

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

Si tu veux faire un peu plus court :

Validation matricielle :
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Je ne sais si PP.PL .... la liste est exhaustive !



"michdenis" a écrit dans le message de
groupe de
discussion :
#
Validation matricielle : Ctrl + Maj + Enter

Ta formule est longue parce que logiguement on ne peut
difficilement
utiliser en même temps <>"T" et <>""
La formule calcule d'abord <>"" et soustrait <>"T"

=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"");1))-SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25="T");1))



"Manu" a écrit dans le message de
groupe de
discussion :
e0#
Ben... désolé,

Je suppose que c'etait en matrice, je l'ai testé ainsi et si
je supprime
tout le texte en colonne B et que je tape EEE en B2 il me
donne un
resultat
de 3

J'ai testé la formule en normal et là quoi que je fasse le
resultat est
tjrs
egal à 0

Manu

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

Essaie cette formule et on en parle plus ;-))

=SI(NBCAR($B$2:$B$25)>0;SOMME(SI(ESTNUM(EQUIV($A$2:$A$25;$G$2:$G$8;0))*(JOURSEM($A$2:$A$25;2)>5)*($B$2:$B$25<>"T");1));0)



"Manu" a écrit dans le message de
groupe de
discussion :

Bonjour Michdenis,

Ca ne fonctionne pas, car meme si je supprime tout ce qui est
colonne B,
la
formule trouve toujours 3

Le but etant de compter les cellules pleine de la col B
hormis si c'est
un
T
et qui soit un jour férié et qui tombe un samedi / dimanche
entre le
critere
de date stipulé en E11:E12 (ces dates seront bien sur
variable).

Manu


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

Bonjour,

En supposant que j'ai compris ton problème, la formule
serait :

Validation matricielle : Ctrl + Maj + Enter
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"T");1))



"Manu" a écrit dans le message de
groupe de
discussion :
#
Bonjour,

Malgrés deja toute l'aide apporter par diverses personnes
dont Daniel,
Misange, Sam..., je ne m'en sort pas encore totalement.

J'espere y parvenir à condition de réussir cette formule
avec laquelle
je
galere et que je vous détail sur le cijoint (ce sera +
clair). Merci
pour
toutes aides, j'en ai besoin.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijmesyLSw.xls
Merci

Manu






































Avatar
Misange
Mais c'est à toi de nous dire !!! il n'y a que toi qui peut vérifier que
le résultat trouvé correspond à ce que tu attends. Le fait de prendre en
compte les codes non vides, je te l'avais proposé (discussion avec Denis
sur le fait que quand on efface les codes dans la colonne B on doit
trouver 3 ou 0). C'est toi qui sait.

Dans ton classeur tu as prévu de pouvoir mettre beaucoup de salariés,
avec des tableaux préremplis qui sont bourrés de formules matricielles.
Je te conseille VIVEMENT de ne pas en mettre qui ne te serve à rien et
de faire très très régulièrement des sauvegardes de secours de ton
classeur... Plus un classeur est complexe, plus il y a de risque qu'un
truc de travers le fasse exploser en vol (genre des microscoupures de
courant, un plantage système ou un éternuement de coccinelle)

Et puis, voilà une bonne occasion de te mettre au VBA. C'est plus facile
de suivre ce que fait une fonction VBA en pas à pas que de vérifier une
formule. En plus, tu peux mettre des tas de commentaires dedans et du
coup quand 2 ans plus tard tu dois ajouter une condition parce que les
règles ont changé, tu n'as pas tout à refaire.

Tu pourrais par exemple aussi faire un petit formulaire (userform) pour
ajouter un salarié quand il rentre dans la boite et seulement à ce moent
là remplir ce qui le concerne dans les tableaux. Enfin tout ça ce sont
des pistes de réflexion mais tu as un bel exemple d'utiisation pour
apprendre !

Bonne fin de dimanche

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Je pense que c'est enfin OK avec ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(ESTTEXTE(Mescodes)*(Mescodes<>"")))
je ne veux pas me réjouir trop vite, donnez moi votre avis, mais apres
quelques tests, ca m'a l'air bon

J'attend votre avis, Merci

Manu


"Manu" a écrit dans le message de news:

C'etait trop beau, dans la colonne C puis D ...etc de recap se sont des
formules et malheureusement il les considere comme un contenu, il faudrait
pouvoir lui dire que si la formule renvoi rien alors qu'il ne compte pas.
et qu'il ne compte que lorsque du texte apparait hormis le T bien-sur

Manu

"Manu" a écrit dans le message de news:
%
Peut-etre que j'ai trouvé ce qui manquait, il faut encore que je test,

la formule devrait etre ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(Mescodes<>""))

Car si on ne rajoutes pas *(Mescodes<>"") alors il se moquera de ce qu'il
y a de taper dans la colonne C et ne compteras que les jours feriés
tombant un WE.

Dites moi ce que vous en pensez.

Merci

"Manu" a écrit dans le message de news:

J'ai suivi scrupuleusement tes informations, et si je supprime toutes
les frappes de la colonne C de la feuil recap, j'ai desormais un
resultat de 1 si j'ajoute du texte dans la cellule C369 correspondant au
samedi 25 decembre, le resultat est tjrs de 1 .......

Peux tu verifier sur mon fichier joint que j'ai bien suivi tes
consignes. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijTV8Pe2X.xls

Manu


"Misange" a écrit dans le message de news:

mais non !
pour mesdates :
=INDIRECT("B" & EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

pour mescodes
=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

et pour trouver donc le nombre de jours fériés tombant un week end
pendant la période considérée et ou le code soit différent de T

=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
que tu mets où tu veux du moment que c'est dans la colonne
correspondant au salarié pour lequel tu fais le décompte.

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que pour mesdates, je garde ceci : =INDIRECT("B" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
Car pour l'instant avec ceci en mesdates et ton nouvel adressage dans
mescodes, j'ai toujours rien comme resultat.
Je pense qu'il ne faut pas toucher à ta formule :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
Manu

"Misange" a écrit dans le message de
news:
Pour adapter à la colonne, plutot que de mettre le N° de la colonne
dans une cellule comme tu l'as fait, utilise soit colonne() qui te le
renvoie directement soit, pour récupérer la lettre de la colonne,
utilise ceci
=GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COL ONNE();4))-1)

avec cette dernière soluce, "ma" def de mescodes devient:

=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

il ne te reste plus qu'à la tirer vers la droite et ça marche. (ouf
!!)
après c'est comme tu veux t'y choises !

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que ca signifie que je devrais faire :
=equiv(datecherchée;touteslesdates;0)+11 ?

Pour le nombre de personnes ca peut s'arranger facilement et ca peut
se tirer vers la droite avec la methode de denis en faisant pour
adrJ :

j'ai remplacé
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);3)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);3)
par :
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);RECAP!C381)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);RECAP!C381)

J'ai tapé en C381 : 3
D381 : 4
etc... ainsi l'adressage de adrJ peut coller

Pour la tienne, je comptais remplacer mescodes : =INDIRECT("C" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":C" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
par des lettre en ligne 382 ce qui donnerais : =INDIRECT(C382 &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":"&C382 &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))

En revanche il est vrai que je n'ais absolument pas pensé à
l'hypothese du 08 mai et le jeudi de l'ascension si ils tombent le
même jour, mais je ne vois pas où ca peut me gener car je ne
souhaite compter que les cellules pleines tombant un jour ferié
tombant un samedi et dimanche, le jeudi de l'ascension tombant tjrs
un jeudi, je ne suis pas concerné.

Manu


"Misange" a écrit dans le message de
news:
Tu as loupé pas mal de choses en fait :-)
la fonction equiv te renvoie la position d'un item dans un tableau.
Dans le cas présent, si tu veux utiliser cette position pour la
transformer en adresse, il faut absolument que tu tiennes compte de
l'organisation de tes données. Dans ta feuille récap, tes dates
démarrent à la ligne 11
si tu fait =equiv(datecherchée;touteslesdates;0) ca va te renvoyer
par exemple 1 pour le premier janvier. MAis l'adresse de cette
cellule n'est pas B1 mais B12 car la première ligne de ton tableau
démarre en 12 !

donc ce qui débloque c'est la définition de tes noms, pas les
formules.
Par ailleurs tu nous as donné un exemple ou il n'y avait qu'une
personne. Voilà maintenant qu'il y en a plein. La formule (la
mienne ou celle de Denis d'ailleurs) telle qu'elle est écrite n'est
pas "tirable" vers la droite puisque mescodes (ou l'équivalent pour
Denis) fait référence explicitement à la colonne C qui est celle de
Titi.

Tu as encore oublié de gérer une situation qui ne se présente pas
tous les ans mais qui est bien réelle : que se passe-t-il quand le
8 mai et le jeudi de l'ascension tombent le même jour ?

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Tu as raison Misange, désolé pour ces changements de Ref, su le
fichier ci-dessous en esperant qu'il puisse s'ouvrir, j'ai adapté
ta methode ainsi que celle de denis dans la feuil recap. Le
resultat me donne tjrs un resultat vide, je pense que ce doit etre
une mini erreur de ma part, mais impossible à trouver.
Avec ce fichier exemple et adapté, j'epere que vous pourrez me
stipuler mon erreur. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijPwWyMbF.xls
Manu

"Misange" a écrit dans le message de
news:
Manu, si tu passes ton temps à changer les références dans les
exemples que tu donnes, tu ne nous simplifies pas le boulot !!!
de toutes façons je ne peux pas ouvrir ton classeur, excel y
trouve un contenu illisible.

A toi de comprendre (ou pas mais dans ce cas la demande des
explications) les formules qu'on te propose et de les adapter.
Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Ci joint le fichier, la formule se situe en C380 feuil Recap,
bizarre, car je pense ne pas avoir loupé quoi que ce soit.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijGld5maK.xls
Merci

"Manu" a écrit dans le message de
news:
Je ne pige pas mon erreur,

Voici ce que j'ai mis comme Nom à adrD et adrJ
adrD :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);2)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);2)
adrJ :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);3)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);3)
Mes dates criteres sont dans la feuil JT en E8 et E9
Mes dates de recherches sont dans la feuil RECAP de B11 à B376
et les recherches de PP ; KK ; RR ..... se trouvent de C11 à
C376

Et la formule de Denis, je l'ai placé sur la feuil RECAP en
C380 :
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(adrD);JOURS_feries;0))*(JOURSEM(INDIRECT(adrD);2)>5)*(INDIRECT(adrJ)={"PP"."KK"."AA"."RR"});1))

Mes jours fériés sont sur une autre feuil mais nommé :
JOURS_feries

J'ai vraiment le sentiment de n'avoir fait aucune erreur et
pourtant si je met PP le samedi 25 decembre 2010, le resultat
est vide. la formule ne me renvoie un code erreur, mais me
donne un resultat vide

Avez vous une idée ?

Merci

Manu

"michdenis" a écrit dans le message de
news:
| inclure cette notion de choix des dates de facon
| que si je change de dates, la formules fonctionnes
| entre ces 2 dates.

Suppose que tu conserves ces 2 mêmes cellules pour faire
ton calcul mais que tu veuilles modifier les dates.

A ) Crée 2 noms (insertion / nom / définir
Nom 1 = AdrD pour la colonne des dates
Fait référence à :
­RESSE(EQUIV($E$11;$A:$A;1);1)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);1)
La formule suivante suppose que tes dates sont en ordre
croissant à cause de:
du "1" dans EQUIV($E$11;$A:$A;1). Le traitement est plus
rapide.

Nom 2 = AdrJ Pour la colonne des jours "B:B"
Fait référence à
­RESSE(EQUIV($E$11;$A:$A;1);2)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);2)

Maintenant tu insères ces 2 noms dans ta formule générale :

Validation Matricielle : Maj + Ctrl + Enter
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(AdrD);G2:G8;0))*(JOURSEM(INDIRECT(AdrD);2)>5)*(INDIRECT(AdrJ)={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Voilà.



"Manu" a écrit dans le message de
groupe de discussion :
#
Genial, ca fonctionne impec, et je vous avoue que je n'ais pas
tout saisi
surtout cette partie de la formule :
SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5

il faut juste desoramais inclure cette notion de choix des
dates de facon
que si je change de dates, la formules fonctionnes entre ces 2
dates.

C'est deja un super avancement,

merci encore

Manu

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

Si tu veux faire un peu plus court :

Validation matricielle :
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Je ne sais si PP.PL .... la liste est exhaustive !



"michdenis" a écrit dans le message
de groupe de
discussion :
#
Validation matricielle : Ctrl + Maj + Enter

Ta formule est longue parce que logiguement on ne peut
difficilement
utiliser en même temps <>"T" et <>""
La formule calcule d'abord <>"" et soustrait <>"T"

=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"");1))-SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25="T");1))



"Manu" a écrit dans le message de
groupe de
discussion :
e0#
Ben... désolé,

Je suppose que c'etait en matrice, je l'ai testé ainsi et si
je supprime
tout le texte en colonne B et que je tape EEE en B2 il me
donne un
resultat
de 3

J'ai testé la formule en normal et là quoi que je fasse le
resultat est
tjrs
egal à 0

Manu

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

Essaie cette formule et on en parle plus ;-))

=SI(NBCAR($B$2:$B$25)>0;SOMME(SI(ESTNUM(EQUIV($A$2:$A$25;$G$2:$G$8;0))*(JOURSEM($A$2:$A$25;2)>5)*($B$2:$B$25<>"T");1));0)



"Manu" a écrit dans le message de
groupe de
discussion :

Bonjour Michdenis,

Ca ne fonctionne pas, car meme si je supprime tout ce qui
est colonne B,
la
formule trouve toujours 3

Le but etant de compter les cellules pleine de la col B
hormis si c'est
un
T
et qui soit un jour férié et qui tombe un samedi / dimanche
entre le
critere
de date stipulé en E11:E12 (ces dates seront bien sur
variable).

Manu


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

Bonjour,

En supposant que j'ai compris ton problème, la formule
serait :

Validation matricielle : Ctrl + Maj + Enter
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"T");1))



"Manu" a écrit dans le message de
groupe de
discussion :
#
Bonjour,

Malgrés deja toute l'aide apporter par diverses personnes
dont Daniel,
Misange, Sam..., je ne m'en sort pas encore totalement.

J'espere y parvenir à condition de réussir cette formule
avec laquelle
je
galere et que je vous détail sur le cijoint (ce sera +
clair). Merci
pour
toutes aides, j'en ai besoin.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijmesyLSw.xls
Merci

Manu






































Avatar
Manu
Tolstoi n'a rien à craindre, j'ai vu des fil bcp plus genereuses, mais je
vais tacher de refaire la bible, et là, il y a du boulot....
Manu

"Daniel.C" a écrit dans le message de news:

Bonjour.
Mon avis... Tolstoi va être jaloux. Si tu veux concurrencer Guerre et
Paix, ouvre un deuxième tome (non, fil).
;-)))
Daniel

Je pense que c'est enfin OK avec ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(ESTTEXTE(Mescodes)*(Mescodes<>"")))
je ne veux pas me réjouir trop vite, donnez moi votre avis, mais apres
quelques tests, ca m'a l'air bon

J'attend votre avis, Merci

Manu


"Manu" a écrit dans le message de news:


C'etait trop beau, dans la colonne C puis D ...etc de recap se sont des
formules et malheureusement il les considere comme un contenu, il
faudrait pouvoir lui dire que si la formule renvoi rien alors qu'il ne
compte pas. et qu'il ne compte que lorsque du texte apparait hormis le T
bien-sur

Manu

"Manu" a écrit dans le message de news:
%
Peut-etre que j'ai trouvé ce qui manquait, il faut encore que je test,

la formule devrait etre ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(Mescodes<>""))

Car si on ne rajoutes pas *(Mescodes<>"") alors il se moquera de ce
qu'il y a de taper dans la colonne C et ne compteras que les jours
feriés tombant un WE.

Dites moi ce que vous en pensez.

Merci

"Manu" a écrit dans le message de news:

J'ai suivi scrupuleusement tes informations, et si je supprime toutes
les frappes de la colonne C de la feuil recap, j'ai desormais un
resultat de 1 si j'ajoute du texte dans la cellule C369 correspondant
au samedi 25 decembre, le resultat est tjrs de 1 .......

Peux tu verifier sur mon fichier joint que j'ai bien suivi tes
consignes. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijTV8Pe2X.xls

Manu


"Misange" a écrit dans le message de
news:
mais non !
pour mesdates :
=INDIRECT("B" & EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

pour mescodes
=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

et pour trouver donc le nombre de jours fériés tombant un week end
pendant la période considérée et ou le code soit différent de T

=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
que tu mets où tu veux du moment que c'est dans la colonne
correspondant au salarié pour lequel tu fais le décompte.

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que pour mesdates, je garde ceci : =INDIRECT("B" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
Car pour l'instant avec ceci en mesdates et ton nouvel adressage
dans mescodes, j'ai toujours rien comme resultat.
Je pense qu'il ne faut pas toucher à ta formule :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
Manu

"Misange" a écrit dans le message de
news:
Pour adapter à la colonne, plutot que de mettre le N° de la colonne
dans une cellule comme tu l'as fait, utilise soit colonne() qui te
le renvoie directement soit, pour récupérer la lettre de la
colonne, utilise ceci
=GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COL ONNE();4))-1)

avec cette dernière soluce, "ma" def de mescodes devient:

=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

il ne te reste plus qu'à la tirer vers la droite et ça marche. (ouf
!!)
après c'est comme tu veux t'y choises !

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que ca signifie que je devrais faire :
=equiv(datecherchée;touteslesdates;0)+11 ?

Pour le nombre de personnes ca peut s'arranger facilement et ca
peut se tirer vers la droite avec la methode de denis en faisant
pour adrJ :

j'ai remplacé
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);3)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);3)
par :
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);RECAP!C381)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);RECAP!C381)

J'ai tapé en C381 : 3
D381 : 4
etc... ainsi l'adressage de adrJ peut coller

Pour la tienne, je comptais remplacer mescodes : =INDIRECT("C" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":C" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
par des lettre en ligne 382 ce qui donnerais : =INDIRECT(C382 &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":"&C382 &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))

En revanche il est vrai que je n'ais absolument pas pensé à
l'hypothese du 08 mai et le jeudi de l'ascension si ils tombent le
même jour, mais je ne vois pas où ca peut me gener car je ne
souhaite compter que les cellules pleines tombant un jour ferié
tombant un samedi et dimanche, le jeudi de l'ascension tombant
tjrs un jeudi, je ne suis pas concerné.

Manu


"Misange" a écrit dans le message de
news:
Tu as loupé pas mal de choses en fait :-)
la fonction equiv te renvoie la position d'un item dans un
tableau.
Dans le cas présent, si tu veux utiliser cette position pour la
transformer en adresse, il faut absolument que tu tiennes compte
de l'organisation de tes données. Dans ta feuille récap, tes
dates démarrent à la ligne 11
si tu fait =equiv(datecherchée;touteslesdates;0) ca va te
renvoyer par exemple 1 pour le premier janvier. MAis l'adresse de
cette cellule n'est pas B1 mais B12 car la première ligne de ton
tableau démarre en 12 !

donc ce qui débloque c'est la définition de tes noms, pas les
formules.
Par ailleurs tu nous as donné un exemple ou il n'y avait qu'une
personne. Voilà maintenant qu'il y en a plein. La formule (la
mienne ou celle de Denis d'ailleurs) telle qu'elle est écrite
n'est pas "tirable" vers la droite puisque mescodes (ou
l'équivalent pour Denis) fait référence explicitement à la
colonne C qui est celle de Titi.

Tu as encore oublié de gérer une situation qui ne se présente pas
tous les ans mais qui est bien réelle : que se passe-t-il quand
le 8 mai et le jeudi de l'ascension tombent le même jour ?

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Tu as raison Misange, désolé pour ces changements de Ref, su le
fichier ci-dessous en esperant qu'il puisse s'ouvrir, j'ai
adapté ta methode ainsi que celle de denis dans la feuil recap.
Le resultat me donne tjrs un resultat vide, je pense que ce doit
etre une mini erreur de ma part, mais impossible à trouver.
Avec ce fichier exemple et adapté, j'epere que vous pourrez me
stipuler mon erreur. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijPwWyMbF.xls
Manu

"Misange" a écrit dans le message
de news:
Manu, si tu passes ton temps à changer les références dans les
exemples que tu donnes, tu ne nous simplifies pas le boulot !!!
de toutes façons je ne peux pas ouvrir ton classeur, excel y
trouve un contenu illisible.

A toi de comprendre (ou pas mais dans ce cas la demande des
explications) les formules qu'on te propose et de les adapter.
Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Ci joint le fichier, la formule se situe en C380 feuil Recap,
bizarre, car je pense ne pas avoir loupé quoi que ce soit.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijGld5maK.xls
Merci

"Manu" a écrit dans le message de
news:
Je ne pige pas mon erreur,

Voici ce que j'ai mis comme Nom à adrD et adrJ
adrD :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);2)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);2)
adrJ :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);3)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);3)


















Mes dates criteres sont dans la feuil JT en E8 et E9
Mes dates de recherches sont dans la feuil RECAP de B11 à
B376
et les recherches de PP ; KK ; RR ..... se trouvent de C11 à
C376

Et la formule de Denis, je l'ai placé sur la feuil RECAP en
C380 :
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(adrD);JOURS_feries;0))*(JOURSEM(INDIRECT(adrD);2)>5)*(INDIRECT(adrJ)={"PP"."KK"."AA"."RR"});1))

Mes jours fériés sont sur une autre feuil mais nommé :
JOURS_feries

J'ai vraiment le sentiment de n'avoir fait aucune erreur et
pourtant si je met PP le samedi 25 decembre 2010, le resultat
est vide. la formule ne me renvoie un code erreur, mais me
donne un resultat vide

Avez vous une idée ?

Merci

Manu

"michdenis" a écrit dans le message
de news:
| inclure cette notion de choix des dates de facon
| que si je change de dates, la formules fonctionnes
| entre ces 2 dates.

Suppose que tu conserves ces 2 mêmes cellules pour faire
ton calcul mais que tu veuilles modifier les dates.

A ) Crée 2 noms (insertion / nom / définir
Nom 1 = AdrD pour la colonne des dates
Fait référence à :
­RESSE(EQUIV($E$11;$A:$A;1);1)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);1)
La formule suivante suppose que tes dates sont en ordre
croissant à cause de:
du "1" dans EQUIV($E$11;$A:$A;1). Le traitement est plus
rapide.

Nom 2 = AdrJ Pour la colonne des jours "B:B"
Fait référence à
­RESSE(EQUIV($E$11;$A:$A;1);2)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);2)

Maintenant tu insères ces 2 noms dans ta formule générale :

Validation Matricielle : Maj + Ctrl + Enter
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(AdrD);G2:G8;0))*(JOURSEM(INDIRECT(AdrD);2)>5)*(INDIRECT(AdrJ)={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Voilà.



"Manu" a écrit dans le message de
groupe de discussion :
#
Genial, ca fonctionne impec, et je vous avoue que je n'ais
pas tout saisi
surtout cette partie de la formule :
SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5

il faut juste desoramais inclure cette notion de choix des
dates de facon
que si je change de dates, la formules fonctionnes entre ces
2 dates.

C'est deja un super avancement,

merci encore

Manu

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

Si tu veux faire un peu plus court :

Validation matricielle :
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Je ne sais si PP.PL .... la liste est exhaustive !



"michdenis" a écrit dans le message
de groupe de
discussion :
#
Validation matricielle : Ctrl + Maj + Enter

Ta formule est longue parce que logiguement on ne peut
difficilement
utiliser en même temps <>"T" et <>""
La formule calcule d'abord <>"" et soustrait <>"T"

=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"");1))-SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25="T");1))



"Manu" a écrit dans le message de
groupe de
discussion :
e0#
Ben... désolé,

Je suppose que c'etait en matrice, je l'ai testé ainsi et
si je supprime
tout le texte en colonne B et que je tape EEE en B2 il me
donne un
resultat
de 3

J'ai testé la formule en normal et là quoi que je fasse le
resultat est
tjrs
egal à 0

Manu

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

Essaie cette formule et on en parle plus ;-))

=SI(NBCAR($B$2:$B$25)>0;SOMME(SI(ESTNUM(EQUIV($A$2:$A$25;$G$2:$G$8;0))*(JOURSEM($A$2:$A$25;2)>5)*($B$2:$B$25<>"T");1));0)



"Manu" a écrit dans le message
de groupe de
discussion :

Bonjour Michdenis,

Ca ne fonctionne pas, car meme si je supprime tout ce qui
est colonne B,
la
formule trouve toujours 3

Le but etant de compter les cellules pleine de la col B
hormis si c'est
un
T
et qui soit un jour férié et qui tombe un samedi /
dimanche entre le
critere
de date stipulé en E11:E12 (ces dates seront bien sur
variable).

Manu


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

Bonjour,

En supposant que j'ai compris ton problème, la formule
serait :

Validation matricielle : Ctrl + Maj + Enter
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"T");1))



"Manu" a écrit dans le message
de groupe de
discussion :
#
Bonjour,

Malgrés deja toute l'aide apporter par diverses personnes
dont Daniel,
Misange, Sam..., je ne m'en sort pas encore totalement.

J'espere y parvenir à condition de réussir cette formule
avec laquelle
je
galere et que je vous détail sur le cijoint (ce sera +
clair). Merci
pour
toutes aides, j'en ai besoin.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijmesyLSw.xls
Merci

Manu












































Avatar
Misange
;-)

Misange migrateuse
http://www.excelabo.net


Daniel.C a écrit :
Bonjour.
Mon avis... Tolstoi va être jaloux. Si tu veux concurrencer Guerre et
Paix, ouvre un deuxième tome (non, fil).
;-)))
Daniel

Je pense que c'est enfin OK avec ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(ESTTEXTE(Mescodes)*(Mescodes<>"")))

je ne veux pas me réjouir trop vite, donnez moi votre avis, mais apres
quelques tests, ca m'a l'air bon

J'attend votre avis, Merci

Manu


"Manu" a écrit dans le message de news:


C'etait trop beau, dans la colonne C puis D ...etc de recap se sont
des formules et malheureusement il les considere comme un contenu, il
faudrait pouvoir lui dire que si la formule renvoi rien alors qu'il
ne compte pas. et qu'il ne compte que lorsque du texte apparait
hormis le T bien-sur

Manu

"Manu" a écrit dans le message de news:
%
Peut-etre que j'ai trouvé ce qui manquait, il faut encore que je test,

la formule devrait etre ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(Mescodes<>""))


Car si on ne rajoutes pas *(Mescodes<>"") alors il se moquera de ce
qu'il y a de taper dans la colonne C et ne compteras que les jours
feriés tombant un WE.

Dites moi ce que vous en pensez.

Merci

"Manu" a écrit dans le message de news:

J'ai suivi scrupuleusement tes informations, et si je supprime
toutes les frappes de la colonne C de la feuil recap, j'ai
desormais un resultat de 1 si j'ajoute du texte dans la cellule
C369 correspondant au samedi 25 decembre, le resultat est tjrs de 1
.......

Peux tu verifier sur mon fichier joint que j'ai bien suivi tes
consignes. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijTV8Pe2X.xls

Manu


"Misange" a écrit dans le message de
news:
mais non !
pour mesdates :
=INDIRECT("B" & EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

pour mescodes
=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

et pour trouver donc le nombre de jours fériés tombant un week end
pendant la période considérée et ou le code soit différent de T

=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))

que tu mets où tu veux du moment que c'est dans la colonne
correspondant au salarié pour lequel tu fais le décompte.

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que pour mesdates, je garde ceci : =INDIRECT("B" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
Car pour l'instant avec ceci en mesdates et ton nouvel adressage
dans mescodes, j'ai toujours rien comme resultat.
Je pense qu'il ne faut pas toucher à ta formule :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))

Manu

"Misange" a écrit dans le message de
news:
Pour adapter à la colonne, plutot que de mettre le N° de la
colonne dans une cellule comme tu l'as fait, utilise soit
colonne() qui te le renvoie directement soit, pour récupérer la
lettre de la colonne, utilise ceci
=GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COL ONNE();4))-1)

avec cette dernière soluce, "ma" def de mescodes devient:

=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

il ne te reste plus qu'à la tirer vers la droite et ça marche.
(ouf !!)
après c'est comme tu veux t'y choises !

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que ca signifie que je devrais faire :
=equiv(datecherchée;touteslesdates;0)+11 ?

Pour le nombre de personnes ca peut s'arranger facilement et ca
peut se tirer vers la droite avec la methode de denis en
faisant pour adrJ :

j'ai remplacé
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);3)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);3)

par :
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);RECAP!C381)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);RECAP!C381)


J'ai tapé en C381 : 3
D381 : 4
etc... ainsi l'adressage de adrJ peut coller

Pour la tienne, je comptais remplacer mescodes : =INDIRECT("C"
& EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":C" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
par des lettre en ligne 382 ce qui donnerais : =INDIRECT(C382 &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":"&C382 &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))

En revanche il est vrai que je n'ais absolument pas pensé à
l'hypothese du 08 mai et le jeudi de l'ascension si ils tombent
le même jour, mais je ne vois pas où ca peut me gener car je ne
souhaite compter que les cellules pleines tombant un jour ferié
tombant un samedi et dimanche, le jeudi de l'ascension tombant
tjrs un jeudi, je ne suis pas concerné.

Manu


"Misange" a écrit dans le message
de news:
Tu as loupé pas mal de choses en fait :-)
la fonction equiv te renvoie la position d'un item dans un
tableau.
Dans le cas présent, si tu veux utiliser cette position pour
la transformer en adresse, il faut absolument que tu tiennes
compte de l'organisation de tes données. Dans ta feuille
récap, tes dates démarrent à la ligne 11
si tu fait =equiv(datecherchée;touteslesdates;0) ca va te
renvoyer par exemple 1 pour le premier janvier. MAis l'adresse
de cette cellule n'est pas B1 mais B12 car la première ligne
de ton tableau démarre en 12 !

donc ce qui débloque c'est la définition de tes noms, pas les
formules.
Par ailleurs tu nous as donné un exemple ou il n'y avait
qu'une personne. Voilà maintenant qu'il y en a plein. La
formule (la mienne ou celle de Denis d'ailleurs) telle qu'elle
est écrite n'est pas "tirable" vers la droite puisque mescodes
(ou l'équivalent pour Denis) fait référence explicitement à la
colonne C qui est celle de Titi.

Tu as encore oublié de gérer une situation qui ne se présente
pas tous les ans mais qui est bien réelle : que se passe-t-il
quand le 8 mai et le jeudi de l'ascension tombent le même jour ?

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Tu as raison Misange, désolé pour ces changements de Ref, su
le fichier ci-dessous en esperant qu'il puisse s'ouvrir, j'ai
adapté ta methode ainsi que celle de denis dans la feuil
recap. Le resultat me donne tjrs un resultat vide, je pense
que ce doit etre une mini erreur de ma part, mais impossible
à trouver.
Avec ce fichier exemple et adapté, j'epere que vous pourrez
me stipuler mon erreur. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijPwWyMbF.xls
Manu

"Misange" a écrit dans le
message de news:
Manu, si tu passes ton temps à changer les références dans
les exemples que tu donnes, tu ne nous simplifies pas le
boulot !!!
de toutes façons je ne peux pas ouvrir ton classeur, excel y
trouve un contenu illisible.

A toi de comprendre (ou pas mais dans ce cas la demande des
explications) les formules qu'on te propose et de les adapter.
Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Ci joint le fichier, la formule se situe en C380 feuil
Recap, bizarre, car je pense ne pas avoir loupé quoi que ce
soit.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijGld5maK.xls
Merci

"Manu" a écrit dans le message de
news:
Je ne pige pas mon erreur,

Voici ce que j'ai mis comme Nom à adrD et adrJ
adrD :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);2)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);2)

adrJ :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);3)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);3)



















Mes dates criteres sont dans la feuil JT en E8 et E9
Mes dates de recherches sont dans la feuil RECAP de B11 à
B376
et les recherches de PP ; KK ; RR ..... se trouvent de C11
à C376

Et la formule de Denis, je l'ai placé sur la feuil RECAP
en C380 :
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(adrD);JOURS_feries;0))*(JOURSEM(INDIRECT(adrD);2)>5)*(INDIRECT(adrJ)={"PP"."KK"."AA"."RR"});1))


Mes jours fériés sont sur une autre feuil mais nommé :
JOURS_feries

J'ai vraiment le sentiment de n'avoir fait aucune erreur
et pourtant si je met PP le samedi 25 decembre 2010, le
resultat est vide. la formule ne me renvoie un code
erreur, mais me donne un resultat vide

Avez vous une idée ?

Merci

Manu

"michdenis" a écrit dans le
message de news:
| inclure cette notion de choix des dates de facon
| que si je change de dates, la formules fonctionnes
| entre ces 2 dates.

Suppose que tu conserves ces 2 mêmes cellules pour faire
ton calcul mais que tu veuilles modifier les dates.

A ) Crée 2 noms (insertion / nom / définir
Nom 1 = AdrD pour la colonne des dates
Fait référence à :
­RESSE(EQUIV($E$11;$A:$A;1);1)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);1)

La formule suivante suppose que tes dates sont en ordre
croissant à cause de:
du "1" dans EQUIV($E$11;$A:$A;1). Le traitement est plus
rapide.

Nom 2 = AdrJ Pour la colonne des jours "B:B"
Fait référence à
­RESSE(EQUIV($E$11;$A:$A;1);2)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);2)


Maintenant tu insères ces 2 noms dans ta formule générale :

Validation Matricielle : Maj + Ctrl + Enter
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(AdrD);G2:G8;0))*(JOURSEM(INDIRECT(AdrD);2)>5)*(INDIRECT(AdrJ)={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))


Voilà.



"Manu" a écrit dans le message
de groupe de discussion :
#
Genial, ca fonctionne impec, et je vous avoue que je
n'ais pas tout saisi
surtout cette partie de la formule :
SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5

il faut juste desoramais inclure cette notion de choix
des dates de facon
que si je change de dates, la formules fonctionnes entre
ces 2 dates.

C'est deja un super avancement,

merci encore

Manu

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

Si tu veux faire un peu plus court :

Validation matricielle :
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))


Je ne sais si PP.PL .... la liste est exhaustive !



"michdenis" a écrit dans le
message de groupe de
discussion :
#
Validation matricielle : Ctrl + Maj + Enter

Ta formule est longue parce que logiguement on ne peut
difficilement
utiliser en même temps <>"T" et <>""
La formule calcule d'abord <>"" et soustrait <>"T"

=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"");1))-SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25="T");1))




"Manu" a écrit dans le message
de groupe de
discussion :
e0#
Ben... désolé,

Je suppose que c'etait en matrice, je l'ai testé ainsi
et si je supprime
tout le texte en colonne B et que je tape EEE en B2 il
me donne un
resultat
de 3

J'ai testé la formule en normal et là quoi que je fasse
le resultat est
tjrs
egal à 0

Manu

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

Essaie cette formule et on en parle plus ;-))

=SI(NBCAR($B$2:$B$25)>0;SOMME(SI(ESTNUM(EQUIV($A$2:$A$25;$G$2:$G$8;0))*(JOURSEM($A$2:$A$25;2)>5)*($B$2:$B$25<>"T");1));0)




"Manu" a écrit dans le
message de groupe de
discussion :

Bonjour Michdenis,

Ca ne fonctionne pas, car meme si je supprime tout ce
qui est colonne B,
la
formule trouve toujours 3

Le but etant de compter les cellules pleine de la col B
hormis si c'est
un
T
et qui soit un jour férié et qui tombe un samedi /
dimanche entre le
critere
de date stipulé en E11:E12 (ces dates seront bien sur
variable).

Manu


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

Bonjour,

En supposant que j'ai compris ton problème, la formule
serait :

Validation matricielle : Ctrl + Maj + Enter
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"T");1))




"Manu" a écrit dans le
message de groupe de
discussion :
#
Bonjour,

Malgrés deja toute l'aide apporter par diverses
personnes dont Daniel,
Misange, Sam..., je ne m'en sort pas encore totalement.

J'espere y parvenir à condition de réussir cette
formule avec laquelle
je
galere et que je vous détail sur le cijoint (ce sera +
clair). Merci
pour
toutes aides, j'en ai besoin.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijmesyLSw.xls

Merci

Manu












































Avatar
Manu
Evidemment, mais la tache VBA me parait si complexe.... il me faudrais des
formations de bases, mais ca me parait si costaud que j'ai peur de tomber
sur le mauvais formateur et d'y galerer davantage.

En tous cas apres divers tests sur mon fichier, je pense que c'est OK, je
suis si content d'etre arrivé à terme (sauf surprise), que meme si c'est
ultra long, je prend.

En tout cas, vraiment un grand merci à toi ainsi qu'à Denis, je ne te caches
pas que j'ai visité ton site à divers moment , mais le probleme est si
complexe que je ne trouvais tjrs pas la solution, alors GRAND MERCI A VOUS
DEUX !

Je vais continuer mes tests et vous tiendrais au courant.

Bonne semaine

Manu

"Misange" a écrit dans le message de news:

Mais c'est à toi de nous dire !!! il n'y a que toi qui peut vérifier que
le résultat trouvé correspond à ce que tu attends. Le fait de prendre en
compte les codes non vides, je te l'avais proposé (discussion avec Denis
sur le fait que quand on efface les codes dans la colonne B on doit
trouver 3 ou 0). C'est toi qui sait.

Dans ton classeur tu as prévu de pouvoir mettre beaucoup de salariés, avec
des tableaux préremplis qui sont bourrés de formules matricielles. Je te
conseille VIVEMENT de ne pas en mettre qui ne te serve à rien et de faire
très très régulièrement des sauvegardes de secours de ton classeur... Plus
un classeur est complexe, plus il y a de risque qu'un truc de travers le
fasse exploser en vol (genre des microscoupures de courant, un plantage
système ou un éternuement de coccinelle)

Et puis, voilà une bonne occasion de te mettre au VBA. C'est plus facile
de suivre ce que fait une fonction VBA en pas à pas que de vérifier une
formule. En plus, tu peux mettre des tas de commentaires dedans et du coup
quand 2 ans plus tard tu dois ajouter une condition parce que les règles
ont changé, tu n'as pas tout à refaire.

Tu pourrais par exemple aussi faire un petit formulaire (userform) pour
ajouter un salarié quand il rentre dans la boite et seulement à ce moent
là remplir ce qui le concerne dans les tableaux. Enfin tout ça ce sont des
pistes de réflexion mais tu as un bel exemple d'utiisation pour apprendre
!

Bonne fin de dimanche

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Je pense que c'est enfin OK avec ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(ESTTEXTE(Mescodes)*(Mescodes<>"")))
je ne veux pas me réjouir trop vite, donnez moi votre avis, mais apres
quelques tests, ca m'a l'air bon

J'attend votre avis, Merci

Manu


"Manu" a écrit dans le message de news:

C'etait trop beau, dans la colonne C puis D ...etc de recap se sont des
formules et malheureusement il les considere comme un contenu, il
faudrait pouvoir lui dire que si la formule renvoi rien alors qu'il ne
compte pas. et qu'il ne compte que lorsque du texte apparait hormis le T
bien-sur

Manu

"Manu" a écrit dans le message de news:
%
Peut-etre que j'ai trouvé ce qui manquait, il faut encore que je test,

la formule devrait etre ceci :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T")*(Mescodes<>""))

Car si on ne rajoutes pas *(Mescodes<>"") alors il se moquera de ce
qu'il y a de taper dans la colonne C et ne compteras que les jours
feriés tombant un WE.

Dites moi ce que vous en pensez.

Merci

"Manu" a écrit dans le message de news:

J'ai suivi scrupuleusement tes informations, et si je supprime toutes
les frappes de la colonne C de la feuil recap, j'ai desormais un
resultat de 1 si j'ajoute du texte dans la cellule C369 correspondant
au samedi 25 decembre, le resultat est tjrs de 1 .......

Peux tu verifier sur mon fichier joint que j'ai bien suivi tes
consignes. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijTV8Pe2X.xls

Manu


"Misange" a écrit dans le message de
news:
mais non !
pour mesdates :
=INDIRECT("B" & EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

pour mescodes
=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

et pour trouver donc le nombre de jours fériés tombant un week end
pendant la période considérée et ou le code soit différent de T

=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
que tu mets où tu veux du moment que c'est dans la colonne
correspondant au salarié pour lequel tu fais le décompte.

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que pour mesdates, je garde ceci : =INDIRECT("B" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":B" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
Car pour l'instant avec ceci en mesdates et ton nouvel adressage
dans mescodes, j'ai toujours rien comme resultat.
Je pense qu'il ne faut pas toucher à ta formule :
=SOMMEPROD((JOURSEM(Mesdates;2)>5)*(NB.SI(JOURS_feries;Mesdates)<>0)*(Mescodes<>"T"))
Manu

"Misange" a écrit dans le message de
news:
Pour adapter à la colonne, plutot que de mettre le N° de la colonne
dans une cellule comme tu l'as fait, utilise soit colonne() qui te
le renvoie directement soit, pour récupérer la lettre de la
colonne, utilise ceci
=GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COL ONNE();4))-1)

avec cette dernière soluce, "ma" def de mescodes devient:

=INDIRECT(GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1)
& EQUIV(JT!$E$8;RECAP!$B:$B;0) & ":" &
GAUCHE(ADRESSE(1;COLONNE();4);NBCAR(ADRESSE(1;COLONNE();4))-1) &
EQUIV(JT!$E$9;RECAP!$B:$B;0))

il ne te reste plus qu'à la tirer vers la droite et ça marche. (ouf
!!)
après c'est comme tu veux t'y choises !

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Est ce que ca signifie que je devrais faire :
=equiv(datecherchée;touteslesdates;0)+11 ?

Pour le nombre de personnes ca peut s'arranger facilement et ca
peut se tirer vers la droite avec la methode de denis en faisant
pour adrJ :

j'ai remplacé
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);3)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);3)
par :
­RESSE(EQUIV(JT!$E$8;RECAP!$B$11:$B$375;1);RECAP!C381)&":"&ADRESSE(EQUIV(JT!$E$9;RECAP!$B$11:$B$375;1);RECAP!C381)

J'ai tapé en C381 : 3
D381 : 4
etc... ainsi l'adressage de adrJ peut coller

Pour la tienne, je comptais remplacer mescodes : =INDIRECT("C" &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":C" &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))
par des lettre en ligne 382 ce qui donnerais : =INDIRECT(C382 &
EQUIV(JT!$E$8;RECAP!$B$11:$B$375;0) & ":"&C382 &
EQUIV(JT!$E$9;RECAP!$B$11:$B$375;0))

En revanche il est vrai que je n'ais absolument pas pensé à
l'hypothese du 08 mai et le jeudi de l'ascension si ils tombent le
même jour, mais je ne vois pas où ca peut me gener car je ne
souhaite compter que les cellules pleines tombant un jour ferié
tombant un samedi et dimanche, le jeudi de l'ascension tombant
tjrs un jeudi, je ne suis pas concerné.

Manu


"Misange" a écrit dans le message de
news:
Tu as loupé pas mal de choses en fait :-)
la fonction equiv te renvoie la position d'un item dans un
tableau.
Dans le cas présent, si tu veux utiliser cette position pour la
transformer en adresse, il faut absolument que tu tiennes compte
de l'organisation de tes données. Dans ta feuille récap, tes
dates démarrent à la ligne 11
si tu fait =equiv(datecherchée;touteslesdates;0) ca va te
renvoyer par exemple 1 pour le premier janvier. MAis l'adresse de
cette cellule n'est pas B1 mais B12 car la première ligne de ton
tableau démarre en 12 !

donc ce qui débloque c'est la définition de tes noms, pas les
formules.
Par ailleurs tu nous as donné un exemple ou il n'y avait qu'une
personne. Voilà maintenant qu'il y en a plein. La formule (la
mienne ou celle de Denis d'ailleurs) telle qu'elle est écrite
n'est pas "tirable" vers la droite puisque mescodes (ou
l'équivalent pour Denis) fait référence explicitement à la
colonne C qui est celle de Titi.

Tu as encore oublié de gérer une situation qui ne se présente pas
tous les ans mais qui est bien réelle : que se passe-t-il quand
le 8 mai et le jeudi de l'ascension tombent le même jour ?

Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Tu as raison Misange, désolé pour ces changements de Ref, su le
fichier ci-dessous en esperant qu'il puisse s'ouvrir, j'ai
adapté ta methode ainsi que celle de denis dans la feuil recap.
Le resultat me donne tjrs un resultat vide, je pense que ce doit
etre une mini erreur de ma part, mais impossible à trouver.
Avec ce fichier exemple et adapté, j'epere que vous pourrez me
stipuler mon erreur. Merci
http://www.cijoint.fr/cjlink.php?file=cj201004/cijPwWyMbF.xls
Manu

"Misange" a écrit dans le message
de news:
Manu, si tu passes ton temps à changer les références dans les
exemples que tu donnes, tu ne nous simplifies pas le boulot !!!
de toutes façons je ne peux pas ouvrir ton classeur, excel y
trouve un contenu illisible.

A toi de comprendre (ou pas mais dans ce cas la demande des
explications) les formules qu'on te propose et de les adapter.
Misange migrateuse
http://www.excelabo.net


Manu a écrit :
Ci joint le fichier, la formule se situe en C380 feuil Recap,
bizarre, car je pense ne pas avoir loupé quoi que ce soit.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijGld5maK.xls
Merci

"Manu" a écrit dans le message de
news:
Je ne pige pas mon erreur,

Voici ce que j'ai mis comme Nom à adrD et adrJ
adrD :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);2)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);2)
adrJ :
­RESSE(EQUIV('JT'!$E$8;RECAP!$B$11:$B$376;1);3)&":"&ADRESSE(EQUIV('JT'!$E$9;RECAP!$B$11:$B$376;1);3)
Mes dates criteres sont dans la feuil JT en E8 et E9
Mes dates de recherches sont dans la feuil RECAP de B11 à
B376
et les recherches de PP ; KK ; RR ..... se trouvent de C11 à
C376

Et la formule de Denis, je l'ai placé sur la feuil RECAP en
C380 :
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(adrD);JOURS_feries;0))*(JOURSEM(INDIRECT(adrD);2)>5)*(INDIRECT(adrJ)={"PP"."KK"."AA"."RR"});1))

Mes jours fériés sont sur une autre feuil mais nommé :
JOURS_feries

J'ai vraiment le sentiment de n'avoir fait aucune erreur et
pourtant si je met PP le samedi 25 decembre 2010, le resultat
est vide. la formule ne me renvoie un code erreur, mais me
donne un resultat vide

Avez vous une idée ?

Merci

Manu

"michdenis" a écrit dans le message
de news:
| inclure cette notion de choix des dates de facon
| que si je change de dates, la formules fonctionnes
| entre ces 2 dates.

Suppose que tu conserves ces 2 mêmes cellules pour faire
ton calcul mais que tu veuilles modifier les dates.

A ) Crée 2 noms (insertion / nom / définir
Nom 1 = AdrD pour la colonne des dates
Fait référence à :
­RESSE(EQUIV($E$11;$A:$A;1);1)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);1)
La formule suivante suppose que tes dates sont en ordre
croissant à cause de:
du "1" dans EQUIV($E$11;$A:$A;1). Le traitement est plus
rapide.

Nom 2 = AdrJ Pour la colonne des jours "B:B"
Fait référence à
­RESSE(EQUIV($E$11;$A:$A;1);2)&":"&ADRESSE(EQUIV($E$12;$A:$A;1);2)

Maintenant tu insères ces 2 noms dans ta formule générale :

Validation Matricielle : Maj + Ctrl + Enter
=SOMME(SI(ESTNUM(EQUIV(INDIRECT(AdrD);G2:G8;0))*(JOURSEM(INDIRECT(AdrD);2)>5)*(INDIRECT(AdrJ)={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Voilà.



"Manu" a écrit dans le message de
groupe de discussion :
#
Genial, ca fonctionne impec, et je vous avoue que je n'ais
pas tout saisi
surtout cette partie de la formule :
SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5

il faut juste desoramais inclure cette notion de choix des
dates de facon
que si je change de dates, la formules fonctionnes entre ces
2 dates.

C'est deja un super avancement,

merci encore

Manu

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

Si tu veux faire un peu plus court :

Validation matricielle :
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25={"PP"."PL"."OP"."KK"."SS"."OO"."GG"."BBB"."ZZ"."EE"."YY"."MM"."RR"});1))

Je ne sais si PP.PL .... la liste est exhaustive !



"michdenis" a écrit dans le message
de groupe de
discussion :
#
Validation matricielle : Ctrl + Maj + Enter

Ta formule est longue parce que logiguement on ne peut
difficilement
utiliser en même temps <>"T" et <>""
La formule calcule d'abord <>"" et soustrait <>"T"

=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"");1))-SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25="T");1))



"Manu" a écrit dans le message de
groupe de
discussion :
e0#
Ben... désolé,

Je suppose que c'etait en matrice, je l'ai testé ainsi et
si je supprime
tout le texte en colonne B et que je tape EEE en B2 il me
donne un
resultat
de 3

J'ai testé la formule en normal et là quoi que je fasse le
resultat est
tjrs
egal à 0

Manu

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

Essaie cette formule et on en parle plus ;-))

=SI(NBCAR($B$2:$B$25)>0;SOMME(SI(ESTNUM(EQUIV($A$2:$A$25;$G$2:$G$8;0))*(JOURSEM($A$2:$A$25;2)>5)*($B$2:$B$25<>"T");1));0)



"Manu" a écrit dans le message
de groupe de
discussion :

Bonjour Michdenis,

Ca ne fonctionne pas, car meme si je supprime tout ce qui
est colonne B,
la
formule trouve toujours 3

Le but etant de compter les cellules pleine de la col B
hormis si c'est
un
T
et qui soit un jour férié et qui tombe un samedi /
dimanche entre le
critere
de date stipulé en E11:E12 (ces dates seront bien sur
variable).

Manu


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

Bonjour,

En supposant que j'ai compris ton problème, la formule
serait :

Validation matricielle : Ctrl + Maj + Enter
=SOMME(SI(ESTNUM(EQUIV(A2:A25;G2:G8;0))*(JOURSEM(A2:A25;2)>5)*(B2:B25<>"T");1))



"Manu" a écrit dans le message
de groupe de
discussion :
#
Bonjour,

Malgrés deja toute l'aide apporter par diverses personnes
dont Daniel,
Misange, Sam..., je ne m'en sort pas encore totalement.

J'espere y parvenir à condition de réussir cette formule
avec laquelle
je
galere et que je vous détail sur le cijoint (ce sera +
clair). Merci
pour
toutes aides, j'en ai besoin.
http://www.cijoint.fr/cjlink.php?file=cj201004/cijmesyLSw.xls
Merci

Manu





































1 2 3 4 5