Académique Documents
Professionnel Documents
Culture Documents
I - Introduction..............................................................................................................................................................4
II - Principe de fonctionnement de la caisse...............................................................................................................4
III - Structure générale du logiciel............................................................................................................................... 4
IV - Tables nécessaires............................................................................................................................................... 5
IV-A - T_ParametreCaisse..................................................................................................................................... 5
IV-B - T_Produit......................................................................................................................................................5
IV-C - T_Operation................................................................................................................................................. 6
IV-D - T_DetailOperation........................................................................................................................................6
V - Requêtes nécessaires........................................................................................................................................... 6
V-A - R_DetailOperation.........................................................................................................................................6
V-B - R_Ticket........................................................................................................................................................ 7
VI - Formulaires nécessaires.......................................................................................................................................7
VI-A - Formulaire F_Operation...............................................................................................................................7
VI-A-1 - Contrôle sous-formulaire SF_DetailOperation.................................................................................... 8
VI-A-2 - Boutons de commande pour effectuer les opérations........................................................................ 9
VI-A-2-a - Procédure générique................................................................................................................ 10
VI-A-2-b - Bouton de commande cmd0.................................................................................................... 11
VI-A-2-c - Bouton de commande cmd1.................................................................................................... 11
VI-A-2-d - Bouton de commande cmd2.................................................................................................... 11
VI-A-2-e - Bouton de commande cmdP....................................................................................................11
VI-A-2-f - Bouton de commande cmdC.....................................................................................................12
VI-A-2-g - Bouton de commande cmdR....................................................................................................12
VI-A-3 - Boutons de commande pour copier les valeurs dans le détail des opérations................................. 12
VI-A-3-a - Bouton de commande cmdPrix................................................................................................ 13
VI-A-3-b - Bouton de commande cmdQuantite.........................................................................................13
VI-A-3-c - Bouton de commande cmdRemise.......................................................................................... 14
VI-A-3-d - Bouton de commande cmdEnlever.......................................................................................... 14
VI-A-4 - Boutons de commande pour afficher les produits par catégorie...................................................... 14
VI-A-4-a - Procédure générique................................................................................................................ 15
VI-A-4-b - Bouton de commande cmdBoissons........................................................................................16
VI-A-4-c - Bouton de commande cmdBoulangerie................................................................................... 16
VI-A-4-d - Bouton de commande cmdCharcuterie....................................................................................16
VI-A-5 - Zone de texte pour afficher les valeurs saisies................................................................................ 17
VI-A-5-a - Zone de texte txtResultat......................................................................................................... 17
VI-A-6 - Zone de texte pour gérer les codes-barres...................................................................................... 17
VI-A-6-a - Zone de texte txtCodeBarres................................................................................................... 18
VI-A-7 - Zones de texte pour afficher les totaux............................................................................................ 19
VI-A-7-a - Zone de texte txtTotalTTC........................................................................................................20
VI-A-7-b - Zone de texte txtTotalRemise...................................................................................................20
VI-A-7-c - Zone de texte txtTotalAvantRemise..........................................................................................20
VI-A-7-d - Zone de texte txtNbLignes....................................................................................................... 20
VI-A-7-e - Zone de texte txtNbProduits.....................................................................................................21
VI-A-8 - Zones de texte au pied du formulaire...............................................................................................21
VI-A-8-a - Zone de texte txtIdCaisse........................................................................................................ 21
VI-A-8-b - Zone de texte txtIdOperation....................................................................................................22
VI-A-8-c - Zone de texte txtDateOperation............................................................................................... 22
VI-A-8-d - Zone de texte txtHeureOperation............................................................................................. 22
VI-A-8-e - Zone de texte txtIdVendeur...................................................................................................... 22
VI-A-8-f - Bouton de commande cmdEncaisser........................................................................................22
VI-B - Formulaire F_ParametreCaisse.................................................................................................................23
VI-B-1 - Listes déroulantes pour choisir la caisse et le vendeur....................................................................23
VI-B-1-a - Liste déroulante cmbCaisse..................................................................................................... 24
VI-B-1-b - Liste déroulante cmbVendeur...................................................................................................24
VI-C - Formulaire F_ListeProduit......................................................................................................................... 24
VI-C-1 - Formulaire SF_ListeProduit.............................................................................................................. 26
VI-C-1-a - Bouton de commande cmdSelectionner.................................................................................. 26
VI-D - Formulaire F_Encaissement......................................................................................................................27
VI-D-1 - Procédure générique........................................................................................................................ 27
-2-
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
-3-
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
I - Introduction
L'objectif de cet article est, après avoir présenté le principe de fonctionnement de la caisse enregistreuse, de décrire
l'architecture et les différents composants de l'application. Au cours de cette présentation, on détaillera également les
parties réutilisables de l'application, comme le pavé numérique ou les boutons associés aux catégories de produits.
Une fois que vous aurez visualisé la structure générale du logiciel et compris l'utilité de ses différents éléments (objets
et contrôles), vous devriez pouvoir réaliser votre propre logiciel de caisse sans trop de difficultés.
1 On choisit la catégorie de produits en cliquant sur les boutons de commande situés en bas : boissons,
boulangerie, charcuterie…
2 Sur le formulaire qui s'ouvre, on choisit le produit de la catégorie.
3 On saisit sur le pavé numérique la quantité, puis on clique sur le bouton de commande Quantité.
4 On saisit éventuellement sur le pavé numérique la valeur de la remise, puis on appuie sur Remise.
5 Enfin, on valide la saisie de la ligne en appuyant sur le bouton de commande R.
6 On réitère la procédure pour chaque produit.
7 On termine en cliquant sur Encaisser.
On va se limiter aux fonctions essentielles de la caisse enregistreuse pour faciliter la compréhension de l'article.
-4-
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Le formulaire principal F_Operation permettant de réaliser les opérations sur les produits comportera :
Le module du formulaire principal comportera des procédures génériques pour simplifier et rendre plus lisible le code
VBA :
• une procédure générique appelée sur l'événement clic de chaque bouton du pavé numérique ;
• une procédure générique appelée sur l'événement clic de chaque bouton destinée à filtrer les produits par
catégorie.
Par la suite, nous allons décrire plus en détail les différents objets nécessaires, les contrôles des formulaires et les
procédures VBA associées.
IV - Tables nécessaires
Elles vont permettre d'enregistrer les produits et opérations dans la base de données.
IV-A - T_ParametreCaisse
Table permettant d'enregistrer les différents paramètres de la caisse, comme le numéro de caisse ou l'identifiant du
vendeur sur la caisse. Elle ne contient qu'une seule ligne.
Elle est indispensable pour sauvegarder automatiquement la référence du vendeur et de la caisse lors de la création
d'une opération.
IV-B - T_Produit
-5-
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
IV-C - T_Operation
Elle contient les opérations effectuées par le vendeur et est reliée à la table T_DetailOperation par une relation 1
à plusieurs.
IV-D - T_DetailOperation
Elle permet d'enregistrer le détail des achats effectués sur les produits du magasin et est liée à la table T_Operation
sur le champ IdOperation.
V - Requêtes nécessaires
Elles vont permettre de rassembler les données à afficher sur les formulaires.
V-A - R_DetailOperation
Cette requête permet d'afficher le détail des produits et le total par ligne dans le sous-formulaire SF_DetailOperation :
-6-
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
V-B - R_Ticket
Cette requête permet d'afficher le détail des produits et le total par ligne sur le ticket :
VI - Formulaires nécessaires
Ce formulaire principal, en mode ajout, est basé sur la table T_Operation et permet au vendeur d'enregistrer les
différentes opérations avec leur détail grâce à différents contrôles. Il contient le sous-formulaire SF_DetailOperation,
et différents éléments (boutons de commande et zones de texte).
-7-
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Il contient le sous-formulaire SF_DetailOperation basé sur la requête R_DetailOperation, qui affiche les différents
champs du détail de l'opération.
Ses propriétés Champs pères et champs fils se réfèrent aux champs IdOperation des tables T_Operation et
T_DetailOperation.
-8-
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
-9-
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Une procédure générique placée sur l'événement Clic de ces boutons permet d'ajouter à la suite du contenu de la
zone résultat, le chiffre du bouton cliqué.
Le code complet :
procédure générique
'----------------------------------------------------------------------------------------
' Copie les chiffres affichés sur la légende des boutons à la suite dans la zone du résultat.
'----------------------------------------------------------------------------------------
Public Sub MajResultat()
Dim c As String
c =
Me.ActiveControl.Caption ' Copie dans une variable la légende du bouton de commande (0,1,2,3,4,5,6,7,8,9,..)
Me.txtResultat.SetFocus ' Positionne le focus dans la zone de texte txtResultat
Me.txtResultat.Value = (Me.txtResultat.Text +
c) ' Copie le chiffre à la suite du contenu de la zone de texte Resultat
Me.txtResultat.SelStart = Len(Me.txtResultat.Text) + 1 ' Positionne le curseur à la fin du contenu de la zone de t
- 10 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
procédure générique
Exit Sub
err_MajResultat:
MsgBox Err.Description ' Affiche la description de l'erreur
End Sub
Un clic sur ce bouton permet de copier 0 à la suite dans la zone de texte txtResultat.
Un clic sur ce bouton permet de copier 1 à la suite dans la zone de texte txtResultat.
Un clic sur ce bouton permet de copier 2 à la suite dans la zone de texte txtResultat.
Un clic sur ce bouton permet de copier « . » à la suite dans la zone de texte txtResultat.
- 11 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Un clic sur ce bouton permet d'afficher le résultat dans la zone de texte txtResultat.
Me.Resultat = Me.SF_DetailOperation.Form!
TotalLigne ' Affiche le total de la ligne du détail dans la zone du résultat
End Sub
VI-A-3 - Boutons de commande pour copier les valeurs dans le détail des opérations
Ces boutons permettent de copier les valeurs saisies dans le détail de l'opération.
- 12 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Un clic sur ce bouton permet de copier la valeur contenue dans la zone de texte txtResultat dans la colonne Prix
Unitaire du sous-formulaire.
Me.DateOperation = Date ' Copie la date courante dans la zone de texte DateOperation pour créer l'opération
Me.SF_DetailOperation.Form!PrixUnitaire = Me.Resultat ' Copie de la valeur
Me.Resultat = Null ' On efface le contenu du résultat
End If
End Sub
Un clic sur ce bouton permet de copier la valeur contenue dans la zone de texte txtResultat dans la colonne Quantité
du sous-formulaire.
- 13 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Un clic sur ce bouton permet de copier la valeur contenue dans la zone de texte txtResultat dans la colonne Remise
du sous-formulaire.
Me.DateOperation = Date ' Copie la date courante dans la zone de texte DateOperation pour créer l'opération
Me.SF_DetailOperation.Form!
Remise = Val(Me.Resultat) / 100 ' Copie de la valeur affichée en pourcentage
Me.Resultat = Null ' On efface le contenu du résultat
End If
End Sub
Un clic sur ce bouton permet de supprimer les lignes sélectionnées dans le sous-formulaire du détail de l'opération.
End Sub
Ces boutons permettent d'afficher la liste des produits par catégorie pour ensuite les choisir.
- 14 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Une procédure générique placée sur l'événement Clic de ces boutons permet d'afficher la liste des produits filtrée en
fonction de la légende du bouton cliqué correspondant à la catégorie de produits choisie.
1 On copie dans une variable le contenu de la légende du bouton correspondant à la catégorie de produits ;
2 On ouvre le formulaire F_ListeProduit ;
3 On génère le code SQL pour afficher la liste des produits de cette catégorie ;
4 On copie la catégorie dans la liste déroulante CategorieProduit du formulaire ListeProduit ;
5 On copie le code SQL sur la propriété RecordSource du sous-formulaire SF_ListeProduit.
Le code complet :
Procédure générique
'----------------------------------------------------------------------------------------
' Affiche la liste des produits correspondant à la légende du bouton cliqué.
'----------------------------------------------------------------------------------------
Private Sub OuvrirListeProduits()
Dim CategorieProduit As String
Dim LeSQL As String
CategorieProduit =
Me.ActiveControl.Caption ' Copie la légende du bouton cliqué correspondant à la catégorie de produits choisie
DoCmd.OpenForm "F_ListeProduit" ' Ouvre le formulaire affichant la liste des produits
' Code SQL de la requête filtrant les produits en fonction de la variable CategorieProduit
- 15 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Procédure générique
LeSQL = "select * from R_ListeProduit where NomCategorie like '" &
CategorieProduit & "' order by NomCategorie, IdProduit;"
Forms!F_ListeProduit!CategorieProduit.Value =
CategorieProduit ' On copie la catégorie dans la zone de texte correspondante du formulaire F_ListeProduit
Forms!F_ListeProduit!SF_ListeProduit.Form.RecordSource =
LeSQL ' On applique le code SQL à la source du sous-formulaire SF_ListeProduit
Exit Sub
err_OuvrirListeProduit
MsgBox (Err.Description) ' Affiche la description de l'erreur
End Sub
Vous pouvez facilement créer vos propres boutons de commande avec vos catégories de
produits et y exécuter la procédure générique sur l'événement Clic.
Un clic sur ce bouton permet d'afficher la liste des produits appartenant à la catégorie Boissons.
Un clic sur ce bouton permet d'afficher la liste des produits appartenant à la catégorie Boulangerie.
Un clic sur ce bouton permet d'afficher la liste des produits appartenant à la catégorie Charcuterie.
C'est le même principe pour les autres boutons : il suffit de copier dans la légende du bouton
le nom de la catégorie du produit pour afficher la liste correspondante.
- 16 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Zone de texte permettant d'afficher les valeurs saisies avec le clavier ou sur le pavé.
End Sub
Zone de texte permettant à partir du code-barres entré, de saisir le bon produit dans le détail.
- 17 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Pour rappel la douchette (ou lecteur de codes-barres) est équivalente à une saisie clavier.
Si la zone de texte possède le focus, une simple saisie d'un code-barres dans cette zone au moyen d'une douchette
déclenche la recherche du produit correspondant dans la base et la copie des références du produit dans le détail
de l'opération.
- 18 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Set db = Nothing
End Sub
Zones de texte permettant d'afficher les totaux des montants avant et après remise, le nombre de lignes et de produits.
Si vous souhaitez créer votre propre total en en-tête du formulaire, le principe est relativement
simple :
• on crée une zone de texte txtTotal dans le pied du sous-formulaire SF_DetailOperation, elle va afficher la
somme du champ (ici Montant) de la requête source, au moyen de la formule suivante placée sur la propriété
Source Contrôle :
=Somme([Montant])
- 19 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
• on ajoute ensuite dans le formulaire principal une zone de texte txtTotal faisant référence au contrôle txtTotal
du sous-formulaire au moyen de l'expression :
=[SF_DetailOperation].[Formulaire].[txtTotal]
La formule appliquée à la propriété Source contrôle fait référence à la zone de texte txtTotalTTC située dans le pied
du sous-formulaire :
=[SF_DetailOperation].[Formulaire].[txtTotalTTC]
La formule appliquée à la propriété Source contrôle de la zone de texte txtTotalTTC située dans le pied du sous-
formulaire SF_DetailOperation est :
=Nz(Somme([Totalligne]);0)
La formule appliquée à la propriété Source contrôle fait référence à la zone de texte txtTotalTTC située dans le pied
du sous-formulaire :
=[SF_DetailOperation].[Formulaire].[txtTotalRemise]
La formule appliquée au contrôle txtTotalRemise situé dans le pied du sous-formulaire SF_DetailOperation est :
=Nz(Somme([Quantite]*[RemiseU]);0))
=[txtTotalTTC]-[txtTotalRemise]
=[SF_DetailOperation].[Formulaire].[txtNbLignes]
La formule appliquée au contrôle txtNbLignes situé dans le pied du sous-formulaire SF_DetailOperation est :
=Nz(Compte([Totalligne]);0)
- 20 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
=[SF_DetailOperation].[Formulaire].[txtNbLignes]
La formule appliquée au contrôle txtNbProduits situé dans le pied du sous-formulaire SF_DetailOperation est :
=Nz(Somme([Quantite]);0)
La formule appliquée à la propriété Valeur par défaut fait référence au champ IdCaisse de la table
T_ParametreCaisse :
=RechDom("IdCaisse";"T_ParametreCaisse")
- 21 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
La formule permet de copier par défaut dans le champ IdCaisse de la table source, le numéro de caisse enregistré
dans la table T_ParametreCaisse.
=Date()
La formule permet de copier par défaut dans le champ DateOperation de la table source, la date du jour de l'opération.
=Time()
La formule permet de copier par défaut dans le champ HeureOperation de la table source, l'heure du jour de
l'opération.
La formule appliquée à la propriété Valeur par défaut fait référence au champ IdVendeur de la table
T_ParametreCaisse :
=RechDom("IdVendeur";"T_ParametreCaisse")
La formule permet de copier par défaut dans le champ IdVendeur de la table source, l'identifiant du vendeur enregistré
dans la table T_ParametreCaisse.
Un clic sur ce bouton permet de valider l'opération courante et de passer à une nouvelle.
End Sub
- 22 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Il est basé sur la table T_ParametreCaisse et permet de paramétrer la caisse en définissant la référence de la caisse
et du vendeur.
Elles permettent de définir la caisse sur laquelle le vendeur effectuera les opérations.
- 23 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Elle est liée au champ IdCaisse de la table T_ParametreCaisse et sa propriété Contenu fait référence à la table
T_Caisse.
Elle est liée au champ IdVendeur de la table T_ParametreCaisse et sa propriété Contenu fait référence à la table
T_Vendeur.
Ce formulaire permet au vendeur de choisir un produit dans une liste filtrée par catégorie, il contient le sous-formulaire
SF_ListeProduit.
- 24 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
- 25 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Un clic sur ce bouton permet de copier la désignation et le prix du produit sur la ligne courante dans le détail de
l'opération.
- 26 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Lié à la table T_Operation, il s'ouvre en cliquant sur le bouton Encaisser, et permet la saisie de l'argent donné par le
client en utilisant des contrôles représentant les billets et pièces de monnaie.
Une procédure générique placée sur l'événement Clic des images et boutons de commande permet d'ajouter le
montant du billet ou de la pièce, au montant déjà enregistré dans la zone de texte txtTotalPaiement.
Le code complet :
procédure générique
'------------------------------------------------------------------------------------------------
' Ajoute le montant passé en argument au montant contenu dans la zone de texte txtTotalPaiement.
'------------------------------------------------------------------------------------------------
Public Sub MajEncaissement(m As Currency)
' m : Argument de la routine correspondant au montant du billet ou de la pièce cliqué
On error goto err_MajEncaissement
- 27 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
procédure générique
Me.Controls("img10").BorderStyle = 0
Me.Controls("img20").BorderStyle = 0
Me.Controls("img50").BorderStyle = 0
Me.Controls("img100").BorderStyle = 0
Me.Controls("img200").BorderStyle = 0
Me.Controls("img500").BorderStyle = 0
' Ajoute le montant du billet ou de la pièce au montant déjà présent dans la zone de texte txtTotalPaiement
Me.txtTotalPaiement = Nz(Me.txtTotalPaiement, 0) + m
exit sub
err_MajEncaissement:
Msgbox(err.description)
End Sub
Le formulaire et le code VBA associé peuvent être facilement réutilisés si votre unité monétaire
est l'euro.
Ces contrôles affichent les différents billets d'euros disponibles sur le marché, un clic sur ces images exécute la
procédure générique permettant l'ajout du montant du billet ou de la pièce, au montant déjà enregistré dans la zone
de texte txtTotalPaiement.
- 28 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Un clic sur cette image permet d'ajouter 5 euros au montant affiché dans la zone de texte txtTotalPaiement
Un clic sur cette image permet d'ajouter 10 euros au montant affiché dans la zone de texte txtTotalPaiement
Ces contrôles représentant les pièces de 1, 2, 5, 10, 20 et 50 centimes, un clic sur ces boutons de commande exécute
une procédure générique permettant l'ajout du montant de la pièce, au montant déjà enregistré dans la zone de texte
txtTotalPaiement.
- 29 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Un clic sur cette image permet d'ajouter 1 centime au montant affiché dans la zone de texte txtTotalPaiement
Un clic sur cette image permet d'ajouter 2 centimes au montant affiché dans la zone de texte txtTotalPaiement
Ces boutons permettent de copier les nombres dans la zone de texte txtTotalPaiement.
- 30 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Une procédure générique placée sur l'événement Clic de ces boutons permet d'ajouter à la suite du contenu de la
zone de texte txtTotalPaiement, le chiffre du bouton cliqué.
Le code complet :
procédure générique
'-------------------------------------------------------------------------------------------------
' Copie les chiffres affichés sur la légende des boutons à la suite dans la zone txtTotalPaiement.
'-------------------------------------------------------------------------------------------------
Public Sub MajEncaisser()
Dim c As String
c = Replace(Me.ActiveControl.Caption, ".", ",") ' Copie dans une variable la légende du bouton de commande (0,1,2,
Me.txtTotalPaiement.SetFocus ' Positionne le focus dans la zone de texte txtTotalPaiement
Me.txtTotalPaiement.Value = (Me.txtTotalPaiement.Text +
c) ' Copie le chiffre à la suite du contenu de la zone de texte txtTotalPaiement
Me.txtTotalPaiement.SelStart = Len(Me.txtTotalPaiement.Text) + 1 ' Positionne le curseur à la fin du contenu de la
Exit Sub
err_MajEncaisser:
MsgBox Err.Description ' Affiche la description de l'erreur
End Sub
Un clic sur ce bouton permet de copier 0 à la suite dans la zone de texte txtTotalPaiement.
Un clic sur ce bouton permet de copier 1 à la suite dans la zone de texte txtTotalPaiement.
- 31 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Un clic sur ce bouton permet de copier « . » à la suite dans la zone de texte txtTotalPaiement.
- 32 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
La propriété Source contrôle de cette zone de texte fait référence au contrôle txtTotalTTC du formulaire
F_Encaissement et au contrôle txtTotalTTC du formulaire F_Operation :
=[txtTotalPaiement]-Formulaires!F_Operation!txtTotalTTC
- 33 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Le code complet :
If MsgBox("Vous lui devez " & Format(Me.txtRendu, "currency"), vbOKCancel, "Rendu") = vbCancel Then ' Possibilit
Exit Sub
End If
DoCmd.GoToRecord , , acLast
DoCmd.GoToRecord , , acNext ' Se déplace sur un nouvel enregistrement
- 34 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
End Sub
Il est basé sur la requête R_Ticket et est imprimé à la fin du processus d'encaissement.
On a défini en mode création un regroupement sur le champ IdOperation et un tri sur le champ
IdLigne.
- 35 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/
Créer un logiciel de caisse enregistreuse avec Microsoft Access par Denis Hulo
Il faut désormais tenir compte de la loi obligeant à partir de 2018 l'utilisation d'un logiciel de caisse certifié, pour plus
d'informations vous pouvez consulter cette page : Obligation d'utiliser des logiciels de caisse certifiés à partir
de 2018
X - Remerciements
Je tiens à remercier Pierre Fauconnier, chrtophe, gaby277 et Claude Leloup pour m'avoir conseillé pour la
réalisation de cet article, ainsi que pour sa relecture.
- 36 -
Copyright ® 2017 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse
de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
http://denishulo.developpez.com/tutoriels/access/caisse/