Public Function CalculPrixTotal(Station As String, NbPoste As String, DNP As Integer, DNS As Integer, DNC As Integer, DNT As Integer, TypeRetour As Integer) As Long
'TypeRetour: 1 = Prix / 2= Main d'oeuvre ==> selon le type retour, la fonction Prix va chercher le résultat dans la colonne idoine
Dim DNA As Integer 'à supprimer ici, et intégrer dans la liste des paramètres d'entrée
Dim cible As String
Dim Vanne As String
Dim Qté As Integer
Dim Total As Long
'on extrait les critères de la zone critères passée en paramètre
' Station = ZoneCrit.Cells(1, 1)
' NbPoste = ZoneCrit.Cells(2, 1)
' DNP = ZoneCrit.Cells(3, 1)
' DNS = ZoneCrit.Cells(4, 1)
' DNC = ZoneCrit.Cells(5, 1)
' DNT = ZoneCrit.Cells(6, 1)
DNA = 0 'à définir pour les accessoires
With Sheets("Station").ListObjects("t_Station") 'avec la table "t_Station" de la feuille "Station"
For i = 1 To .ListRows.Count 'pour chaque ligne de la table
If .ListColumns("Station").DataBodyRange(i) = Station And .ListColumns("Nb de postes").DataBodyRange(i) = NbPoste Then 'si on a la station et le bon nombre de postes
For SPF = 1 To 6 ' Calcul stations primaires froids (1 à 6) 'on parcourt les 6 stations primaires froid
cible = .ListColumns("Station primaire froid " & SPF).DataBodyRange(i) 'on récupère le contenu dans la Table
If cible <> "" Then 'si non vide
Qté = CInt(Replace(Replace(Split(cible, "]")(0), "[", ""), "x", "")) 'on extrait la qté
Vanne = Split(cible, "] ")(1) 'on extrait la Vanne
Total = Total + Prix(Vanne, DNP, TypeRetour) * Qté 'on appelle la function Prix avec le bon DN pour mettre à jour le total
End If
Next SPF
'idem sur les autres colonnes
For SPF = 1 To 3 ' Calcul stations secondaire froids (1 à 3)
cible = .ListColumns("Station secondaire froid " & SPF).DataBodyRange(i)
If cible <> "" Then
Qté = CInt(Replace(Replace(Split(cible, "]")(0), "[", ""), "x", ""))
Vanne = Split(cible, "] ")(1)
Total = Total + Prix(Vanne, DNS, TypeRetour) * Qté
End If
Next SPF
For SPF = 1 To 6 ' Calcul Chaud (1 à 6)
cible = .ListColumns("Station chaud " & SPF).DataBodyRange(i)
If cible <> "" Then
Qté = CInt(Replace(Replace(Split(cible, "]")(0), "[", ""), "x", ""))
Vanne = Split(cible, "] ")(1)
Total = Total + Prix(Vanne, DNC, TypeRetour) * Qté
End If
Next SPF
For SPF = 1 To 2 ' Calcul Station terminale forid (1 à 2)
cible = .ListColumns("Vanne terminale " & SPF & " sur bat").DataBodyRange(i)
If cible <> "" Then
Qté = CInt(Replace(Replace(Split(cible, "]")(0), "[", ""), "x", ""))
Vanne = Split(cible, "] ")(1)
Total = Total + Prix(Vanne, DNT, TypeRetour) * Qté
End If
Next SPF
For SPF = 1 To 2 ' Calcul Station terminale forid (1 à 2)
cible = .ListColumns("Accessoire " & SPF).DataBodyRange(i)
If cible <> "" Then
Qté = CInt(Replace(Replace(Split(cible, "]")(0), "[", ""), "x", ""))
Vanne = Split(cible, "] ")(1)
Total = Total + Prix(Vanne, DNA, TypeRetour) * Qté
End If
Next SPF
End If
Next i
End With
CalculPrixTotal = Total
End Function