rem: if ( operation -> relation_no_operation )
add: if ( operation -> relation_no_operation && operation -> relation_no_compte != -1 )
context: void completion_operation_par_tiers_echeancier ( void ){    struct struct_tiers *tiers;    struct structure_operation *operation;    gint no_compte;    GSList *pointeur_ope;    gchar *char_tmp;    /* s'il y a quelque chose dans les crédit ou débit ou catégories, on se barre */    if ( gtk_widget_get_style ( widget_formulaire_echeancier[SCHEDULER_FORM_DEBIT] ) == style_entree_formulaire[ENCLAIR]	 ||	 gtk_widget_get_style ( widget_formulaire_echeancier[SCHEDULER_FORM_CREDIT] ) == style_entree_formulaire[ENCLAIR]	 ||	 gtk_widget_get_style ( GTK_COMBOFIX (widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY])->entry ) == style_entree_formulaire[ENCLAIR] )	return;    tiers = tiers_par_nom ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_PARTY])),			    0 );    /*   si nouveau tiers,  on s'en va simplement */    if ( !tiers )	return;    /* on fait d'abord le tour du compte courant pour recherche une opé avec ce tiers */    /* s'il n'y a aucune opé correspondante, on fait le tour de tous les comptes */    no_compte = recupere_no_compte ( widget_formulaire_echeancier[SCHEDULER_FORM_ACCOUNT] );    p_tab_nom_de_compte_variable = p_tab_nom_de_compte + no_compte;    operation = NULL;    pointeur_ope = LISTE_OPERATIONS;    while ( pointeur_ope )    {	struct structure_operation *ope_test;	ope_test = pointeur_ope -> data;	if ( ope_test -> tiers == tiers -> no_tiers )	{	    if ( operation )	    {		if ( g_date_compare ( ope_test -> date,				      operation -> date ) >= 0 )		    operation = ope_test;	    }	    else		operation = ope_test;	}	pointeur_ope = pointeur_ope -> next;    }    if ( !operation )    {	/* aucune opération correspondant à ce tiers n'a été trouvée dans le compte courant */	/*       on recherche dans les autres comptes, la première trouvée fera l'affaire */	gint i;	p_tab_nom_de_compte_variable = p_tab_nom_de_compte;	for ( i = 0 ; i < nb_comptes ; i++ )	{	    if ( i != no_compte )	    {		pointeur_ope = LISTE_OPERATIONS;		while ( pointeur_ope )		{		    struct structure_operation *ope_test;		    ope_test = pointeur_ope -> data;		    if ( ope_test -> tiers == tiers -> no_tiers )		    {			operation = ope_test;			pointeur_ope = NULL;			i = nb_comptes;		    }		    else			pointeur_ope = pointeur_ope -> next;		}	    }	    p_tab_nom_de_compte_variable++;	}    }    /* si on n'a trouvé aucune opération, on se tire */    if ( !operation )	return;    /* remplit les différentes entrées du formulaire */    /* remplit les montant */    if ( operation -> montant < 0 )    {	GtkWidget *menu;	entree_prend_focus ( widget_formulaire_echeancier[SCHEDULER_FORM_DEBIT] );	gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_DEBIT] ),			     g_strdup_printf ( "%4.2f",					       -operation -> montant ));	/* met le menu des types débits */	if ( (menu = creation_menu_types ( 1,					   recupere_no_compte ( widget_formulaire_echeancier[SCHEDULER_FORM_ACCOUNT] ),					   1 )))	{	    gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ),				       menu );	    gtk_widget_show ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] );	}	else	    gtk_widget_hide ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] );    }    else    {	GtkWidget *menu;	entree_prend_focus ( widget_formulaire_echeancier[SCHEDULER_FORM_CREDIT] );	gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_CREDIT] ),			     g_strdup_printf ( "%4.2f",					       operation -> montant ));	/* met le menu des types crédits */	if ( (menu = creation_menu_types ( 2,					   recupere_no_compte ( widget_formulaire_echeancier[SCHEDULER_FORM_ACCOUNT] ),					   1 )))	{	    gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ),				       menu );	    gtk_widget_show ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] );	}	else	    gtk_widget_hide ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] );    }    /* met la devise */    gtk_option_menu_set_history ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_DEVISE] ),				  g_slist_index ( liste_struct_devises,						  devise_par_no ( operation -> devise )));    /* mise en forme des catégories */    /* vérifie si c'est un virement */    if ( operation -> relation_no_operation )    {	/* c'est un virement, on l'affiche */	entree_prend_focus ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY]);	p_tab_nom_de_compte_variable = p_tab_nom_de_compte + operation -> relation_no_compte;	gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY] ),				g_strconcat ( COLON(_("Transfer")),					      NOM_DU_COMPTE,					      NULL ));    }    else    {	char_tmp = nom_categ_par_no ( operation -> categorie,				      operation -> sous_categorie );		if ( char_tmp )	{	    entree_prend_focus ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY]);	    gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY] ),				    char_tmp );	}    }    /* met l'option menu du type d'opé */    if ( GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ))    {	gint place_type;	place_type = cherche_no_menu_type_echeancier ( operation -> type_ope );	/*       si la place est trouvée, on la met, sinon on met à la place par défaut */	if ( place_type != -1 )	    gtk_option_menu_set_history ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ),					  place_type );	else	{	    p_tab_nom_de_compte_variable = p_tab_nom_de_compte + operation -> no_compte;	    if ( operation -> montant < 0 )		place_type = cherche_no_menu_type_echeancier ( TYPE_DEFAUT_DEBIT );	    else		place_type = cherche_no_menu_type_echeancier ( TYPE_DEFAUT_CREDIT );	    if ( place_type != -1 )		gtk_option_menu_set_history ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ),					      place_type );	    else	    {		struct struct_type_ope *type;		gtk_option_menu_set_history ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ),					      0 );		/*  on met ce type par défaut, vu que celui par défaut marche plus ... */		if ( operation -> montant < 0 )		    TYPE_DEFAUT_DEBIT = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ) -> menu_item ),										"no_type" ));		else		    TYPE_DEFAUT_CREDIT = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ) -> menu_item ),										 "no_type" ));		/* récupère l'adr du type pour afficher l'entrée si nécessaire */		type = gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ) -> menu_item ),					     "adr_type" );		if ( type -> affiche_entree )		    gtk_widget_show ( widget_formulaire_echeancier[SCHEDULER_FORM_CHEQUE] );	    }	}    }    /* met en place l'exercice */    gtk_option_menu_set_history (  GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_EXERCICE] ),				   cherche_no_menu_exercice ( operation -> no_exercice,							      widget_formulaire_echeancier[SCHEDULER_FORM_EXERCICE] ));    /* met en place l'imputation budgétaire */    char_tmp = nom_imputation_par_no ( operation -> imputation,				       operation -> sous_imputation );   if ( char_tmp )    {	entree_prend_focus ( widget_formulaire_echeancier[SCHEDULER_FORM_BUDGETARY]);	gtk_combofix_set_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_BUDGETARY] ),				char_tmp );    }    /*   remplit les notes */    if ( operation -> notes )    {	entree_prend_focus ( widget_formulaire_echeancier[SCHEDULER_FORM_NOTES] );	gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_NOTES] ),			     operation -> notes );    }}