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 :

Calcul d'une somme dans un tableau


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Calcul d'une somme dans un tableau
    Bonjour,

    je fais appel à vous pour m'aider dans l'élaboration d'un bon de commande.

    Pour l'instant j'ai un tableau avec les champs prix et quantité qui se calcul automatiquement.

    Voici le code:

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    window.onload = dtableInit;
     
    /* initialise le script */
    function dtableInit() {
        var table = document.getElementsByTagName('TABLE');
        for ( var i = 0; i < table.length; i++ ) {
            // on récupère tous les tableaux dynamiques
            if ( table[i].className = 'dTable' ) {
                var tbody = table[i].tBodies[0];
                var newTr = tbody.rows[0].cloneNode(true);
     
                // on masque la première ligne du tbody (la ligne de reference)
                tbody.rows[0].style.display = 'none';
     
                // on en ajoute une
                tbody.appendChild(newTr);
            }
        }
    }
     
    /* trouve le tag "parentTagName" parent de "element" */
    function getParent(element, parentTagName) {
        if ( ! element )
            return null;
        else if ( element.nodeType == 1 && element.tagName.toLowerCase() == parentTagName.toLowerCase() )
            return element;
        else
            return getParent(element.parentNode, parentTagName);
    }
     
    /* ajoute une ligne */
    function addLigne(link) {
        // 1. récuperer le node "TABLE" à manipuler
        var td = link.parentNode;
        var table = getParent(td,'TABLE');
     
        // 2. on va manipuler le TBODY
        var tbody = table.tBodies[0];
     
        // 3. on clone la ligne de reference
        var newTr = tbody.rows[0].cloneNode(true);
    	var newTr = tbody.rows[0].cloneNode(true)
        tbody.appendChild(newTr);
     
        if ( document.all )  // pour IE
            newTr.style.display = "block";
        else
            newTr.style.display = "table-row"; // pour Gecko
    }
     
    /* supprimer une ligne */
    function delLigne(link) {
        // 1. récuperer le node "TABLE" à manipuler
        var td = link.parentNode;
        var table = getParent(td, 'TABLE');
     
        // 2. récuperer le TBODY
        var tbody = table.tBodies[0];
     
        // 3. Supprimer le TR
        tbody.removeChild(getParent(td, 'TR'));
    }
    function calcul(obj){
      // recherche TD parente de l'input (obj) passé en paramètre
      var oTD = obj.parentNode;
      // recherche TR parente de la TD
      var oTR = oTD.parentNode;
      // récup de la position de la TD sur la ligne
      var ind = oTD.cellIndex;
      // récup. TD précédente
      var oTDavant = oTR.cells[ind-1];
      // récup. TD suivante
      var oTDapres = oTR.cells[ind+1];
      // récup de l'INPUT de la TD précédente
      var oInputAvant = oTDavant.firstChild;
      // récup. de l'INPUT de la TD suivante
      var oInputApres = oTDapres.firstChild;
      // OUF!!! enfin le calcul
      oInputApres.value = oInputAvant.value * obj.value;
    }
    function calcul2(obj){
      // recherche TD parente de l'input (obj) passé en paramètre
      var oTD = obj.parentNode;
      // recherche TR parente de la TD
      var oTR = oTD.parentNode;
      // récup de la position de la TD sur la ligne
      var ind = oTD.cellIndex;
      // récup. TD précédente
      var oTDapres = oTR.cells[ind+1];
      // récup. TD suivante
      var oTDapres2 = oTR.cells[ind+2];
      // récup de l'INPUT de la TD précédente
      var oInputapres = oTDapres.firstChild;
      // récup. de l'INPUT de la TD suivante
      var oInputApres2 = oTDapres2.firstChild;
      // OUF!!! enfin le calcul
      oInputApres2.value = oInputapres.value * obj.value;
     
    }
    Code html : 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
    <body>
    	<table class="dTable" style="text-align:center; width:90%; margin-top:30px;">
        <thead>
            <tr>
    		<th style="text-align:center; width:5%">Poste <br/>analytique</th>
    		<th style="text-align:center; width:5%">Code <br/>chantier</th>
    		<th style="text-align:center; width:40%">D&eacute;signation</th>
    		<th style="text-align:center; width:5%">Unit&eacute;</th>
    		<th style="text-align:center; width:5%">Quantit&eacute;</th>
    		<th style="text-align:center; width:10%">Prix unitaire <br/>H.T.</th>
    		<th style="text-align:center; width:10%">Montant H.T.</th>
    		<th style="text-align:center; width:5%">Taux <br/>TVA</th>
                <th></th>
            </tr>
        </thead>
        <tbody id="mon_tableau">
    	<tr>
                <td><input class = "tableau" type = "text" name = "champ1[]" /></td>
                <td><input class = "tableau" type = "text" name = "champ2[]" /></td>
                <td><input class = "tableau" type = "text" name = "champ3[]" /></td>
                <td><input class = "tableau" type = "text" name = "champ4[]" /></td>
    			<td><input class = "tableau" type = "text" name = "champ5[]" onkeyup = "calcul2(this);"/></td>
    			<td><input class = "tableau" type = "text" name = "champ6[]" onkeyup = "calcul(this);"/> </td> 
                <td><input class = "tableau" type = "text" name = "champ7[]"/></td>
                <td><input class = "tableau" type = "text" name = "champ8[]" /></td>
                <td><a href="#" onclick="delLigne(this); return false;">Supp</a></td>
            </tr>
        </tbody>
    		<tfoot>	
            <tr><td colspan="3" style="text-align:left"><p>voir devis joint</p></td><td colspan="3" style="text-align:left; font-weight:bold;">
    		<FONT size="2pt">Montant total HT :</FONT></td><td colspan="3"><h3><input class="tableau" type="text" name="mont_HT" value="" id="mont_HT"/></h3></td></tr>
    			<td colspan="3" rowspan="2"><p>... </p></td><td rowspan="1" colspan="3" style="text-align:left; font-weight:bold;">
     
    		  <tr><th colspan="9"><a href="#" onclick="addLigne(this);addLigne(this);addLigne(this);addLigne(this);addLigne(this);addLigne(this);addLigne(this);addLigne(this);addLigne(this);addLigne(this); return false;">Ajouter une ligne</a></th></tr>
    		  <a href="#" class="bouton empty blanc" style="float:right;margin:-200px 0; z-index:2; position:fixed" onclick="javascript:document.insertion.submit();">Enregistrer</a>
    		</tfoot>			
    </table>

    J'aimerais que le montant total soit calculé automatiquement lors de la saisie.

    Pouvait vous m'aidez s'il vous plait?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 079
    Points : 44 660
    Points
    44 660
    Par défaut
    Bonjour et bienvenue sur DVP.

    Tu arrives ici 1 semaine trop tard, la solution a déjà été donné...c'est ballot!!!

    Aller ne gâchons pas nos réponses mais amortissons les plutôt.

    Calcul automatique dans tableau dynamique

    C'est qui votre prof?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Oui c'est se code que j'ai repris mais il manque le calcul du montant total.
    J'ai essayer de refaire la même chose pour le input du montant total mais sa ne marche pas.

    C'est pour cela que je demande de l'aide.

    Et j’essaie d'apprendre et de comprendre à partir des forums justement même si parfois je ne comprend pas tous, je découvre tous juste le JavaScript.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 079
    Points : 44 660
    Points
    44 660
    Par défaut
    il te faut créer une fonction qui va récupérer toutes les valeurs contenues dans la colonne qui t'intéresse, la 7 donc indice 6, et les sommer avant de les affecter à l'élément mon_total_HT.

    Cette fonction est à ajouter à la fin de la function effectuée sur le change de tes INPUTs.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Ok merci,

    Je vais essayer d'effectuer tous cela.

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/07/2013, 17h46
  2. [XL-2007] option boutton: comment calculer une somme dans un tableau
    Par Malek713 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/10/2010, 16h05
  3. Calculer une somme dans un tableau
    Par nawak.seb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 10/02/2009, 16h21
  4. Poucentage d'une somme dans un tableau croisé
    Par leloup84 dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 07/04/2008, 11h33
  5. Calcul d'une somme dans Excel ??
    Par LaVaZza dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/06/2006, 22h55

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