Trie et groupes : qui peut faire quoi ?

Bonjour tous !

Je viens quérir votre aide, étant assez nouveau sur l'utilisation de Sheets, j'avoue être assez perdu.

J'ai créé un formulaire avec de multiples questions, et un tableau de réponse qui doit être public. J'ai réussi, via l'option de regroupement de colonnes, et l'option "masquer" à épargner les cellules inutiles au grand public, et à raccourcir celles qui nécessitaient d'être regroupées. Bref.

Voici ce que ça donne :

capture d ecran 2022 01 25 210023

En gros pour que vous compreniez un minimum, il s'agit d'un jeu où je propose aux différents joueurs de dire ce qu'ils ont fait. Via le formulaire ils remplissent donc un rapport, et via ce tableau, ils voient ce qu'ont fait les autres. Les lignes en vertes sont celles que j'ai comptabilisé, et qui leur rapporte des points.

Maintenant j'en viens à mes deux soucis :

- Le premier, c'est à propos des groupes. Comme vous le voyez ci-dessous, j'ai regroupé des cellules pour éviter le trop plein d'informations d'un coup :

capture d ecran 2022 01 25 210408

Sauf que le problème, c'est que seul l'éditeur (ou les) a le droit de développer/réduire ces groupes ! Alors j'ai tenté de contourné le soucis en ne présentant à mes joueurs que le strict minimum, mais si je pouvais avoir une solution pour qu'ils puissent eux aussi en tant que lecteur, cliquer sur les boutons de groupe, ce serait génial !

(edit : je précise que j'ai tenté l'option de protection des cellules, mais sauf si je m'y suis mal prit ça ne fonctionnait pas, lorsqu'un lecteur cliquais sur le "+" il était considéré lui aussi comme protégé.)

- Second soucis, c'est le tri ! En effet, une fois qu'un formulaire est rempli, c'est une ligne qui s'ajoute dans le tableau, mais celle-ci s'ajoute à la fin de toutes les autres lignes. Le truc, c'est que j'aimerais que quand ton arrive sur le tableau, on voit ce qui a été fait le plus récemment ! Alors, je peux trier et ça s'applique à tous mais dès qu'une ligne est ajoutée, elle est systématiquement indépendante de ce tri donc je dois le faire régulièrement. Peut-on l'automatiser ?

D'ailleurs, petite question supplémentaire, niveau mise en page certaines choses ne sont pas conservées lors de l'ajoute d'une ligne, comme les contours :

capture d ecran 2022 01 25 210804

Voilà voilà ! J'espère avoir été assez clair, dites moi si quelque chose ne l'est pas !

Passez tous une bonne semaine !

Bonjour,

une solution consiste à créer un nouveau fichier avec

=SORT(IMPORTRANGE("id du fichier","nom_onglet!A1:Z");1;FALSE)

ainsi tu auras

  • la protection de tes réponses au formulaire
  • le tri
  • les possibilités de regroupement des colonnes

Bonjour !

Merci pour la réponse. Cependant, j'ai tenté votre solution mais elle présente de nombreux soucis que je n'arrive pas à comprendre. Par exemple quand je tri, des lignes vides s'ajoutent sans raison en tête.

De plus, tout est désordonné, sans mise en page et des tests que j'ai fais, cela ne permet toujours pas d'utiliser les boutons de développement/réduction et le tri automatique, c'est "juste" un calque du tableau original, mais en moins bien.

Bonjour,

merci pour ton retour

cela ne permet toujours pas d'utiliser les boutons de développement/réduction

il faut les programmer de la même façon que l'original

quand je tri, des lignes vides s'ajoutent sans raison en tête

pour ce point, le mieux est que le tri se fasse sur l'original

voici un script qui fonctionne très bien sur le fichier original

// déclarer le déclencheur
function onFormSubmit(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = sheet.getActiveRange().getRow();
  var column = e.values.length + 1;
  var range = sheet.getRange(2, 1, row-1, column);
  range.sort({column: 1, ascending: false});
}

c'est "juste" un calque du tableau original, mais en moins bien.

c'est exact, plus les 2 propositions ci-dessus qui devraient améliorer

ensuite, il faut aussi peut-être mettre des MFC

mais je n'ai pas d'autres solutions

reste a minima le tri possible sur l'original, mais si tu veux aussi protéger les données, alors importrange dans une autre feuille est nécessaire

Bonjour Hidegan,

J'ai rencontré le même problème que toi pour la mise en page de mes tableaux que je voulais conserver.

Google Sheets ne le permet pas mais j'ai trouvé une petite astuce :

Il suffit d'insérer une colonne qui ne servira à rien sauf de mettre tes bordures en gras.
Puis mettre une protection sur cette colonne pour éviter les modifications.
En fin, réduire au maximum cette colonne pour qu'elle n'apparaisse plus.

Et le tour est joué ;)

Merci pour la réponse. Cependant, j'ai tenté votre solution mais elle présente de nombreux soucis que je n'arrive pas à comprendre. Par exemple quand je tri, des lignes vides s'ajoutent sans raison en tête.

probablement parce qu'il y a des validation de données qui existent plus loin que ce que le formulaire connait. Mais on peut résoudre ce point. J'ai le sentiment qu'on t'as perdu ... j'attends de tes nouvelles pour terminer ce post, avec en plus l'input de snake !

Salut tous !

J'avoue que j'avais complètement oublié cette discussion, désolé ! Et je vous avoue aussi que je suis vraiment nul et que 90% de ce que vous me conseillez me paraît venir d'une langue qui m'est inaccessible. XD

J'ai abandonné l'idée de permettre aux gens de eux-même développer/réduire les groupes de colonnes, ce n'est d'une pas si important, et de deux ça semble assez impossible sans passer par des manipulations tordues.

Par contre, je suis toujours chaud pour essayer de comprendre comment je pourrais effectuer un tri automatique de Z à A de ma colonne qui contient l'horodatage de mes données. J'ai cru comprendre que peut être via des scripts c'était possible ? Il faudrait que je sais pas, tous les X temps cette colonne soit triée automatiquement, ou dès lors qu'une nouvelle valeur est ajoutée au tableau. C'est faisable ?

Par contre, je suis toujours chaud pour essayer de comprendre comment je pourrais effectuer un tri automatique de Z à A de ma colonne qui contient l'horodatage de mes données. J'ai cru comprendre que peut être via des scripts c'était possible ? Il faudrait que je sais pas, tous les X temps cette colonne soit triée automatiquement, ou dès lors qu'une nouvelle valeur est ajoutée au tableau. C'est faisable ?

c'est ce que j'avais proposé ci-dessus

// déclarer le déclencheur
function onFormSubmit(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = sheet.getActiveRange().getRow();
  var column = e.values.length + 1;
  var range = sheet.getRange(2, 1, row-1, column);
  range.sort({column: 1, ascending: false});
}

Je rentre ça où ? Quand je vais dans outils puis "apps script" (je crois que c'est ça) ça me dit qu'il est impossible d'ouvrir le fichier.

Va dans Extensions > App Script

image

Remplace ce qui est proposé par le code ci-dessus

image

puis clique sur l'horloge à gauche pour définir un déclencheur

image

Baaaah j'suis bloqué, quand je clic sur "script apps" j'ai un nouvel onglet qui s'ouvre avec ça :

capture d ecran 2022 04 12 153154

Salut

F5 après cette erreur, en général ça passe, si tu as bien suivi les étapes indiquées.

Sinon est ce que la fonction =QUERY te parle ? Cela pourrait aussi résoudre ton souci.

Bien à toi.

Baaaah j'suis bloqué, quand je clic sur "script apps" j'ai un nouvel onglet qui s'ouvre avec ça :

donc je ne peux rien faire non plus pour t'aider

est-ce bien le fichier lui-même (qui contient les réponses du formulaire) que tu tentes d'ouvrir ? en es-tu le propriétaire ?

pour moi c'est la solution la plus simple et qui fonctionne bien

par cotre, comme numericoach propose, tu peux en effet recourir sur une autre feuille à la fonction query, ou seulement sort qui te proposera de mettre en sens inverse

C'est bien le tableau de réponse au formulaire, j'en suis le propriétaire etc.. Je comprends pas du tout pourquoi ça me donne ça, j'ai tenté de faire une recherche sur l'erreur y a pas grand chose..

Et non QUERY ça me parle pas :/

Ok ok ok j'ai du nouveau !

J'ai réussi à régler ce soucis de page qui charge pas, ça venait du fait que j'avais plusieurs comptes google drive et le principal (qui n'est pas le proprio de ce tableau) se lançait automatiquement à l'ouverture d'apps script. Bref.

J'ai donc mis le script et le déclencheur ça fonctionne, parfait !

MAIS

Déjà dans le script que tu m'as proposé ça agissait sur la colonne 1, qui pour ma part contient des cases de validation FALSE/TRUE donc ça me triait ça mais pas grave, j'ai dis dans le script que je voulais agir sur "column 2" et ça a fonctionné.

RE MAIS

Le soucis c'est que quand il me fait le tri il prend pas en compte mes lignes d'en-tête. Voici un screen de mon tableau pour mieux comprendre :

capture d ecran 2022 04 12 184832

Ici, la ligne 1 est simplement masquée. Et les lignes 2 et 3 sont mise en en-tête, je sais plus le terme exact (edit, il s'agit de l'option "figer") mais en gros elles seront toujours affichées en haut de l'écran peu importe si on fait des coups de molette de souris. Sauf que quand le script agit et tri les lignes, bah ça casse ces lignes 2 et 3 d'en-tête qui se font remplacées par la nouvelle entrée.

essaie

  var range = sheet.getRange(4, 1, row-3, column);
  range.sort({column: 2, ascending: false});

enfin, joue avec les paramètres ...

C'est bon ça fonctionne génial ! Un gros merci à toi !

Rechercher des sujets similaires à "trie groupes qui quoi"