diff --git a/cranspasswords.py b/cranspasswords.py
index 2af399b53c50cf5e23374883ec99cd095e628781..1ab452639fee433cede64ccf9966c910d5a86749 100755
--- a/cranspasswords.py
+++ b/cranspasswords.py
@@ -220,7 +220,24 @@ def show_roles():
         if role.endswith('-w'): continue
         print " * " + role 
 
+old_clipboard = None
+def saveclipboard(restore=False):
+    global old_clipboard
+    if restore and old_clipboard == None:
+        return
+    act = '-in' if restore else '-out'
+    proc =subprocess.Popen(['xclip',act,'-selection','clipboard'],\
+        stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=sys.stderr)
+    if not restore:
+        old_clipboard = proc.stdout.read()
+    else:
+        raw_input("Appuyez sur une touche pour récupérer le contenu précédent du presse papier.")
+        proc.stdin.write(old_clipboard)
+    proc.stdin.close()
+    proc.stdout.close()
+
 def clipboard(texte):
+    saveclipboard()
     proc =subprocess.Popen(['xclip','-selection','clipboard'],\
         stdin=subprocess.PIPE,stdout=sys.stdout,stderr=sys.stderr)
     proc.stdin.write(texte)
@@ -409,4 +426,6 @@ if __name__ == "__main__":
             parser.print_help()
         else:
             parsed.action(parsed.fname)
+    
+    saveclipboard(restore=True)