Function Nombre(Apayer As Range, cheques As Range, nmax As Range)
'les plages cheques et nmax sont des vecteurs lignes
Dim xApayer#, xcheques, xnmax, a%(), mini#, n1%, n2%, n3%, n4%, paye#
xApayer = Apayer.Value2
xcheques = cheques.Value2 'matrice, plus rapide
xnmax = nmax.Value'matrice, plus rapide
ReDim a(1 To 4)
mini = 1000000000
For n1 = 0 To xnmax(1, 1)
For n2 = 0 To xnmax(1, 2)
For n3 = 0 To xnmax(1, 3)
For n4 = 0 To xnmax(1, 4)
paye = n1 * xcheques(1, 1) + n2 * xcheques(1, 2) + n3 * xcheques(1, 3) + n4 * xcheques(1, 4)
If paye > xApayer Then
If paye < mini Then
mini = paye
a(1) = n1
a(2) = n2
a(3) = n3
a(4) = n4
End If
End If
Next n4, n3, n2, n1
Nombre = a 'matrice à une ligne
End Function