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:

micgca

XLDnaute Junior
Euh, désolé, je suis peu débutant, le code n'est plus le même ; à mettre dans le module de la feuille ? Mais alors, il n'est pas pris en compte dans la macro MAJSTOCK.

Merci pour votre aide
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas