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

JavaScript Discussion :

Transposition de formule conditionnelle Excel en Javascript


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Transposition de formule conditionnelle Excel en Javascript
    Bonjour à tous

    j'espére être sur le bon forum pour avoir une réponse a mon petit problème


    voici mon problème, j'ai une formule excel (numbers) comme ceci : ma formule fonctionne bien et tous les calculs se font correctement selon les variables
    SI($B$4>3;($C$4×0,75)×130;SI($B$4=3;($C$4×0,75)×110;SI(($B$4=2);($C$4×0,75)×90;SI($B$4=1;(($C$4×0,75)×70);0))))


    et voici ce que j'ai pour mon site internet : avec cela la formule ne fonctionne qu'avec la ligne par default et ne prends pas les autres variables

    OU EST L'ERREUR MERCI

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    </style>
    </head>
     
    <body>
    <h1 style="text-align: center;">Combien pouvez-vous gagner ?</h1>
        <div class="container-main">
     
    <form id="calculator" name="calculator">
    <label>Nombre de chambres
    <input class="input" type="text" id="rooms" name="rooms" placeholder="Chambres"></label>
    <label>Jours de vacances
    <input class="input" type="text" id="days" name="days" placeholder="Jours"></label>
     
    <span style="padding: 30px"><button type="button" onclick="calculate();">Calculer</button></span>
           <div style="padding-top: 30px">
            <label><span style="font-size: 24px; padding-right: 30px">Revenu potentiel*</span>
    <span style="font-size: 36px; color: #fc4550; padding-top: 30px;"><input type="text" id="revenue" name="revenue"></span></label>
    </div>
    <span style="float: right; padding: 20px 0 20px 0; margin-right: 150px;"><a href="javascript:history.go(0)">Faire un autre calcul</a></span>
    </form>
     
     
     
    <script>
    function calculate(){
    	var rooms = document.getElementById('rooms').value;
    	var days = document.getElementById('days').value;
    	var result;
    	switch (rooms) {
    		case  3 :
    			result = ((days * 0.75)*110);
    			break;
    		case  2 :
    			result = ((days * 0.75)*90);
    			break;
    		case  1 :
    			result = ((days * 0.75)*70);
    			break;
    		default  :
    			result = ((days * 0.75)*130);
    			break;
    		}
    	document.getElementById('revenue').value = result;
    	}
    </script>
    Merci d'avance

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 098
    Points : 44 675
    Points
    44 675
    Par défaut
    Bonjour,
    attention document.getElementById('rooms').value retourne une chaine de caractère donc ton switch ne passe que par default.

    Tu peux toujours tester en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var rooms = parseInt( document.getElementById('rooms').value)
    ;

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Merci
    MERCI beaucoup Nosmoking, pour ta réponse rapide. c'était bien cela.
    le problème est résolu.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 098
    Points : 44 675
    Points
    44 675
    Par défaut
    Je rajouterais que dans ton cas, 3 sélections possibles, il serait peut être plus judicieux de passer par un <select>

  5. #5
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Pour moi ton default JavaScript n'est pas équivalent au cas par défaut de ta formule excel. Tu dois faire la différence entre un nombre supérieur à 3, et le cas « tout le reste » qui inclut des nombres inférieurs à 1 et des valeurs qui ne sont pas des nombres (case vide, texte non numérique).

    Quand je traduis directement ta formule excel, j'obtiens ça :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($B$4 > 3)   return $C$4 * 0.75 * 130;
    if ($B$4 === 3) return $C$4 * 0.75 * 110;
    if ($B$4 === 2) return $C$4 * 0.75 * 90;
    if ($B$4 === 1) return $C$4 * 0.75 * 70;
    return 0;

  6. #6
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Citation Envoyé par watilin
    Tu dois faire la différence entre un nombre supérieur à 3, et...
    Oui... Ce qui donne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function calculate(){
    	var
    		rooms =parseInt(document.getElementById('rooms').value),
    		days  =parseInt(document.getElementById('days').value),
    		result=0;
     
    	if(rooms>0&& days>0){
    		switch(rooms){
    			case 1: result= 70;break;
    			case 2: result= 90;break;
    			case 3: result=110;break;
    			default:result=130;
    		}
    		result=(days*0.75)*result;
    	}
    	document.getElementById('revenue').value=result;
    }
    (c) 2016 NoSmoking & Watilin, all rights reserved

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

Discussions similaires

  1. [XL-2007] formule conditionnelle sur excel
    Par yfchauer dans le forum Excel
    Réponses: 3
    Dernier message: 03/08/2014, 23h58
  2. Formules sous EXCEL
    Par tiftay01 dans le forum Excel
    Réponses: 5
    Dernier message: 27/06/2007, 11h10
  3. PRoblème de formule dans Excel
    Par jbidou88 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/05/2006, 09h35
  4. Utilisation de formule sous excel...
    Par learo dans le forum Excel
    Réponses: 7
    Dernier message: 06/12/2005, 12h02
  5. une formule conditionnelle "si" sur ACCESS est ce
    Par amandine2910 dans le forum Access
    Réponses: 3
    Dernier message: 28/11/2005, 23h09

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