diff --git a/lang/formidable_fr.php b/lang/formidable_fr.php
index c086c966deab9f148a185556123901005bddd252..20d7865494dc2de72e1116cd0dd54a9cb03a60f4 100644
--- a/lang/formidable_fr.php
+++ b/lang/formidable_fr.php
@@ -196,6 +196,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 	'traiter_email_option_destinataires_champ_form_label' => 'Destinaire présent dans un des champ des formulaires',
 	'traiter_email_option_destinataires_explication' => 'Choisissez le champ qui correspondra aux destinataires du message.',
 	'traiter_email_option_destinataires_label' => 'Destinataires',
+	'traiter_email_option_destinataires_selon_champ_explication' => 'Permet d’indiquer un ou plusieurs destinataires en fonction de la valeur d’un champ. 
+		Indiquer le champ, sa valeur, et le ou les courriels concernés (séparés par une virgule) suivant ce format, tel que : "@selection_1@/choix1 : mail@example.tld". Vous pouvez indiquer plusieurs tests : 1 par ligne.',
+	'traiter_email_option_destinataires_selon_champ_label' => 'Destinataires en fonction d’un champ',
 	'traiter_email_option_destinataires_plus_explication' => 'Une liste d’adresses séparées par des virgules.',
 	'traiter_email_option_destinataires_plus_label' => 'Destinataires supplémentaires',
 	'traiter_email_option_envoyeur_courriel_explication' => 'Choisissez le champ qui contiendra le courriel de l’envoyeur.',
diff --git a/paquet.xml b/paquet.xml
index 146f7125f1ed785b7c5c18f35f337da525b9b3bb..72744bbbcd9df1a94df5c3d09cba3c3abb5b43f8 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,7 +1,7 @@
 <paquet
 	prefix="formidable"
 	categorie="communication"
-	version="2.14.1"
+	version="2.15.0"
 	etat="stable"
 	compatibilite="[3.0.0;3.1.*]"
 	logo="images/formidable-64.png"
diff --git a/traiter/email.php b/traiter/email.php
index e3828adc077a97e9d983e606d455b42b03db9b6d..2fa7298001ea0934667e4c0b6f70f68aa7424c91 100644
--- a/traiter/email.php
+++ b/traiter/email.php
@@ -11,14 +11,19 @@ function traiter_email_dist($args, $retours) {
 	$saisies = unserialize($formulaire['saisies']);
 	$traitements = unserialize($formulaire['traitements']);
 	$champs = saisies_lister_champs($saisies);
+	$destinataires = array();
 
 	// On récupère les destinataires
 	if ($options['champ_destinataires']) {
 		$destinataires = _request($options['champ_destinataires']);
-		if (!is_array($destinataires) and intval($destinataires)) {
-			$destinataires = array($destinataires);
+		if (!is_array($destinataires)) {
+			if (intval($destinataires)) {
+				$destinataires = array($destinataires);
+			} else {
+				$destinataires = array();
+			}
 		}
-		if (is_array($destinataires)) {
+		if (count($destinataires)) {
 			// On récupère les mails des destinataires
 			$destinataires = array_map('intval', $destinataires);
 			$destinataires = sql_allfetsel(
@@ -29,9 +34,7 @@ function traiter_email_dist($args, $retours) {
 			$destinataires = array_map('reset', $destinataires);
 		}
 	}
-	if (!$destinataires) {
-		$destinataires = array();
-	}
+
 	if ($options['champ_courriel_destinataire_form']) {
 		$courriel_champ_form = _request($options['champ_courriel_destinataire_form']);
 		$destinataires[] = $courriel_champ_form;
@@ -45,6 +48,16 @@ function traiter_email_dist($args, $retours) {
 		$destinataires = array_merge($destinataires, $destinataires_plus);
 		$destinataires = array_unique($destinataires);
 	}
+	
+	// On ajoute les destinataires en fonction des choix de saisie dans le formulaire
+	// @selection_1@/choix1 : mail@domain.tld
+	// @selection_1@/choix2 : autre@domain.tld, lapin@domain.tld
+	if (!empty($options['destinataires_selon_champ'])) {
+		if ($destinataires_selon_champ = formidable_traiter_email_destinataire_selon_champ($options['destinataires_selon_champ'])) {
+			$destinataires = array_merge($destinataires, $destinataires_selon_champ);
+			$destinataires = array_unique($destinataires);
+		}
+	}
 
 	// On récupère le courriel de l'envoyeur s'il existe
 	if ($options['champ_courriel']) {
@@ -237,3 +250,64 @@ function traiter_email_dist($args, $retours) {
 	$retours['traitements']['email'] = true;
 	return $retours;
 }
+
+
+/**
+ * Retourne la liste des destinataires sélectionnés en fonction
+ * de l'option 'destinataires_selon_champ' du traitement email.
+ * 
+ * @param string $description
+ *     Description saisie dans l'option du traitement du formulaire,
+ *     qui respecte le schéma prévu, c'est à dire : 1 description par ligne,
+ *     tel que `@champ@/valeur : mail@domain.tld, mail@domain.tld, ...`
+ *     {@example : `@selection_2@/choix_1 : toto@domain.tld`}
+ * @return array 
+ *     Liste des destinataires, s'il y en a.
+**/
+function formidable_traiter_email_destinataire_selon_champ($description) {
+	$destinataires = array();
+
+	// 1 test à rechercher par ligne
+	$descriptions = explode("\n", trim($description));
+	$descriptions = array_map('trim', $descriptions);
+	$descriptions = array_filter($descriptions);
+
+	// pour chaque test, s'il est valide, ajouter les courriels indiqués
+	foreach ($descriptions as $test) {
+		// Un # est un commentaire
+		if ($test[0] == '#') {
+			continue;
+		}
+		// Le premier caractère est toujours un @
+		if ($test[0] != '@') {
+			continue;
+		}
+
+
+		list($champ, $reste) = explode('/', $test, 2);
+		$champ = substr(trim($champ), 1, -1); // enlever les @
+
+		if ($reste) {
+			list($valeur, $mails) = explode(':', $reste, 2);
+			$valeur = trim($valeur);
+			$mails = explode(',', $mails);
+			$mails = array_map('trim', $mails);
+			$mails = array_filter($mails);
+			if ($mails) {
+				// obtenir la valeur du champ saisi dans le formulaire.
+				// cela peut être un tableau.
+				$champ = _request($champ);
+				if (!is_null($champ)) {
+					$ok = is_array($champ) ? in_array($valeur, $champ) : ($champ == $valeur);
+
+					if ($ok) {
+						$destinataires = array_merge($destinataires, $mails);
+						$destinataires = array_unique($destinataires);
+					}
+				}
+			}
+		}
+	}
+
+	return $destinataires;
+}
diff --git a/traiter/email.yaml b/traiter/email.yaml
index dcfde20892ecb76c66907e6e30ea765e8d5777d5..ac3535d03bcc7e9922d669713b279332961c5970 100644
--- a/traiter/email.yaml
+++ b/traiter/email.yaml
@@ -25,6 +25,15 @@ options:
       explication: '<:formidable:traiter_email_option_destinataires_plus_explication:>'
     verifier:
       type: 'email'
+  -
+    saisie: 'textarea'
+    options:
+      nom: 'destinataires_selon_champ'
+      label: '<:formidable:traiter_email_option_destinataires_selon_champ_label:>'
+      explication: '<:formidable:traiter_email_option_destinataires_selon_champ_explication:>'
+      placeholder: "@selection_1@/choix1 : mail1@example.tld, mail2@example.tld"
+      conteneur_class: 'pleine_largeur'
+      rows: 4
   -
     saisie: 'champ'
     options: