}
 // Vérifier que l'identifiant sconet est disponible (parmi les utilisateurs de même type de profil)
 if ($sconet_id) {
     if (DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('sconet_id', $sconet_id, NULL, $_SESSION['TAB_PROFILS_ADMIN']['TYPE'][$profil])) {
         exit('Erreur : n° sconet déjà utilisé !');
     }
 }
 // Vérifier que la référence est disponible (parmi les utilisateurs de même type de profil)
 if ($reference) {
     if (DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('reference', $reference, NULL, $_SESSION['TAB_PROFILS_ADMIN']['TYPE'][$profil])) {
         exit('Erreur : référence déjà utilisée !');
     }
 }
 if ($box_login) {
     // Construire puis tester le login (parmi tous les utilisateurs de l'établissement)
     $login = fabriquer_login($prenom, $nom, $profil);
     if (DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('login', $login)) {
         // Login pris : en chercher un autre en remplaçant la fin par des chiffres si besoin
         $login = DB_STRUCTURE_ADMINISTRATEUR::DB_rechercher_login_disponible($login);
     }
 } else {
     // Vérifier que le login transmis est disponible (parmi tous les utilisateurs de l'établissement)
     if (DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('login', $login)) {
         exit('Erreur : login déjà existant !');
     }
 }
 if ($box_password) {
     // Générer un mdp aléatoire
     $password = fabriquer_mdp($profil);
 } else {
     // Vérifier que le mdp transmis est d'une longueur compatible
	{
		if( DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('sconet_id',$sconet_id,NULL,'directeur') )
		{
			exit('Erreur : n° sconet déjà utilisé !');
		}
	}
	// Vérifier que la référence est disponible (parmi les directeurs de cet établissement)
	if($reference)
	{
		if( DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('reference',$reference,NULL,'directeur') )
		{
			exit('Erreur : référence déjà utilisée !');
		}
	}
	// Construire le login
	$login = fabriquer_login($prenom,$nom,'directeur');
	// Puis tester le login (parmi tout le personnel de l'établissement)
	if( DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('login',$login) )
	{
		// Login pris : en chercher un autre en remplaçant la fin par des chiffres si besoin
		$login = DB_STRUCTURE_ADMINISTRATEUR::DB_rechercher_login_disponible($login);
	}
	// Insérer l'enregistrement
	$user_id = DB_STRUCTURE_COMMUN::DB_ajouter_utilisateur($sconet_id,$sconet_num=0,$reference,'directeur',$nom,$prenom,$login,crypter_mdp($password),0,$id_ent,$id_gepi);
	// Il peut (déjà !) falloir lui affecter une date de sortie...
	if($not_exit)
	{
		$sortie_date = '-' ;
		$sortie_date_mysql = SORTIE_DEFAUT_MYSQL;
	}
	else
 // Nom sans extension des fichiers de sortie
 $fnom = 'identifiants_' . $_SESSION['BASE'] . '_' . $profil . '_' . fabriquer_fin_nom_fichier__date_et_alea();
 // La classe n'est affichée que pour l'élève
 $avec_info = $profil == 'eleves' ? 'classe' : ($profil == 'parents' ? 'enfant' : '');
 // ////////////////////////////////////////////////////////////////////////////////////////////////////
 // Initialiser plusieurs noms d'utilisateurs
 // ////////////////////////////////////////////////////////////////////////////////////////////////////
 if ($action == 'generer_login') {
     $tab_login = array();
     // Récupérer les données des utilisateurs concernés (besoin de le faire maintenant, on a besoin des infos pour générer le login)
     $listing_champs = $profil != 'parents' ? 'user_id,user_sconet_id,user_sconet_elenoet,user_reference,user_profil_sigle,user_nom,user_prenom' : 'parent.user_id AS parent_id,parent.user_sconet_id AS parent_sconet_id,parent.user_sconet_elenoet AS parent_sconet_elenoet,parent.user_reference AS parent_reference,parent.user_profil_sigle AS parent_profil_sigle,parent.user_nom AS parent_nom,parent.user_prenom AS parent_prenom';
     $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users_cibles(implode(',', $tab_user), $listing_champs, $avec_info);
     // Mettre à jour les noms d'utilisateurs des utilisateurs concernés
     foreach ($DB_TAB as $DB_ROW) {
         // Construire le login
         $login = fabriquer_login($DB_ROW[$prefixe . 'prenom'], $DB_ROW[$prefixe . 'nom'], $DB_ROW[$prefixe . 'profil_sigle']);
         // Puis tester le login
         if (DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('login', $login, $DB_ROW[$prefixe . 'id'])) {
             // Login pris : en chercher un autre en remplaçant la fin par des chiffres si besoin
             $login = DB_STRUCTURE_ADMINISTRATEUR::DB_rechercher_login_disponible($login);
         }
         DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_user($DB_ROW[$prefixe . 'id'], array(':login' => $login));
         $tab_login[$DB_ROW[$prefixe . 'id']] = $login;
     }
 }
 // ////////////////////////////////////////////////////////////////////////////////////////////////////
 // Initialiser plusieurs mots de passe
 // ////////////////////////////////////////////////////////////////////////////////////////////////////
 if ($action == 'generer_mdp') {
     $tab_password = array();
     // Récupérer les données des utilisateurs concernés (besoin de le faire maintenant, on a besoin des infos pour générer le mdp)
$fcontenu_csv = 'SCONET_Id' . $separateur . 'SCONET_N°' . $separateur . 'REFERENCE' . $separateur . $classe_ou_profil . $separateur . 'NOM' . $separateur . 'PRENOM' . $separateur . 'LOGIN' . $separateur . 'MOT DE PASSE' . "\r\n\r\n";
$fcontenu_pdf_tab = array();
if (count($tab_add)) {
    // Récupérer les noms de classes pour le fichier avec les logins/mdp
    $tab_nom_classe = array();
    if ($import_profil == 'eleve') {
        $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes();
        foreach ($DB_TAB as $DB_ROW) {
            $tab_nom_classe[$DB_ROW['groupe_id']] = $DB_ROW['groupe_nom'];
        }
    }
    foreach ($tab_add as $i_fichier) {
        if (isset($tab_memo_analyse['ajouter'][$i_fichier])) {
            // Il peut théoriquement subsister un conflit de sconet_id pour des users ayant même reference, et réciproquement...
            // Construire le login
            $login = fabriquer_login($tab_memo_analyse['ajouter'][$i_fichier]['prenom'], $tab_memo_analyse['ajouter'][$i_fichier]['nom'], $tab_memo_analyse['ajouter'][$i_fichier]['profil_sigle']);
            // Puis tester le login (parmi tout le personnel de l'établissement)
            if (DB_STRUCTURE_ADMINISTRATEUR::DB_tester_utilisateur_identifiant('login', $login)) {
                // Login pris : en chercher un autre en remplaçant la fin par des chiffres si besoin
                $login = DB_STRUCTURE_ADMINISTRATEUR::DB_rechercher_login_disponible($login);
            }
            // Construire le password
            if ($import_profil != 'eleve' || !$_SESSION['TAB_PROFILS_ADMIN']['MDP_LONGUEUR_MINI']['ELV'] || empty($tab_memo_analyse['ajouter'][$i_fichier]['birth_date'])) {
                $password = fabriquer_mdp($tab_memo_analyse['ajouter'][$i_fichier]['profil_sigle']);
            } else {
                $password = str_replace('/', '', $tab_memo_analyse['ajouter'][$i_fichier]['birth_date']);
            }
            // Attention à la date de naissance, définie seulement pour les élèves
            $birth_date = empty($tab_memo_analyse['ajouter'][$i_fichier]['birth_date']) ? NULL : convert_date_french_to_mysql($tab_memo_analyse['ajouter'][$i_fichier]['birth_date']);
            // Ajouter l'utilisateur
            $user_id = DB_STRUCTURE_COMMUN::DB_ajouter_utilisateur($tab_memo_analyse['ajouter'][$i_fichier]['sconet_id'], $tab_memo_analyse['ajouter'][$i_fichier]['sconet_num'], $tab_memo_analyse['ajouter'][$i_fichier]['reference'], $tab_memo_analyse['ajouter'][$i_fichier]['profil_sigle'], $tab_memo_analyse['ajouter'][$i_fichier]['genre'], $tab_memo_analyse['ajouter'][$i_fichier]['nom'], $tab_memo_analyse['ajouter'][$i_fichier]['prenom'], $birth_date, $tab_memo_analyse['ajouter'][$i_fichier]['courriel'], $tab_memo_analyse['ajouter'][$i_fichier]['email_origine'], $login, crypter_mdp($password), $tab_memo_analyse['ajouter'][$i_fichier]['classe']);