diff --git a/lib/commands/edit.pm b/lib/commands/edit.pm
new file mode 100644
index 0000000000000000000000000000000000000000..99c58f5a9b2978426c3a503a21eeeff43c0a4bdd
--- /dev/null
+++ b/lib/commands/edit.pm
@@ -0,0 +1,56 @@
+package commands::edit;
+
+require Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT_OK = qw(exec);
+
+use Regexp::Common qw(URI);
+
+our $dbh;
+our $log;
+our $irc;
+
+sub exec {
+    my ($id, $command, $arg, $chan) = @_;
+
+    my $saveCommit = $dbh->{AutoCommit};
+    my $saveError = $dbh->{RaiseError};
+    $dbh->{AutoCommit} = 0;
+    $dbh->{RaiseError} = 1;
+
+    if ($command eq "lien") {
+        if ($arg !~ /^$RE{URI}{HTTP}{-scheme => qr(https?)}$/) {
+            $irc->yield(privmsg => $chan => "Ce n'est pas une url valide");
+        }
+        else {
+            eval {
+                $sth = $dbh->prepare_cached("UPDATE sam SET link = ? WHERE id = ?");
+                $sth->execute($arg, $id);
+
+                if ($sth->rows == 0) {
+                    $irc->yield(privmsg => $chan => "Aucune soirée trouvée avec cet identifiant");
+                }
+                else {
+                    $irc->yield(privmsg => $chan => "Oui chef !");
+                }
+
+                $dbh->commit;
+            };
+
+            if ($@) {
+                $log->error("Quelque chose a chié dans la transaction : $@");
+                $dbh->rollback;
+                
+                $irc->yield(privmsg => $chan => "Erreur, commande non exécutée");
+            }
+        }
+    }
+    else {
+        $irc->yield(privmsg => $chan => "Commande inconnue");
+    }
+    
+    $dbh->{AutoCommit} = $saveCommit;
+    $dbh->{RaiseError} = $saveError;
+}
+
+1;
diff --git a/lib/commands/parser.pm b/lib/commands/parser.pm
index 3e7a280f60da845cc5331a4ae75588fe4546d115..4e7651cc49c4895bd0b816565548b1ca893b755f 100644
--- a/lib/commands/parser.pm
+++ b/lib/commands/parser.pm
@@ -10,6 +10,7 @@ use lib "$FindBin::Bin/lib/";
 use commands::add;
 use commands::list;
 use commands::addUser;
+use commands::edit;
 
 my $nick;
 my $irc;
@@ -21,13 +22,16 @@ sub setConf {
     $commands::add::dbh = $dbh;
     $commands::list::dbh = $dbh;
     $commands::addUser::dbh = $dbh;
+    $commands::edit::dbh = $dbh;
 
     $commands::add::log = $log;
     $commands::list::log = $log;
     $commands::addUser::log = $log;
+    $commands::edit::log = $log;
 
     $commands::list::irc = $ircNew;
     $commands::addUser::irc = $ircNew;
+    $commands::edit::irc = $irc;
 
     $nick = $nickNew;
     $irc = $ircNew;
@@ -54,6 +58,13 @@ sub exec {
             $irc->yield(privmsg => $chan => "C'est enregistré. N'oubliez pas, conduire ou choisir, il faut boire !");
         }
 	}
+    elsif ($msg =~ /^Sam(?:,|:) +ajoute(?: +à +la +(\d+)) +: +([a-z]*) += +(.*)/) {
+        my $id = $1 or $lastID->{$chan->[0]};
+        my $command = $2;
+        my $arg = $3;
+
+        commands::edit::exec($id, $command, $arg, $chan);
+    }
     elsif ($msg =~ /^Sam(?:,|:) +j'y +vais/) {
         commands::addUser::exec($nick, $lastID->{$chan->[0]}, $chan);
     }
@@ -72,7 +83,10 @@ sub exec {
         $irc->yield(privmsg => $nick => "    vous ajoute aux participants de la dernière soirée postée");
 		$irc->yield(privmsg => $nick => 'Sam: liste');
         $irc->yield(privmsg => $nick => '    retourne les deux prochaines soirées');
-		$irc->yield(privmsg => $nick => "--------");
+		$irc->yield(privmsg => $nick => 'Sam: ajoute [à la <id de la soirée>] : <attribut> = <valeur>');
+        $irc->yield(privmsg => $nick => '    <attribut> peut valoir les valeurs suivantes :');
+        $irc->yield(privmsg => $nick => '        - lien');
+		$irc->yield(privmsg => $nick => "------------------");
 		$irc->yield(privmsg => $nick => 'Notes :');
 		$irc->yield(privmsg => $nick => '    - « Sam: » ou « Sam, » fonctionnent');
 		$irc->yield(privmsg => $nick => "    - la date peut être au format « jj/mm » ou simplement « jj » (le mois et / ou l'année courante sera alors utilisé)");
@@ -80,7 +94,7 @@ sub exec {
 		$irc->yield(privmsg => $nick => "    - pensez à vérifier au préalable que la soirée n'a pas déjà été ajoutée");
 		$irc->yield(privmsg => $nick => "    - « liste » en query retourne toutes les prochaines soirées");
 		$irc->yield(privmsg => $nick => "    - tu as perdu") if (int(rand(10)) == 5);
-		$irc->yield(privmsg => $nick => "--------");
+		$irc->yield(privmsg => $nick => "------------------");
 		$irc->yield(privmsg => $nick => "http://nightiies.iiens.net/sam/ (si t'es motivé pour dev un vrai site, /query moise)");
         $irc->yield(privmsg => $nick => "Calendrier ICS : http://nigthiies.iiens.net/sam/events.php (ajoute « ?nick=$nick » à la fin de l'URL pour n'avoir que les soirées où tu te rends)"); 
     }