re,
la feuille "Solver" = la solution avec solver quasi instantément. Mon experience me dit que solver traite bien ce genre de problèmes jusqu'à 50 variables, donc ici avec 42, okay. Mais si on répète cela avec 100 lignes, solver se perd dans les branches ... .
Comme on voulait traiter jusqu'à 500 éléments ...
pour la solution de @curulis57, voir les calculations dans la plage N514, pour ces 500 lignes.
là, je calcule les lignes à partir d'où une meilleur solution n'est plus possible, je ne sais pas si cela diminue le nombre de tentatives de la macro ??? A premiere vue, cela donne une réduction de 30%, mais je n'ai aucune idée de la réduction déjà réalisée avec ces lignes "if ... then exit for"
For x = 1 To UBound(tTab, 1) - 3 >>>>>>> For x = 1 To 135
For y = x + 1 To UBound(tTab, 1) - 2
If tTab(x, 3) + tTab(y, 3) > 120 Then Exit For
For Z = y + 1 To UBound(tTab, 1) - 1
If tTab(x, 3) + tTab(y, 3) + tTab(Z, 3) > 120 Then Exit For
For w = Z + 1 To UBound(tTab, 1) >>>>>>>>>>> For w = application.max(153,Z + 1) To UBound(tTab, 1)
ma solution de hier 9:57 donnait une "solution" pour 500 lignes en 30 secondes mais il y a une possibilité que cette solution n'était pas la "meilleur", mais si on doit attendre plusieurs heures pour cela ...