Объект message у вас один всегда, который берется из аргументов функции. Вы его нигде не меняете, поэтому при проверке if message.text == 'Подтвердить':
всегда вернется одно и то же значение.
Если вы хотите ожидать от пользователя нового ввода, стоит перекинуть управление в другую функцию.
Конкретно в вашем случае лучше воспользоваться register_next_step_handler. И каждый раз прокидывать в него оставшиеся элементы списка из cells_products_data
.
Я не уверен, что register_next_step_handler работает в асинхронном режиме, не юзал telebot в async.
Изучите этот инструмент подробнее.