Macro pour gestion de stock

Francky62

XLDnaute Nouveau
Bonjour a tous,

Cela fait plusieurs jours que je me casse la tête afin de trouver une solution à mon problème, après avoir fait plusieurs recherches et forum je me suis résolu a demander de l'aide même si cela n'est pas dans mes habitudes , car je préfère comprendre et apprendre en premier lieu.

Bref : je vous joint le fichier en question

Dans ma feuille janvier sous la rubrique "Type de produit" en rouge s'affiche une liste qui rémunère les produits en vente de la feuille "Produit".
J'aimerai lorsque la sélection est faite que soit retiré du stock ce même produit afin d'afficher la quantité réel dans stock final de la feuille "Produit".
Et cela pour tous les produits qui pourront être créé , ainsi que sur de nouvelle feuille de mois créé par la suite.

Merci à tous ceux qui me trouverons une solution
 

Pièces jointes

  • test convertion texte en chiffre.xlsm
    23.3 KB · Affichages: 548
Dernière édition:

fanfan38

XLDnaute Barbatruc
Re : Macro pour gestion de stock

Bonjour
Je te propose une macro sur la feuille du mois (elle se copiera en copiant la feuille pour créer les autres mois)
Quand tu saisie une vente celle ci mets à jour la feuille produit...
Clic sur le nom de la feuille avec le bouton droit
sélectionne "Visualiser le code" et copie cette macro dans le module présent

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim mavar As Integer
Dim derlig As Integer
If Target.Column <> 13 Then Exit Sub
derlig = Sheets("Produit").Range("D65536").End(xlUp).Row
For i = 1 To derlig
If Sheets("Produit").Cells(i, 4).Value = Target.Value Then
mavar = Sheets("Produit").Cells(i, 5).Value
mavar = mavar - 1
Sheets("Produit").Cells(i, 6).Value = mavar
exit sub
End If
Next
MsgBox ("Je ne trouve pas ce produit")
end sub

A+ François
 

Francky62

XLDnaute Nouveau
Re : Macro pour gestion de stock

slt Francois,

Merci pour ton aide

Le module fonctionne mais je pense a une petite erreur, en effet après plusieurs saisi du même produit dans la feuille du mois, toutes ne sont pas comptabilisé et il n'est retiré qu'une seule fois dans le stock .
Puis quand je rajoute des produits dans le stock initiale, le calcul ne se fait plus.

A bientot
Merci
 
Dernière édition:

fanfan38

XLDnaute Barbatruc
Re : Macro pour gestion de stock

Cela viens du fait du stock initial et stock final...
Dans la macro on enlève 1 de la colonne E pour avoir le solde final en F
Si tu veux mettre à jour le stock initial après la ligne
Sheets("Produit").Cells(i, 6).Value = mavar
ajoute la ligne
Sheets("Produit").Cells(i, 5).Value = mavar...

A+ François
 

Francky62

XLDnaute Nouveau
Re : Macro pour gestion de stock

re francois,

je reviens vers toi, je viens de rajouter la ligne que tu m'as dit,

le code de la feuille devient :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim mavar As Integer
Dim derlig As Integer
If Target.Column <> 13 Then Exit Sub
derlig = Sheets("Produit").Range("D65536").End(xlUp).Row
For i = 1 To derlig
If Sheets("Produit").Cells(i, 4).Value = Target.Value Then
mavar = Sheets("Produit").Cells(i, 5).Value
mavar = mavar - 1
Sheets("Produit").Cells(i, 6).Value = mavar
Sheets("Produit").Cells(i, 5).Value = mavar
Exit Sub
End If
Next
MsgBox ("Je ne trouve pas ce produit")
End Sub

J'ai maintenant substitution du chiffre dans les 2 colonnes E et F
Puis toujours impossible de rajouter du stock avec un effet de comptage en final

Je suis un peu perdu dans le code lol
 

Francky62

XLDnaute Nouveau
Re : Macro pour gestion de stock

le stock initial est le stock de départ se trouvant dans le dépôt
Le stock final est ce qu'il reste après la vente ( je vais créer une alerte dessus par la suite lorsqu'il sera a un certain niveau)
Je voudrais rajouter du stock en additionnant le chiffre se trouvant dans stock initial avec l'apport d'une nouvelle commande
EX : stock initial produit 1 = 10
je rajoute manuellement 15 de ce produit d'une nouvelle commande :
stock initial produit 1 = 10 + 15 = 25
Je voudrais cette colonne qui ne bouge pas ainsi je pourrais faire une différence par la suite du nombre de produit 1 vendu par rapport au stock final, mais aussi qu’après l'ajout manuel dans la colonne E , le calcul reprend toutes les ventes de se produit 1 du mois et des autres mois.

Je ne sais pas si c'est bien clair
 

fanfan38

XLDnaute Barbatruc
Re : Macro pour gestion de stock

Alors si j'ai bien compris on enlève rien du stock initial...?
Dans ce cas

mavar = Sheets("Produit").Cells(i, 6).Value
mavar = mavar - 1
Sheets("Produit").Cells(i, 6).Value = mavar

enlève
Sheets("Produit").Cells(i, 5).Value = mavar

et quand tu rajoutes tu dois rajouter dans stock initial et dans stock final...

A+ François
 

Francky62

XLDnaute Nouveau
Re : Macro pour gestion de stock

on y arrive presque encore un peu de patience .
Tu as compris ce que je voulais
Avec le nouveau code c'est le stock initial qui bouge et pas le final ( mais c'est bon j'ai inversé i, 5 et i, 6 )
Puis je ne peux pas faire 2 ventes du même produit dans le mois car seul 1 calcul est pris en compte

revoilà le code :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim mavar As Integer
Dim derlig As Integer
If Target.Column <> 13 Then Exit Sub
derlig = Sheets("Produit").Range("D65536").End(xlUp).Row
For i = 1 To derlig
If Sheets("Produit").Cells(i, 4).Value = Target.Value Then
mavar = Sheets("Produit").Cells(i, 5).Value
mavar = mavar - 1
Sheets("Produit").Cells(i, 6).Value = mavar
Exit Sub
End If
Next
MsgBox ("Je ne trouve pas ce produit")
End Sub
 
Dernière édition:

Francky62

XLDnaute Nouveau
Re : Macro pour gestion de stock

slt a tous,

Aprés plusieurs essai et recherche, j'ai enfin trouvé le code me correspondant je le poste pour François qui m'a mis dans la bonne direction

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerLig As Long
Dim LgFin As Long
Dim J As Long
Dim Cel As Range

  If Target.Column <> 13 Then Exit Sub
  With Sheets("Produit")
    DerLig = .Range("D" & Rows.Count).End(xlUp).Row   ' La dernière ligne dans la page Produit
    .Range("E2:E" & DerLig).Copy .Range("F2")         ' On copie le stock initial dans le stock final
    LgFin = Range("M" & Rows.Count).End(xlUp).Row     ' La dernière ligne dans la page Janvier
    For J = 12 To LgFin                               ' Pour chaque produit
      If Range("M" & J) <> "" Then                    ' Si la cellule M.. n'est pas vide
        ' On cherche dans la page "Produit" la cellule correspondante
        Set Cel = .Range("D2:D" & DerLig).Find(what:=Range("M" & J), LookIn:=xlValues, lookat:=xlWhole)
        If Not Cel Is Nothing Then                      ' Si trouvée
          ' Le stock final est égal au stock initial - x fois le produit vendu
          Cel.Offset(0, 2) = Cel.Offset(0, 1) - Application.CountIf(Range("M12:M" & LgFin), Range("M" & J))
        Else
          MsgBox "Produit inexistant : " & Range("M" & J)
        End If
      End If
    Next J
  End With
End Sub


j'aurai encore besoin de vous par la suite

A bientot et encore merci
 

Discussions similaires

Réponses
2
Affichages
977

Statistiques des forums

Discussions
312 176
Messages
2 085 967
Membres
103 070
dernier inscrit
jujulop