let argument_suivant ~printP ~liste_piece ~plateau ~icourant ~jcourant ~piece_choisie =
        myprint myverb ("\t<<<<<<<<<<<<<<<<");
        myprint myverb ("Appel a 'argument_suivant' avec Indices : icourant="^(string_of_int icourant)^" et jcourant="^(string_of_int jcourant)^" ! et la piece choisie est :");
        if (myverb = Verbeux_textuelthen print_piece piece_choisie;
        
        (** Suppose que la piece choisie peut effectivement se mettre en case (i,j) du plateau courant, qu'elle satisfait tout ce qu'il faut, et qu'elle est bien une des pièces de la liste de piece. *)

        let liste_piece_suivant = (suppri_liste piece_choisie liste_piece) in
                (* On enleve la piece choisie des pieces à placer, *)
        let (i_suivant, j_suivant) = (indices_suivants ~i:icourant ~j:jcourant ~n:plateau.n ~m:plateau.m) in
                (* On passe à l'indice suivant, *)
        myprint myverb "\t<<\n\tLe plateau argument dans 'argument_suivant' est, avant modification, :";
        if (myverb = Verbeux_textuelthen printP plateau;
        let plateau_suivant = {
                c = plateau.c;
                n = plateau.n;
                m = plateau.m;
                p = Array.map Array.copy (plateau.p); (* précaution *)
                v = true(* test *)
                                } in
                (* On fait une copie du plateau courant, *)
        myprint myverb "\t<<\n\tDans 'argument_suivant', on viend de construire le nouveau plateau. Testons :";
        myprint myverb ("\t<<\n\t Egalité pour les valeurs :"^(string_of_bool (plateau = plateau_suivant))^" Egalité machine :"^(string_of_bool (plateau == plateau_suivant))^". Alors ?");
        myprint myverb "\t<<\n\tLe plateau suivant dans 'argument_suivant' est, avant modification, :";
        if (myverb = Verbeux_textuelthen printP plateau_suivant;
(*!!*)                plateau_suivant.p.(icourant).(jcourant) <- Some piece_choisie;  (* cette ligne là ne peut pas changer 'plateau' ! Pourquoi alors on observe un changement ?!?! *)
        myprint myverb "\t<<\n\tLe plateau suivant dans 'argument_suivant' est, après modification,  :";
        if (myverb = Verbeux_textuelthen printP plateau_suivant;
        myprint myverb "\t<<\n\tLe plateau argument dans 'argument_suivant' est, après modification, :";
        if (myverb = Verbeux_textuelthen printP plateau;
                (* Et on le modifie en plaçant la piece choisie sur la case choisie. *)
        (* On renvoie enfin le tout dans un quadruplet, pour l'utiliser dans la fonction suivante. *)
        ( liste_piece_suivant, plateau_suivant, i_suivant, j_suivant)