Tri sur Google sheets par macro javascript sur plusieurs colonnes
infm
Messages postés
29
Date d'inscription
Statut
Membre
Dernière intervention
-
infm Messages postés 29 Date d'inscription Statut Membre Dernière intervention -
infm Messages postés 29 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Trier par date dans google sheets
- Google maps satellite - Guide
- Excel trier par ordre croissant chiffre - Guide
- Dns google - Guide
- Google maps - Guide
- Google photo - Télécharger - Albums photo
3 réponses
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
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
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.
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.
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
Je n'ai pas vérifié si c'est possible comme ça sur Google Sheets
Cordialement
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
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
En espérant que ça te serve
Cordialement
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