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