Affichage des articles dont le libellé est Projet G.Stock. Afficher tous les articles
Affichage des articles dont le libellé est Projet G.Stock. Afficher tous les articles

27 oct. 2019

Présentation du Projet G.Stock

Objectif : Présentation du Projet Gestion de Stock en VBA Access

Afin d'intégrer nos connaissances et expériences en matière VBA ACCESS , donc par la suite on va réaliser tous en ensemble un projet Complet de A à Z de Gestion de Stock G.Stock , qui nous permet de gérer un stock avec le maximum des fonctionnalités disponibles, donc il sera composé de plusieurs partie qui permet de gérer  : 

  • Les Produits : ensembles des tables , formulaires , requête , module, et états...etc , qui gère l'entité produits (Afficher , ajouter , supprimer , mettre à jour ,...etc.).;
  • Les Clients : partie qui permet de gérer les clients ;
  • Les Commandes : cette partie qui se charger de créer des commandes pour les Clients et bien sûr concernant un au plusieurs produits, ensuite créer des factures pour chaque client ;
  • Les Règlements : dans cette partie consacré aux règlements des factures avec la possibilité que dans une facture on peut avoir plusieurs mode de règlements (Espèce, Chèque, Carte Bancaire ,...etc);
  • Les Rapports : L'ensemble des rapports qui peuvent déterminer l'état et la situation de notre  stock et aussi l’état des paiements;
  • Les Utilisateurs : dans cette partie on va gérer les comptes utilisateurs et leurs rôles et bien sûr leurs  droits d'accès pour chaque formulaire;
  • Tableau de Bord : le tableau montré ci-dessus affiche les mouvements (Entrées/Sortie) des produits et la situation  du stock et paiements;
  • Gestion des clés d'activation de la version finale de notre projet : on va créer un petit application séparée qui va gérer les clés d'activations (Serial KEY) afin de livrer le package d’installation de ce projet avec une SERIAL KEY  pour l'activer
Ce Projet sera développé entièrement par le langage de programmation VBA ACCESS (Tables , Requêtes, Formulaires, Etats, Modules et Module de classe, ...etc).
Nous allons adopté une démarche par projet pour réaliser ce travail, donc les cours seront enchaîné et liés , comme ça on va intégrer toutes nos connaissances en cette matière afin de réaliser ce travail.

Soyez Prêts , et bon courage

14 oct. 2019

#44 : VBA Access -Tableau De Bord | DashBoard #2

Objectif : Réaliser un Tableau de Bord | DashBoard





🔗 Télécharger le Code Source  Projet G.Stock V P44
 GStock V44

13 oct. 2019

#43 : VBA Access -Tableau de Bord | DashBoard #1

Objectif : Réaliser un Tableau de Bord | DashBoard


🔗 Télécharger le Code Source  Projet G.Stock V P43
 GStock V43

12 oct. 2019

#42: VBA Access G.Stock - Calculer le prix d'achat (CUMP)

Objectif : Calculer le Coût Unitaire Moyen Pondéré (CUMP) - Prix d'achat

🔗 Télécharger le Code Source  Projet G.Stock V P42
 GStock V42

#41: VBA Access G.Stock - Calculer le Prix de Vente

Objectif : Calculer le Prix de Vente


🔗 Télécharger le Code Source  Projet G.Stock V P41
 GStock V41

10 oct. 2019

#40 : VBA Access G.Stock Partager / Share Ms Access sur le Réseau

Objectif : Partager / Share Application Microsoft  Access sur le Réseau





7 oct. 2019

#39 : VBA Access G.Stock - Login Authentication - Users & Roles (Part2)

Objectif : Intégrer et gérer les rôles utilisateurs
 

🔗 Télécharger le Code Source  Projet G.Stock V P39
 GStock V39

6 oct. 2019

#38 : VBA Access G.Stock - Login Authentication - Users & Roles (Part1)

Objectif : Intégrer et gérer les rôles utilisateurs 

🔗 Télécharger le Code Source  Projet G.Stock V P38
 GStock V38

5 oct. 2019

#37 : VBA Access G.Stock - Login Authentication (Tracer les Connexions Users)

Objectif : Tracer les connexions Utilisateurs 

🔗 Télécharger le Code Source  Projet G.Stock V P37
 GStock V37

4 oct. 2019

#36: VBA Access G.Stock - Login Authentication (Part02)

Objectif : Formulaire Login Authentification

🔗 Télécharger le Code Source  Projet G.Stock V P36
 GStock V36

3 oct. 2019

#35 : VBA Access GStock - Login Authentication (Part1)

Objectif : Créer un formulaire d'authentification
🔗 Télécharger le Code Source  Projet G.Stock V P35
 GStock

30 sept. 2019

#34 : VBA Access G.Stock - Gestion Utilisateurs (Editer utilisateur)

Objectif : Créer un formulaire éditer utilisateur 

Dans Cette partie on va ajouter le formulaire "F_EditerUser" comme indiqué ci-dessus, pour modifier les informations concernant un utilisateur. donc lorsque je vais cliquer sur le bouton Editer "BtnEditerUser" du formulaire "F_ListUsers".

automatiquement le formulaire "F_EditerUser" sera lancé et affiche les données de l’utilisateur sur lequel je clique, donc sur l'événement clic du bouton "BtnEditerUser" , je vais exécuter ce code VBA.

Code VBA pour bouton BtnEditerUser
Private Sub BtnEditerUser_Click()
DoCmd.OpenForm "F_EditerUser"
Form_F_EditerUser.txtIdUSer = Me.idUser
Form_F_EditerUser.txtNomUser = Me.NomUser
Form_F_EditerUser.txtlogin = Me.login
Form_F_EditerUser.txtPasse = Me.passe
Form_F_EditerUser.txtIdRole = Me.idRole
Form_F_EditerUser.txtEmail = Me.Email
Form_F_EditerUser.txtTel = Me.Tel
Form_F_EditerUser.txtPhoto.Picture = Me.Photo
End Sub
Ensuite je vais déplacer le code concernant la fonction getExtFile et la fonction CopierFichier  dans un module "Exp : Module02" , comme ça ces fonctions seront partagées et accessibles à n'importe qu'il emplacement de notre projet .

Code VBA de la fonction getExtFile
Public Function getExtFile(path As String) As String
Dim posPoint As Integer
posPoint = InStrRev(path, ".")
Dim ext As String
ext = Right(path, Len(path) - posPoint)
getExtFile = ext
End Function

Code VBA de la fonction CopierFichier
Public Sub CopierFichier(source As String, destination As String)
Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
fso.CopyFile source, destination
Set fso = Nothing
End Sub

et voila par la suite le code qu'on va mettre sur le formulaire "F_EditerUser
Evénement Clic du bouton  btnChargerPhoto
Private Sub btnChargerPhoto_Click()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Title = "Sélectioner la photo pour cet utilsateur "
.InitialFileName = CurrentProject.path
If .Show <> 0 Then
txtPhoto.Picture = .SelectedItems(1)
Me.txtAdrPhotoSource = .SelectedItems(1)
End If
End With
End Sub

Evénement Exit du zone de texte txtPasseConfirmation
Private Sub txtPasseConfirmation_Exit(Cancel As Integer)
If (Me.txtPasse <> Me.txtPasseConfirmation) Then
Me.txtPasseConfirmation.SetFocus
Me.txtPasseConfirmation.SelStart = 0
Me.txtPasseConfirmation.SelLength = Len(Me.txtPasseConfirmation)
Cancel = True
End If
End Sub

Evénement Clic sur le bouton btnModifierUser
Private Sub btnModifierUser_Click()
Dim db As Database
Dim rs As Recordset
Dim idUser As Integer
Dim urlPotos As String
urlPotos = CurrentProject.path & "\G.Stock\PhotosUsers\"
Dim FichierDestination As String
If (Me.txtNomUser <> "" And Me.txtPhoto.Picture <> "" And Me.txtlogin <> "" And Me.txtPasse <> "" And Me.txtIdRole <> "") Then
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM Users WHERE idUser=" & Int(Me.txtIdUSer), dbOpenDynaset)
rs.Edit
rs("NomUser") = Me.txtNomUser
rs("login") = Me.txtlogin
rs("passe") = Crypter(Me.txtPasse)
rs("Email") = Me.txtEmail
rs("Tel") = Me.txtTel
rs("idRole") = Me.txtIdRole
FichierDestination = urlPotos & Int(Me.txtIdUSer) & "." & getExtFile(Me.txtAdrPhotoSource)
rs("Photo") = FichierDestination
rs.Update
CopierFichier Me.txtAdrPhotoSource, FichierDestination
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
MsgBox "Utilisateur bien Modifie", vbInformation, "GStock"
DoCmd.Close acForm, "F_EditerUser"
DoCmd.Requery
Else
MsgBox "Attention vous devez compléter les informations de cet utilisateurs ", vbCritical, "GStock"
End If
End Sub

Pour Regarder/Parteger Cette vidéo

Pour l'intégrer sur votre site internet ou blog, vous pouvez utiliser le code suivant
<iframe allowfullscreen="" frameborder="0" height="270" src="https://www.youtube.com/embed/0umm2LybCtY" width="480"></iframe>

 👉 Pour plus de détail, Regarder la Vidéo de ce Cours 


🔗 Télécharger le Code Source  Projet G.Stock V P34



28 sept. 2019

#33 : VBA Access G.Stock - Gestion Utilisateurs (Lister Utilisateurs)

Objectif : Créer un formulaire pour lister les Utilisateurs

Dans cette partie de notre projet G.Stock on va réaliser un formulaire pour afficher et manipuler la liste des utilisateurs (Ajouter , Editer , Supprimer ), pour simplifier et ganger le temps dans partie mise en forme du ce formulaire, je vais copier (CTRL + C)  et coller (CTRL + V) le Formulaire "F_ListClients" puis je saisie le nom "F_ListUsers".

ensuite sur la source de données du formulaire "F_ListUsers".
Ensuite on va accéder à la source de données puis générer la requête suivante via l'assistant de requête suivante : 
ou vous pouvez basculer en mode SQL (Affichage = > Mode SQL ) et on va saisir le code SQL suivant pour générer cette requête :

Code SQL de notre Requête
SELECT Users.idUser, Users.login, Users.passe, Users.NomUser, Users.Tel, Users.Email, Users.Photo, Users.idRole, Roles.LibRole
FROM Roles INNER JOIN Users ON Roles.idRole = Users.idRole
ORDER BY Users.idUser;

après  cette opération, on va lier chaque zone de texte de ce formulaire par la source de données équivalente   en passant par Feuille de propriété = > Source  de Contrôle.
par la suite on va écrire le code VBA  pour les boutons "Nouvel utilisateur" et le bouton "Supprimer".

Code VBA pour le bouton Nouvel Utilisateur  "btnNouvelUser"
Private Sub btnNouvelUser_Click()
DoCmd.OpenForm "F_AjouterUser"
End Sub

Code VBA pour le bouton Supprimer "btnSupprimerUser"
Private Sub btnSupprimerUser_Click()
Dim req As String
res = MsgBox("Voulez vrailent supprimer l'utilisateur " & Me.NomUser, vbYesNo, "Confirmation Suppresion ")
If res = vbYes Then
req = "DELETE * FROM Users WHERE idUser=" & Me.idUser
CurrentDb.Execute req
End If
DoCmd.Requery
End Sub
Pour Regarder/Parteger Cette vidéo
https://www.youtube.com/watch?v=2ofyo11d20I

Pour l'intégrer sur votre site internet ou blog, vous pouvez utiliser le code suivant
<iframe allowfullscreen="" frameborder="0" height="270" src="https://www.youtube.com/embed/2ofyo11d20I" width="480"></iframe>

 👉 Pour plus de détail, Regarder la Vidéo de ce Cours 


🔗 Télécharger le Code Source  G.Stock V1.30

#32: VBA Access G.Stock- Sécuriser et Crypter mot de passe

Objectif : Sécuriser et Crypter mot de passe 

Toujours dans le cadre de notre projet G.Stock , on va ajouter de la sécurité et surtout pour les mots de passes , donc on va développer une petite fonction qui nous permet de crypté et sécuriser le mot de passe de chaque utilisateur. 
L'objectif de cette pratique est d’empêcher le gestionnaire de la base de données à connaitre les réales  mots de passes des utilisateurs , vous connaissez bien sûr que le mot de passe est information privé propre à chaque utilisateur.
La fonction "Crypter" que nous allons créer reçoit en paramètre le mot de passe et une clé de cryptage, faire des traitements un peu compliqués puis elle retourne le nouveau mot de passe crypté. comme ça l'utilisateur retient son vrai mot de passe , mais le mot crypté sera enregistré  sur la base données "Table Users".
Lorsqu'un utilisateur va se connecter à l'application , il va saisir login et mot de passe , la fonction Crypter crypte à nouveau le mot de passe saisi par l’utilisateur et le compare avec le mot de passe enregistré dans la base de données, comme on va y donner accès ou non.
👉 par exemple : P@ssw@ord --- > Crypter --- > 82908D5E9591915E6E
par la suite on va ajouter un Module nommé "Cryptage" (Insertion = > Module) dedans ajoutons la fonction crypté ainsi :

Code VBA de la Fonction Crypter
Public Const cle As String = 1234
Public Function Crypter(passe As String) As String
Dim str As String
str = ""
For i = Len(passe) To 1 Step -1
str = str & Hex(Asc(Mid(passe, i, 1)) + Int((cle / 40)))
Next i
Crypter = str
End Function

La  fonction prend chaque caractère du mot de passe (fonction : MID) , retourne le code ASCII de cette caractère (fonction : ASC) puis ajoute la clé de cryptage divisée sur 40 , enfin convertir le numéro obtenu en Hexadécimale (le fiction : HEX)
Donc pour tester et exécuter cette fonction avant de l'intégrer dans notre projet , et sans passer par un formulaire et événement , on va se servir  Affichage => Fenêtre Exécution  (raccourci clavier : CRTL + G ),  puis on saisie  le nom de la fonction précédé par  ? . 

Pour exécuter la fonction via la fenêtre exécution
?Crypter("P@ssw@ord")
82908D5E9591915E6E


La Fonction ASC: Renvoie une donnée de type entier qui représente le code ASCII du caractère . Exp : asc("A") = 65 , asc("a") = 97
La fonction MID : mid(chaîne , début, longueur) , Renvoie une donnée de type Variante (Chaîne) contenant un nombre défini de caractères d’une chaîne. Exp : str="Mohamed", mid(str,1,1) = "M" , mid(str,5,3) = "med"
La fonction Hex : Renvoie une donnée de type Chaîne qui représente la valeur hexadécimale d’un nombre.
👉 Pour plus de détail, Regarder la Vidéo de ce Cours



🔗 Télécharger le Code Source  G.Stock V1.29

26 sept. 2019

#31 : VBA Access G.Stock - Gestion des Utilisateurs (Ajout Utilisateur)

Objectif : Créer un formulaire qui permet d'ajouter un utilisateur

Dans cette partie de notre cours , on va créer un simple formulaire qui nous permet d'enregistrer les informations concernant un utilisateur : idUser, NomUser, login, MotdePasse,Tel ,Email, et un champs photo qui sert à sauvegarder le chemin d’accès pour la photo utilisateur , enfin le champ Rôle qui va déterminer les droits d'accès pour cet utilisateur.
Première étape : créer les tables
on va créer les deux tables Utilisateurs (Users) et Rôles , ensuite on va les liées pour assurer l’intégrité référentielle dans notre base de données .

Deuxième Etape : Créer le formulaire 
Créer l'interface (Formulaire) "F_AjouterUser" on respectant la charte graphique et les noms des variables des différents champs comme il est  indiqué en rouge dans l'image ci-dessous
Troisième Etape : Ecrire le code VBA 
👀L’événement clic sur le bouton txtChargerPhoto
👀 Le code de la fonction  getExtFile
👀L'événement Exit de la zone de texte txtPasseConfirmation
👀L’événement clic sur le bouton btnAjouterUser

La fonction InStrRev : Renvoie la position d’une occurrence d’une chaîne dans une autre chaîne, à partir de la fin de la chaîne. Exp : InstrRev ("alphabet", "a") Résultat: 5
La fonction Right: Renvoie une donnée de type Variante (Chaîne) contenant un nombre défini de caractères du côté droit d’une chaîne.
Syntaxe :Right( chaîne, longueur )
L'objet FileSystemObject : également appelé FSO, fournit un modèle simple d’objets permettant d’accéder au système de fichiers de l’ordinateur. Vous devez simplement créer une instance de FileSystemObject dans VBA pour ensuite générer, lire, supprimer, itérer des dossiers et effectuer de nombreuses autres opérations sur le système de fichiers de votre ordinateur.
l'objet FileDialog vous permet d'afficher et de gérer les fenêtres de dialogue standard Ouvrir et Enregistrer un fichier

👉 Pour plus de détail, Regarder la Vidéo de ce Cours




🔗 Télécharger le Code Source  G.Stock V1.28


23 sept. 2019

#30 : VBA Access G.Stock - Exporter vers Fichier Texte

Objectif : Exporter des données vers Fichier Texte en utilisant VBA Access

Le cours d'aujourd'hui consiste à écrire du code pour exporter d'une manière personnalisée des données (Requêtes ou tables) MS Access vers un fichier texte (.txt).
Toujours sur le formulaire "E_ListReglements" , je passe en mode VBA (raccourci clavier: ALT+ F11).
pour utiliser les commande VBA Access qui permet de lire et écrire dans une fichier texte , donc sur le menu Outils => Références, nous devons ajouter la référence du bibliothèque "Microsoft Scripting Runtime".
Ensuite je vais écrire le code du fonction isExisteFile qui permet de tester si un fichier existe sur le chemin (pathfile)  donné en paramètre et à l'aide de la fonction prédéfinie Dir.
une autre fonction qui créer physiquement le fichier s'il n'existe pas , avec le paramètre True du fonction CreateTextFile de l'objet Scripting.FileSystemObject, donc si le fichier existe il va l’écraser.

La fonction isExisteFile

La fonction createFileTxt

L'action sur l'événement Clic du bouton btnExporterTXT 


Fonction Len : Renvoie une valeur de type long contenant le nombre de caractères contenus dans une chaîne ou le nombre d’octets requis pour stocker une variable.
Fonction Dir : retourne une chaîne qui représente le nom d’un fichier, le répertoire ou le dossier qui correspond au chemin passé en paramètre. si le chemin d'accès n'est pas trouvé pour ce fichier la fonction retourne une chaîne de longueur nulle.
La fonction Chr$ : Renvoie une donnée de type chaîne contenant le caractère associé au code de caractère spécifié. exp : Chr$(9) permet d’insérer une tabulation


👉 Pour plus de détail, Regarder la Vidéo de ce Cours

🔗 Télécharger le Code Source  G.Stock V1.27