bonjour,
une solution via une macro. qui donne une autre solution pour ton exemple que celle que tu as calculée à la main. la macro recherche la combinaison de radiateurs qui donne la plus petite puissance supérieure ou égale à la puissance demandée, mais je suppose que le véritable objectif est de trouver la combinaison de radiateurs qui donne au minimum la puissance demandée au mondre coût.
Dim sol
Sub cherchesolution(pmax, n, a, cu, Optional niveau = 1, Optional min = 9000000000#, Optional p = 0)
For i = LBound(a, 1) To UBound(a, 1)
If n = 1 Then p = 0
If a(i, 2) <> "" Then
cu(niveau) = i
p = p + a(i, 2)
If p <= pmax Then
If niveau < n Then
cherchesolution pmax, n, a, cu, niveau + 1, min, p
End If
Else
If p - pmax > 0 And p - pmax < min And niveau = n Then
min = p - pmax
For j = 1 To n
sol(j) = cu(j)
Next j
End If
End If
p = p - a(i, 2)
End If
Next i
End Sub
Sub aargh()
Dim r As Range
Dim cu, a, b
Set r = Range("B4:C13")
p = Val(InputBox("puissance requise"))
n = Val(InputBox("nombre de radiateurs"))
If p <> 0 And n <> 0 Then
ReDim sol(n), cu(n)
a = r
cherchesolution p, n, a, cu
s = ""
pc = 0
For i = 1 To UBound(sol)
pc = pc + a(sol(i), 2)
s = s & IIf(Len(s) > 0, "/", "") & a(sol(i), 1)
Next i
s = s & "(puissance " & pc & ")"
MsgBox s
End If
End Sub