formateur informatique

Consolider les montants HT et TTC de la facture VBA Word

Accueil  >  Bureautique  >  Word  >  Word VBA  >  Consolider les montants HT et TTC de la facture VBA Word
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Inscription Newsletter
Sujets que vous pourriez aussi aimer :


Calculer les totaux de la facture

Nous poursuivons ici la construction de l'application de facturation automatisée en VBA Word. A l'occasion des deux précédents volets, nous avons réceptionné depuis une base Access, les informations attachées à une référence choisie avec une liste déroulante. Mais nous avons aussi construit la facture en ajoutant une nouvelle ligne à chaque article acheté.

Montants HT et TTC de la facture en VBA Word

Et pour preuve avec l'exemple illustré par la capture, l'utilisateur peut facilement implémenter cette facture. Il choisit tout d'abord une référence avec la liste déroulante. Aussitôt, toutes les informations liées sont importées dans les champs du formulaire. Il saisit alors une quantité achetée puis il clique sur le bouton Ajouter. Et instantanément, une nouvelle ligne est créée avec ces données, dans la facture du document en arrière-plan du formulaire. Et bien sûr, il peut poursuivre an ajoutant de nouvelles références et en adaptant les quantités. Les nouvelles lignes se greffent au fur et à mesure les unes en dessous des autres. Cependant, le montant total hors taxes (THT) et le montant TTC sont encore incohérents. Ils ne sont tout simplement pas recalculés. C'est la nouvelle mission de ce volet.



Document Word et base de données Access à télécharger
Pour poursuivre le développement de cette application, nous devons récupérer les sources au dernier indice. Comme à l'occasion des volets précédents, nous retrouvons un document Word, une base Access et un sous dossier.
  • Double cliquer sur le fichier Word pour l'ouvrir,
  • Cliquer sur les boutons des bandeaux de sécurité,
Dès lors et comme vous pouvez le voir, le formulaire de facturation se dresse au chargement du document. Si vous ajoutez tour à tour des références, comme lors de la présentation, vous construisez la facture au fur et à mesure, dans le tableau placé sur le document. Le constat reste bien sûr le même sur les totaux à calculer.

Mémoire du total entre deux ajouts
Lors du volet précédent, nous avons mémorisé l'indice de ligne en cours dans une variable publique pour pouvoir continuer d'insérer les nouveaux achats les uns à la suite des autres. Ici, l'idée est similaire. Pour pouvoir consolider les totaux à chaque ajout, nous devons conserver la trace de ces montants. Donc, nous devons déclarer une nouvelle variable publique.
  • Fermer le formulaire en cliquant sur la croix de son onglet,
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Word,
  • Dans l'explorateur de projet sur la gauche, double cliquer sur l'élément Facturation,
Nous affichons ainsi le formulaire dans sa vue en conception. Nous y retrouvons tous les contrôles pour lesquels nous pouvons consulter leurs noms grâce à la fenêtre propriétés. Ces noms sont importants pour pouvoir piloter ces champs par le code VBA.
  • Double cliquer sur un emplacement vide du formulaire,
Nous basculons ainsi dans la feuille de code VBA, plus précisément entre les bornes de la procédure événementielle UserForm_Activate. Cette procédure se déclenche au chargement du formulaire. C'est donc à cet endroit que nous devons initialiser la variable devant porter la valeur du montant total de la facture. Mais avant de l'initialiser, nous devons commencer par la déclarer.
  • Remonter tout en haut de la feuille de code,
  • Sous la déclaration de la variable laLigne, ajouter la déclaration suivante :
...
Option Explicit

Dim laLigne As Byte
Dim total As Double
...


Nous la nommons total et nous la typons comme un Double, soit un réel double précision. En effet, les prix ne sont pas ronds. De plus, l'implication du taux de TVA va nécessairement conduire à des valeurs offrant des décimales à gérer. Ainsi déclarée en dehors de toute procédure, elle devient une variable publique. Elle va donc conserver la valeur qu'elle porte en mémoire entre deux traitements, soit entre deux clics sur le bouton Ajouter.



Initialiser la variable publique du total
Maintenant, nous devons affecter une valeur de départ à cette variable. Forcément, au chargement du formulaire, en l'absence d'articles déjà ajoutés à la facture, sa valeur doit être nulle.
  • Revenir dans les bornes de la procédure UserForm_Activate,
  • Sous l'initialisation de la variable laLigne, ajouter les deux affectations suivantes :
...
Dim enr As Recordset: Dim base As Database

laLigne = 2
total = 0
Qte.Value = 1

cheminBd = ThisDocument.Path & "\articles.accdb"
Set base = DBEngine.OpenDatabase(cheminBd)
...


Par la même occasion, nous en profitons pour initialiser la valeur de la zone de saisie nommée Qte. La quantité minimum pour acheter un article est effectivement d'une unité. Cette donnée sera déjà saisie si elle n'est pas à changer.

Consolider le total à chaque nouvel article
Désormais, à chaque fois qu'un article est ajouté, le montant total de la ligne d'achat doit être consolidé avec les précédents. Il doit être mémorisé dans la variable total. Inévitablement, c'est dans la procédure Valider_Click que tout se joue. C'est elle qui construit les lignes de la facture.
  • Au-dessus du bloc With, ajouter la ligne VBA suivante :
...
End If

total = total + Prix.Value * Qte.Value
With ActiveDocument.Tables(1)
.Cell(laLigne, 1).Range.Text = Ref.Value
.Cell(laLigne, 2).Range.Text = Nom.Value
...


De cette manière, à chaque nouvelle entrée, au total consolidé précédent, nous ajoutons le total hors taxes de la nouvelle ligne.



Inscrire les totaux dans la facture
Nous devons maintenant exploiter cette donnée pour afficher le montant total hors taxes et le montant TTC de la facture.
  • Dans le bloc With, ajouter les deux instructions suivantes :
...
With ActiveDocument.Tables(1)
.Cell(laLigne, 1).Range.Text = Ref.Value
.Cell(laLigne, 2).Range.Text = Nom.Value
.Cell(laLigne, 3).Range.Text = Qte.Value
.Cell(laLigne, 4).Range.Text = Prix.Value
.Cell(laLigne, 5).Range.Text = Prix.Value * Qte.Value
.Cell(laLigne + 2, 5).Range.Text = total
.Cell(laLigne + 4, 5).Range.Text = total * 1.2

End With
...


Pour le montant TTC, nous multiplions simplement le total hors taxes par 1,20 de manière à considérer les 20% de TVA.
  • Enregistrer les modifications (CTRL + S) et exécuter l'application (F5),
  • Avec la liste déroulante, choisir une référence,
  • Inscrire une quantité achetée dans la zone prévue à cet effet,
  • Puis, cliquer sur le bouton Ajouter pour insérer l'article dans la facture,
  • De la même façon, ajouter quelques références supplémentaires,
Construire la facture en VBA Word avec le montant total

De cette manière, nous produisons une facture de plusieurs lignes. Et comme vous pouvez le voir cette fois, les montants HT et TTC sont parfaitement mis à jour et ce, à chaque nouvelle entrée. Au fil des étapes, nous faisons bien progresser notre application de facturation automatisée. Mais il nous reste encore du travail. Dans le prochain Volet, nous verrons comment vérifier toutes les zones de texte du formulaire pour n'autoriser l'ajout que lorsque tous les renseignements sont effectivement donnés.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn