diff --git a/ces_bank/ces_bank.forms.inc b/ces_bank/ces_bank.forms.inc
index 50e6096..ac3e2a2 100644
--- a/ces_bank/ces_bank.forms.inc
+++ b/ces_bank/ces_bank.forms.inc
@@ -1505,6 +1505,53 @@ function ces_bank_account_delete_confirm_form_submit($form, &$form_state) {
   }
   $form_state['redirect'] = 'ces/admin/account';
 }
+
+/**
+ * Form to create a new user from exchange administration.
+ */
+function ces_bank_newuser_form($form, &$form_state) {
+  global $user;
+  // Give to $user the 'administer users' permission temporaly
+  // to be able to access to user_register_form.
+  // When the form html is created, the original permission is restored.
+  $permissions = &drupal_static('user_access');
+  if (!isset($permissions[$user->uid]['administer users'])) {
+    $cleanup = 'unset';
+  }
+  else {
+    $cleanup = $permissions[$user->uid]['administer users'];
+  }
+  $permissions[$user->uid]['administer users'] = TRUE;
+
+  // Generate the form normally with a special submit callback.
+  module_load_include('module', 'user');
+  $form = user_register_form($form, $form_state);
+  $form['actions']['submit']['#submit'] = array('ces_bank_newuser_form_submit');
+
+  // Restore the user permissions to their default state
+  if ($cleanup === 'unset') {
+    unset($permissions[$user->uid]['administer users']);
+  }
+  else {
+    $permissions[$user->uid]['administer users'] = $cleanup;
+  }
+
+  return $form;
+}
+
+/**
+ * Submit form to create a new user.
+ */
+function ces_bank_newuser_form_submit($form, &$form_state) {
+  user_register_submit($form, $form_state);
+  $bank = new CesBank();
+  $exchange = ces_bank_get_current_exchange();
+  $newaccount = $bank->getDefaultAccount($exchange['id']);
+  $newaccount['users'][0]['user'] = intval($form_state['values']['uid']);
+  $bank->createAccount($newaccount);
+  $form_state['redirect'] = 'ces/admin/account';
+}
+
 /**
  * Single transaction form.
  *
diff --git a/ces_bank/ces_bank.module b/ces_bank/ces_bank.module
index 9a0b915..e2527ad 100644
--- a/ces_bank/ces_bank.module
+++ b/ces_bank/ces_bank.module
@@ -222,7 +222,7 @@ function ces_bank_menu() {
     'weight' => 0,
   );
   $menu['ces/admin/account/new'] = array(
-    'title' => 'New',
+    'title' => 'New account',
     'description' => 'New account',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('ces_bank_account_form'),
@@ -233,6 +233,18 @@ function ces_bank_menu() {
     'access arguments' => array('admin', 'exchange', CES_BANK_CURRENT_EXCHANGE),
     'weight' => 1,
   );
+  $menu['ces/admin/account/newuser'] = array(
+    'title' => 'New user',
+    'description' => 'New user',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('ces_bank_newuser_form'),
+    'file' => 'ces_bank.forms.inc',
+    'file path' => drupal_get_path('module', 'ces_bank'),
+    'type' => MENU_LOCAL_TASK,
+    'access callback' => 'ces_bank_access',
+    'access arguments' => array('admin', 'exchange', CES_BANK_CURRENT_EXCHANGE),
+    'weight' => 2,
+  );
   $menu['ces/admin/account/%ces_account/view'] = array(
     'title' => 'View',
     'description' => 'View account',
@@ -243,7 +255,7 @@ function ces_bank_menu() {
     'type' => MENU_LOCAL_TASK,
     'access callback' => 'ces_bank_access',
     'access arguments' => array('admin', 'exchange', CES_BANK_CURRENT_EXCHANGE),
-    'weight' => 2,
+    'weight' => 3,
   );
   $menu['ces/admin/account/%ces_account/edit'] = array(
     'title' => 'Edit',
@@ -255,7 +267,7 @@ function ces_bank_menu() {
     'type' => MENU_LOCAL_TASK,
     'access callback' => 'ces_bank_access',
     'access arguments' => array('admin', 'exchange', CES_BANK_CURRENT_EXCHANGE),
-    'weight' => 3,
+    'weight' => 4,
   );
   $menu['ces/admin/account/%ces_account/delete'] = array(
     'title' => 'Delete',
@@ -267,7 +279,7 @@ function ces_bank_menu() {
     'type' => MENU_LOCAL_TASK,
     'access callback' => 'ces_bank_access',
     'access arguments' => array('admin', 'exchange', CES_BANK_CURRENT_EXCHANGE),
-    'weight' => 4,
+    'weight' => 5,
   );
   $menu['ces/admin/account/%ces_account/transactions'] = array(
     'title' => 'Transactions',
@@ -279,7 +291,7 @@ function ces_bank_menu() {
     'type' => MENU_LOCAL_TASK,
     'access callback' => 'ces_bank_access',
     'access arguments' => array('admin', 'exchange', CES_BANK_CURRENT_EXCHANGE),
-    'weight' => 5,
+    'weight' => 6,
   );
   $menu['ces/admin/transaction'] = array(
     'title' => 'Transactions',
