rem: row = GTK_CTREE_ROW ( node );
context: void ouverture_node_tiers ( GtkWidget *arbre,			    GtkCTreeNode *node,			    gpointer null ){			      GtkCTreeRow *row;  gchar *text[4];  GtkCTreeNode *node_insertion;  /* freeze le ctree */  gtk_clist_freeze ( GTK_CLIST ( arbre_tiers ));  row = GTK_CTREE_ROW ( node );  /* on commence par virer la ligne bidon qui tait attache  ce noeud */  gtk_ctree_remove_node ( GTK_CTREE ( arbre_tiers ),			  row -> children );  /* sparation entre ouverture de tiers ( 0 ) et ouverture de compte ( 1 ) */  if ( row -> level == 1)    {      /* c'est une ouverture de tiers */      guint no_tiers_selectionne;      GSList *pointeur_ope;      gint i;      no_tiers_selectionne = ((struct struct_tiers *)( gtk_ctree_node_get_row_data ( GTK_CTREE ( arbre_tiers ),										     node ))) -> no_tiers;      /* on va scanner tous les comptes, ds qu'un tiers correspondant au tiers slectionn est trouv */      /* on affiche le nom du compte */      p_tab_nom_de_compte_variable = p_tab_nom_de_compte;      for ( i = 0 ; i < nb_comptes ; i++ )	{	  pointeur_ope = LISTE_OPERATIONS;	  while ( pointeur_ope )	    {	      struct structure_operation *operation;	      	      operation = pointeur_ope -> data;	      if ( operation -> tiers == no_tiers_selectionne )		{		  /* affiche le compte courant */		  text[2] = calcule_total_montant_tiers_par_compte ( operation -> tiers,								     operation -> no_compte );		  if ( etat.affiche_nb_ecritures_listes		       &&		       nb_ecritures_par_comptes )		    text[0] = g_strconcat ( NOM_DU_COMPTE,					    " (",					    itoa ( nb_ecritures_par_comptes ),					    ")",					    NULL );		  else		    text[0] = NOM_DU_COMPTE;		  text[1] = NULL;		  text[3] = NULL;		  node_insertion = gtk_ctree_insert_node ( GTK_CTREE ( arbre_tiers ),							   node,							   NULL,							   text,							   5,							   NULL,							   NULL,							   NULL,							   NULL,							   FALSE,							   FALSE );		  /* associe le no de compte  la ligne du compte */		  		  gtk_ctree_node_set_row_data ( GTK_CTREE ( arbre_tiers ),						node_insertion,						GINT_TO_POINTER ( i ));		  /* on met une ligne bidon pour pouvoir l'ouvrir */		  gtk_ctree_insert_node ( GTK_CTREE ( arbre_tiers ),					  node_insertion,					  NULL,					  text,					  5,					  NULL,					  NULL,					  NULL,					  NULL,					  FALSE,					  FALSE );		  pointeur_ope = NULL;		}	      else		pointeur_ope = pointeur_ope -> next;	    }	      	  p_tab_nom_de_compte_variable++;	}    }  else    {      /* c'est une ouverture d'un compte */      /*       cette fois, on fait le tour de toutes les ops du compte pour afficher celles qui correspondent au tiers */      guint no_tiers_selectionne;      GSList *pointeur_ope;      no_tiers_selectionne = ((struct struct_tiers *)( gtk_ctree_node_get_row_data ( GTK_CTREE ( arbre_tiers ),										     GTK_CTREE_ROW ( node ) -> parent ))) -> no_tiers;      p_tab_nom_de_compte_variable = p_tab_nom_de_compte + GPOINTER_TO_INT ( gtk_ctree_node_get_row_data ( GTK_CTREE ( arbre_tiers ),													   node ));      pointeur_ope = LISTE_OPERATIONS;      while ( pointeur_ope )	{	  struct struct_devise *devise_operation;	  struct structure_operation *operation;	  operation = pointeur_ope -> data;	  devise_operation = g_slist_find_custom ( liste_struct_devises,						   GINT_TO_POINTER ( operation -> devise ),						   ( GCompareFunc ) recherche_devise_par_no ) -> data;	  if ( ( operation -> tiers == no_tiers_selectionne )	       &&	       !operation -> no_operation_ventilee_associee )	    {	      if ( operation -> notes )		text[0] = g_strdup_printf ( "%d/%d/%d : %4.2f %s [ %s ]",					    operation -> jour,					    operation -> mois,					    operation -> annee,					    operation -> montant,					    devise_operation -> code_devise,					    operation -> notes );	      else		text[0] = g_strdup_printf ( "%d/%d/%d : %4.2f %s",					    operation -> jour,					    operation -> mois,					    operation -> annee,					    operation -> montant,					    devise_operation -> code_devise );	      text[1] = NULL;	      text[2] = NULL;	      text[3] = NULL;	      node_insertion = gtk_ctree_insert_node ( GTK_CTREE ( arbre_tiers ),						       node,						       NULL,						       text,						       5,						       NULL,						       NULL,						       NULL,						       NULL,						       FALSE,						       FALSE ); 	      /* on associe  cette op l'adr de sa struct */	      gtk_ctree_node_set_row_data ( GTK_CTREE ( arbre_tiers ),					    node_insertion,					    operation );	    }	  pointeur_ope = pointeur_ope -> next;	}    }  /* defreeze le ctree */  gtk_clist_thaw ( GTK_CLIST ( arbre_tiers ));}