• [LaTeX] Comment faire rapidement une facture super classe

    J'ai fait mes premières factures récemment, et j'ai été complètement incapable de trouver la moindre application gratuite/libre permettant d'éditer facilement et rapidement une belle facture.

    Donc comme je suis un peu kamikaze, j'ai passé des heures à m'améliorer en LaTeX en mettant au point un petit système pour éditer des jolies factures.

    Pour ceux qui ne connaissent pas ou peu LaTeX, il existe de très bonnes FAQ, notamment :


    Voici le code LaTeX de ma facture :

    \documentclass[french,11pt]{article}
    \usepackage{babel}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[a4paper]{geometry}
    \usepackage{units}
    \usepackage{bera}
    \usepackage{graphicx}
    \usepackage{fancyhdr}
    \usepackage{fp}

    \def\TVA{19.6}    % Taux de la TVA

    \def\TotalHT{0}
    \def\TotalTVA{0}

    \newcommand{\AjouterProduit}[3]{%    Arguments : Désignation, quantité, prix unitaire HT
        \FPround{\prix}{#3}{2}
        \FPeval{\montant}{#2 * #3}
        \FPround{\montant}{\montant}{2}
        \FPadd{\TotalHT}{\TotalHT}{\montant}
       
        \eaddto\ListeProduits{#1    &    \prix    &    #2    &    \montant    \cr}
    }

    \newcommand{\AfficheResultat}{%
        \ListeProduits
       
        \FPeval{\TotalTVA}{\TotalHT * \TVA / 100}
        \FPadd{\TotalTTC}{\TotalHT}{\TotalTVA}
        \FPround{\TotalHT}{\TotalHT}{2}
        \FPround{\TotalTVA}{\TotalTVA}{2}
        \FPround{\TotalTTC}{\TotalTTC}{2}
        \global\let\TotalHT\TotalHT
        \global\let\TotalTVA\TotalTVA
        \global\let\TotalTTC\TotalTTC
       
        \cr \hline
        Total HT            & & &    \TotalHT    \cr
        TVA \TVA~\%         & & &    \TotalTVA    \cr
        \hline \hline
        \textbf{Total TTC}    & & &    \TotalTTC
    }

    \newcommand*\eaddto[2]{% version développée de \addto
       \edef\tmp{#2}%
       \expandafter\addto
       \expandafter#1%
       \expandafter{\tmp}%
    }

    \newcommand{\ListeProduits}{}




    %%%%%%%%%%%%%%%%%%%%% A MODIFIER DANS LA FACTURE %%%%%%%%%%%%%%%%%%%%%

    \def\FactureNum            {1}    % Numéro de facture
    \def\FactureAcquittee    {non}        % Facture acquittée : oui/non
    \def\FactureLieu    {Paris}    % Lieu de l'édition de la facture
    \def\FactureObjet    {facture pour te faire payer}    % Objet du document
    % Description de la facture
    \def\FactureDescr    {%
    Cette facture concerne la réalisation du site web machin-truc.com, son hébergement, et la location du nom de domaine
    }

    % Infos Client
    \def\ClientNom{M. Dupont}    % Nom du client
    \def\ClientAdresse{%                    % Adresse du client
        12, rue de la Geekerie \\
        75000 Paris
    }

    % Liste des produits facturés : Désignation, quantité, prix unitaire HT
    \AjouterProduit    {Réalisation du site}        {1}        {1600}
    \AjouterProduit    {Hébergement -- 1 mois}        {3}        {10}
    \AjouterProduit    {Nom de domaine -- 1 an}    {1}        {8}

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%




    \geometry{verbose,tmargin=4em,bmargin=8em,lmargin=6em,rmargin=6em}
    \setlength{\parindent}{0pt}
    \setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}

    \thispagestyle{fancy}
    \pagestyle{fancy}
    \setlength{\parindent}{0pt}

    \renewcommand{\headrulewidth}{0pt}
    \cfoot{
        Ma Société SARL au capital de 3000 € ~--~ 34, rue du Brainfuck - 75000 Paris\newline
        \small{
            Telephone : +33(0)6 12 34 56 78 ~--~ Site web : www.ma-societe.com ~--~ E-mail : contact@ma-societe.com\newline
            RCS Paris 512 569 485 ~--~ Code APE 6201Z ~--~ Numéro TVA : FR 56-512-569-485
       
    }
    }



    \begin{document}

    % Logo de la société
    \includegraphics{logo.jpg}

    % Nom et adresse de la société
    Ma Société SARL \\
    34, rue du Brainfuck \\
    75000 Paris

    Facture n°\FactureNum


    {\addtolength{\leftskip}{10.5cm} %in ERT
        \textbf{\ClientNom}    \\
        \ClientAdresse        \\

    } %in ERT


    \hspace*{10.5cm}
    \FactureLieu, le \today

    ~\\~\\

    \textbf{Objet : \FactureObjet \\}

    \textnormal{\FactureDescr}

    ~\\

    \begin{center}
        \begin{tabular}{lrrr}
            \textbf{Désignation ~~~~~~}    & \textbf{Prix unitaire}    & \textbf{Quantité}    & \textbf{Montant (EUR)}    \\
            \hline
            \AfficheResultat{}
        \end{tabular
    }
    \end{center}

    ~\\

    \ifthenelse{\equal{\FactureAcquittee}{oui}}{
        Facture acquittée.
    }{

        À régler par chèque ou par virement bancaire :

        \begin{center
    }
            \begin{tabular}{|c c c c|}
                \hline     \textbf{Code banque}    & \textbf{Code guichet}    & \textbf{N° de Compte}        & \textbf{Clé RIB}    \\
                        59763                    & 00726                     & 41652387462                & 98                \\
                \hline     \textbf{IBAN N°}        & \multicolumn{3}{|l|}{ FR59 4859 4628 7921 0289 8106 846 }         \\
                \hline     \textbf{Code BIC}        & \multicolumn{3}{|l|}{ AGRIFPRP792 }         \\
                \hline
            \end{tabular}
        \end{center}

    }

    \end{document}
    [code=latex]\documentclass[french,11pt]{article}
    \usepackage{babel}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[a4paper]{geometry}
    \usepackage{units}
    \usepackage{bera}
    \usepackage{graphicx}
    \usepackage{fancyhdr}
    \usepackage{fp}

    \def\TVA{19.6}    % Taux de la TVA

    \def\TotalHT{0}
    \def\TotalTVA{0}

    \newcommand{\AjouterProduit}[3]{%    Arguments : Désignation, quantité, prix unitaire HT
        \FPround{\prix}{#3}{2}
        \FPeval{\montant}{#2 * #3}
        \FPround{\montant}{\montant}{2}
        \FPadd{\TotalHT}{\TotalHT}{\montant}
       
        \eaddto\ListeProduits{#1    &    \prix    &    #2    &    \montant    \cr}
    }

    \newcommand{\AfficheResultat}{%
        \ListeProduits
       
        \FPeval{\TotalTVA}{\TotalHT * \TVA / 100}
        \FPadd{\TotalTTC}{\TotalHT}{\TotalTVA}
        \FPround{\TotalHT}{\TotalHT}{2}
        \FPround{\TotalTVA}{\TotalTVA}{2}
        \FPround{\TotalTTC}{\TotalTTC}{2}
        \global\let\TotalHT\TotalHT
        \global\let\TotalTVA\TotalTVA
        \global\let\TotalTTC\TotalTTC
       
        \cr \hline
        Total HT            & & &    \TotalHT    \cr
        TVA \TVA~\%         & & &    \TotalTVA    \cr
        \hline \hline
        \textbf{Total TTC}    & & &    \TotalTTC
    }

    \newcommand*\eaddto[2]{% version développée de \addto
       \edef\tmp{#2}%
       \expandafter\addto
       \expandafter#1%
       \expandafter{\tmp}%
    }

    \newcommand{\ListeProduits}{}




    %%%%%%%%%%%%%%%%%%%%% A MODIFIER DANS LA FACTURE %%%%%%%%%%%%%%%%%%%%%

    \def\FactureNum            {1}    % Numéro de facture
    \def\FactureAcquittee    {non}        % Facture acquittée : oui/non
    \def\FactureLieu    {Paris}    % Lieu de l'édition de la facture
    \def\FactureObjet    {facture pour te faire payer}    % Objet du document
    % Description de la facture
    \def\FactureDescr    {%
    Cette facture concerne la réalisation du site web machin-truc.com, son hébergement, et la location du nom de domaine
    }

    % Infos Client
    \def\ClientNom{M. Dupont}    % Nom du client
    \def\ClientAdresse{%                    % Adresse du client
        12, rue de la Geekerie \\
        75000 Paris
    }

    % Liste des produits facturés : Désignation, quantité, prix unitaire HT
    \AjouterProduit    {Réalisation du site}        {1}        {1600}
    \AjouterProduit    {Hébergement -- 1 mois}        {3}        {10}
    \AjouterProduit    {Nom de domaine -- 1 an}    {1}        {8}

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%




    \geometry{verbose,tmargin=4em,bmargin=8em,lmargin=6em,rmargin=6em}
    \setlength{\parindent}{0pt}
    \setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}

    \thispagestyle{fancy}
    \pagestyle{fancy}
    \setlength{\parindent}{0pt}

    \renewcommand{\headrulewidth}{0pt}
    \cfoot{
        Ma Société SARL au capital de 3000 € ~--~ 34, rue du Brainfuck - 75000 Paris\newline
        \small{
            Telephone : +33(0)6 12 34 56 78 ~--~ Site web : www.ma-societe.com ~--~ E-mail : contact@ma-societe.com\newline
            RCS Paris 512 569 485 ~--~ Code APE 6201Z ~--~ Numéro TVA : FR 56-512-569-485
        }
    }



    \begin{document}

    % Logo de la société
    \includegraphics{logo.jpg}

    % Nom et adresse de la société
    Ma Société SARL \\
    34, rue du Brainfuck \\
    75000 Paris

    Facture n°\FactureNum


    {\addtolength{\leftskip}{10.5cm} %in ERT
        \textbf{\ClientNom}    \\
        \ClientAdresse        \\

    } %in ERT


    \hspace*{10.5cm}
    \FactureLieu, le \today

    ~\\~\\

    \textbf{Objet : \FactureObjet \\}

    \textnormal{\FactureDescr}

    ~\\

    \begin{center}
        \begin{tabular}{lrrr}
            \textbf{Désignation ~~~~~~}    & \textbf{Prix unitaire}    & \textbf{Quantité}    & \textbf{Montant (EUR)}    \\
            \hline
            \AfficheResultat{}
        \end{tabular}
    \end{center}

    ~\\

    \ifthenelse{\equal{\FactureAcquittee}{oui}}{
        Facture acquittée.
    }{

        À régler par chèque ou par virement bancaire :

        \begin{center}
            \begin{tabular}{|c c c c|}
                \hline     \textbf{Code banque}    & \textbf{Code guichet}    & \textbf{N° de Compte}        & \textbf{Clé RIB}    \\
                        59763                    & 00726                     & 41652387462                & 98                \\
                \hline     \textbf{IBAN N°}        & \multicolumn{3}{|l|}{ FR59 4859 4628 7921 0289 8106 846 }         \\
                \hline     \textbf{Code BIC}        & \multicolumn{3}{|l|}{ AGRIFPRP792 }         \\
                \hline
            \end{tabular}
        \end{center}

    }

    \end{document}
    [/code]


    Tout d'abord, la première fois, il faut modifier le nom de votre société, son adresse, le logo (situé dans un fichier logo.jpg qui doit être dans le même dossier), les informations de votre société en bas de page, et les informations bancaires pour les virements.

    Ensuite, à chaque fois qu'il faudra faire une facture, il suffira de modifier les lignes dans l'encart "A MODIFIER DANS LA FACTURE" où on définit les infos du clients, la description de la facture, et les produits vendus. Tout est expliqué dans les commentaires du code

    Les sous-totaux, la TVA, et le total TTC sont calculés automatiquement. C'était bien sûr la partie la plus dure à faire... J'ai utilisé en particulier le package fp pour les calculs.


    Vous trouverez dans ce targézède la source .tex de cet exemple, ainsi que le pdf compilé :
    Télécharger l'exemple


    Tags Tags : ,
  • Commentaires

    1
    Lundi 15 Juin 2009 à 07:57
    Pas mal du tout, le seul truc que tu as à faire maintenant c'est de séparer ça en deux fichiers, un fichier de style et un fichier de conf + appel des fonctions d'affichage.  ;-)
    2
    Lundi 15 Juin 2009 à 12:59

    Yep, pour ça, il suffit de mettre la partie à configurer dans un fichier config.tex, puis de mettre ce code à la place dans le fichier facture.tex :

    \input{config}
    3
    TheGodFather
    Samedi 4 Juillet 2009 à 05:11
    J'ai déjà cherché pour un truc du genre!

    Me reste plus qu'à apprendre le LaTex et personnaliser pour la TPS et TVQ!
    4
    Vendredi 17 Juillet 2009 à 14:44
    J'ai fait pas mal de facture sur OpenOffice avec une macro python et le mode serveur... LaTeX est superbe mais je pense que tu t'ais pris la tête pour peu de choses.

    Je ne vois pas trop ce qui t'as empêché de faire ça sur OOO
    5
    Vendredi 21 Août 2009 à 12:24
    Essaye d'éditer tes factures en ligne de commande avec OOo :p
    6
    Samedi 17 Octobre 2009 à 13:41
    Salut Skréo !
    7
    christelle200
    Lundi 26 Octobre 2009 à 20:34
    oulala c est du charabia pour moi^^!
    8
    Jeudi 22 Juillet 2010 à 13:39
    Génial merci !

    PS : avec une licence et un lien ici ce serait encore miuex ;-)
    9
    Mercredi 7 Septembre 2011 à 20:05
    Christophe G.

    Bonjour,

    Voilà exactement ce qu'il me fallait. Petite question : est-il de voir ce que ça donne le fichier "config.tex" ?

    En tous cas, merci...

     

    10
    Vendredi 9 Septembre 2011 à 17:55

    Christophe: comme dit précédemment, il suffit de copier/coller la partie fixe du code situées avant les informations variables dans un fichier config.tex

    11
    Vendredi 9 Septembre 2011 à 20:06
    Christophe G.

    @Godefroy : Tu veux dire coller le préambule dans un fichier "config.tex" ?

     

     

    12
    Vendredi 9 Septembre 2011 à 20:21

    Oui, du \documentclass[french,11pt]{articlejusqu'au \newcommand{\ListeProduits}{}

    Suivre le flux RSS des commentaires de cet article


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :