Another option where you use group in your geom_text aesthetics, so it knows which values to dodge:
library(ggplot2)
ggplot(fra_acti_valeur_par_type, aes(x = `type de séjour`, y = 
                                       `activité en valeur`, 
                                     fill = as.factor(annee))) +
  geom_bar(stat = "identity", position = "dodge") +
  ggtitle("Evolution du mix d'activité en valeur (CA/nombre de séjours)") +
  labs(y = "CA/nombre de séjours",
       x = "type de séjour",
       fill = "année") + 
  geom_text(data = fra_acti_valeur_par_type,
            aes(x = `type de séjour`, y = `activité en valeur` + 150, group = annee, label = format(`activité en valeur`, digits = 1)),
            size = 3,
            position = position_dodge(.9),
            inherit.aes = TRUE,
            na.rm = TRUE)
Output:
