With your current code the m_gui.getWidgets()[ i ] is of type Widget::Ptr so you will need to cast it to a ProgressBar::Ptr to call functions of the progress bar. Since these types are just a typedefs for std::shared_ptr, you can use std::dynamic_pointer_cast to cast them:
std::dynamic_pointer_cast<tgui::ProgressBar>(m_gui.getWidgets()[i])->setValue(...));
The code that you show might give some problems later on though. The code only functions as long as m_gui.getWidgets() and m_eRPG->m_lavie.size() have the same size which means that if you want to use anything from the gui other than health bars for the characters then you get into trouble.
I would suggest that you store the progress bars yourself. The first way would be to have a ProgressBar::Ptr member in m_eRPG->m_lavie. That way you can loop over the the m_eRPG->m_lavie every frame and just do m_eRPG->m_lavie[ i ]->progressBar->setPosition(...). This may however not be good design if you want to keep the gui seperate from your entities. So a second way would simply to hold a std::vector<tgui::ProgressBar::Ptr> somewhere. In the first code snippet you would add progressBarVector.push_back(progressBar) while in the second code snippet you would loop over this progressBarVector instead of over all widgets which allows you to even call setValue directly (as you don't have to cast).
Edit: I just noticed that you are already using the gui for other things than progress bars. Are you using multiple Gui objects perhaps?