Une question de calcul pour entrée et sortie de stock
Bonjour,
j'ai un gestionnaire de gestion de stock en VBA comment faire pour additionner mes entrée ou soustraire mes sortie en VBA ou sur mes feuilles.
Merci
Salut,
Vu le peu d'information que tu nous donne, je vais essayer de répondre avec ce que je sais.
En général pour additionner on utilise l'opérateur "+", et pour soustraire on utilise l'opérateur "-". En VBA cela fonctionne aussi, il peut reconnaitre ces opérateurs.
Blague à part, si tu veux de l'aide, il serait appréciable de nous fournir un fichier, un contexte, du code, n'importe quoi ..
Bibu
ok voici mon code d'entrée de mon 1 er usurform qui ouvre le 2éme FmSaisieEntree_mag
----------------------------------
Option Explicit
Private Sub CmdAjouter_Click()
AjoutModification = True
FmSaisieEntree_mag.Show
End Sub
Private Sub CmdModifier_Click()
AjoutModification = False
If Me.LBEntree.ListIndex = -1 Then
MsgBox "Veuillez selectionner la ligne à modifier avant de continuer", vbCritical, "STOCK"
Else
LigneAmodifier = Me.LBEntree.ListIndex + 2
FmSaisieEntree_mag.TxCodeArticle.Value = Entree_Sortie_Mag.Range("A" & LigneAmodifier).Value
FmSaisieEntree_mag.TxLibelleArticle.Value = Entree_Sortie_Mag.Range("B" & LigneAmodifier).Value
FmSaisieEntree_mag.Tb_date.Value = Entree_Sortie_Mag.Range("C" & LigneAmodifier).Value
'FmSaisieEntree_mag.TxStock.Value = Entree_Sortie_Mag.Range("D" & LigneAmodifier).Value
FmSaisieEntree_mag.TxStockminimum.Value = Entree_Sortie_Mag.Range("E" & LigneAmodifier).Value
'FmSaisieEntree_mag.TxAlarme.Value = Entree_Sortie_Mag.Range("F" & LigneAmodifier).Value
FmSaisieEntree_mag.TxEntree.Value = Entree_Sortie_Mag.Range("G" & LigneAmodifier).Value
FmSaisieEntree_mag.Show
End If
End Sub
Private Sub CmdQuitter_Click()
Unload FmEntree_mag
End Sub
Private Sub Cmdsupprimer_Click()
AjoutModification = False
If Me.LBEntree.ListIndex = -1 Then
MsgBox "Veuillz selectionner la ligne à supprimer avant de continuer", vbCritical, "Stock"
Else
LigneAmodifier = Me.LBEntree.ListIndex + 2
Entree_Sortie_Mag.Rows(LigneAmodifier).Delete
MsgBox "La supperssion s'est effectuée avec succès !", vbInformation, "STOCK"
End If
End Sub
Private Sub SpinButton1_Change()
LBEntree.ListIndex = SpinButton1.Value
End Sub
------------------------------------------------------------------------------
et mon code de saisie qui et FmSaisieEntree_mag
Private Sub CmdValider_Click()
If MsgBox("Souhaitez-vous valider ces information ? ", vbQuestion + vbYesNo, "STOCK") = vbNo Then Exit Sub
'Mettre à ce niveau les controles de saisies
Dim I As Long
If AjoutModification = True Then
I = Derligne(Entree_Sortie_Mag.Name)
Else
I = LigneAmodifier
End If
Entree_Sortie_Mag.Range("A" & I).Value = Me.TxCodeArticle.Value
Entree_Sortie_Mag.Range("B" & I).Value = Me.TxLibelleArticle.Value
Entree_Sortie_Mag.Range("C" & I).Value = Me.Tb_Date.Value
Entree_Sortie_Mag.Range("G" & I).Value = Me.TxEntree.Value
Entree_Sortie_Mag.Range("E" & I).Value = Me.TxStockminimum.Value
MsgBox "Vos informations ont été enregistrées avec succès !", vbInformation, "STOCK"
Unload Me
End Sub
et j'ai un autre usurform pour les article (base de donner)
Option Explicit
Private Sub CmdAjouter_Click()
AjoutModification = True
FmSaisieArticles_mag.Show
End Sub
Private Sub CmdModifier_Click()
AjoutModification = False
If Me.LBArticle.ListIndex = -1 Then
MsgBox "Veuillz selectionner la ligne à modifier avant de continuer", vbCritical, "Stock"
Else
LigneAmodifier = Me.LBArticle.ListIndex + 2
FmSaisieArticles_mag.TxCodeArticle.Value = Feuildonneearticle.Range("A" & LigneAmodifier).Value
FmSaisieArticles_mag.TxLibelleArticle.Value = Feuildonneearticle.Range("B" & LigneAmodifier).Value
FmSaisieArticles_mag.TxEntree.Value = Feuildonneearticle.Range("g" & LigneAmodifier).Value
FmSaisieArticles_mag.TxStockminimum.Value = Feuildonneearticle.Range("e" & LigneAmodifier).Value
FmSaisieArticles_mag.Show
End If
End Sub
Private Sub Cmdsupprimer_Click()
AjoutModification = False
If Me.LBArticle.ListIndex = -1 Then
MsgBox "Veuillz selectionner la ligne à supprimer avant de continuer", vbCritical, "Stock"
Else
LigneAmodifier = Me.LBArticle.ListIndex + 2
Feuildonneearticle.Rows(LigneAmodifier).Delete
MsgBox "La supperssion s'est effectuée avec succès !", vbInformation, "STOCK"
End If
End Sub
Private Sub CmdQuitter_Click()
Unload Me
End Sub
Private Sub SpinButton1_Change()
LBArticle.ListIndex = SpinButton1.Value
End Sub
---------------------------------
mon 2éme FmSaisieArticles_mag
Option Explicit
Private Sub CmdValider_Click()
If MsgBox("Souhaitez-vous valider ces information ? ", vbQuestion + vbYesNo, "STOCK") = vbNo Then Exit Sub
'Mettre à ce niveau les controles de saisies
Dim I As Long
If AjoutModification = True Then
I = Derligne(Entree_Sortie_Mag.Name)
Else
I = LigneAmodifier
End If
Entree_Sortie_Mag.Range("A" & I).Value = Me.TxCodeArticle.Value
Entree_Sortie_Mag.Range("B" & I).Value = Me.TxLibelleArticle.Value
Entree_Sortie_Mag.Range("C" & I).Value = Me.Tb_Date.Value
Entree_Sortie_Mag.Range("G" & I).Value = Me.TxEntree.Value
Entree_Sortie_Mag.Range("E" & I).Value = Me.TxStockminimum.Value
MsgBox "Vos informations ont été enregistrées avec succès !", vbInformation, "STOCK"
Unload Me
End Sub
Option Explicit
Private Sub CmdAjouter_Click()
AjoutModification = True
FmSaisieEntree_mag.Show 'ou FmSaisieEntree_mag ou FmSaisieEntree_mag FmSelectonEntreee_Sortie
End Sub
Private Sub CmdModifier_Click()
AjoutModification = False
If Me.LBEntree.ListIndex = -1 Then
MsgBox "Veuillez selectionner la ligne à modifier avant de continuer", vbCritical, "STOCK"
Else
LigneAmodifier = Me.LBEntree.ListIndex + 2
FmSaisieEntree_mag.TxCodeArticle.Value = Entree_Sortie_Mag.Range("A" & LigneAmodifier).Value
FmSaisieEntree_mag.TxLibelleArticle.Value = Entree_Sortie_Mag.Range("B" & LigneAmodifier).Value
FmSaisieEntree_mag.Tb_date.Value = Entree_Sortie_Mag.Range("C" & LigneAmodifier).Value
'FmSaisieEntree_mag.TxStock.Value = Entree_Sortie_Mag.Range("D" & LigneAmodifier).Value
FmSaisieEntree_mag.TxStockminimum.Value = Entree_Sortie_Mag.Range("E" & LigneAmodifier).Value
'FmSaisieEntree_mag.TxAlarme.Value = Entree_Sortie_Mag.Range("F" & LigneAmodifier).Value
FmSaisieEntree_mag.TxEntree.Value = Entree_Sortie_Mag.Range("G" & LigneAmodifier).Value
FmSaisieEntree_mag.Show
End If
End Sub
Private Sub CmdQuitter_Click()
Unload FmEntree_mag
End Sub
Private Sub Cmdsupprimer_Click()
AjoutModification = False
If Me.LBEntree.ListIndex = -1 Then
MsgBox "Veuillz selectionner la ligne à supprimer avant de continuer", vbCritical, "Stock"
Else
LigneAmodifier = Me.LBEntree.ListIndex + 2
Entree_Sortie_Mag.Rows(LigneAmodifier).Delete
MsgBox "La supperssion s'est effectuée avec succès !", vbInformation, "STOCK"
End If
End Sub
Private Sub SpinButton1_Change()
LBEntree.ListIndex = SpinButton1.Value
End SubOption Explicit
Private Sub CmdChoixArticle_Click() ' le bouton?
CodeArticle = Me.TxCodeArticle.Value
LibelleArticle = Me.TxLibelleArticle.Value
FmSelectonEntreee_Sortie.Show
Me.TxCodeArticle.Value = CodeArticle
Me.TxLibelleArticle.Value = LibelleArticle
Me.TxStock .Value = TxStoc
End Sub
Private Sub CmdValider_Click()
If MsgBox("Souhaitez-vous valider ces information ? ", vbQuestion + vbYesNo, "STOCK") = vbNo Then Exit Sub
'Mettre à ce niveau les controles de saisies
Dim I As Long
If AjoutModification = True Then
I = Derligne(Entree_Sortie_Mag.Name)
Else
I = LigneAmodifier
End If
Entree_Sortie_Mag.Range("A" & I).Value = Me.TxCodeArticle.Value
Entree_Sortie_Mag.Range("B" & I).Value = Me.TxLibelleArticle.Value
Entree_Sortie_Mag.Range("E" & I).Value = Me.TxStockminimum.Value
Entree_Sortie_Mag.Range("G" & I).Value = Me.TxEntree.Value
Entree_Sortie_Mag.Range("C" & I).Value = Me.Tb_Date.Value
MsgBox "Votre article à été engegistrées avec succès !", vbInformation, "STOCK"
Unload Me
End Subbonjour,
Oui ben pour quoi juste du code c'est n'importe quoi... Sans le fichier je vais pas m'amuser à faire des hypothèses sur ton binz !
Une gestion de stock c'est comme un relevé de compte en banque la somme de ce qui rentre moins ce qui sort.
Et pour moi le calcul il se fait avec une formule Excel : Les formules de base de données sont instantanées et bien plus rapides que tout ce que tu pourras inventer en VBA.
Voir une gestion de stock minimaliste (pour le principe...) en pièce jointe. Après tu peux rajouter tout ce que tu veux une gestion des commandes , des livraisons, des clients, des fournisseurs le principe restera toujours le même une BD liste des Produits existants, une BD liste des mouvements de stocks et une feuille de calculs...
Tout le reste c'est du blabla... On peut rajouter un UserForm pour la saisie, visualiser en temps réel le stock restant, ajouter un stock minimum, un calendrier, toussa c'est que du bonus.
Nota : Dans cet exemple les Entrées et les sorties sont dans la même colonne et on ajoute juste E ou S selon que c'est une entrée ou une sortie. Mais on pourrait tout aussi bien supprimer cette colonne E/S et faire une colonne ou on ne mettrait que les entrées et une autre ou on ne mettrait que les sorties :
Le principe et le calcul ne seraient pas différents...
Dans le modèle joint remarquer la visualisation du stock existant qui suit les déplacements dans la feuille des Mouvements de stocks (pour éviter d'avoir à regarder en permanence sur la feuille précédente...) Mais on pourrait imaginer un affichage différent (qui ne montrerait que la situation du produit concerné...)
Nota2 : il peur exister quelques bugs dans ce fichier... J'ai bricolé ça en quelques minutes et... il est midi !
A+



