diff --git a/Sam/commands/add.pm b/Sam/commands/add.pm
index 533ff32236de7bc68475eb687b56d97b33071c20..2a7833496bf0793f5311ac163a64645c7770d6c7 100644
--- a/Sam/commands/add.pm
+++ b/Sam/commands/add.pm
@@ -16,7 +16,10 @@ sub exec {
     my $timestamp = timelocal(0, 59, 23, $day, $month - 1, $year);
 
     my $chan = Sam::Chan->new(name => $chanName);
-    $chan->load();
+
+    unless ($chan->load(speculative => 1)) {
+        die "ce chan n'est pas encore configuré";
+    }
 
     my $event = Sam::Event->new(
         title       => $title,
diff --git a/Sam/commands/parser.pm b/Sam/commands/parser.pm
index 1b508aa30cca98ce0ed599612a3578599a7c50ad..a28df21e8494add40b85f09b1b2984622bd66248 100644
--- a/Sam/commands/parser.pm
+++ b/Sam/commands/parser.pm
@@ -66,9 +66,15 @@ sub exec {
 
         $place =~ s/ $//;
 
-        my $id = Sam::commands::add::exec($chan->[0], $title, $day, $month, $year, $place, $desc);
-        
-        if ($id) {
+        my $id;
+        eval {
+            $id = Sam::commands::add::exec($chan->[0], $title, $day, $month, $year, $place, $desc);
+        };
+
+        if ($@) {
+            $irc->yield(privmsg => $chan => "Erreur : $@");
+        }
+        elsif ($id) {
             $lastID->{$chan->[0]} = $id;
             $irc->yield(privmsg => $chan => "C'est enregistré. N'oubliez pas, conduire ou choisir, il faut boire !");
         }