Buongiorno a tutti
Premesso che concordo con Migliorabile (che saluto) circa la non banalità del problema, vorrei tentare di trovare una soluzione procedendo per gradi:
1°) calcolare quante combinazioni (e quali le migliori) su UN SOLO TABELLONE (a proposito, non hai specificato le dimensioni del tabellone, fermo il fatto che se i tabelloni hanno misure diverse il calcolo si complica ancora di più e di molto. Nell'esempio che allego le misure del tabellone sono 300x400 in cm);
2°) creare un foglio per ogni tabellone per "gestire" le date di scadenza.
Sul primo punto avrei un suggerimento (come da file che allego) il cui risultato è dato dalla macro seguente:
Sub CombinManifesti()
Dim grande(8), medio(16), piccolo(16)
ret1 = Cells(3, 4): ret2 = Cells(4, 4): ret3 = Cells(5, 4)
massimo = Application.WorksheetFunction.Max(Range("$F$3:$F$5"))
minimo = Application.WorksheetFunction.Min(Range("$F$3:$F$5"))
nmax1 = Cells(3, 5): nmax2 = Cells(4, 5): nmax3 = Cells(5, 5)
uriga = Cells(Rows.Count, 7).End(xlDown).Row
If uriga = 2 Then uriga = 3
Range("G3:O" & uriga).ClearContents
r = 3
For i = 0 To nmax3
grande(i) = ret3 * i
For J = 0 To nmax2
medio(J) = ret2 * J
For k = 0 To nmax1
piccolo(k) = ret1 * k
totale = grande(i) + medio(J) + piccolo(k)
If totale <= massimo And totale >= minimo Then
Cells(r, 7) = k
Cells(r, 8) = J
Cells(r, 9) = i
Cells(r, 10) = totale
r = r + 1
End If
Next k
Next J
Next i
uriga = Cells(Rows.Count, "J").End(xlUp).Row
migliore = Application.WorksheetFunction.Max(Range("J:J"))
r = 3
For i = 3 To uriga
If Cells(i, 10) <= migliore And Cells(i, 10) >= migliore - migliore * 0.05 Then
Cells(r, 12) = Cells(i, 7)
Cells(r, 13) = Cells(i, 8)
Cells(r, 14) = Cells(i, 9)
Cells(r, 15) = Cells(i, 10)
r = r + 1
End If
Next i
End Sub
Cosa fa la macro? Date le misure essenziali calcola le combinazioni e estrapola le migliori.
Vedete se può andare e,eventualmente, dopo procederemo.
https://www.dropbox.com/s/o0zvi4qke9n6cr8/Tabellone.xlsm?dl=0
Fate sapere. Ciao,
Mario