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
| Function CalculStockFinition(Code As String) As String
Call declA 'cette sub déclare notament FIN comme une worksheet
Application.Volatile
Dim Codes() As String, CompteCabine(2) As Currency
'La variable Code est un string qui peux, par exemple etre : "LAQ1/VRN3/PLA1/"
Codes = Split(Code, "/")
Dim Resultats(0 To 3)
'remise à zero - ----- J'imagine qu'un redim ferait l'affaire ?
Resultats(0) = 0 'nombre de minute de main d'oeuvre par metre carré de finition
Resultats(1) = 0 'Nombre de minute de main d'auvre incompréssible
Resultats(2) = 0 'Cout en matériaux par mettre carré
Resultats(3) = 0 'Cout matériaux incomprésible
Dim i As Integer, a As Integer
For i = 0 To UBound(Codes) - 1 'on boucle pour passer en revu tous les morceau du code, pzr exemple LAQ1, VRN3 puis PLA1
'on cherche pour le code lu le nombre de minute de MO par m2 qu'on divise par deux
Resultats(0) = Resultats(0) + (RechercheValeur(Codes(i), 6, FIN) / 2)
'si la cabine est utilisé
If RechercheValeur(Codes(i), 9, FIN) > 0 Then
CompteCabine(0) = CompteCabine(0) + 1 'On compte une utilisation cabine
CompteCabine(1) = CompteCabine(1) + (RechercheValeur(Codes(i), 6, FIN) / 2) 'on compte le temps d'utilisation de la cabine divisé par 2
CompteCabine(2) = CompteCabine(2) + (RechercheValeur(Codes(i), 8, FIN)) 'on compte le temps incompréssible de la cabine
End If
'on compte le cout de matériel au m2 et incompréssible d'utilisation cabine qu'on divise par 2
Resultats(2) = Resultats(2) + ((RechercheValeur(Codes(i), 5, FIN) + RechercheValeur(Codes(i), 9, FIN)) / 2)
'Valeur qui n'existe plus mais qu'on garde pour ne pas tout refaire
Resultats(3) = Resultats(3) + (RechercheValeur(Codes(i), 7, FIN) / 2)
Next i
If CompteCabine(1) < 1 Then 'si la cabine n'est pas utilisé
'son temps d'utilisation incompréssible est de 0
Resultats(1) = 0
Else ' si elle est utilisée
'on arondi le résultat du calcul d'utilisation cabine
Resultats(1) = Round((CompteCabine(1) / 420) + 1) * (CompteCabine(2) / CompteCabine(0))
End If
'on rend un résultat sous forme : "15/0/15,21/0"
CalculStockFinition = Resultats(0) & "/" & Resultats(1) & "/" & Resultats(2) & "/" & Resultats(3)
End Function |
Partager