Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
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é.
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,
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.