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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| Function nbrligne(i As Long, z As Integer) As Long
Dim v As Long
v = i ' on stocke i dans v
While Not IsEmpty(Worksheets(z).Cells(i, 3)) = True 'tant qu'on est pas sur une case vide
i = i + 1
Wend
MsgBox ("nombre de lignes de la feuille " & z & ":" & i - 1) 'affichage du nombre de lignes
nbrligne = i - 1 'renvoi du nombre de ligne totale (avec lignes vides +lignes d'enetetes)
i = v 'i reprend sa valeur initial
End Function
Le code qui rappelle la fonction:
Sub nbj_stk()
Dim i As Long
Dim nblignes As Long
Dim nblignes2 As Long
Dim ligne As Object
Dim codeart As String
Dim recupligne As Long
Dim nbjstk As Long
Dim rotation As Variant
Dim z As Integer
Dim test As Long
z = InputBox("entrer le numero de la feuille d'inventaire a traiter") 'recuperation du numero d'onglet
nblignes = nbrligne(1, z) 'appel de la fonction nbrligne
nblignes2 = nbrligne(1, z - 1)
Worksheets(z).Cells(1, 17) = "nbj stock"
For i = 2 To nblignes 'parcours de la feuille
If Worksheets(z).Cells(i, 13) <> 0 Then 'si montant valo <> 0
codeart = Worksheets(z).Cells(i, 2) 'recuperation du code article
Set ligne = Worksheets(z - 1).Range("A2:A" & nblignes2).Find(codeart) 'recherche du code article dans l'onglet chiffre d'affaire
If Not ligne Is Nothing Then ' si on le trouve
recupligne = ligne.Row 'on recupere le numero de ligne
test = Worksheets(z - 1).Cells(recupligne, 4)
If test <> 0 Then 'si le CA est <> 0
rotation = (Worksheets(z - 1).Cells(recupligne, 4)) / (Worksheets(z).Cells(i, 13)) 'calcul de la rotation
nbjstk = 360 / rotation 'puis du nombres de jours de stock
Worksheets(z).Cells(i, 17) = nbjstk 'que l'on renvoi dans l'onglet d'inventaire
Else
Worksheets(z).Cells(i, 17) = 999999 'sinon on renvoit 999999
End If
Else
Worksheets(z).Cells(i, 17) = 999999
End If
Else
Worksheets(z).Cells(i, 17) = 999999
End If
Next
End Sub |
Partager