Tri sur Google sheets par macro javascript sur plusieurs colonnes

Signaler
Messages postés
25
Date d'inscription
jeudi 20 mars 2008
Statut
Membre
Dernière intervention
15 février 2020
-
infm
Messages postés
25
Date d'inscription
jeudi 20 mars 2008
Statut
Membre
Dernière intervention
15 février 2020
-
Bonjour,

Bonjour,

Je viens de lire les infos sur sujet voisin .
Je sais faire ce qui est indiqué.
En revanche je ne parviens pas à créer le script (javascript) pour que le tri se fasse sur plusieurs colonnes.
Je veux dire :
tri de la feuille entière (voir plus loin !)
tri à partir disons de la colonne D
suivi de tri à partir de la colonne A
ceci afin que pour les lignes de même valeur sur D, elles soient en ordre sur A
Par exemple tri sur dépt puis sur noms donc ordre alphabétique des noms d'un même département.

Je précise feuille et non plage.
Parce que pour plage on peut le faire en manuel (càd en le faisant au clavier)
Mais il me faut définir la plage or elle est évolutive.
Pas trouvé comment indiquer le second terme de la plage par une variable correspondant au nombre de lignes (NBVAL) Toujours erreur de syntaxe !
(Peut-être la définir au maximum par exemple 3:65000 ? quel est le maximum ?)

Pour tri de la feuille on ne peut (je ne sais faire !) indiquer plus d'une colonne.

Donc si tri feuille je n'arrive pas à prendre en charge deux colonnes
si tri plage je n'arrive pas à définir la zone de tri avec variable (nb de lignes)

Merci pour toute aide

BM


Configuration: Windows / Chrome 80.0.3987.100

3 réponses

Messages postés
2365
Date d'inscription
dimanche 3 mai 2009
Statut
Membre
Dernière intervention
15 février 2020
508
Bonjour,

Si on peut trier plusieurs colonnes sur la feuille entière et sans macro ; procédure :

• Ctrl+A pour sélectionner la feuille entière (ou clic dans la case à gauche de A et au dessus de 1)
• Onglet "données" >> trier une plage
• Cocher si la ligne 1 de la feuille comporte les en-têtes (si ce n'es pas le cas il faudra sélectionner à partir de la première ligne du tableau)
• Trier par colonne (choix) A>Z
• Ajouter une colonne pour le tri
• puis par colonne (choix) A>Z.....

Cordialement
Messages postés
25
Date d'inscription
jeudi 20 mars 2008
Statut
Membre
Dernière intervention
15 février 2020

Merci mais ce n'est pas ce que je cherche.
Cela je sais le faire.

Mais tous les utilisateurs ne sauront pas le faire.
Donc je crée des boutons auxquels j'associe les différents tris utiles.
Et là il faut préparer des macros.
Ces macros sont en java script
j'en ai créé pour plage à trier du type suivant :


function TriDateEtNom() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('3:1000').activate()
.sort([{column: 4, ascending: true}, {column: 1, ascending: true}]);
};

Dans cette macro mon problème c'est que le 1000 (dernière ligne) soit remplacé par une variable car le nombre de lignes est évolutif et cela je n'ai pas réussi.

J'ai choisi le tri donc d'une plage car pour tri d'une feuille je n'ai pas trouvé la syntaxe permettant de trier sur plusieurs colonnes comme ci-dessus la colonne 4 suivie de la colonne 1.

Voilà : trouver le script (en javascript) pour remplacer ce que l'on fait facilement en manuel.

J'ai construit des scripts sur feuille à trier ressemblant à celui ci-dessus mais toujours erreur, il manque qq chose et je ne vois pas ce qui manque?


A suivre donc.
Messages postés
2365
Date d'inscription
dimanche 3 mai 2009
Statut
Membre
Dernière intervention
15 février 2020
508
Bonjour,

Je ne vais pas être d'un grand secours sur cette macro ; je n'y connais rien.

Si ça peut t'aider, pour un tableau personnel sur excel j'avais enregistré une macro de tri avec à la fin sélection de la dernière cellule comportant une date dans la colonne A.

Après le tri j'avais sélectionné la dernière cellule tout en bas de la colonne du tableau puis j'avais fait Ctrl + flèche vers le haut pour remonter à la dernière cellule avec valeur.
voici le code qu'il en était ressorti

Sub Boutton()

ActiveSheet.Unprotect
Range("A7:R800").Sort key1:=Range("A7"), Order1:=xlAscending

ActiveWindow.SmallScroll Down:=585
Range("A800").Select
Selection.End(xlUp).Select
ActiveSheet.Protect

End Sub


Je n'ai pas vérifié si c'est possible comme ça sur Google Sheets

Cordialement
PapyLuc51
Messages postés
2365
Date d'inscription
dimanche 3 mai 2009
Statut
Membre
Dernière intervention
15 février 2020
508
RE:

J'ai fait un essai sur Sheets avec les mêmes actions que ci-dessus sauf le retrait de la protection en début et la protection à la fin et voici le script qu'il en résulte
tri sur une plage A3:D100 en commençant par la colonne D, puis la colonne A ; sélection de la cellule A100 puis avec le Ctrl+flèche vers le haut pour le retour à la dernière cellule renseignée de la colonne A

/** @OnlyCurrentDoc */

function Trier() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A3:D100').activate()
.sort([{column: 4, ascending: true}, {column: 1, ascending: true}]);
spreadsheet.getRange('A100').activate();
spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.UP).activate();
};


En espérant que ça te serve

Cordialement
infm
Messages postés
25
Date d'inscription
jeudi 20 mars 2008
Statut
Membre
Dernière intervention
15 février 2020
> PapyLuc51
Messages postés
2365
Date d'inscription
dimanche 3 mai 2009
Statut
Membre
Dernière intervention
15 février 2020

Merci pour ces propositions, je regarde dès que possible.

BM