retirer #VALEUR! dans cellule en gardant le calcul

0

Bonjour, je suis en train de préparer un fichier Excel basic réutilisable chaque année, onglet par mois.

J'ai trouvé comment mettre les jours automatiquement en fonction de l'année. En revanche, j'ai des cellules de calcules qui donne #valeur! pour en fin février en fonction de si on est bissextile ou non (29/02 = vide).

Je n'arrive pas à mettre ma formule qui dit:

SI vide=rien ou SI dimanche ou lundi égale rien ou égale une valeur de cellule

=SI((OU(JOURSEM(C32)=2;JOURSEM(C32)=1));"";$E$2)

==> Comment transformer cette fonction en intégrant ESTERREUR ou autre possibilité.

==> Je recherche aussi à faire le calcul de somme par semaine de travail, mais je ne sais pas comment ajouter les formules pour que ça prenne en compte uniquement les semaines travaillé, pour mon cas du mardi au samedi inclus (date liées à l'années choisis)

https://www.cjoint.com/c/MLDmRTpGWNf

    npod Posté le 29 décembre 2023, 13:47
    par npod
    Répondre
    0

    Bonsoir 

    Pour éviter #VALEUR! il faut mettre dans ta formule 

    =SIERREUR(SI((OU(JOURSEM(C32)=2;JOURSEM(C32)=1));"";$E$2);"")

    Cordialement


    Posté le 29 décembre 2023, 22:11
    0

    Bonsoir npod,

    je suis en train de travailler sur ton fichier ; il va y avoir beaucoup
    de choses, car je suis en train de tout revoir en profondeur.  ;)

    dès que ça sera prêt, je posterai ma solution en dessous.  :)

    rhodo

    rhodo Posté le 29 décembre 2023, 22:33
    par rhodo
    • ajout : comme il y aura beaucoup de choses, je vais répondre en plusieurs posts, avec pour chaque post une référence de ce style : "réf. P01" ; tu pourras écrire par exemple : "Pour P01 :" et mettre à la suite ce qui concerne P01.  :) – rhodo 29 décembre 2023, 23:36
    0

    @npod ; réf. P01

    ton fichier en retour : https://www.cjoint.com/c/MLDwRAxqDf0

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

    à l'ouverture du fichier, tu es sur la 2ème feuille "Février".

    comme sur toutes les autres feuilles, j'ai ajouté la colonne D "js" ;
    ne t'en occupe pas pour l'instant : j'en parlerai plus tard, dans un
    autre post.  :)

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

    note qu'en A1, il y a 2024 (c'est car en Janvier!A1, j'ai saisi 2024) ;
    pourquoi ? car je veux que tu regardes d'abord ce qui se passe
    pour une année bissextile.

    en effet, comme 2024 est bien une année bissextile, tu peux voir
    que la ligne 32 est pour le 29 février (car le 29/02/2024 existe).

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

    sélectionne la 1ère feuille "Janvier" ; la cellule active est A1 ;
    remplace 2024 par 2025 (l'année qu'il y avait dans ton fichier
    initial, qui est une année non bissextile)
    .

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

    va sur la 2ème feuille "Février" et regarde la ligne 32.  ;)

    c'est car j'ai mis une MFC pour un fond noir quand il n'y a pas
    de 29 février ; même si tu supprimais cette MFC, il n'y aurait
    pas le message d'erreur #VALEUR! car j'ai mis les formules
    adéquates pour l'éviter (j'indiquerai ces formules plus tard).

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

    note qu'en colonnes G et i, les cellules sont sur fond bleu pour les
    "dimanche" et "lundi" (c'est mieux que le fond vert des nombres
    positifs)
    .  ;)

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

    j'ai supprimé plusieurs formules ; pour les autres formules, je les
    ai presque toutes modifiées.  ;)  (détail dans les prochains posts)

    rhodo

    rhodo Posté le 30 décembre 2023, 00:20
    par rhodo
    0

    @npod ; réf. P02

    dans toutes mes formules qui vont suivre, n'oublie pas le décalage
    d'une colonne à droite qui est dû à la nouvelle colonne D "js".

    (sauf pour les colonnes B et C)

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

    en B3, tu avais mis cette formule : =DATE($A$1;1;1)

    pourquoi mettre « $ » alors que cette formule n'est pas étendue ?
    ces « $ » sont utiles seulement en cas de recopie de la formule,
    si on a besoin de « figer » une ligne ou une colonne.

    j'ai enlevé les « $ », et la formule devient :

    en B3 : =DATE(A1;1;1)

    ça, c'est sur la feuille "Janvier" ; j'ai fait pareil pour les autres mois ;
    exemple pour "Février" : en B3, au lieu de =DATE($A$1;2;1) il y a :
    =DATE(A1;2;1).

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

    ligne 35 "Total" :

    en F35, tu avais mis cette formule : =(D35-E35)

    en H35, tu avais mis cette formule : =(D35-G35)

    pourquoi mettre des parenthèses inutiles ? je les ai enlevées :

    en G35 : =E35-F35 ; en i35 : =E35-H35

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

    ligne 36 "Moyenne" :

    en D36, tu avais mis cette formule : =SOMME(MOYENNE(D4:D34))

    la fonction SOMME() est ici tout à fait inutile ! je l'ai enlevée :

    en E36 : =MOYENNE(E4:E34)

    puis j'y ai ajouté la fonction SIERREUR(), de cette façon :

    en E36 : =SIERREUR(MOYENNE(E4:E34);"")

    j'ai mis la fonction SIERREUR() pour éviter le message d'erreur
    #DIV/0! qui survient quand la colonne "réel" ne contient aucun
    nombre
    .

    rhodo

    rhodo Posté le 30 décembre 2023, 00:54
    par rhodo
    0

    @npod ; réf. P03

    dans ton fichier initial, tes lignes sur fond noir sont pour un jour inexistant ;
    exemples : 30 février ; 31 février31 avril ; 31 juin ; 31 septembre ; etc...

    dans ces lignes noires, il y avait parfois des formules ; vu ce qui précède,
    elles sont toutes inutiles ; je les ai donc toutes supprimées.  ;)

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

    colonne B, pour les numéros de jours :

    tu avais mis des formules ; je les ai toutes supprimées.  ;)
    à la place, voici tout ce que j'ai fait :

    a) pour les mois de 31 jours : j'ai mis les nombres 1 à 31.
    b) pour les mois de 30 jours : j'ai mis les nombres 1 à 30.

    c) pour le mois février :
    * pour B4:B31 : j'ai mis les nombres 1 à 28.
    * en B32 : =SI(MOIS(DATE(A1;2;29))=2;29;"") ➯ 29 ou rien
    * en B33 et B34 : rien (ni nombre, ni formule).

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

    explications pour la formule de B32 :

    a) si tu mets dans une cellule =DATE(2024;2;29) : ça retourne 29/02/2024
    car 2024 est bissextile ; note bien que le mois de la date retournée est 2
    pour février.

    b) si tu mets dans une cellule =DATE(2025;2;29) : ça retourne 01/03/2025
    car 2024 est non bissextile (ça saute automatiquement le jour inexistant
    29/02/2025)
     ; note bien que le mois de la date retournée est 3 pour mars.

    c) maintenant, tu comprends mieux ma formule entière : si le mois de la
    date retournée est 2 (février) : ça retourne 29 car le 29 février de l'année
    A1 existe ; sinon : ça retourne rien (chaîne de caractères vide).

    rhodo

    rhodo Posté le 30 décembre 2023, 02:14
    par rhodo
    0

    @npod ; réf. P04

    colonne C, pour les jours de la semaine en lettres :

    a) j'ai laissé le même format de nombre personnalisé : jjjj

    b) en C4 : =B3 ; ça c'est ok, donc inchangé.

    c) en dessous : dans ton fichier initial, tu avais mis par exemple :
    en C5 : =B5 ; en C6 : =B6 ; en C7 : =B7 ; etc... ; note bien que
    de C4 à C5, c'est passé de =B3 à =B5 ; y'a pas de =B4 ; même
    si
    ça marche, pour éviter cette non homogénéité :

    j'ai supprimé toutes tes formules ; à la place, j'ai fait tout ceci :

    en C5 : =C4+1 ; formule étendue vers le bas, jusqu'au dernier jour du mois :
    jusqu'en C34 pour les mois de 31 jours ; jusqu'en C33 pour les mois de 30
    jours ; pour février : idem jusqu'en C31, car c'est la ligne du 28 février ; et du
    1er février au 28 février, la date existe toujours (année bissextile ou non) ;
    en C32 : =SI(B32="";"";C31+1) ➯ jour de la semaine du 29 février ou rien
    (chaîne vide) ; en C33 et C34 : rien (pas de formule).

    rhodo

    rhodo Posté le 30 décembre 2023, 02:54
    par rhodo
    0

    @npod ; réf. P05

    dans ton fichier initial, voici tes formules de la ligne 4, colonnes E à H :

    * en E4 : =SI((OU(JOURSEM(C4)=2;JOURSEM(C4)=1));"";$E$2)
    que tu aurais pu écrire sans 2 parenthèses inutiles :
    =SI(OU(JOURSEM(C4)=2;JOURSEM(C4)=1);"";$E$2)

    * en F4 : =SI((OU(JOURSEM(C4)=2;JOURSEM(C4)=1));"";(D4-E4))
    que tu aurais pu écrire sans 4 parenthèses inutiles :
    =SI(OU(JOURSEM(C4)=2;JOURSEM(C4)=1);"";D4-E4)

    * en G4 : =SI((OU(JOURSEM(C4)=2;JOURSEM(C4)=1));"";$G$2)
    que tu aurais pu écrire sans 2 parenthèses inutiles :
    =SI(OU(JOURSEM(C4)=2;JOURSEM(C4)=1);"";$G$2)

    * en H4 : =SI((OU(JOURSEM(C4)=2;JOURSEM(C4)=1));"";(D4-G4))
    que tu aurais pu écrire sans 4 parenthèses inutiles :
    =SI(OU(JOURSEM(C4)=2;JOURSEM(C4)=1);"";D4-G4)

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

    regarde ton test OU(JOURSEM(C4)=2;JOURSEM(C4)=1) ; c'est correct,
    mais il y a bien plus simple : JOURSEM(C4) retourne un nombre entier,
    de 1 (= dimanche) à 7 (= samedi) ; ainsi, tu as : 1 pour dimanche ; 2
    pour lundi ; 3 à 7 pour les autres jours ; donc tu peux mettre ce test :
    JOURSEM(C4)<3 ; ça donnerait (sans OU) :

    * en E4 : =SI(JOURSEM(C4)<3;"";$E$2)

    * en F4 : =SI(JOURSEM(C4)<3;"";D4-E4)

    * en G4 : =SI(JOURSEM(C4)<3;"";$G$2)

    * en H4 : =SI(JOURSEM(C4)<3;"";D4-G4)

    c'est plus simple, non ? je te laisse vérifier que « <3 » c'est forcément
    1 ou 2 (donc pour dimanche ou lundi).  ;)

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

    même avec cette simplification de tes formules, note bien qu'il y a 4 fois
    JOURSEM(C4) ; et que ça sera répété sur toutes les lignes en dessous
    suite à l'extension des formules ; en supposant que les mois auraient
    tous 28 jours, ça ferait : 28 lignes × 4 formules avec JOURSEM(...) =
    112 fois JOURSEM(...) !  :(

    c'est pour ça que dans mon fichier, j'ai ajouté la colonne D "js" :

    * en D4 : =JOURSEM(C4)

    * en F4 : =SI(D4<3;"";$F$2)
    * en G4 : =SI(D4<3;"";E4-F4)
    * en H4 : =SI(D4<3;"";$H$2)
    * en i4 : =SI(D4<3;"";E4-H4)

    (formules étendues en dessous jusqu'au dernier jour du mois)

    ainsi, JOURSEM(...) est uniquement en colonne D ; avec la même
    supposition
    faite plus haut, ça ferait 28 fois JOURSEM(...) au lieu de
    112 fois JOURSEM(...) ! ça allège, hein ?  :)

    quand tu auras bien compris le système utilisé, tu pourras plus tard
    masquer la colonne D ; masquer = cacher ; pas supprimer !  ;)

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

    attention pour le mois de février : colonne D et colonnes F à i :

    a) des lignes 4 à 31 : c'est idem que ce qu'on vient de voir.

    b) en ligne 32, qui est pour un éventuel 29 février (s'il exite) :

    * en D32 : =SI(B32="";"";JOURSEM(C32))

    * en F32 : =SI(B32="";"";SI(D32<3;"";$F$2))
    * en G32 : =SI(B32="";"";SI(D32<3;"";E32-F32))
    * en H32 : =SI(B32="";"";SI(D32<3;"";$H$2))
    * en i32 : =SI(B32="";"";SI(D32<3;"";E32-H32))

    ainsi, sans utiliser la fonction SIERREUR(), c'est « SI(B32="";"";...) »
    qui évite le message d'erreur « #VALEUR! », car rappelle-toi que pour
    B32 : =SI(MOIS(DATE(A1;2;29))=2;29;"") ➯ 29 ou rien.

    rhodo

    rhodo Posté le 30 décembre 2023, 04:15
    par rhodo
    0

    Bonjour npod,

    d'abord, je te laisse lire tous mes posts précédents.  :)

    regarde toutes tes MFC ; j'ai fait plusieurs modifs, mais là
    je ne détaille pas ; à toi de découvrir ce que j'ai fait.  ;)

    si tu reviens sur ce sujet, j'espère que tu me donneras
    ton avis ; à bientôt peut-être ?

    rhodo

    rhodo Posté le 30 décembre 2023, 04:35
    par rhodo

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :