Recherche de formules excel - calcul de jours très spécial !

Fermé
Jonny-John Messages postés 12 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 16 septembre 2015 - Modifié par Jonny-John le 9/09/2015 à 08:08
Jonny-John Messages postés 12 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 16 septembre 2015 - 16 sept. 2015 à 18:58
Bonjour,

J'essaie de trouver une formule appropriée pour un tableau des vacances d'entreprise qui vas finir sur notre Google drive. Le but étant de voir les jours d'absences des un et des autres sous 3 catégories:
>Vacances
>Maladie
>Récupération

De ce fait j'ai fait une trame de tableau simple qui permet de mettre l'information sur le type absence (un chiffre: 1 pour vacances, 2 pour maladie, 3 pour récup).



Mon problème est pour l'extraction de donnée dans le 2éme onglet: récap. En faisant 3 colonnes par personne, faudrait extraire chaque type d'absence (1, 2, 3) par personne et par mois.



Pour cela j'ai fait la formule suivante un peu lourde mais efficace, exemple pour C3:
NB.SI(SI($B3="Janvier";Planing!D$3:D$28;SI($B3="Février";Planing!D$30:D$52;SI($B3="Mars";Planing!D$54:D$79;SI($B3="Avril";Planing!D$80:D$105;SI($B3="Mai";Planing!D$106:D$130;SI($B3="Juin";Planing!D$132:D$157;SI($B3="Juillet";Planing!D$158:D$184;SI($B3="Août";Planing!D$186:D$210;SI($B3="Septembre";Planing!D$211:D$236;SI($B3="Octobre";Planing!D$237:D$262;SI($B3="Novembre";Planing!D$264:D$288;SI($B3="Décembre";Planing!D$289:D$315))))))))))));1)

Pour D3, je remplace le 1 de la fin par un 2, et pour E3 par un 3.
Grace à ça j'arrive à extraire les 3 types absences pour chaque personne, même si c'est long à mettre en place, car je peux pas simplement décalé pour copier la formule à coté ! :((

---------------------------------------

Mon problème ce complique maintenant car, il faut prendre en compte les demi journées d'absence et ce dans les 3 types !! Du coup, je peux faire un sytéme tel que:

1 = 1 jour complet vacances
1.5= 1 demi-jour vacances
2 = 1 jour complet maladie
2.5= 1 demi-jour maladie
3 = 1 jour complet récup
3.5= 1 demi-jour récup

Ca donnerait une formule comme ca pour C3:
=SOMME(NB.SI(SI($B4="Janvier";Planing!D$3:D$28;SI($B4="Février";Planing!D$30:D$52;SI($B4="Mars";Planing!D$54:D$79;SI($B4="Avril";Planing!D$80:D$105;SI($B4="Mai";Planing!D$106:D$130;SI($B4="Juin";Planing!D$132:D$157;SI($B4="Juillet";Planing!D$158:D$184;SI($B4="Août";Planing!D$186:D$210;SI($B4="Septembre";Planing!D$211:D$236;SI($B4="Octobre";Planing!D$237:D$262;SI($B4="Novembre";Planing!D$264:D$288;SI($B4="Décembre";Planing!D$289:D$315))))))))))));1);NB.SI(SI($B4="Janvier";Planing!D$3:D$28;SI($B4="Février";Planing!D$30:D$52;SI($B4="Mars";Planing!D$54:D$79;SI($B4="Avril";Planing!D$80:D$105;SI($B4="Mai";Planing!D$106:D$130;SI($B4="Juin";Planing!D$132:D$157;SI($B4="Juillet";Planing!D$158:D$184;SI($B4="Août";Planing!D$186:D$210;SI($B4="Septembre";Planing!D$211:D$236;SI($B4="Octobre";Planing!D$237:D$262;SI($B4="Novembre";Planing!D$264:D$288;SI($B4="Décembre";Planing!D$289:D$315))))))))))));1.5))

Il faudrait alors modifier pour chaque colonne, ce qui serait trop long pour pour un personnel de 20 personnes (avec 3 colonnes par personne) ...

Bref, quelqu'un aurait-t-il une idée comment faire pour résoudre mon problème ?
Soit améliorer la formule ou changer pour des macros ou autre (mais je sais pas trop comment faire) ??

Des idées, vous êtes les bienvenus !!!

Merci d'avance,
Cdt

John
A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 sept. 2015 à 08:26
Bonjour
les photos sont bien jolies mais ne nous aident aucunement.

pour cela
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci proposé (clic droit) dans le message de réponse
Dans l'attente

et quelqu'un te proposera certainement une solution
0
Jonny-John Messages postés 12 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 16 septembre 2015
9 sept. 2015 à 09:09
Bonjour Michel,

Merci pour l'info !
Je ne peux plus modifier le message donc voici le lien du fichier: http://www.cjoint.com/c/EIjhgZ6jLtg

John
0
Jonny-John Messages postés 12 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 16 septembre 2015
9 sept. 2015 à 11:20
http://www.cjoint.com/c/EIjjr6swHjg voici le lien à jour (version publique)
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > Jonny-John Messages postés 12 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 16 septembre 2015
9 sept. 2015 à 13:39
Bonjour

Pour simplifier grandement les formules

1) remplacer les 1, 2 3 etc de la col C de Planning par 1/1/2015, 2/1/2015 etc (possibilité par affichage personnalisé de ne faire afficher que 01, 02 etc)

2) Formule en C3 de Recap (à étirer jusqu'en C14)
=NB.SI.ENS(Planing!D:D;1;Planing!C:C;">=01/"&LIGNE()-2 &"/15";Planing!C:C;"<=01/"&LIGNE()-1 &"/15") +( NB.SI.ENS(Planing!D:D;1,5;Planing!C:C;">=01/"&LIGNE()-2 &"/15";Planing!C:C;"<=01/"&LIGNE()-1 &"/15"))/2
Tiens compte des journées et des 1/2 journées

3) Adapter la formule pour les autres colonnes puis pour 2016

Cdlmnt
Via
0
Jonny-John Messages postés 12 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 16 septembre 2015
9 sept. 2015 à 16:33
Bonjour,

Merci, la solution est géniale ! ca marche parfaitement en vertical. Maintenant je cherche a élaborer l'horizontal.

--------------------------------------------------------------------------

Une petite question par rapport au plage de donnée dans les formules:

Cependant pour le changement de plage j'avais pensé faire une formule index, et rajouter une ligne et une colonne cachée avec des chiffres. Cependant quand le texte s'affiche dans la formule, elle se met en erreur.

Exemple:

La formule NB.SI(D10:D28;1) marche parfaitement et me donne le résultat. Indépendament je teste Index(A1:C3;1;1) marche et m'affiche le résultat de la case A1.

Je fait en sorte que le résultat d'une formule index soit D10:D28 (résultat que je met dans A1)

Maintenant NB.SI(Index(A1:C3;1;1);1) marque #valeur !!

Même si dans la case A1 je rajoute un ' ou " ou = ou + devant le texte !!

Avez-vous une idée comment faire ? dans ce cas précis pour imbriquer la formule index dans ma formule NB.SI ?

Merci d'avance

John
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > Jonny-John Messages postés 12 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 16 septembre 2015
9 sept. 2015 à 17:50
Re

je ne comprends pas bien ce que tu cherches à faire avec index
dans la formule en C3 mettre des $ pour figer les référenes !
=NB.SI.ENS(Planing!$D:$D;1;Planing!$C:$C;">=01/"&LIGNE()-2 &"/15";Planing!$C:$C;"<=01/"&LIGNE()-1 &"/15") +( NB.SI.ENS(Planing!$D:$D;1,5;Planing!$C:$C;">=01/"&LIGNE()-2 &"/15";Planing!$C:$C;"<=01/"&LIGNE()-1 &"/15"))/2
En D3 la formule devient
=NB.SI.ENS(Planing!$D:$D;2;Planing!$C:$C;">=01/"&LIGNE()-2 &"/15";Planing!$C:$C;"<=01/"&LIGNE()-1 &"/15") +( NB.SI.ENS(Planing!$D:$D;2,5;Planing!$C:$C;">=01/"&LIGNE()-2 &"/15";Planing!$C:$C;"<=01/"&LIGNE()-1 &"/15"))/2
et en E3
=NB.SI.ENS(Planing!$D:$D;3;Planing!$C:$C;">=01/"&LIGNE()-2 &"/15";Planing!$C:$C;"<=01/"&LIGNE()-1 &"/15") +( NB.SI.ENS(Planing!$D:$D;3,5;Planing!$C:$C;">=01/"&LIGNE()-2 &"/15";Planing!$C:$C;"<=01/"&LIGNE()-1 &"/15"))/2

Pour F,G et H3 copier les formules en C, D et E puis changer les $D:$D en $E:$E
Il est compliqué de faire une formule qui se modifierait selon le n° en ligne 2 car ce sont des cellules fusionnées (la plaie pour les formules et les macros!) avec une fonction DECALER

Tu auras plus vite fait de recopier les formules et de modifier les plages

Cdlmnt
Via
0
Jonny-John Messages postés 12 Date d'inscription mardi 25 août 2015 Statut Membre Dernière intervention 16 septembre 2015 > via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024
9 sept. 2015 à 18:23
Merci Via, c eat in très bonne solution.

Mon but avec la function index etait donner la plage automatiquement à la formule.

En dé-fusionnant le titre de chaque colonne de la page récap' et un inscrivant une colonne cachée entre le jour et la première colonne de données. Ces coordonnées renverrait vers un tableau caché.

Dans le table je placerais la plage de donnée à exploiter par la formule:

Colonne 1: 'Planning!D:D
Colonne 2: 'Planning!E:E
Colonne 3: 'Planning!F:F
.....

Dans ma fonction index, la ligne importe peu, car la date est déjà géré par la première formule. La colonne revoi donc la plage de donnée permettant d adapter automatiquement la formule quand on tire la formule à l horizontal !

Ma fonction index marche très bien quand je mets le petit ' devant ainsi le texte est parfaitement reporté. Et affiche parfaitement la plage de donnée:

Planning!D:D

Mon problème est des que je mets cette formule dans la formule principale !
Elle comprends quand je marque manuellement le Planing!D:D, mais quand c est le résultat de la formule (pourtant identique à ce que je mets manuellement !!), la formule n'accepte pas la valeur.

Je crois qu'elle prend l'info comme du texte et non un plage de donnée ce qui provoque l'erreur !!

Savez-vous comment faire ? Pour que la formule accepte cela ?

Merci d'avance
Cdt

John
0