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 :

répartition et test de condition


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut répartition et test de condition
    Bonjour à tous,

    je dois faire un script ou plutot une fonction qui permet à partir de montants donnés, et d'un montant saisie (un acompte) de faire une repartition de ce montant.

    Par exemple si j'ai le montant p1= 15000 et le montant p2 de 500 et un acompte de 15200 alors p1 deviendra 0 et p2 deviendra 300 (ce qu'il restera) en fait il s'agit d'une repartition, le soucis c'est que j'ai une 20 aine de champs a tester tous identifiés par la lettre p incrémentée d'un numéro.

    du coup je me retrouve avec cette fonction à réaliser, mais je m'y perds un peu car cela fait un nombre de conditions infinis, étant donné que l'acompte peut être plus grand que tous les nombres, auquel cas il faut répartir tant que le nombre est > a zero puis passer sur la tranche suivante pour répartir ce qu'il reste.

    Enfin pour tester les conditions et le reste, c'est à dire imputer le montant c'est pas un soucis, c'est juste que cela me fait en fait pas mal de conditions car l'acompte peut englober tout ou partie des montants, du coup je me demandais s'il n'existait pas des alternatives plutot que de tester chaque champ?

    en php j'aurais fais ça avec une boucle je pense, en javascript je ne sais pas comment procéder.

    Par avance merci si vous avez des idée.

    Pour l'heure j'ai fais cet ébauche de script mais je me rends compte que je m'y perds dans les conditions.

    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
    46
    47
    48
    49
    50
     <script type="text/javascript">
      function ventilation()
     {
     var montantacompte	= document.getElementById("montantacompte").value;
     var p1				= document.getElementById("p1").value;
     var p2				= document.getElementById("p2").value;	
     var p3				= document.getElementById("p3").value;	
     var p4				= document.getElementById("p4").value;	 
     var p5				= document.getElementById("p5").value;		
     var p7				= document.getElementById("p7").value;	 				
     var p8				= document.getElementById("p8").value;	 
     var p9				= document.getElementById("p9").value;	 
     var p10			= document.getElementById("p10").value;	
     var p11			= document.getElementById("p11").value;	  
     var p12			= document.getElementById("p12").value;	 
     var p13			= document.getElementById("p13").value;
     var m1				= document.getElementById("m1").value;
     var m2				= document.getElementById("m2").value;	
     var m3				= document.getElementById("m3").value;	
     var m4				= document.getElementById("m4").value;	 
     var m5				= document.getElementById("m5").value;		
     var m7				= document.getElementById("m7").value;	 				
     var m8				= document.getElementById("m8").value;	 
     var m9				= document.getElementById("m9").value;	 
     var m10			= document.getElementById("m10").value;	
     var m11			= document.getElementById("m11").value;	  
     var m12			= document.getElementById("m12").value;	 
     var m13			= document.getElementById("m13").value;	 	 
     
     	if(p1>0 &&p1-montantacompte>=0)
    	 {
     
    		 f1=p1-montantacompte;
    		 document.getElementById('p1').value=f1;
    		 document.getElementById('o1').value=Math.round(montantacompte*100)/100;
    	 }
    	 	if(p1>0 &&p1-montantacompte<=(p1+p2))
    	 {
    		 reste1=montantacompte-p1;
    		 impute=p1;
    		 impute2=reste1;
    		 f1=m1-impute;
    		 document.getElementById('p1').value=f1;
    		 document.getElementById('o1').value=Math.round(impute*100)/100;
    		 document.getElementById('o2').value=Math.round(impute2*100)/100;
     
    	 }
     
     }
    </script>

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2012
    Messages : 136
    Par défaut
    Bonjour,

    Si j'ai bien compris tu as 3 variables :
    $p3=$p2-$p1
    c'est ca ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut
    non en fait tous ces montant sont des montants bien différents, p3 != p2 !=p1 (ils peuvent être égaux, mais ça va vraiment de l'aléa) et c'est plutot très rare. a vrai dire je ne l'ai même jamais vu. mais ça pourrait.

    en fait j'ai un acompte qui fait par exmeple 1500 €

    et le montant doit se répartir sur les différents postes

    Nom : Sans titrez.png
Affichages : 251
Taille : 36,2 Ko

    voila dans l'exemple attaché, on retrouve dans la colone de droite tous les montants p1 et en dessous p2 etc...

    ce que je voudrais gfaire c'est que tant que un montant n'est pas nul, alors on impute, ce qu'il va de l'acompte jusqu'à ce que le montant devienne nul, a droite, et après on passe sur les postes suivants jusqu'à ce que l'acompte soit existant.

    par exemple la a droite 16058.82 et en dessous 205.16

    si par exemple l'acompte est de 16100 alors on aura 16058.82 imputé sur le premier poste et la différence sur la second, etc pour tous les postes.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut
    j'ai egalement essayer de faire une boucle mais je n'y arrives pas, je ne sais pas quelle solution est la mieux adaptée.

    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
    <script type="text/javascript">
      function ventilation()
     {
     var reste      	= document.getElementById("montantacompte").value;
     var ac 			= document.getElementById("montantacompte").value;
     var p1				= document.getElementById("p1").value;
     var p2				= document.getElementById("p2").value;	
     var p3				= document.getElementById("p3").value;	
     var p4				= document.getElementById("p4").value;	 
     var p5				= document.getElementById("p5").value;		
     var p7				= document.getElementById("p7").value;	 				
     var p8				= document.getElementById("p8").value;	 
     var p9				= document.getElementById("p9").value;	 
     var p10			= document.getElementById("p10").value;	
     var p11			= document.getElementById("p11").value;	  
     var p12			= document.getElementById("p12").value;	 
     var p13			= document.getElementById("p13").value;
     var c				= 1;
     while(reste>0 && c<13)
     {
    	 if(reste> 'p'+c)
    	 {
    		 reste = 'p'+c -  ac;
    		 document.getElementById('p'+c).value=Math.round(honoraires*100)/100;
    		 print reste;
    	 }
     }
     
    </script>

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut
    il n'y a pas de quotas, en fait c'est dans l'ordre, tant que p1 !=0 alors on impute, bien sur tant que l'acompte existe.

  6. #6
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2012
    Messages : 136
    Par défaut
    Citation Envoyé par piotrowski-s Voir le message
    il n'y a pas de quotas, en fait c'est dans l'ordre, tant que p1 !=0 alors on impute, bien sur tant que l'acompte existe.
    dans ce cas faut utiliser un script php avec ajax

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Par défaut
    pourquoi utiliser ajax?

    il n'y a aucune communication avec la base de donnée, en javascript c'est faisable. ajax ne me servirait pas a grand chose ici.

  8. #8
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2012
    Messages : 136
    Par défaut
    Citation Envoyé par piotrowski-s Voir le message
    pourquoi utiliser ajax?

    il n'y a aucune communication avec la base de donnée, en javascript c'est faisable. ajax ne me servirait pas a grand chose ici.
    Comme tu es plus a l aise sur php. Tu fais ton prog en php.

  9. #9
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2012
    Messages : 136
    Par défaut
    Javascript gère l’interactivité. Bien qu'il soit possible de créer un tableau de variables parle biais d'une boucle.

    http://javascript.developpez.com/tut...e=page_2#LII-A

    Personnellement je suis plus à l'aise à faire appel à un programme php et utiliser javascript que pour la touche finale.

    Maintenant est-ce que c'est la bonne pratique ? est ce que c'est plus rapide ? Je ne sais pas.

    Les variables sont rentrées par l'utilisateur ou je prend le tableau que tu as mis en pj ? ?

    EDIT : demain apres midi j'ai du temps libre je tente d'ecrire un truc et je t'en fait part ! promis.

    re-edit j'ai pas eu le temps je m'y met.

  10. #10
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2012
    Messages : 136
    Par défaut Version 1
    Ca a l'air de marcher et 100% JS + jquery.
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <hmtl lang="fr">
    <!doctype html>
    <html>
    	<head>
    <meta charset="UTF-8"/>
    <meta name="description" content="repartitionet test de conditon :
    http://www.developpez.net/forums/d1245480/webmasters-developpement-web/javascript/repartition-test-condition"./>
    <meta nam="Author" content="Pierre-Marie Westeel"/>
    <script type="text/javascript" src="jquery.js"></script><!-- attention j'ulise jquery-->
    <title>javascript/repartition-test-condition</title>
     
    	<script type="text/javascript">
    		function calcul(){
    			var nbp=$("#nbp").val();
    			var acco=$("#acco").val();
    			for(i=0;i<nbp;i++){
    			var vl=$("#val"+i).val();
    			var vr=$("#var"+i).val();
     
    			var acco = acco - vl;
    			$("span.retour2").append("<b>nom :</b> "+vr+" <b>Valeur :</b> "+vl+" <b>Reste : </b>"+acco+".<br>");
    			}
    		}
     
    		$(document).ready(function(){
    			$("h2").click(function(){
    			var nb_postes = prompt("nombre de postes à facturer");
    			var acco = prompt("Montant de l'accompte accompte ?");
    			$("span.retour").html("Nombres de variables : "+nb_postes+
    			". Valeur accompte = "+acco);
     
    			for(i=0;i<nb_postes;i++){
    $("#formulaire").append("variable "+i+" :<input type='text' id='var"+i+"'></input>Valeur "+i+" :<input type='number' id='val"+i+"'></input><br>");
    			}
    			$("#formulaire").append("<input type='hidden' value='"+nb_postes+"'' id='nbp'><input type='hidden' id='acco' value='"+acco+"'><button type='button' onclick='calcul()' class='calcul'>Cliquer ici pour le calcul de la répartition</button>");
    		});
    		});
     
     
     
    	</script>
     
    	<style>h2, .calcul {cursor:pointer;}</style>
     
    </head>
    <body>
    	<Header>javascript/repartition-test-condition<br>
    		http://www.developpez.net/forums/d1245480/webmasters-developpement-web/javascript/repartition-test-condition
    	</Header>
     
    	<article id="z_saisie"><!-- zone de saisie-->
    		<h2>Pour démarrer cliquer ici et appuyer sur F5 pour une nouvelle saisie</h2>
    	</article>
     
    	<article id="z_aff"><!-- zone d'affichage-->
    		<span class="retour"> </span>
    		<div id="formulaire"> </div>
    		<span class="retour2"> </span>
    	</article>
    </body>
    </hmtl>

Discussions similaires

  1. [Calculs VBA] Test de condition sous VBA
    Par guen dans le forum VBA Access
    Réponses: 8
    Dernier message: 28/11/2007, 17h52
  2. Compilateur test des conditions dans un if
    Par BenoitM dans le forum Framework .NET
    Réponses: 4
    Dernier message: 03/10/2007, 10h07
  3. [Htaccess] - Tests et conditions
    Par Samyhijodelaluna dans le forum Apache
    Réponses: 11
    Dernier message: 17/07/2007, 15h34
  4. structure d un test de condition avec ?
    Par *alexandre* dans le forum Langage
    Réponses: 4
    Dernier message: 11/12/2006, 10h56
  5. Unordered list , test et condition d'arret
    Par NeHuS dans le forum ASP
    Réponses: 2
    Dernier message: 23/05/2006, 15h13

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