diff --git a/admin/index.php b/admin/index.php
index 825f02a7c51736d7adeb40efe7aa0e4b93f2f624..aa8dc5b6a2a6b2eb6f9d956a85b3595a98d4e2fa 100644
--- a/admin/index.php
+++ b/admin/index.php
@@ -86,24 +86,16 @@ while($dsondage = $sondage->FetchNextObject(false)) {
   if (issetAndNoEmpty('confirmesuppression'.$i) === true) {
     // On inclut la routine de suppression
     $date=date('H:i:s d/m/Y');
-    
-    $req = 'DELETE s, su, u, c
-            FROM
-              sondage s LEFT JOIN sujet_studs su
-                ON su.id_sondage = s.id_sondage
-              LEFT JOIN user_studs u
-                ON u.id_sondage = s.id_sondage
-              LEFT JOIN comments c
-                ON c.id_sondage = s.id_sondage
-            WHERE s.id_sondage = '.$connect->Param('id_sondage');
-    
-    $sql = $connect->Prepare($req);
-    $connect->Execute($sql, array($dsondage->id_sondage));
-    
-    // ecriture des traces dans le fichier de logs
-    error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, 'logs_studs.txt');
+
+    if ( remove_sondage( $connect, $dsondage->id_sondage ) ) {
+
+      // ecriture des traces dans le fichier de logs
+      error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, 'logs_studs.txt');
+
+    }
+
   }
-  
+
   $i++;
 }
 
@@ -152,4 +144,4 @@ echo '</html>'."\n";
 
 // si on annule la suppression, rafraichissement de la page
 if (issetAndNoEmpty('annulesuppression') === true) {
-}
\ No newline at end of file
+}
diff --git a/adminstuds.php b/adminstuds.php
index a111504ce30de6ce67611df45dc5dd78ee36c9ad..2a85c3912cd44c04db04de7d9b526a09e92436bf 100644
--- a/adminstuds.php
+++ b/adminstuds.php
@@ -313,18 +313,7 @@ if (isset($_POST["confirmesuppression"]) || isset($_POST["confirmesuppression_x"
   $nbuser=$user_studs->RecordCount();
   $date=date('H:i:s d/m/Y:');
 
-  //destruction des données dans la base SQL
-  $sql = 'DELETE s, su, u, c
-          FROM
-            sondage s LEFT JOIN sujet_studs su
-              ON su.id_sondage = s.id_sondage
-            LEFT JOIN user_studs u
-              ON u.id_sondage = s.id_sondage
-            LEFT JOIN comments c
-              ON c.id_sondage = s.id_sondage
-          WHERE s.id_sondage = '.$connect->Param('numsondage');
-  $sql = $connect->Prepare($sql);
-  if ($connect->Execute($sql, array($numsondage))) {
+  if ( remove_sondage( $connect, $numsondage ) ) {
     // on ecrit dans le fichier de logs la suppression du sondage
     error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, 'admin/logs_studs.txt');
   
@@ -1257,4 +1246,4 @@ echo '<div class="separateur">&nbsp;</div>';
 bandeau_pied_mobile();
 echo '</form>'."\n";
 echo '</body>'."\n";
-echo '</html>'."\n";
\ No newline at end of file
+echo '</html>'."\n";
diff --git a/fonctions.php b/fonctions.php
index adc128b665fc7be34b966d56eef2b42f077cb753..2e77b864b975e0be60238ef02382f0a81e5bca2c 100644
--- a/fonctions.php
+++ b/fonctions.php
@@ -203,6 +203,33 @@ function getUrlSondage($id, $admin = false)
   return $url;
 }
 
+function remove_sondage( $connect, $numsondage ){
+
+  $connect->StartTrans();
+
+  $req = 'DELETE FROM sondage     WHERE id_sondage = ' . $connect->Param('numsondage') ;
+  $sql = $connect->Prepare($req);
+  $connect->Execute($sql, array($numsondage));
+
+  $req = 'DELETE FROM sujet_studs WHERE id_sondage = ' . $connect->Param('numsondage') ;
+  $sql = $connect->Prepare($req);
+  $connect->Execute($sql, array($numsondage));
+
+  $req = 'DELETE FROM user_studs  WHERE id_sondage = ' . $connect->Param('numsondage') ;
+  $sql = $connect->Prepare($req);
+  $connect->Execute($sql, array($numsondage));
+
+  $req = 'DELETE FROM comments    WHERE id_sondage = ' . $connect->Param('numsondage') ;
+  $sql = $connect->Prepare($req);
+  $connect->Execute($sql, array( $numsondage ));
+
+  $suppression_OK = ! $connect->HasFailedTrans() ;
+  $connect->CompleteTrans();
+
+  return $suppression_OK ;
+
+}
+
 
 $connect=connexion_base();
 
@@ -216,4 +243,4 @@ define('NO_POLL_ID',            0x0001000000);
 define('INVALID_EMAIL',         0x0010000000);
 define('TITLE_EMPTY',           0x0100000000);
 define('INVALID_DATE',          0x1000000000);
-$err = 0;
\ No newline at end of file
+$err = 0;
diff --git a/scripts/nettoyage_sondage.php b/scripts/nettoyage_sondage.php
index 57ab487ad06a3d7e7a5b6b4239befe4a244090b4..9b5d1633c5a81a5c9d2322906d08380591535266 100644
--- a/scripts/nettoyage_sondage.php
+++ b/scripts/nettoyage_sondage.php
@@ -49,21 +49,13 @@ $sondage=$connect->Execute("select * from sondage");
 while ($dsondage=$sondage->FetchNextObject(false)) {
   if ($date_courante > strtotime($dsondage->date_fin)) {
     //destruction des données dans la base
-    
-    $req = 'DELETE s, su, u, c
-            FROM
-              sondage s LEFT JOIN sujet_studs su
-                ON su.id_sondage = s.id_sondage
-              LEFT JOIN user_studs u
-                ON u.id_sondage = s.id_sondage
-              LEFT JOIN comments c
-                ON c.id_sondage = s.id_sondage
-            WHERE s.id_sondage = '.$connect->Param('id_sondage');
-    
-    $sql = $connect->Prepare($req);
-    $connect->Execute($sql, array($dsondage->id_sondage));
-    
-    // ecriture des traces dans le fichier de logs
-    error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, '../admin/logs_studs.txt');
+
+    if ( remove_sondage( $connect, $dsondage->id_sondage ) ) {
+
+      // ecriture des traces dans le fichier de logs
+      error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, '../admin/logs_studs.txt');
+
+    }
+
   }
-}
\ No newline at end of file
+}