Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
bonsoir à tous
une petite question sur mon fichier peux t'on faire en cellule D5 et E5 lorsque je tape une valeur et que je valide le total se met en F5 et remettre D5 et E5 vide ou en grisé avec
la dernière valeur tapée.
j'espère que vous comprenez ma question.
* ne cherche plus ta formule en F5 : je l'ai supprimée.
* on va supposer que c'est des quantités, pas vrai ?
et on va supposer aussi que c'est des caisses.
1) au départ, tu es en C5 ; tu dois saisir le stock initial
* saisis 500 et valide ➯ en F5 : stock réel = 500
* comment ? 500 caisses, c'est beaucoup trop ! ok, j'suis d'accord avec toi :
appuie sur la touche suppression ➯ ça efface C5 et F5 ! (retour au début) * saisis 20 et valide ➯ en F5 : stock réel = 20 ; ah, c'est plus raisonnable,
n'est-ce pas ? et pour la suite, ça sera plus facile à compter !
* c'est tout pour le stock initial ; on n'en parlera plus ; c'était juste pour
initialiser la quantité du stock initial en C5 et F5.
2) voyons voir maintenant les entrées de stock
* sélectionne D5 ; saisis 40 ➯ en F5 : 60 car 20 + 40 = 60 ; D5 est effacé * saisis 10 ➯ en F5 : 70 car 60 + 10 = 70 ; D5 est effacé ; ok ?
3) voyons voir maintenant les sorties de stock
* sélectionne E5 ; saisis 40 ➯ en F5 : 30 car 70 - 40 = 30 ; E5 est effacé * saisis 20 ➯ en F5 : 10 car 30 - 20 = 10 ; E5 est effacé ; ok ?
mais attend ! cette fois, y'a une suite !
* saisis 40 ; ça fait rien du tout, ou presque : E5 est bien effacé, mais y'a toujours 10 en F5 ! oui, et c'est normal, car 10 - 40 = -30 ; or en quantité, un stock ne peut pas être négatif ! exemple : on ne peut pas avoir en stock -5 caisses ! donc toute sortie qui mettrait le stock en négatif est ignorée !
* saisis 10 ➯ en F5 : 0 car 10 - 10 = 0 ; E5 est effacé ; cette fois, c'est normal, car on peut avoir 0 caisse en stock = stock épuisé ! faut recommander de nouveau auprès du fournisseur ! d'ailleurs, en général, y'a un stock d'alerte (qui est fonction des délais d'approvisionnement) ; exemple : le stock d'alerte est de 20 caisses ➯ après une sortie, si le stock réel atteint 20 caisses ou descend en dessous, ça fait qu'on recommande automatiquement au fournisseur pour éviter justement d'avoir "stock épuisé".
fin de la démo, mais attention : en général, il y a un stock maximum car l'emplacement de stockage n'est pas illimité ! si par exemple y'a d'la place pour un maximum de 100 caisses et que le stock réel est déjà de 80 caisses, on peut faire une entrée de 20 caisses au plus, car au-delà, on ne peut plus entreposer les caisses supplémentaires ! tout ça pour dire que pour les entrées aussi, il faudrait ajouter un test : faire que toute entrée serait ignorée si ça faisait que le stock réel deviendrait supérieur au stock maximum !
j'ai fait ton exo par rapport à ton énoncé, mais je trouve que ça n'est pas une bonne idée de faire comme tu l'as demandé : avec ce "système", ça fait qu'il n'y a aucun historique, aucune trace d'entrée ou sortie : on a seulement un stock réel qui a été mouvementé en plus ou en moins ! impossible de se rappeler de mémoire toutes les opérations d'entrées ou sorties qu'il a pu y avoir ! (à moins d'avoir une mémoire d'éléphant, et encore !) ; donc si tu vois par exemple un stock réel de 50 caisses, comment pourras-tu te rappeler si c'est avant ou après avoir saisi une entrée de 20 caisses ? ou si c'est avant ou après avoir fait une sortie de 10 caisses ? autre façon de le dire : si tu dois saisir une entrée de 20 caisses, comment savoir si tu l'as déjà saisi ou non ? idem pour une sortie de 10 caisses : aïe ! j'me rappelle plus si j'l'ai déjà saisi ou non ! j'ai dû répondre au téléphone à un client important, et du coup, comme j'ai été interrompu, j'me souviens plus où j'en étais !
code VBA (27 lignes) :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chn$, v1&, v2&, col%
With Target
If .CountLarge > 1 Then Exit Sub
If Intersect(Target, [C5:E5]) Is Nothing Then Exit Sub
chn = .Value: v1 = Int(Val(chn)): col = .Column
If col = 3 Then
If IsEmpty(.Value) Then [F5].ClearContents Else [F5] = v1
Exit Sub
End If
With Application
.ScreenUpdating = 0: .EnableEvents = 0
End With
If col = 4 Then
[F5] = [F5] + v1 'Entrée
Else
v2 = [F5] - v1
If v2 >= 0 Then [F5] = v2 'Sortie, SAUF si le stock réel devient négatif,
'car c'est impossible d'avoir une quantité négative du stock ! exemple :
'on ne peut pas avoir un stock de -5 caisses !
End If
Target.ClearContents: Application.EnableEvents = -1
End With
End Sub
* ne cherche plus ta formule en F5 : je l'ai supprimée.
* on va supposer que c'est des quantités, pas vrai ?
et on va supposer aussi que c'est des caisses.
1) au départ, tu es en C5 ; tu dois saisir le stock initial
* saisis 500 et valide ➯ en F5 : stock réel = 500
* comment ? 500 caisses, c'est beaucoup trop ! ok, j'suis d'accord avec toi :
appuie sur la touche suppression ➯ ça efface C5 et F5 ! (retour au début) * saisis 20 et valide ➯ en F5 : stock réel = 20 ; ah, c'est plus raisonnable,
n'est-ce pas ? et pour la suite, ça sera plus facile à compter !
* c'est tout pour le stock initial ; on n'en parlera plus ; c'était juste pour
initialiser la quantité du stock initial en C5 et F5.
2) voyons voir maintenant les entrées de stock
* sélectionne D5 ; saisis 40 ➯ en F5 : 60 car 20 + 40 = 60 ; D5 est effacé * saisis 10 ➯ en F5 : 70 car 60 + 10 = 70 ; D5 est effacé ; ok ?
3) voyons voir maintenant les sorties de stock
* sélectionne E5 ; saisis 40 ➯ en F5 : 30 car 70 - 40 = 30 ; E5 est effacé * saisis 20 ➯ en F5 : 10 car 30 - 20 = 10 ; E5 est effacé ; ok ?
mais attend ! cette fois, y'a une suite !
* saisis 40 ; ça fait rien du tout, ou presque : E5 est bien effacé, mais y'a toujours 10 en F5 ! oui, et c'est normal, car 10 - 40 = -30 ; or en quantité, un stock ne peut pas être négatif ! exemple : on ne peut pas avoir en stock -5 caisses ! donc toute sortie qui mettrait le stock en négatif est ignorée !
* saisis 10 ➯ en F5 : 0 car 10 - 10 = 0 ; E5 est effacé ; cette fois, c'est normal, car on peut avoir 0 caisse en stock = stock épuisé ! faut recommander de nouveau auprès du fournisseur ! d'ailleurs, en général, y'a un stock d'alerte (qui est fonction des délais d'approvisionnement) ; exemple : le stock d'alerte est de 20 caisses ➯ après une sortie, si le stock réel atteint 20 caisses ou descend en dessous, ça fait qu'on recommande automatiquement au fournisseur pour éviter justement d'avoir "stock épuisé".
fin de la démo, mais attention : en général, il y a un stock maximum car l'emplacement de stockage n'est pas illimité ! si par exemple y'a d'la place pour un maximum de 100 caisses et que le stock réel est déjà de 80 caisses, on peut faire une entrée de 20 caisses au plus, car au-delà, on ne peut plus entreposer les caisses supplémentaires ! tout ça pour dire que pour les entrées aussi, il faudrait ajouter un test : faire que toute entrée serait ignorée si ça faisait que le stock réel deviendrait supérieur au stock maximum !
j'ai fait ton exo par rapport à ton énoncé, mais je trouve que ça n'est pas une bonne idée de faire comme tu l'as demandé : avec ce "système", ça fait qu'il n'y a aucun historique, aucune trace d'entrée ou sortie : on a seulement un stock réel qui a été mouvementé en plus ou en moins ! impossible de se rappeler de mémoire toutes les opérations d'entrées ou sorties qu'il a pu y avoir ! (à moins d'avoir une mémoire d'éléphant, et encore !) ; donc si tu vois par exemple un stock réel de 50 caisses, comment pourras-tu te rappeler si c'est avant ou après avoir saisi une entrée de 20 caisses ? ou si c'est avant ou après avoir fait une sortie de 10 caisses ? autre façon de le dire : si tu dois saisir une entrée de 20 caisses, comment savoir si tu l'as déjà saisi ou non ? idem pour une sortie de 10 caisses : aïe ! j'me rappelle plus si j'l'ai déjà saisi ou non ! j'ai dû répondre au téléphone à un client important, et du coup, comme j'ai été interrompu, j'me souviens plus où j'en étais !
code VBA (27 lignes) :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chn$, v1&, v2&, col%
With Target
If .CountLarge > 1 Then Exit Sub
If Intersect(Target, [C5:E5]) Is Nothing Then Exit Sub
chn = .Value: v1 = Int(Val(chn)): col = .Column
If col = 3 Then
If IsEmpty(.Value) Then [F5].ClearContents Else [F5] = v1
Exit Sub
End If
With Application
.ScreenUpdating = 0: .EnableEvents = 0
End With
If col = 4 Then
[F5] = [F5] + v1 'Entrée
Else
v2 = [F5] - v1
If v2 >= 0 Then [F5] = v2 'Sortie, SAUF si le stock réel devient négatif,
'car c'est impossible d'avoir une quantité négative du stock ! exemple :
'on ne peut pas avoir un stock de -5 caisses !
End If
Target.ClearContents: Application.EnableEvents = -1
End With
End Sub
Super le fichier en retour , je comprends bien ton raisonnement , mais je ne sais pas trop comment faire un fichier simple de gestion de stock .Est il possible de laisser en grisé la dernière
valeur tapée en D5 E5.
il y a de très bons logiciels tout faits de gestion de stock (à un prix raisonnable), qui vont parfois même jusqu'à gérer les reliquats (= ce qui reste en stock ; je crois bien que c'est en fait pour des lots partiels, en cas de gestion de lots en FIFO/LIFO).
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chn$, v1&, v2&, col%
With Target
If .CountLarge > 1 Then Exit Sub
If Intersect(Target, [C5:E5]) Is Nothing Then Exit Sub
chn = .Value: v1 = Int(Val(chn)): col = .Column
If col = 3 Then
If IsEmpty(.Value) Then [F5].ClearContents Else [F5] = v1
Exit Sub
End If
End With
With Application
.ScreenUpdating = 0: [D5:E5].Interior.Color = -4142: .EnableEvents = 0
End With
If col = 4 Then
[F5] = [F5] + v1 'Entrée
Else
v2 = [F5] - v1
If v2 >= 0 Then [F5] = v2 'Sortie, SAUF si le stock réel devient négatif,
'car c'est impossible d'avoir une quantité négative du stock ! exemple :
'on ne peut pas avoir un stock de -5 caisses !
End If
Target.Interior.Color = 15132391: Application.EnableEvents = -1
End Sub
il y a de très bons logiciels tout faits de gestion de stock (à un prix raisonnable), qui vont parfois même jusqu'à gérer les reliquats (= ce qui reste en stock ; je crois bien que c'est en fait pour des lots partiels, en cas de gestion de lots en FIFO/LIFO).
oui, c'est fait dans le nouveau fichier joint.
nouveau code VBA (27 lignes aussi) :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chn$, v1&, v2&, col%
With Target
If .CountLarge > 1 Then Exit Sub
If Intersect(Target, [C5:E5]) Is Nothing Then Exit Sub
chn = .Value: v1 = Int(Val(chn)): col = .Column
If col = 3 Then
If IsEmpty(.Value) Then [F5].ClearContents Else [F5] = v1
Exit Sub
End If
End With
With Application
.ScreenUpdating = 0: [D5:E5].Interior.Color = -4142: .EnableEvents = 0
End With
If col = 4 Then
[F5] = [F5] + v1 'Entrée
Else
v2 = [F5] - v1
If v2 >= 0 Then [F5] = v2 'Sortie, SAUF si le stock réel devient négatif,
'car c'est impossible d'avoir une quantité négative du stock ! exemple :
'on ne peut pas avoir un stock de -5 caisses !
End If
Target.Interior.Color = 15132391: Application.EnableEvents = -1
End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chn$, v1&, v2&, col%
With Target
If .CountLarge > 1 Then Exit Sub
If Intersect(Target, [C5:E5]) Is Nothing Then Exit Sub
chn = .Value: v1 = Int(Val(chn)): col = .Column
If col = 3 Then
If IsEmpty(.Value) Then [F5].ClearContents Else [F5] = v1
Exit Sub
End If
End With
With Application
.ScreenUpdating = 0: [D5:E5].Font.ColorIndex = -4105: .EnableEvents = 0
End With
If col = 4 Then
[F5] = [F5] + v1 'Entrée
Else
v2 = [F5] - v1
If v2 >= 0 Then [F5] = v2 'Sortie, SAUF si le stock réel devient négatif,
'car c'est impossible d'avoir une quantité négative du stock ! exemple :
'on ne peut pas avoir un stock de -5 caisses !
End If
Target.Font.Color = 8421504: Application.EnableEvents = -1
End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chn$, v1&, v2&, col%
With Target
If .CountLarge > 1 Then Exit Sub
If Intersect(Target, [C5:E5]) Is Nothing Then Exit Sub
chn = .Value: v1 = Int(Val(chn)): col = .Column
If col = 3 Then
If IsEmpty(.Value) Then [F5].ClearContents Else [F5] = v1
Exit Sub
End If
End With
With Application
.ScreenUpdating = 0: [D5:E5].Font.ColorIndex = -4105: .EnableEvents = 0
End With
If col = 4 Then
[F5] = [F5] + v1 'Entrée
Else
v2 = [F5] - v1
If v2 >= 0 Then [F5] = v2 'Sortie, SAUF si le stock réel devient négatif,
'car c'est impossible d'avoir une quantité négative du stock ! exemple :
'on ne peut pas avoir un stock de -5 caisses !
End If
Target.Font.Color = 8421504: Application.EnableEvents = -1
End Sub
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.