This is possibly because your triggering control ua_code
is being set with a calculation, as opposed to the control actually responding to a user-initiated value change?
The formal XForms spec isnt explicit about it, but does say:
Dispatched in response to: a change to an instance data node bound to a core form control.
which doesn't really distinguish between a change in response to a control due to user input vs an 'automated' change due to a calculation associated with that control... Perhaps @LN know's whether Collect also fires these xforms-value-changed events after (just) re-calculating a node? Perhaps Collect vs Enketo differ slightly in this regard...
It might be worth trying to move it all under your actual triggers: ua_choix_carte_1
, ua_choix_liste_1
, ua_choix_carte_2
, ..., instead of your ostensibly consolidated trigger (ie the ua_code
calculation). Although this cant readily be expressed in XLSForm and would require manually tweaking the raw XML XForm [as discussed here: Using two variable names under the Trigger column - #9 by ahblake]