Discussion: fonction SI qui ne marche pas [XL-2010]

  1. #1
    Candidat au Club
    Femme Profil pro
    sans
    Inscrit en
    août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : août 2017
    Messages : 8
    Points : 4
    Points
    4

    Par défaut fonction SI qui ne marche pas

    Bonjour à tous,

    Je me permet de poster sur ce forum car je n'arrive pas à m'en sortir avec une fonction si:
    Voila je dois faire un fichier excel me permettant de calculer le temps de travail des employés d'une entreprise.
    Mais selon l'heure de début de journée le temps de travail réglementaire varie de la façon suivante :
    début de journée temps réglementaire de travail maximum
    de 05:00 a 06:59 13 h
    de 07:00 a 13:59 14 h
    de 14:00 a 20:59 13 h
    de 21:00 a 21:59 12 h
    de 22:00 a 04:59 11 h

    voici la fonction que j'ai essayé d'utiliser sans y arriver
    =SI(ETB4<7;B4>14;13;SI(B4<14;14;SI(B4<22;12;11)))

    si quelqu'un pouvait m'aider ce serait très sympa car j'ai essayé de la retourner dans tous les sens elle ne marche pas.

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2013
    Messages
    3 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : mai 2013
    Messages : 3 255
    Points : 5 490
    Points
    5 490

    Par défaut

    Bonjour,

    Je pense que tu vas devoir utiliser la formule HEURE
    Si(Heure(B4)<Heure(7/24).......)
    MPi²

  3. #3
    Expert éminent
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    4 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 4 939
    Points : 8 637
    Points
    8 637

    Par défaut

    Bonjour,
    La valeur d'une donnée de B4 ne saurait être comparée à celle d'une heure que transformée en HEURE par la fonction HEURE dans ta formule.
    HEURE(B4) est par exemple une heure (7 si B4 = "07:25").
    A toi de jouer.

    Salut Parmi : doublé pendant que je sirotais mon café.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro). Ne m'en proposez donc pas.

  4. #4
    Membre éprouvé Avatar de mjpmjp
    Homme Profil pro
    Chôme Dur des Ambulances
    Inscrit en
    avril 2012
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chôme Dur des Ambulances
    Secteur : Santé

    Informations forums :
    Inscription : avril 2012
    Messages : 734
    Points : 1 206
    Points
    1 206

    Par défaut

    bonjour,
    dans la formule , le ET n'a pas de ()
    @+JP
    Mes contributions
    Form GRAPHIQUE, Gestion des boutons
    Form GRAPHIQUE, Liste Onglet dynamique
    Form GRAPHIQUE, Liste Multi-Colonne et ScrollBar Externe

    Les Gens "Instruit" ont passé leur temps à apprendre ce que les Gens "Intelligent" ont passé leur temps à trouver...(JP)

  5. #5
    Candidat au Club
    Femme Profil pro
    sans
    Inscrit en
    août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : août 2017
    Messages : 8
    Points : 4
    Points
    4

    Par défaut

    Bonjour Parmi, Unparia et JP
    Merci beaucoup pour vos réponses,
    Je vais essayer vos conseils.

  6. #6
    Membre éprouvé Avatar de mjpmjp
    Homme Profil pro
    Chôme Dur des Ambulances
    Inscrit en
    avril 2012
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chôme Dur des Ambulances
    Secteur : Santé

    Informations forums :
    Inscription : avril 2012
    Messages : 734
    Points : 1 206
    Points
    1 206

    Par défaut

    re,
    =SI(ET(b4=>5;b4<7);13;SI(ET(b4=<7;b4<14);14;SI(ET(b4=>14;b4<21);13;SI(ET(b4=>21;b4<22);12;SI(ET(b4=>22;b4<5);11;"")))))

    écris en direct , à tester

    @+JP
    Mes contributions
    Form GRAPHIQUE, Gestion des boutons
    Form GRAPHIQUE, Liste Onglet dynamique
    Form GRAPHIQUE, Liste Multi-Colonne et ScrollBar Externe

    Les Gens "Instruit" ont passé leur temps à apprendre ce que les Gens "Intelligent" ont passé leur temps à trouver...(JP)

  7. #7
    Candidat au Club
    Femme Profil pro
    sans
    Inscrit en
    août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : août 2017
    Messages : 8
    Points : 4
    Points
    4

    Par défaut

    Super merci beaucoup JP,
    Ta formule ma vraiment bien aidée, la solution était très très proche :
    =SI(ET(B4>=5;B4<7);13;SI(ET(B4>=7;B4<14);14;SI(ET(B4>=14;B4<21);13;SI(ET(B4>=21;B4<22);12;11))))

    Voila la formule qui fonctionne completement.
    Un grand merci a tous pour votre aide !

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2013
    Messages
    3 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : mai 2013
    Messages : 3 255
    Points : 5 490
    Points
    5 490

    Par défaut

    Je me permets une petite remarque...
    Si tu n'utilises pas HEURE dans ta formule, elle ne devrait pas bien fonctionner.

    Si tu veux faire un test, change le format des cellules d'heures en Standard et tu verras leurs vraies valeurs.
    MPi²

  9. #9
    Candidat au Club
    Femme Profil pro
    sans
    Inscrit en
    août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : août 2017
    Messages : 8
    Points : 4
    Points
    4

    Par défaut

    Coucou Parmi,
    Tu as raison et merci pour ton aide, mais c'est pas un fichier "parfait" a faire c'est un fichier très rapidement opérationnel dont on a besoin , alors j'ai pas mis les cellules en heures ou dates j'ai tout laissé en standard pour aller au plus vite, je vais expliquer aux gens concernés comment le remplir, je reviendrai vers vous pour l'améliorer (si vous le voulez bien) car franchement vous êtes super efficace et compétents et merci encore pour votre aide, je regrette déjà ces heures perdues cet après midi a avoir voulu trouver ma solution seule.
    encore merci
    @toto

  10. #10
    Candidat au Club
    Femme Profil pro
    sans
    Inscrit en
    août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : août 2017
    Messages : 8
    Points : 4
    Points
    4

    Par défaut

    Bonjour à tous,

    Pour que mon programme soit plus fiable j’essaie de l'améliorer avec la fonction SI(HEURE) comme vous me l'avez conseillé, notamment parce que quand j'ai voulu faire des mises en formes conditionnelles, celles ci ne marchent pas.... comme vous m'aviez prévenue !
    j'ai donc essayé avec la formule suivante après avoir passé mes formats de cellule de standard à heure:

    =SI(ET(HEURE(B4)>=HEURE(5/24);(HEURE(B4)<HEURE(7/24));13;SI(ET(HEURE(B4)>=HEURE(7/24);(HEURE(B4)<HEURE(14/24));14;SI(ET(HEURE(B4)>=HEURE(14/24);(HEURE(B4)<HEURE(21/24));13;SI(ET(HEURE(B4)>=HEURE(21/24);(HEURE(B4)<HEURE(22/24));12;11))))


    mais elle doit contenir des erreurs...
    j'ai mis mes heures au format 00:00 au niveau des cellules
    et je suis bloquée

  11. #11
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 913
    Points : 27 243
    Points
    27 243
    Billets dans le blog
    14

    Par défaut

    Salut

    Réponse à ta question initiale

    Tu aurais intérêt à travailler avec RECHERCHEV() plutôt qu'avec une série de SI imbriqués... Ca évitera le hard coding de tes limites dans la formule(péché capital à ne jamais commettre avec Excel), ça facilitera la maintenance car en cas de changement de bornes, il suffit de modifier les cellules du tableau sans devoir modifier la formule (péché capital avec Excel: devoir modifier la formule parce qu'une valeur métieir change) et cela permettra une formule beaucoup plus courte.

    Avec une table de données nommée t_Heures, voici une formule qui te donne très simplement la durée de travail...

    Nom : 2017-08-11_195612.png
Affichages : 38
Taille : 7,5 Ko

    En cas de modification d'une durée, d'une heure de début ou d'une adaptation des plages, il te suffit de modifier les données du tableau et, sans modifier ta formule, tu as toujours les résultats corrects, même avec des heures de début ésotériques comme illustrées sur la figure suivante (avec tes trucs /24, pour les heures de début illustrées, je te souhaite bien du courage) et même sans devoir insérer un nouveau SI parce qu'une nouvelle plage a fait son apparition...

    Ellle est pas belle la vie?


    Nom : 2017-08-11_204903.png
Affichages : 37
Taille : 7,9 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    Vous avez apprécié l'intervention => Merci pour le
    ---------------

  12. #12
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 913
    Points : 27 243
    Points
    27 243
    Billets dans le blog
    14

    Par défaut

    Pour ce qui est de la mise en forme conditionnelle, tu dois travailler avec une mise en forme conditionnelle par condition, le principe étant que si la condition est remplie, la mfc s'applique. Tu peux aussi déterminer que si une MFC s'applique, alors, on stoppe l'analyse des MFC suivantes.

    Il faudrait dire ce que tu souhaites comme MFC et selon quelles règles pour que l'on puisse t'aider.

    NB: Le format des cellules ne change strictement rien aux valeurs de la cellule. Il faut juste comparer des pommes avec des pommes et des poires avec des poires... 8 <> 8:00, quel que soit le format de cellule choisi. Pour rappel, l'unité temporelle dans Excel est la journée, ce qui veut dire que 1 = UNE journée = 24h. Donc, 8:00 est égal à 8/24 de journée soit 0.33333333333... 8 est égal à HUIT journées soit 192:00...

    Dans ton cas de figure, je ne comprends pas bien à quoi peut servir l'utilisation de la fonction HEURE qui ne fonctionnera qu'avec des heures "pile" ou facilement exprimables, dans la mesure où cela va singulièrement compliquer les formules... En utilisant des données stockées dans des cellules plutôt que d'utiliser les données en dur dans la formule, tu rends ton travail plus simple, plus souple et plus pérenne.

    Si toutefois tu persistes à vouloir travailler avec des données en dur dans ta formule, avec 5 heures, tu t'en tires +/- facilement avec 5/24, avec des portions d'heures simples aussi, 5.5/24 = 5:30, 5.75/24 = 5:45... Mais si ta limite est 5:39, que vaudra ton x dans x/24 ? Réponse: 5.716667... Pas très folichon. Dans ce cas, utilise directement "5:39" *1 qui va forcer le transtypage Texte => valeur temporelle. Plus simple à mon avis que de trouver la valeur à diviser par 24. Mais je persiste et signe: saisis tes valeurs dans des cellules et tu te simplifieras grandement la vie
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    Vous avez apprécié l'intervention => Merci pour le
    ---------------

  13. #13
    Candidat au Club
    Femme Profil pro
    sans
    Inscrit en
    août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : août 2017
    Messages : 8
    Points : 4
    Points
    4

    Par défaut

    Bonjour Pierre,

    Merci beaucoup pour ces conseils, que je vais appliquer de suite.
    Pour la MFC c'était exactement ça le problème je comparait des pommes avec des poires, j'ai rectifié cela mais de manière très artisanale, donc je vais refaire mon fichier en suivant tes conseils.
    Encore merci,

    @toto

  14. #14
    Candidat au Club
    Femme Profil pro
    sans
    Inscrit en
    août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : août 2017
    Messages : 8
    Points : 4
    Points
    4

    Par défaut

    Bonjour à tous,

    Voila j'ai modifié mon programme comme tu me l'as conseillé hier.
    Tout fonctionne bien et c'est beaucoup moins lourd comme ça.
    Je continue de le finaliser, merci à tous pour votre aide et vos conseils.
    Bon week end.

    @toto

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction simple qui ne marche pas
    Par Emotion dans le forum JavaScript
    Réponses: 1
    Dernier message: 05/03/2009, 07h17
  2. fonction delete qui ne marche pas
    Par bassiste dans le forum PHP & MySQL
    Réponses: 22
    Dernier message: 10/05/2008, 01h58
  3. VBA Access : Fonction find qui ne marche pas
    Par leeloo35 dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/02/2008, 17h56
  4. Réponses: 18
    Dernier message: 07/10/2007, 00h03
  5. requete SQl avec la fonction max () qui ne marche pas
    Par eclipse012 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2006, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo