Gestion stock conditionnelle

micgca

XLDnaute Junior
Bonjour,
j'ai, avec l'aide de virtuoses d'excel,
adapter une macro pour Excel 2007 qui fonctionne très bien pour la gestion de stock à partir de bon de livraison.
Ma question est : comment puis-je bloquer le décompte de stock si en colonne F18:F24 j'ai le mot garantie.
Si pas garantie, je souhaite activer le décompte du stock.
D'avance merci à tous.

Sub MAJSTOCK()
Dim ligne As Integer: ligne = 2
Dim valeur_stock As Integer: valeur_stock = 0
Dim valeur_demandee As Integer: valeur_demande = 0
Rem Dim ref_prod As String: Dim ref_BL As Sting
Dim choix_utilisateur As Byte

While (Worksheets("Refprod").Cells(ligne, 3).Value <> "")
valeur_stock = Worksheets("Refprod").Cells(ligne, 3).Value
ref_prod = Worksheets("Refprod").Cells(ligne, 2).Value

For Each cellule In Worksheets("Matrice BL").Range("D18:D24")
If (cellule.Value = ref_prod) Then
valeur_demandee = Worksheets("Matrice BL").Cells(cellule.Row, 5)
If (valeur_demandee > valeur_stock) Then
MsgBox ("La référence " & cellule.Value & " ne possède pas assez de stock")
test = True
End If
End If
Next cellule

ligne = ligne + 1

Wend

If (test = True) Then
Exit Sub
Else
choix_utilisateur = MsgBox("Le BL semble bon, souhaitez-vous mettre à jour le stock ?", vbYesNo)
If (choix_utilisateur = 6) Then
For Each cellule In Worksheets("Matrice BL").Range("D18:D24")
ligne = 2
While (Worksheets("Refprod").Cells(ligne, 3).Value <> "")
If (cellule.Value = Worksheets("Refprod").Cells(ligne, 2).Value) Then
Worksheets("Refprod").Cells(ligne, 3).Value = Worksheets("Refprod").Cells(ligne, 3).Value - ThisWorkbook.Worksheets("Matrice BL").Cells(cellule.Row, 5).Value
End If
ligne = ligne + 1
Wend
Next cellule
Else
Exit Sub
End If
End If
End Sub
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonsoir micgca

À mettre dans le module de la feuille

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim reponse

  Application.EnableEvents = False

  If Not Intersect(Target, Range("f18:f24")) Is Nothing And Target.Count = 1 Then
  If Target.Offset(0, 0).Value <> "garantie" Then
  reponse = MsgBox("Voulez-vous activer le décompte du stock ? ", vbYesNo, "STOCK")
  If reponse = vbYes Then
  Call atteindre
  End If
  Else
  reponse = ""
  Exit Sub
  End If
  End If

  Application.EnableEvents = True
End Sub
 
Dernière édition:

micgca

XLDnaute Junior
Bonjour,
j'ai bien ajouté cela dans le module de la feuille,
mais cela ne fonctionne pas, le décompte du stock se fait même si une case f18:f24 contient garantie.
Faut-il modifier vbYesNo, "STOCK") en vbYesNo, "MAJSTOCK") ?
Le but est de ne pas décompter le stock si une des case f18:f24 contient garantie.
Merci beaucoup pour votre aide, je pense qu'il ne manque pas grand chose mais quoi...

Encore merci.
Bonne journée à tous.
 

Lone-wolf

XLDnaute Barbatruc
Bonjour micgca

Le mot STOCK est juste le nom du message. Un essai comme ceci, en utilisant TAB du clavier.

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("g18:g24")) Is Nothing And Target.Count = 1 Then
    If Target.Offset(0, -1).Value <> "garantie" Then
        Call atteindre
Else
    Exit Sub
End If
End If
End sub
 
Dernière édition:

Statistiques des forums

Discussions
311 709
Messages
2 081 768
Membres
101 816
dernier inscrit
Jfrcs