Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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("D1824")
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("D1824")
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:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…