diff --git a/cranspasswords.py b/cranspasswords.py
index c4d3e9f11658ed38abea4ef23b38922f27c2472d..08d6881a8123c17b577814e32c145f3868fa7ceb 100755
--- a/cranspasswords.py
+++ b/cranspasswords.py
@@ -204,13 +204,18 @@ def editor(texte):
     return texte <> ntexte and ntexte or None
 
 def show_files():
-    print """Liste des fichiers disponibles""" 
+    proc = subprocess.Popen("less",stdin=subprocess.PIPE,shell=True)
+    out = proc.stdin
+    out.write("""Liste des fichiers disponibles\n""" )
     my_roles = get_my_roles()
     for (fname,froles) in all_files().iteritems():
         access = set(my_roles).intersection(froles) != set([])
-        print " %s %s (%s)" % ((access and '+' or '-'),fname,", ".join(froles))
-    print """--Mes roles: %s""" % \
-        ", ".join(my_roles)
+        out.write(" %s %s (%s)\n" % ((access and '+' or '-'),fname,", ".join(froles)))
+    out.write("""--Mes roles: %s\n""" % \
+        ", ".join(my_roles))
+    
+    out.close()
+    os.waitpid(proc.pid,0)
 
 def show_roles():
     print """Liste des roles disponibles""" 
@@ -223,32 +228,35 @@ def clipboard(texte):
         stdin=subprocess.PIPE,stdout=sys.stdout,stderr=sys.stderr)
     proc.stdin.write(texte)
     proc.stdin.close()
-    print "[Le mot de passe a été mis dans le presse papier]"
+    return "[Le mot de passe a été mis dans le presse papier]"
 
 
 def show_file(fname):
     value = get_file(fname)
     if value == False:
         print "Fichier introuvable"; return
-    print "Fichier %s:" % fname
+    proc = subprocess.Popen("less",stdin=subprocess.PIPE,shell=True)
+    out = proc.stdin
+    out.write("Fichier %s:\n\n" % fname)
     (sin,sout) = gpg('decrypt')
     sin.write(value['contents'])
     sin.close()
-    texte = sout.read()
     if CLIPBOARD:    # Ça ne va pas plaire à tout le monde
+        texte = sout.read()
         lines = texte.split('\n')
-        if len(lines) == 2:
-            clipboard(lines[0])
-        else:
-            for line in lines:
-                if line.startswith('pass:'):
-                    clipboard(line[5:].strip(' \t\r\n'))
-                else:
-                    print line
-    else:
-        print texte
-    print "-----"
-    print "Visible par: %s" % ','.join(value['roles'])
+        for line in lines:
+            if line.startswith('pass:'):
+                out.write(clipboard(line[5:].strip(' \t\r\n')) + '\n')
+            else:
+                out.write(line+'\n')
+    else:  # Si pas de presse papier, on fait passer ça dans un less
+        out.write(sout.read())
+    out.write("-----\n")
+    out.write("Visible par: %s\n" % ','.join(value['roles']))
+
+    out.close()
+    os.waitpid(proc.pid,0)
+
         
 def edit_file(fname):
     value = get_file(fname)