Affecter un code automatiquement à une entrée d'une liste déroulante

Bonjour, sujet surement déjà traité mais je souhaiterais qu’un choix dans une liste déroulante entraine automatiquement l’affection d’un code dans la colonne suivante.
Par exemple dans une liste je choisis « Achat produit » et cela affiche le code comptable « 6000x » correspondant. Si je choisis « Achat service » c’est le code « 6100x » qui s’affiche. J’ai fait une colonne intermédiaire qui récupère la valeur du menu déroulant mais après… je bloque :slight_smile:

Bonjour, je vois au moins deux possibilités :

  • soit vos options sont gérées dans une table dédiée (par exemple, la ligne « Achat produit » aura comme attribut, dans une colonne Code, « 6000x ») ; c’est le mieux si vous avez beaucoup d’options possibles et possiblement plusieurs attributs pour chaque option
  • soit les choix sont gérées directement dans la liste à choix.

Dans le premier cas, vous pourrez obtenir le code via une formule, en utilisant la notion par points : References and lookups - Grist Help Center

Dans le second cas, vous allez utiliser une formule pour dire en gros si la colonne A vaut « Achat produit » alors la colonne B vaut 6000x :

if $A == "Achat produit":
  return "6000x"
elif $A == "Achat service":
  return "6100x"
else:
  None
1 « J'aime »

Pour ma part je passerais par un lookupOne dans une formule d’initialisation.
Il faut une table de correspondance (par exemple « Plan comptable ») avec une colonne ayant l’intitulé et une autre le compte comptable.
Ensuite vous créez votre colonne avec une formule d’initialisation qui fait un Plan_comptable.lookupOne(Intitule=$Intitule).Compte_comptable. En paramétrant une mise à jour de la formule d’initialisation à chaque modification de la colonne Initulé où vous saisissez « Achat service ».
Ou, encore mieux, plutôt qu’une colonne choix unique pour la liste déroulante, vous mettez une colonne Référence (qui pointe vers la table de correspondance). Et il suffit d’une formule Intitule.Compte_comptable pour récupérer le compte.

1 « J'aime »