rem: case 0: return ( NULL ); break;    case 1:  return ( g_strdup_printf ("%02d/%02d/%04d", operation -> jour, operation -> mois, operation -> annee )); break;    case 2: if ( operation -> jour_bancaire )  return ( g_strdup_printf ("%02d/%02d/%04d", operation -> jour_bancaire, operation -> mois_bancaire, operation -> annee_bancaire )); else return ( NULL ); break;    case 3: if ( operation -> tiers ) { liste_tmp = g_slist_find_custom ( liste_struct_tiers, GINT_TO_POINTER ( operation -> tiers ), ( GCompareFunc ) recherche_tiers_par_no );  if ( liste_tmp ) return ( (( struct struct_tiers * )( liste_tmp -> data )) -> nom_tiers ); else
add: case 0:
context: gchar *recherche_contenu_cellule ( struct structure_operation *operation,				   gint no_affichage ){  GSList *liste_tmp;  gchar *temp;  gdouble montant;  switch ( no_affichage )    {    case 0:      return ( NULL );      break;      /* mise en forme de la date */    case 1:      /* FIXME: should use locale + strftime for that */      return ( g_strdup_printf ("%02d/%02d/%04d", 				operation -> jour,				operation -> mois,				operation -> annee ));      break;      /* mise en forme de la date de valeur */    case 2:      if ( operation -> jour_bancaire )	/* FIXME: should use locale + strftime for that */	return ( g_strdup_printf ("%02d/%02d/%04d",				  operation -> jour_bancaire,				  operation -> mois_bancaire,				  operation -> annee_bancaire ));      else	return ( NULL );      break;      /* mise en forme du tiers */    case 3:      if ( operation -> tiers )	{	  liste_tmp = g_slist_find_custom ( liste_struct_tiers,					    GINT_TO_POINTER ( operation -> tiers ),					    ( GCompareFunc ) recherche_tiers_par_no );		  if ( liste_tmp )	    return ( (( struct struct_tiers * )( liste_tmp -> data )) -> nom_tiers );	  else	    return ( NULL );	}      else	return ( NULL );      break;      /* mise en forme de l'ib */    case 4:      temp = NULL;      if ( operation -> imputation )	{	  liste_tmp = g_slist_find_custom ( liste_struct_imputation,					    GINT_TO_POINTER ( operation -> imputation ),					    ( GCompareFunc ) recherche_imputation_par_no );	  if ( liste_tmp )	    {	      GSList *liste_tmp_2;	      	      liste_tmp_2 = g_slist_find_custom ( (( struct struct_categ * )( liste_tmp -> data )) -> liste_sous_categ,						  GINT_TO_POINTER ( operation -> sous_imputation ),						  ( GCompareFunc ) recherche_sous_imputation_par_no );	      if ( liste_tmp_2 )		temp = g_strconcat ( (( struct struct_categ * )( liste_tmp -> data )) -> nom_categ,				     " : ",				     (( struct struct_sous_categ * )( liste_tmp_2 -> data )) -> nom_sous_categ,				     NULL );	      else		temp = (( struct struct_categ * )( liste_tmp -> data )) -> nom_categ;	    }	}      return ( temp );      break;      /* mise en forme du dbit */    case 5:      if ( operation -> montant < 0 )	{	  temp = g_strdup_printf ( "%4.2f", -operation -> montant );	  /* si la devise en cours est diffrente de celle de l'op, on la retrouve */	  if ( !devise_operation	       ||	       devise_operation -> no_devise != operation -> devise )	    devise_operation = g_slist_find_custom ( liste_struct_devises,						     GINT_TO_POINTER ( operation -> devise ),						     ( GCompareFunc ) recherche_devise_par_no ) -> data;	  if ( devise_operation -> no_devise != DEVISE )	    temp = g_strconcat ( temp,				 "(",				 devise_name ( devise_operation ),				 ")",				 NULL );	  return ( temp );	}      else	return ( NULL );      break;      /* mise en forme du crdit */    case 6:      if ( operation -> montant >= 0 )	{	  temp = g_strdup_printf ( "%4.2f", operation -> montant );	  /* si la devise en cours est diffrente de celle de l'op, on la retrouve */	  if ( !devise_operation	       ||	       devise_operation -> no_devise != operation -> devise )	    devise_operation = g_slist_find_custom ( liste_struct_devises,						     GINT_TO_POINTER ( operation -> devise ),						     ( GCompareFunc ) recherche_devise_par_no ) -> data;	  if ( devise_operation -> no_devise != DEVISE )	    temp = g_strconcat ( temp,				 "(",				 devise_name ( devise_operation ),				 ")",				 NULL );	  return ( temp );	}      else	return ( NULL );      break;      /* mise en forme du solde */      /* il a dj t calcul pour l'opration courante, il suffit de le renvoyer */    case 7:      return ( g_strdup_printf ( "%4.2f",				 solde_courant_affichage_liste ));      break;      /* mise en forme du montant dans la devise du compte */    case 8:      if ( operation -> devise != DEVISE )	{	  /* on doit calculer et afficher le montant de l'op */	  montant = calcule_montant_devise_renvoi ( operation -> montant,						    DEVISE,						    operation -> devise,						    operation -> une_devise_compte_egale_x_devise_ope,						    operation -> taux_change,						    operation -> frais_change );	  return ( g_strdup_printf ( "(%4.2f %s)",				     montant,				     devise_name ( devise_compte ) ));	}      else	return ( NULL );            break;  /* mise en forme du moyen de paiement */    case 9:      if ( operation -> type_ope	   &&	   TYPES_OPES )	{	  liste_tmp = g_slist_find_custom ( TYPES_OPES,					    GINT_TO_POINTER ( operation -> type_ope ),					    (GCompareFunc) recherche_type_ope_par_no );	  if ( liste_tmp )	    return ( ((struct struct_type_ope *)(liste_tmp -> data)) -> nom_type );	  else	    return ( NULL );	}      else	return ( NULL );      break;      /* mise en forme du no de rapprochement */    case 10:      if ( operation -> no_rapprochement )	{	  liste_tmp = g_slist_find_custom ( liste_no_rapprochements,					    GINT_TO_POINTER ( operation -> no_rapprochement ),					    (GCompareFunc) recherche_no_rapprochement_par_no );	  if ( liste_tmp )	    return ( ((struct struct_no_rapprochement *)(liste_tmp->data)) -> nom_rapprochement );	  else	    return ( NULL );	}      else	return ( NULL );      break;      /* mise en place de l'exo */    case 11:      if ( operation -> no_exercice )	{	  liste_tmp = g_slist_find_custom ( liste_struct_exercices,					    GINT_TO_POINTER ( operation -> no_exercice ),					    (GCompareFunc) recherche_exercice_par_no );	  if (liste_tmp)	    return ( ((struct struct_exercice *)(liste_tmp->data)) -> nom_exercice );	  else	    return ( NULL );	}      else	return ( NULL );      break;      /* mise en place des catgories */    case 12:      temp = NULL;      if ( operation -> categorie )	{	  /* c'est une categ : ss categ */	  liste_tmp = g_slist_find_custom ( liste_struct_categories,					    GINT_TO_POINTER ( operation -> categorie ),					    ( GCompareFunc ) recherche_categorie_par_no );	  if ( liste_tmp )	    {	      GSList *liste_tmp_2;	      	      liste_tmp_2 = g_slist_find_custom ( (( struct struct_categ * )( liste_tmp -> data )) -> liste_sous_categ,						  GINT_TO_POINTER ( operation -> sous_categorie ),						  ( GCompareFunc ) recherche_sous_categorie_par_no );	      if ( liste_tmp_2 )		temp = g_strconcat ( (( struct struct_categ * )( liste_tmp -> data )) -> nom_categ,				     " : ",				     (( struct struct_sous_categ * )( liste_tmp_2 -> data )) -> nom_sous_categ,				     NULL );	      else		temp = (( struct struct_categ * )( liste_tmp -> data )) -> nom_categ;	      	    }	}      else	{	  if ( operation -> relation_no_operation )	    {	      /* c'est un virement */	      if ( operation -> relation_no_compte == -1 )		{		  if ( operation -> montant < 0 )		    temp = _("Transfer to a deleted account");		  else		    temp = _("Transfer from a deleted account");		}	      else		{		  gpointer **save_ptab;		  save_ptab = p_tab_nom_de_compte_variable;		  p_tab_nom_de_compte_variable = p_tab_nom_de_compte + operation -> relation_no_compte;		  if ( operation -> montant < 0 )		    temp = g_strdup_printf ( _("Transfer to %s"),					     NOM_DU_COMPTE );		  else		    temp = g_strdup_printf ( _("Transfer from %s"),					     NOM_DU_COMPTE );		  p_tab_nom_de_compte_variable = save_ptab;		}	    }	  else	    {	      /* vrification si l'opration est ventile */	      if ( operation -> operation_ventilee )		temp = _("Breakdown of transaction");	    }	}      return ( temp );      break;      /* mise en forme R/P */    case 13:      if ( operation -> pointe == 1 )	return ( _("P") );      else	{	  if ( operation -> pointe == 2 )	    return ( _("R") );	  else		    {	      if ( operation -> pointe == 3 )		return ( _("T"));	      else		return ( NULL );	    }	}      break;      /* mise en place de la pice comptable */    case 14:      return ( operation -> no_piece_comptable );      break;      /* mise en forme des notes */    case 15:      return ( operation -> notes );      break;      /* mise en place de l'info banque/guichet */    case 16:      return ( operation -> info_banque_guichet );      break;      /* mise en place du no d'op */    case 17:      return ( itoa ( operation -> no_operation ));      break;      /* mise en place du no de chque/virement */    case 18:      if ( operation -> contenu_type )	return ( g_strconcat ( "(",			       operation -> contenu_type,			       ")",			       NULL ));      else	return ( NULL );      break;    }  return ( NULL );}