rem: LISTE_OPERATIONS = g_slist_sort ( LISTE_OPERATIONS, (GCompareFunc) CLASSEMENT_COURANT );
add: classe_liste_operations ( no_compte );
context: void creation_compte_importe ( struct struct_compte_importation *compte_import ){    /* cre un nouveau compte contenant les donnes de la structure importe */    /* ajoute ce compte aux anciens et cre la liste des oprations */    struct structure_operation *operation;    gint derniere_operation;    GSList *liste_tmp;    gint no_compte;    /*     on cre et initialise le nouveau compte  */    /*     le type par dfaut est 0 (compte bancaire) */    no_compte = initialisation_nouveau_compte ( 0 );    /*     si a c'est mal pass, on se barre */    if ( no_compte == -1 )	return;    p_tab_nom_de_compte_variable = p_tab_nom_de_compte + no_compte;    /*     met l'id du compte s'il existe (import ofx) */    if ( compte_import -> id_compte )    {	gchar **tab_str;	ID_COMPTE = g_strdup ( compte_import -> id_compte );	/* 	en thorie cet id est "no_banque no_guichet no_comptecle" */	/* on va essayer d'importer ces donnes ici */	/* si on rencontre un null, on s'arrte */	tab_str = g_strsplit ( ID_COMPTE,			       " ",			       3 );	if ( tab_str[1] )	{	    NO_GUICHET = g_strdup ( tab_str[1] );	    if ( tab_str[2] )	    {		gchar *temp;		CLE_COMPTE = g_strdup ( tab_str[2] + strlen ( tab_str[2] ) - 1 );		temp = g_strdup ( tab_str[2] );		temp[strlen (temp) - 1 ] = 0;		NO_COMPTE_BANQUE = temp;	    }	}	g_strfreev ( tab_str );    }    /* met le nom du compte */    if ( compte_import -> nom_de_compte )	NOM_DU_COMPTE = g_strstrip ( compte_import -> nom_de_compte );    else	NOM_DU_COMPTE = g_strdup ( _("Imported account"));    /* choix de la devise du compte */    DEVISE = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( compte_import -> bouton_devise ) -> menu_item ),						     "no_devise" ));    /* met le type de compte si diffrent de 0 */    switch ( compte_import -> type_de_compte )    {	case 3:	    TYPE_DE_COMPTE = 2;	    break;	case 7:	    TYPE_DE_COMPTE = 1;	    break;    }    /* met le solde init */    SOLDE_INIT = compte_import -> solde;    SOLDE_COURANT = SOLDE_INIT;    SOLDE_POINTE = SOLDE_INIT;    /* on fait maintenant le tour des ops de ce compte */    /* la variable derniere_operation est utilise pour garder le numro de l'op */    /* prcdente pour les ventilations */    derniere_operation = 0;    liste_tmp = compte_import -> operations_importees;    while ( liste_tmp )    {	struct struct_ope_importation *operation_import;	gchar **tab_str;	operation_import = liste_tmp -> data;	operation = calloc ( 1,			     sizeof ( struct structure_operation ));	/* rcupration du no de l'op */	operation -> no_operation = ++no_derniere_operation;	/* 	rcupration de l'id si elle existe */	if ( operation_import -> id_operation )	    operation -> id_operation = g_strdup ( operation_import -> id_operation );	/* rcupration de la date */	operation -> jour = g_date_day ( operation_import -> date );	operation -> mois = g_date_month ( operation_import -> date );	operation -> annee = g_date_year ( operation_import -> date );	operation -> date = g_date_new_dmy ( operation -> jour,					     operation -> mois,					     operation -> annee );	/* rcupration de la date de valeur */	if ( operation_import -> date_de_valeur )	{	    operation -> jour_bancaire = g_date_day ( operation_import -> date_de_valeur );	    operation -> mois_bancaire = g_date_month ( operation_import -> date_de_valeur );	    operation -> annee_bancaire = g_date_year ( operation_import -> date_de_valeur );	    operation -> date_bancaire = g_date_new_dmy ( operation -> jour_bancaire,							  operation -> mois_bancaire,							  operation -> annee_bancaire );	}	/* rcupration du no de compte */	operation -> no_compte = NO_COMPTE;	/* rcupration du montant */	operation -> montant = operation_import -> montant;	/* 	  rcupration de la devise, sur la popup affiche */	operation -> devise = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( compte_import -> bouton_devise ) -> menu_item ),								      "no_devise" ));	/* rcupration du tiers */	if ( operation_import -> tiers	     &&	     strlen ( g_strstrip ( operation_import -> tiers )))	    operation -> tiers = tiers_par_nom ( operation_import -> tiers,						 1 ) -> no_tiers;	/* vrification si c'est ventil, sinon rcupration des catgories */	if ( operation_import -> operation_ventilee )	{	    /* l'opration est ventile */	    operation -> operation_ventilee = 1;	}	else	{	    /* vrification que ce n'est pas un virement */	    if ( operation_import -> categ		 &&		 strlen ( g_strstrip (operation_import -> categ)) )	    {		if ( operation_import -> categ[0] == '[' )		{		    /* 		      c'est un virement, or le compte n'a peut tre pas encore t cr, */		    /* on va mettre le nom du compte dans info_banque_guichet qui n'est jamais utilis */		    /* lors d'import, et relation_no_compte sera mis  -2 (-1 est dj utilis pour les comptes supprims */		    operation -> info_banque_guichet = operation_import -> categ;		    operation -> relation_no_compte = -2;		    operation -> relation_no_operation = -1;		    virements_a_chercher = 1;		}		else		{		    struct struct_categ *categ;		    struct struct_sous_categ *sous_categ ;		    tab_str = g_strsplit ( operation_import -> categ,					   ":",					   2 );		    /* rcupration ou cration de la catgorie */		    categ = categ_par_nom ( tab_str[0],					    1,					    operation_import -> montant < 0,					    0 );		    if ( categ )		    {			operation -> categorie = categ -> no_categ;			/* rcupration ou cration de la sous-catgorie */			sous_categ = sous_categ_par_nom ( categ,							  tab_str[1],							  1 );			if ( sous_categ )			    operation -> sous_categorie = sous_categ -> no_sous_categ;		    }		    g_strfreev ( tab_str );		}	    }	}	/* rcupration des notes */	operation -> notes = g_strdup ( operation_import -> notes );	/* rcupration du chque et mise en forme du type d'opration */	if ( operation_import -> cheque )	{	    /* c'est un chque, on va rechercher un type  incrmentation automatique et mettre l'op sous ce type */	    /* si un tel type n'existe pas, on met quand mme le no dans contenu_type et on met le type par dfaut */	    struct struct_type_ope *type_choisi;	    GSList *liste_tmp;	    if ( operation -> montant < 0 )		operation -> type_ope = TYPE_DEFAUT_DEBIT;	    else		operation -> type_ope = TYPE_DEFAUT_CREDIT;	    operation -> contenu_type = itoa ( operation_import -> cheque );	    liste_tmp = TYPES_OPES;	    type_choisi = NULL;	    while ( liste_tmp )	    {		struct struct_type_ope *type;		type = liste_tmp -> data;		/* si l'op on trouve un type  incrmentation automatique et que le signe du type est bon, on l'enregistre */		/*   et on arrte la recherche, sinon, on l'enregistre mais on continue la recherche dans l'espoir de trouver */		/* mieux */		if ( type -> numerotation_auto )		{		    if ( !type -> signe_type			 ||			 ( type -> signe_type == 1 && operation -> montant < 0 )			 ||			 ( type -> signe_type == 2 && operation -> montant > 0 ))		    {			operation -> type_ope = type -> no_type;			type_choisi = type;			liste_tmp = NULL;		    }		    else		    {			operation -> type_ope = type -> no_type;			type_choisi = type;			liste_tmp = liste_tmp -> next;		    }		}		else		    liste_tmp = liste_tmp -> next;	    }	    /* type_choisi contient l'adr du type qui a t utilis, on peut y mettre le dernier no de chque */	    if ( type_choisi )		type_choisi -> no_en_cours = MAX ( operation_import -> cheque,						   type_choisi -> no_en_cours );	}	else	{	    /* comme ce n'est pas un chque, on met sur le type par dfaut */	    if ( operation -> montant < 0 )		operation -> type_ope = TYPE_DEFAUT_DEBIT;	    else		operation -> type_ope = TYPE_DEFAUT_CREDIT;	}	/* rcupration du point */	operation -> pointe = operation_import -> p_r;	/* si c'est une ope de ventilation, lui ajoute le no de l'opration prcdente */	if ( operation_import -> ope_de_ventilation )	    operation -> no_operation_ventilee_associee = derniere_operation;	else	    derniere_operation = operation -> no_operation;	/* ajoute l'opration dans la liste des ops du compte */	LISTE_OPERATIONS = g_slist_append ( LISTE_OPERATIONS,					    operation );	/* 	mise  jour des montants */	if ( !operation -> operation_ventilee )	{	    SOLDE_COURANT = SOLDE_COURANT + operation -> montant;	    if ( operation -> pointe )		SOLDE_POINTE = SOLDE_POINTE + operation -> montant;	}	liste_tmp = liste_tmp -> next;    }    /* on classe la liste */    LISTE_OPERATIONS = g_slist_sort ( LISTE_OPERATIONS,				      (GCompareFunc) CLASSEMENT_COURANT );}