Aide sur formule (VBA)

  • Initiateur de la discussion Initiateur de la discussion cyril128
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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
 
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...
 
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
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
316
Réponses
4
Affichages
439
Réponses
5
Affichages
704
Réponses
4
Affichages
671
Réponses
4
Affichages
581
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
447
Retour