Aide sur formule (VBA)

C

cyril128

Guest
Bonjour,
J'ai un petit probleme avec une formule pour deduire automatiquement des stock.
J'ai cette formule qui fonctionne mais j'aimerais l'optimisé :

Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer


Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" & vbNewLine & "Cette opération est irréversible.", vbYesNo + vbExclamation) = vbNo Then Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub

On Error Resume Next
With sh1.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

With sh2.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

On Error GoTo 0
Next
End Sub

Le probleme que je rencontre c quand je deduit une quantité superieur a 1, exemple 2 et que en stock il ne m'en reste 2,
il me marque -1 sans passer sur la cellule suivante (.offset(0, 3)
pour deduire cela me fausse le stock.
ce que j'aimerais c que arriver a zero sur .offset(0, 4) il passe a .offset(0,3) et quand .Offset (0.3) et a zero il me marque un message "stock insuffisant voulez vous continuer, oui, non"et si je marque oui, il recommence a me deduire dans .offset(0.4), -1 ;-2; -3 ect...
J'espere que j'ai bien formuler pour que tout le monde comprenne.

Merci par avance de votre aide.
 
B

Bernard

Guest
Bonsoir Cyril128

J'ai étudié la macro ainsi que les aménagements souhaitées et la voila modifiée.
J'espère que cela correspondra à tes souhaits ?


Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim MyValue As Integer

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

'If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" & vbNewLine & "Cette opération est irréversible.", vbYesNo + vbExclamation) = vbNo Then Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub

On Error Resume Next
With sh1.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) - sH.Cells(l, 7) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(l, 7)
Else
If .Offset(0, 3) - sH.Cells(l, 7) > 0 Then
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(l, 7)
Else
MyValue = MsgBox(" Stock insuffisant ! Voulez-vous continuer ?", vbYesNo + vbExclamation)
If MyValue = vbNo Then Exit Sub
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(l, 7)
End If
End If
End With

With sh2.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) - sH.Cells(l, 7) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(l, 7)
Else
If .Offset(0, 3) - sH.Cells(l, 7) > 0 Then
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(l, 7)
Else
MyValue = MsgBox(" Stock insuffisant ! Voulez-vous continuer ?", vbYesNo + vbExclamation)
If MyValue = vbNo Then Exit Sub
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(l, 7)
End If
End If
End With

On Error GoTo 0
Next
End Sub

Cordialement

Bernard
 
C

cyril128

Guest
Bonsoir,
est bien en faite le probleme que je rencontre c quand il reste 1 en stock je veux le deduire il me marque stock insuffisant.
et si je deduit encore il met -1 et ne deduit pas a la case .offset (0, 3 )

Merci pour votre aide la je c plus trop comment faire...
 
B

Bernard

Guest
Bonjour Cyril128

Si tu veux que ton problème soit bien compréhensible, il faut nous mettre un exemple de ton classeur et des explications claires. Sans cela, pour les observateurs que nous sommes, cela ressemble un peu à du chinois et il n'y a que toi qui te comprends !

Cordialement

Bernard
 
C

cyril128

Guest
Bonsoir,
Je vous donne un classeur avec un exemple de ce que je veux faire
avec des explications plus claires.
Ce que je veux exactement c deduire les stocks qui sont dans les feuilles STOCKBRUN et STOCK BLANC Automatiquement.
mais aussi quand ça arrive à zero dans la cellule reserve que ça decompte la cellule expo.
ex : j'en ai deux a decompte il m'en reste un en expo et un en reserve ça doit arriver à zero apres la deduction et si j'en ai 3 alors ca me marque 0 dans la cellule expo et -1 dans la cellule reserve.
Voila j'espere que vous allez trouver ca plus clair.

Merci et desolé si je me suis mal fait comprendre.
 

Pièces jointes

  • FACTURES.zip
    48.7 KB · Affichages: 22
  • FACTURES.zip
    48.7 KB · Affichages: 24
  • FACTURES.zip
    48.7 KB · Affichages: 25

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 234
dernier inscrit
matteo75654548