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

Mathématiques - Sciences Discussion :

Calcul simple avec fltpoint


Sujet :

Mathématiques - Sciences

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 40
    Points : 33
    Points
    33
    Par défaut Calcul simple avec fltpoint
    Bonjour à tous,
    je n'ai pas trop d'expérience avec Xelatex, le problème que je rencontre me semble tout bête mais je ne trouve pas de solution...

    Je tente de créer une facture automatique, il n'y a que quelques additions/multiplications à réaliser, pour cela j'utilise fltpoint.

    J'ai créer une fonction pour chaque ligne de ma facture, comme ceci :

    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
     
    \newcommand\ligne[4]{%
    	% calculs nécessaires
    		% Total de la ligne
    		\fpMul{\prix}{#3}{#4}
    		\xdef\prix{\prix}
     
    	% Total de la facture/devis
    	\fpAdd{\totalHT}{\totalHT}{\prix}
    	\xdef\totalHT{\totalHT}
     
        #1 &
        #2 &
        #3 &
        \numprint[\unite]{#4} &
        \numprint[\unite]{\prix}
        \\
    }
    \prix est une variable utilisée uniquement dans cette fonction
    \totalHT est une variable définie au début de mon document (via \xdef\totalHT{0} )

    J'ajoute les lignes de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    \begin{longtabu} to \textwidth{X[5.5,L,m]X[0.8,c,m]X[1,c,m]X[1,c,m]X[1,r,m]}
        \taburowcolors 1{headcolor .. headcolor}
        \rowfont[c]{\bfseries}%
        Désignation & Unité & Quantitée & Prix unitaire H.T & Montant \tabularnewline
        \taburowcolors 1{tablecolor1 .. tablecolor2}
        \ligne{Produit 1}{Element}{1}{1}
        \ligne{Produit 2}{Element}{1}{1}
        \ligne{Produit 3}{Element}{1}{1}
        \taburowcolors 1{totalcolor .. totalcolor}
        Total H.T & & & & \numprint[\unite]{\totalHT}\\
        TVA 20\% & & & & \numprint[\unite]{0}\\
        Total TTC & & & & \numprint[\unite]{0}\\
    \end{longtabu}
    Dans mon esprit, à chaque fois que j'utilise la fonction \ligne{..} le \prix de la ligne s'ajoutent à mon \totalHT.
    Or si j'ajoute trois ligne avec un montant à 1€, j'obtiens un \totalHT à 9€ !

    Il semble que la fonction soit exécuté trois fois (j'ai vérifié ça en changeant le montant des lignes pour que ça me donne un total de 5 et ça m'a donné 15)....et je ne comprend pas pourquoi ?

    Des idées ?

    Merci d'avance !

  2. #2
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 290
    Points
    11 290
    Billets dans le blog
    5
    Par défaut
    Bonsoir, il va nous falloir un véritable ecm, ça ne compile pas en l'etat et j'avoue avoir un peu la flemme de tout faire. La macro \unite n'est pas définie par exemple et l'extension que tu utilises pour les calculs, connais pas.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 40
    Points : 33
    Points
    33
    Par défaut
    Merci Nikopol,
    voici la version simplifiée et compilable (chez moi, sur "Ubuntu server" avec le paquet texlive-full).
    A noter que le problème vient du tableau, si je modifie ma commande \ligne et que je les exécutent en dehors d'un tableau, mon \totalHT est bon. Aussi j'ai l'impression que pour réaliser le tableau, celui-ci est parcouru trois fois...

    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
     
    \documentclass[a4paper]{article}
    \RequirePackage{fltpoint}			% Pour faire les calculs dans le tableau
    \RequirePackage{numprint}			%Pour gérer l'affichage des nombres
     
    \usepackage{fontspec}				% Pour les polices
    \usepackage{longtable}				% Pour les tableaux
    \usepackage{array}
    \usepackage{tabu}
    \usepackage{multicol}
     
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % Variables
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \xdef\totalHT{0}				% Recevra le montant des lignes cumulées
    \newcommand{\unite}{}				% Pour affichage du symbole Euro
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % Commandes
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \newcommand\ligne[4]{%
    	% calculs nécessaires
    		% Total de la ligne
    		\fpMul{\prix}{#3}{#4}
    		\xdef\prix{\prix}
     
    	% On ajoute à notre variable totalHT (définie au début du document à 0) le montant de la ligne
    	\fpAdd{\totalHT}{\totalHT}{\prix}
    	\xdef\totalHT{\totalHT}
     
        #1 &
        #2 &
        #3 &
        \numprint[\unite]{#4} &
        \numprint[\unite]{\prix}
        \\
    }
     
     
    \begin{document}
     
    	\begin{longtabu} to \textwidth{X[5.5,L,m]X[0.8,c,m]X[1,c,m]X[1,c,m]X[1,r,m]}
    	    Désignation & Unité & Quantitée & Prix unitaire H.T & Montant \tabularnewline
     
    	    % Les commandes ci-dessous semblent être executées trois fois
    	    \ligne{Produit 1}{U}{1}{1}
    	    \ligne{Produit 2}{U}{1}{1}
    	    \ligne{Produit 3}{U}{1}{1}
    	    \ligne{Produit 4}{U}{1}{1}
     
    	    % Le total est ainsi = à 12 au lieu de 4
    	    Total H.T & & & & \numprint[\unite]{\totalHT}\\
     
    	\end{longtabu}
     
    \end{document}

  4. #4
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 290
    Points
    11 290
    Billets dans le blog
    5
    Par défaut
    C'est bien ça, tu avais la solution .
    Tabu et longtable(qui utilise tabu) font deux passes sur les tableaux. Le plus simple est de ne pas utiliser tabu. Le code fonctionne dans un tabular classic.

    Par contre, fais attention, ta macro \totalHT, ne sera remise à 0 qu'à chaque compilation, ce qui veut dire que si tu as 2 tableaux le total HT sera faux.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 40
    Points : 33
    Points
    33
    Par défaut
    Merci Nikopol,
    du coup j'ai fait un truc pas très propre (ne maîtrisant pas suffisant Latex pour refaire le formatage du modèle). Je remet à 0 \totalHT à chaque passage

    Mais ça fonctionne parfaitement

    Merci également pour le conseil, je n'aurais qu'un tableau dieu merci !

  6. #6
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 290
    Points
    11 290
    Billets dans le blog
    5
    Par défaut
    Si tu as besoin d'aide, n'hésite pas à venir poster on pourra surement t'aider.

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

Discussions similaires

  1. problème avec un calcul simple avec 13 chiffres
    Par mysterauto dans le forum Excel
    Réponses: 5
    Dernier message: 06/04/2014, 00h23
  2. Calculs simples avec Ruby
    Par Lorddolf dans le forum Ruby
    Réponses: 3
    Dernier message: 14/03/2011, 17h49
  3. Réponses: 1
    Dernier message: 17/08/2008, 14h20
  4. [calcul] pb avec la syntaxe d'une expression calulée
    Par gloogloo dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 29/06/2005, 18h14
  5. Calcul simple pour code couleur
    Par Boumeur dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 16/04/2005, 11h51

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