IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

fonction SI qui ne marche pas [XL-2010]


Sujet :

Excel

  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 617
    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 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

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

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 435
    Points
    1 435
    Par défaut
    bonjour,
    dans la formule , le ET n'a pas de ()
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  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 extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 435
    Points
    1 435
    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
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  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 617
    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 617
    Points : 5 912
    Points
    5 912
    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


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 949
    Points
    55 949
    Billets dans le blog
    131
    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 : 523
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 : 520
Taille : 7,9 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 949
    Points
    55 949
    Billets dans le blog
    131
    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)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  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 Général JavaScript
    Réponses: 1
    Dernier message: 05/03/2009, 06h17
  2. [MySQL] fonction delete qui ne marche pas
    Par bassiste dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 10/05/2008, 00h58
  3. VBA Access : Fonction find qui ne marche pas
    Par leeloo35 dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/02/2008, 16h56
  4. Réponses: 18
    Dernier message: 06/10/2007, 23h03
  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, 14h32

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