rem: transaction = recherche_derniere_occurence_tiers ( tiers -> no_tiers );
add: transaction = gsb_transactions_look_for_last_party ( tiers -> no_tiers, 0 );
context: gboolean completion_operation_par_tiers ( GtkWidget *entree ){    struct struct_tiers *tiers;    struct structure_operation *transaction;    gchar *char_tmp;    gint i,j;    struct organisation_formulaire *organisation_formulaire;    gint pas_de_completion;    gchar *nom_tiers;    GtkWidget *widget;    GtkWidget *menu;    /*     s'il n'y a rien dans le tiers, on retourne FALSE */    nom_tiers = g_strstrip ( g_strdup ( gtk_entry_get_text ( GTK_ENTRY ( entree ))));    if ( !strlen ( nom_tiers ))	return FALSE;    /*     pour la complétion, seul la date et le tiers doivent être remplis, sinon on ne fait rien */    organisation_formulaire = renvoie_organisation_formulaire ();    pas_de_completion = 0;    for ( i=0 ; i < organisation_formulaire -> nb_lignes ; i++ )	for ( j=0 ; j < organisation_formulaire -> nb_colonnes ; j++ )	{	    if ( organisation_formulaire -> tab_remplissage_formulaire[i][j]		 &&		 organisation_formulaire -> tab_remplissage_formulaire[i][j] != TRANSACTION_FORM_DATE		 &&		 organisation_formulaire -> tab_remplissage_formulaire[i][j] != TRANSACTION_FORM_PARTY )	    {		GtkWidget *widget;		widget = widget_formulaire_par_element ( organisation_formulaire -> tab_remplissage_formulaire[i][j] );		if ( GTK_IS_ENTRY ( widget ))		{		    if ( gtk_widget_get_style ( widget ) == style_entree_formulaire[ENCLAIR] )			pas_de_completion = 1;		}		if ( GTK_IS_COMBOFIX ( widget ))		{		    if ( gtk_widget_get_style ( GTK_COMBOFIX (widget) -> entry ) == style_entree_formulaire[ENCLAIR] )			pas_de_completion = 1;		}	    }	}    if ( pas_de_completion )	return TRUE;        /* recherche le tiers demandé */    tiers = tiers_par_nom ( nom_tiers,			    0 );    /*   si nouveau tiers,  on s'en va simplement */    if ( !tiers )	return TRUE;    /*     on essaie de retrouver la dernière opé entrée avec ce tiers */    transaction = recherche_derniere_occurence_tiers ( tiers -> no_tiers );    /* si on n'a trouvé aucune opération, on se tire */    if ( !transaction )	return TRUE;    /*     on fait le tour du formulaire en ne remplissant que ce qui est nécessaire */    for ( i=0 ; i < organisation_formulaire -> nb_lignes ; i++ )	for ( j=0 ; j <  organisation_formulaire -> nb_colonnes ; j++ )	{	    widget =  widget_formulaire_par_element ( organisation_formulaire -> tab_remplissage_formulaire[i][j] );	    switch ( organisation_formulaire -> tab_remplissage_formulaire[i][j] )	    {		case TRANSACTION_FORM_DEBIT:		    if ( transaction -> montant < 0 )		    {			entree_prend_focus ( widget );			gtk_entry_set_text ( GTK_ENTRY ( widget ),					     g_strdup_printf ( "%4.2f",							       -transaction -> montant ));		    }		    break;		case TRANSACTION_FORM_CREDIT:		    if ( transaction -> montant >= 0 )		    {			entree_prend_focus ( widget );			gtk_entry_set_text ( GTK_ENTRY ( widget ),					     g_strdup_printf ( "%4.2f",							       transaction -> montant ));		    }		    break;		case TRANSACTION_FORM_CATEGORY:		    if ( transaction -> operation_ventilee )		    {			/* 			c'est une opé ventilée, on met la catég, affiche le bouton, et propose de */			/* 			    récupérer les opé filles */			entree_prend_focus ( widget );			gtk_combofix_set_text ( GTK_COMBOFIX ( widget ),						_("Breakdown of transaction") );			gtk_widget_show ( widget_formulaire_par_element (TRANSACTION_FORM_BREAKDOWN) );			recuperation_ope_filles_completion_tiers ( transaction );		    }		    else		    {			if ( transaction -> relation_no_operation )			{			    /* c'est un virement */			    entree_prend_focus ( widget );			    if ( transaction -> relation_no_operation != -1 &&				 transaction -> relation_no_compte != -1 )			    {				gtk_combofix_set_text ( GTK_COMBOFIX ( widget ),							g_strconcat ( COLON(_("Transfer")),								      gsb_account_get_name (transaction -> relation_no_compte),								      NULL ));			    }			    else				gtk_combofix_set_text ( GTK_COMBOFIX ( widget ),							_("Transfer") );			}			else			{			    /* c'est des catégories normales */			    char_tmp = nom_categ_par_no ( transaction -> categorie,							  transaction -> sous_categorie );			    if ( char_tmp )			    {				entree_prend_focus ( widget );				gtk_combofix_set_text ( GTK_COMBOFIX ( widget ),							char_tmp );			    }			}		    }		    break;		case TRANSACTION_FORM_BUDGET:		    char_tmp = nom_imputation_par_no ( transaction -> imputation,						       transaction -> sous_imputation );		    if ( char_tmp )		    {			entree_prend_focus ( widget );			gtk_combofix_set_text ( GTK_COMBOFIX ( widget ),						char_tmp );		    }		    break;		case TRANSACTION_FORM_NOTES:		    if ( transaction -> notes )		    {			entree_prend_focus ( widget );			gtk_entry_set_text ( GTK_ENTRY ( widget ),					     transaction -> notes );		    }		    break;		case TRANSACTION_FORM_TYPE:		    if ( transaction -> montant < 0 )			menu = creation_menu_types ( 1, compte_courant, 0  );		    else			menu = creation_menu_types ( 2, compte_courant, 0  );		    if ( menu )		    {			/* on met en place les types et se place sur celui correspondant à l'opé */			gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget ),						   menu );			gtk_widget_show ( widget );			place_type_formulaire ( transaction -> type_ope,						TRANSACTION_FORM_TYPE,						NULL );		    }		    else		    {			gtk_widget_hide ( widget );			gtk_widget_hide ( widget_formulaire_par_element (TRANSACTION_FORM_CHEQUE) );		    }		    break;		case TRANSACTION_FORM_DEVISE:		    gtk_option_menu_set_history ( GTK_OPTION_MENU ( widget ),						  g_slist_index ( liste_struct_devises,								  devise_par_no ( transaction -> devise )));		    verification_bouton_change_devise ();		    break;		case TRANSACTION_FORM_BANK:		    if ( transaction -> info_banque_guichet )		    {			entree_prend_focus ( widget );			gtk_entry_set_text ( GTK_ENTRY ( widget ),					     transaction -> info_banque_guichet );		    }		    break;		case TRANSACTION_FORM_VOUCHER:		    if ( transaction -> no_piece_comptable )		    {			entree_prend_focus ( widget );			gtk_entry_set_text ( GTK_ENTRY ( widget ),					     transaction -> no_piece_comptable );		    }		    break;		case TRANSACTION_FORM_CONTRA:		    if ( transaction -> relation_no_operation &&			 transaction -> relation_no_compte != -1 )		    {			if ( transaction -> montant < 0 )			    menu = creation_menu_types ( 2, transaction -> relation_no_compte, 0  );			else			    menu = creation_menu_types ( 1, transaction -> relation_no_compte, 0  );			if ( menu )			{			    struct structure_operation *contre_operation;			    /* on met en place les types et se place sur celui correspondant à l'opé */			    gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget ),						       menu );			    gtk_widget_show ( widget );			    contre_operation = operation_par_no ( transaction -> relation_no_operation,								  transaction -> relation_no_compte );			    if ( contre_operation )				place_type_formulaire ( contre_operation -> type_ope,							TRANSACTION_FORM_CONTRA,							NULL );			}			else			    gtk_widget_hide ( widget );		    }		    break;	    }	}    return TRUE;}