Formule qui ne calcule pas comme il le faudrait

Bonsoir LouReed,

Merci pour le fichier, je teste ça demain en journée car là, j'ai pas mal de boulot.

Pour ton explication, j'avoue que j'ai pas tout compris !

J'ai du mal à comprendre comment deux formules identiques pour calculer la même chose au final n'arrive pas à me donner un résultat correct sur une voir ne rien me donner du tout.

Je vais faire le test de ton image pour voir le résultat et voir tes modifications pour essayer de comprendre

Je te tiens au courant et en attendant, je te souhaite une bonne soirée.

Yann

Bonsoir LouReed et les autres membres,

Les soucis sont résolus et je te remercie beaucoup. Par contre, nouveau bug et le dernier j'espère.

C'est au niveau des dates du planning.

Les mois ayant moins de 31 jours ont des cases affichant "samedi 00 janvier 1900" au lieu de cases vides.

Saurais-tu me dire comment résoudre ce soucis stp ?

Pour rappel, le mot de passe des feuilles est "Ne pas toucher".

Bonjour,

vos formules sont faites de cette manière :

=SI(D39=0;0;SI(MOIS(D39+1)=MOIS($D$10);D39+1;0))

ce qui veut dire en gros si on n'est pas sur le mois du premier du mois alors mettre 0, hors 0 c'est le samedi 00 janvier 1900 !

donc à la place des 0 mettez un double guillemet :

=SI(D39="";"";SI(MOIS(D39+1)=MOIS($D$10);D39+1;""))

Attention ! si vous faites un test sur le 0 de cette colonne ailleurs sur la feuille, il faut remplacer ces tests par un test sur un double guillemet : =si($D39=""; alors vrai; sinon faux)

@ bientôt

LouReeD

Jour LouReed,

Merci pour l'explication, je vais essayer ça. Par contre, j'ai pas compris grande chose à la dernière phrase

Bonsoir,

en fait vos tests sont bons !!!

dans la formule ci-dessous :

=SI(OU($D39="";I39="";P$9="");"";SI(SI(ET($I39=1;$G39<>$H39);1/4;SI($G39>=$H39;MAX(MIN(P$9;$H39+24/24)-MAX(P$8;$G39));MAX(MIN(P$9;$H39)-MAX(P$8;$G39))))<0;0;SI(ET($I39=1;$G39<>$H39);1/4;SI($G39>=$H39;MAX(MIN(P$9;$H39+24/24)-MAX(P$8;$G39));MAX(MIN(P$9;$H39)-MAX(P$8;$G39))))))

le test se fait bien avec $D39="" !

donc tout va bien !

@ bientôt

LouReeD

Ah ok.

Comme un soucis résolu n'arrange pas tout, un nouveau soucis est arrivé avec cette modification de formule sur les dates dans les cellules vides

Chaque mois ayant des cellules vides (mois ayant donc moins de 31 jours), j'ai un soucis de formule sur les cellules dans les statistiques. Voir mon fichier dans les colonnes V:AA

Je ne vois pas sur un SOMMEPROD ce que je peux faire pour arranger le soucis

Ça affiche #VALEUR!

Edit : je ne peux pas mettre le fichier car trop gros

Il faut 344 ko et la limite sur le forum est fixé à 300 ko

Bonsoir,

une des solutions est la fonction INDIRECT qui permet de "mettre" en variable des références de cellule, hors c'est ce que l'on cherche sur vos SOMMEPROD car dans l'idéal ce serait qu'en fonction du mois le SOMMEPROD se fasse de la ligne 10 à la ligne 40 (pour ceux de 31 jours), de la ligne 10 à la ligne 39 (pour ceux de 30 jours), de la ligne10 à la etc...

Vos formules sont faites ainsi :

=SOMMEPROD((JOURSEM($D$10:$D$40=1))*($AB$10:$AB$40))

en intégrant la fonction INDIRECT la formule ci-dessous fait la même chose:

=SOMMEPROD((JOURSEM(INDIRECT("$D$10:$D$40"))=1)*(INDIRECT("$AB$10:$AB$40")))

mais avec celle ci on peut remplacer le numéro de ligne 40 par le nombre de jour du mois considéré +les 9 lignes de début de feuille.

pour trouver le nombre de jour du mois considéré, il faut trouver la date de fin de mois dont on prend le jour et auquel on additionne 9 : JOUR(FIN.MOIS($D$10;0))+9

si en cellule $D$10 il y a 01/01/2015 alors on a FIN.MOIS("01/01/2015";décalé de 0 mois) = 31/01/2015

JOUR(31/01/2015) = 31 si on rajoute 9 = 40 YES !

Donc ci dessous la formule pour la cellule X41 :

=SOMMEPROD((JOURSEM(INDIRECT("$D$10:$D$"&JOUR(FIN.MOIS($D$10;0))+9))=1)*(INDIRECT("$AB$10:$AB$"&JOUR(FIN.MOIS($D$10;0))+9)))

Pour les autres erreur sur les formules de type : =SOMMEPROD(($C39="se")*($AC39))

vous pouvez faire : =SIERREUR(SOMMEPROD(($C39="se")*($AC39));"")

voilà

@ bientôt

LouReeD

Bonjour LouReed,

Alors là, je dois dire que c'est du chinois pour moi le texte que tu as écrit

La seule chose que j'ai compris, c'est que tu prenais en compte les mois en 30 jours mais pas l'unique mois de l'année qui en a encore moins à savoir février. Et que là, ça peut en plus changer en fonction de l'année.

Je te joins mon fichier sans les autres mois à part Janvier et Février (car trop gros sinon). Pourrais-tu stp me mettre la formule que tu essaies de m'expliquer. Je comparerai ensuite avec ma version pour voir les modifications et les comprendre ensuite.

Merci encore à toi LouReed pour tour ce que tu fais et le temps que tu prends pour m'aider.

Edit : je crois que dans le fichier que je t'ai fourni dans ce post, il y a toujours le problème des dates en 1900.

Edit 2 : j'ai réuploader le fichier modifié avec les 1900 en moins ce qui fait apparaitre les fameuses erreurs dans les statistiques sur les lignes vides.

Bonsoir,

j'ai réglé l'année à 2015 afin d'avoir des mois à 31 jours, d'autre à 30 et un à 28... ceci dit pour 2016 c'était pareil si ce n'est 29 à la place de 28 !!

J'ai créée quatre onglets mois afin d'avoir tous ces types de mois.

J'ai modifié pas mal de formules dans vos stats pour éviter les messages d'erreur, et j'ai modifié le format de certaines cellules de la feuille stat annuelles, car il transformait les heures en jour, et en multipliant les jours par le taux horaire les gens étaient sous payés !!!

Je n'ai modifié les formules que pour les quatre premier mois... sinon il y a un message d'erreur du fait que les autres mois n'existent pas !!!

Bref à vous de voir si cela fonctionne comme vous le souhaitez !

@ bientôt

LouReeD

16test-loureed.xlsm (150.75 Ko)

Bonsoir LouReed,

Un grand merci

Je regarde votre fichier et voit en faisant quelques tests.

En effet, en effaçant les autres mois pour uploader le fichier ici, la feuille "stats année" ne fonctionne plus car il manquait justement ces fameux mois restants.

Encore merci et je reviens dire rapidement ce qu'il en est

Attention !

Avant de dire merci !

Veuillez tester, et merci à vous tout de même pour vos merci !!!

Je ne sais plus ce que je dis !!!

Aller bon teste et revenez me voir pour dire merci !

@ bientôt

LouReeD

Je dis déjà merci pour ce que vous faites même si nouveau bug détecté ou autre

Quoi !

un nouveau BUG !!!

Où ai-je pu me planter?

Dites moi, je vais regarder !!!

@ bientôt

LouReeD

Non non, je ne disais pas qu'il y avait un nouveau bug car je suis au boulot et je n'ai pas encore pu prendre le temps de regarder et tester. Je disais simplement que je tenais à vous remercier avant pour tout ce que vous faites même si je venais à trouver un autre bug

vous me voyez rassuré !

travaillez bien et bon courage !

@ bientôt

LouReeD

Bonjour,

Alors je n'ai pas pu faire mes tests sur les calculs de formules et sur mes heures car je rencontre deux petits soucis qui je pense peuvent être régler rapidement et que je voudrais régler avant de tester.

LouReed, vous avez supprimé les lignes en dessous du tableau et je suis bien embêté

Il faut que je fasse une version du planning avec une version manuelle dans le calendrier car moi par exemple, il m'arrive de faire deux vacations dans une même journée.

Il faut donc que je puisse mettre (par exemple) deux samedi x novembre à la suite manuellement et non plus sur un planning auto.

Donc deux versions possibles de ce planning.

Hors là, je ne peux pas car vous avez fait une manipulation que je ne connais pas.

Pourriez-vous me dire svp comment récupérer le dessous du tableau.

Merci par avance.

Un autre petit soucis, c'est que j'ai une macro qui maintenant me renvoi une erreur. J'ai beau avoir regardé le code, je ne vois pas le soucis.

L'erreur est :

capturmlm

Et le code est :

Sub MasquerStats()
'
' MasquerStats Macro
'

'
   ActiveSheet.Unprotect "Ne pas toucher"
        Columns("P:AF").Select
        Selection.EntireColumn.Hidden = True
        Range("A1").Select
    ActiveSheet.Protect "Ne pas toucher"
End Sub
12test-loureed-4.xlsm (94.23 Ko)

Bonjour,

Un autre petit soucis, c'est que j'ai une macro qui maintenant me renvoi une erreur. J'ai beau avoir regardé le code, je ne vois pas le soucis.

Les boutons affiche et masque sur la dernière version que je vous aie joint fonctionnent, je ne vois pas pour quoi sur la votre ils ne fonctionnent pas si ce n'est le message " impossible de déplacer un objet en dehors de la feuille" lors du masquage manuel des colonnes, il doit donc y avoir un objet "caché" qui pose problème, un objet qui n'existe pas sur "mes versions".

Hors là, je ne peux pas car vous avez fait une manipulation que je ne connais pas.

Ensuite pour afficher les colonnes masquées de fin de feuille, il suffit de sélectionner la dernière visible (ligne ou colonne suivant le cas) et cliquer gauche, de maintenir, de glisser soit à droite en dehors de la zone de la feuille visible (soit vers le bas pour les lignes), de relâcher le bouton gauche, et de faire un clic droit sur l'entête de la dernière colonne visible, dans le menu contextuel choisir en bas "Afficher".

Il faut que je fasse une version du planning avec une version manuelle dans le calendrier car moi par exemple, il m'arrive de faire deux vacations dans une même journée.

Il faut donc que je puisse mettre (par exemple) deux samedi x novembre à la suite manuellement et non plus sur un planning auto.

Donc deux versions possibles de ce planning.

Pour ce qui est de votre planning manuel, le mieux serait de le "prévoir" dans votre planning automatique !

Cela va modifier un peu les dernières formules modifiées pour éviter les messages d'erreur, mais vous aurez alors une plus grande souplesse d'utilisation. Je m'explique :

Votre tableau à 31 lignes car un mois à 31 jours au plus.

Il suffit de porter se nombre de ligne à 50 (ce qui vous fait la possibilité de doubler 19 fois dans un mois)

Au début du mois vous rester avec les formules automatiques des jours ce qui les affiche normalement de 1 à 31 puis mais à vide le reste des cellules.

Si le 10 du mois vous devez doublez, alors à la place de la formule qui affiche le 11 du mois vous inscrivez "en dur" la date du 10 du mois, du coup le reste de la colonne se met à jour, allant du 11 au 31 du mois en "remplissant" une ligne date supplémentaire.

Comme ceci votre vacation "manuelle" reste dans les stats automatique de votre tableau.

La seule différence sera alors de connaître le nombre exacte de ligne date utilisées, car le nombre de jour du mois considéré ne marchera plus...Mais ceci est faisable avec la fonction NB.SI(plage;critère) qui permet de connaître le nombre de valeur répondant à un critère.

La plage serait la colonne entière des lignes date (50 lignes) et NB.SI($D$10:$D$59;">0") qui permet de faire un test de valeur non vide sans prendre en compte les formules.

Pensez vous que de partir dans cette direction pourrait être "sympa" pour votre application ?

Il faut aussi dire que les fêtes arrivant à grand pas, je vais peut être lever un peu le pied sur les résolutions diverses et variées de problème d'internaute

@ bientôt

LouReeD

Bonsoir,

ci joint le fichier modifié comme énoncé ci-dessus :

11test-loureed.xlsm (168.63 Ko)

@ bientôt

LouReeD

Bonsoir LouReed,

J'ai regardé un peu ton ébauche de planning mais ça ne me convient pas du tout. Surtout la partie avec les 50 lignes.

Je n'avais pas précisé mais il ne peut y avoir au final que deux trois vacations dans une même journée.

Donc il y a bien trop de lignes...

Mon dernier exemple travaillé était de 42 lignes.

Mais de toute façon, je le referais de mon côté

Je vais voir aussi ton avant dernier post car je m'y suis pas encore assez penché. Si je ne vous revois pas d'ici là, je vous souhaite de bonnes fêtes de fin d'année.

Par contre, je ne sais pas comment tu fais ça mais le défilement de haut en bas et de gauche à droite en bloquant certaines lignes ou colonnes est super ! Comment s'appelle cette fonction stp ?

Bonjour,

ci-joint :

16test-loureed.xlsm (173.16 Ko)

Sinon pour les colonnes "figées" cela s'appelle "figer les lignes et colonnes", ça se trouve dans le ruban d'Excel sous le menu "affichage" puis icône "figer les volets".

La technique ? Avant de figer les volets il faut sélectionner la première cellule qui doit bouger !

Donc en sélectionnant la cellule A3, ce sont toutes les lignes en dessous de la ligne 2 qui vont bouger.

Vu que vous sélectionnez la colonne A, toutes les colonnes vont bouger.

En sélectionnant la cellule D1, ce sont toutes les colonnes après C qui bougeront, vu que vous sélectionnez la ligne 1, toutes les lignes bougeront.

En sélectionnant la cellule D4, seules les lignes 1,2 et 3 resterons fixe ainsi que les colonnes A,B et C.

@ bientôt

LouReeD

Rechercher des sujets similaires à "formule qui calcule pas comme faudrait"