1 pièce(s) jointe(s)
Aide calcul de stock en VBA
Bonjour, j'essaie d'optimiser un programme de gestion de Stock,
Le but c'est de prendre le numéro de série des produits dans la feuille "Stocks". Ensuite, le programme ira dans la feuille "Achats", il va repérer tous les achats de produits ayant le même numéro de série et de les additionner. Après avoir fait ça, le programme recommence la même opération dans la feuille "Ventes".
Finalement, le programme, qui sera déclenché à l'aide d'un bouton de commande, va soustraire le total des ventes au total des Achats et le noté dans la colonne stock qui se trouve dans la feuille "stock".
En résumé,
La première colonne de chaque feuille contient le numéro de série des produits.
La deuxième colonne de la feuille stock contient le total des stock pour chaque numéro de série.
La deuxième colonne des feuilles Ventes et Achats contient les quantités par rapport à leur numéro de série respectif.
Je vous joint un document Excel qui pourrait peut-être clarifier la question.
Voici le code VBA que j'ai pour l'instant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| Private Sub CommandButton1_Click()
Dim QuantiteVentes As Double
Dim QuantiteAchats As Double
Dim StockReel As Double
Dim i As Long
Dim j As Long
QuantiteVentes = 0
QuantiteAchats = 0
StockReel = 0
i = 0
j = 0
For j = 2 To 100
For i = 2 To 100
If Worksheets("Ventes").Cells("A" & i) = Worsheets("Stocks").Cells("A" & j) Then
With Worksheets("Ventes")
QuantiteVentes = QuantiteVentes + Val(.Range("B" & i))
End With
End If
If Worksheets("Achats").Cells("A" & i) = Worsheets("Stocks").Cells("A" & j) Then
With Worksheets("Achats")
QuantiteAchats = QuantiteAchats + Val(.Range("B" & i))
End With
End If
StockReel = QuantiteVentes - QuantiteAchats
Worksheets("Produits").Range("B" & j).Value = StockReel
Next i
Next j
End Sub |
En vous remerciant d'avance pour votre aide!
Nishruu
Ajouté remarque + fonction
Bonjour,
En faisant tourner ton programme, tu aurais pu détecter l'erreur de syntaxe : Worksheets et non pas Worsheets
Code:
If Worksheets("Ventes").Cells("A" & i) = Worsheets("Stocks").Cells("A" & j) Then
Alors Worksheets.Cells("A" & j) cela ne va pas
C'est Worksheets.range("A" & j) ou Worksheets.Cells(i, 1)
Je n'ai pas été plus loin dans la lecture du code.
Ceci dit, as-tu un impératif pour utiliser le VBA car l'utilisation de la fonction RECHERCHEV peut parfaitement résoudre ton problème
Code:
=RECHERCHEV($A2;Achats!$A$2:$B$100;2;FAUX) - RECHERCHEV($A2;Ventes!$A$2:$B$100;2;FAUX)
Petite remarque personnelle. Dans ton classeur, il y a plus de ventes que d'achats ce qui donne un stock négatif.
Certe, je suis conscient qu'il s'agit de données tests mais dans la réalité cela se passe aussi comme cela. Il serait donc judicieux de prévoir une colonne Inventaire de départ. Ce qui ferait QtéInv + QtéAch - QtéVen