diff --git a/bash_completion b/bash_completion
index db05f650f85606be23c0d1aa6707250de356ec38..c50e429fe404770908c8637d936193276de3773d 100644
--- a/bash_completion
+++ b/bash_completion
@@ -23,7 +23,7 @@ _cranspasswords_completion(){
   cur="${COMP_WORDS[argc]}"
   cur_first_char=${cur:0:1}
   opts_short="-h -v -c -f -l"
-  opts="--help --server --verbose --clipboard --noclipboard --force --edit --view --remove --list --check-keys --update-keys --list-roles --recrypt-files --roles --list-servers"
+  opts="--help --server --verbose --quiet --clipboard --noclipboard --force --edit --view --remove --list --check-keys --update-keys --list-roles --recrypt-files --roles --list-servers"
   mkdir -p -m 700  "$role_dir"
   mkdir -p -m 700 "$pass_dir"
   
@@ -48,14 +48,14 @@ _cranspasswords_completion(){
   fi
   
   if [[ "$last" = "--server" ]]; then
-    server_list="`$cmd_name --list-servers | grep -- "*" | awk '{print $2}'`"
+    server_list="`$cmd_name --quiet --list-servers | grep -- "*" | awk '{print $2}'`"
     COMPREPLY=( $(compgen -W "$server_list" -- $cur ) )
     return 0
   fi
   
   if [[ "$last" = "--roles" ]]; then 
     if  [ ! -f "${role_dir}$server" ]; then
-      echo "`$cmd_name --server $server --list-roles | grep -- "*" | awk '{print $2}'`" > "${role_dir}$server"
+      echo "`$cmd_name --quiet --server $server --list-roles | grep -- "*" | awk '{print $2}'`" > "${role_dir}$server"
     fi
     role_list="`cat "${role_dir}$server"`"
     COMPREPLY=( $(compgen -W "$role_list" -- $cur ) )
@@ -64,7 +64,7 @@ _cranspasswords_completion(){
   
   if [[ "$last" = "--edit" ]]; then
     if  [ ! -f "${pass_dir}${server}-w" ]; then
-      echo "`$cmd_name --server $server -l | grep "+" | awk '{print $2}'`" > "${pass_dir}${server}-w"
+      echo "`$cmd_name --quiet --server $server -l | grep "+" | awk '{print $2}'`" > "${pass_dir}${server}-w"
     fi
     pass_list="`cat "${pass_dir}${server}-w"`"
     COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
@@ -73,7 +73,7 @@ _cranspasswords_completion(){
   
   if true; then
     if  [ ! -f "${pass_dir}$server" ]; then
-      echo "`$cmd_name --server $server -l | grep "\( +\| -\)" | awk '{print $2}'`" > "${pass_dir}$server"
+      echo "`$cmd_name --quiet --server $server -l | grep "\( +\| -\)" | awk '{print $2}'`" > "${pass_dir}$server"
     fi
     pass_list="`cat "${pass_dir}$server"`"
     COMPREPLY=( $(compgen -W "$pass_list" -- $cur ) )
diff --git a/cranspasswords.py b/cranspasswords.py
index 663e3a00828985b901acd3e23c8225bfb9f074c0..6dcb4e206e1bfa8a48ff7e9ef3f5127616d2e50d 100755
--- a/cranspasswords.py
+++ b/cranspasswords.py
@@ -19,11 +19,16 @@ import re
 import random
 import string
 import datetime
-#import gnupg #disponible seulement sous wheezy
+try:
+    import gnupg #disponible seulement sous wheezy
+except ImportError:
+    if sys.stderr.isatty() and not any([opt in sys.argv for opt in ["-q", "--quiet"]]):
+        sys.stderr.write(u"Package python-gnupg introuvable, vous ne pourrez pas vérifiez les clés.\n".encode("utf-8"))
 try:
     import clientconfig as config
 except ImportError:
-    print "Read the README"
+    if sys.stderr.isatty() and not any([opt in sys.argv for opt in ["-q", "--quiet"]]):
+        sys.stderr.write(u"Va lire le fichier README.\n".encode("utf-8"))
     sys.exit(1)
 
 #: pattern utilisé pour détecter la ligne contenant le mot de passe dans les fichiers
@@ -184,7 +189,8 @@ def check_keys():
     failed = False
     for (mail, fpr) in keys.values():
         if fpr:
-            if VERB:   print (u"Checking %s" % (mail)).encode("utf-8")
+            if VERB:
+                print (u"Checking %s" % (mail)).encode("utf-8")
             corresponds = [key for key in localkeys if key["fingerprint"] == fpr]
             # On vérifie qu'on possède la clé…
             if len(corresponds) == 1:
@@ -237,7 +243,8 @@ def encrypt(roles, contents):
     stdin.close()
     out = stdout.read().decode("utf-8")
     if out == '':
-        if VERB: print u"Échec de chiffrement".encode("utf-8")
+        if VERB:
+            print u"Échec de chiffrement".encode("utf-8")
         return None
     else:
         return out
@@ -442,6 +449,7 @@ def remove_file(fname):
 
 def my_check_keys():
     """Vérifie les clés et affiche un message en fonction du résultat"""
+    print u"Vérification que les clés sont valides (uid correspondant au login) et de confiance."
     print (check_keys() and u"Base de clés ok" or u"Erreurs dans la base").encode("utf-8")
 
 def my_update_keys():
@@ -496,6 +504,8 @@ if __name__ == "__main__":
         help="Utilisation d'un serveur alternatif (test, backup, etc)")
     parser.add_argument('-v', '--verbose', action='store_true', default=False,
         help="Mode verbeux")
+    parser.add_argument('-q', '--quiet', action='store_true', default=False,
+        help="Mode silencieux. Cache les message d'erreurs (override --verbose).")
     parser.add_argument('-c', '--clipboard', action='store_true', default=None,
         help="Stocker le mot de passe dans le presse papier")
     parser.add_argument('--no-clip', '--noclip', '--noclipboard', action='store_false', default=None,
@@ -541,7 +551,8 @@ if __name__ == "__main__":
     
     parsed = parser.parse_args(sys.argv[1:])
     SERVER = config.servers[parsed.server]
-    VERB = parsed.verbose
+    QUIET = parsed.quiet
+    VERB = parsed.verbose and not QUIET
     if parsed.clipboard != None:
         CLIPBOARD = parsed.clipboard
     FORCED = parsed.force
@@ -551,8 +562,10 @@ if __name__ == "__main__":
         if parsed.action.func_code.co_argcount == 0:
             parsed.action()
         elif parsed.fname == None:
-            print u"Vous devez fournir un nom de fichier avec cette commande".encode("utf-8")
-            parser.print_help()
+            if not QUIET:
+                print u"Vous devez fournir un nom de fichier avec cette commande".encode("utf-8")
+                parser.print_help()
+            sys.exit(1)
         else:
             parsed.action(parsed.fname)