[SCRIPT] Tri par 2 colonnes

Bonjour,

Comment trier des données selon 2 colonnes ?

actuellement je tri mes données par une colonne avec ça :

feuilleAPI.getRange(2, 1, output.length, output[0].length).setValues(output).sort({column: 1, ascending: false});

J'ai essayé de plusieurs façon dont celle-ci mais sans succès :

feuilleAPI.getRange(2, 1, output.length, output[0].length).setValues(output).sort([{column: 1, ascending: false},{column: 13, ascending: false}]);

Pour info en colonne 1, j'ai une série de noms dont certains commencent par "OLD-", et en colonne 13 j'ai des dates et je souhaite obtenir un tri comme ceci

OLD-X________01/02/2020
OLD-XX______05/04/2021
XX___________02/02/2020
XXX__________12/12/2021

merci !

bonne journée

Bonjour,

  • XX, XXX ce sont des nombres ?
  • pourquoi trier aussi en colonne 13, dans ton jeu de données il n'y a aucun doublon en colonne 1... est-ce que les dates sont des dates ou du texte ?
  • quelle est l'erreur que tu trouves ? pour moi il n'y a pas d'erreur de syntaxe, mais donc probablement un problème de données (texte/date)
  • exemple type simplifié qui fonctionne
function trier_sort() {
  var f = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('mySheet');
  var r = f.getRange(2, 1, f.getLastRow() - 1, f.getLastColumn());
  r.sort([{ column: 1, ascending: true }, { column: 2, ascending: false }]);
}

Bonjour,

pourquoi trier aussi en colonne 13, dans ton jeu de données il n'y a aucun doublon en colonne 1... est-ce que les dates sont des dates ou du texte ?

car il y a des éléments identiques avec des noms différents ( ancien contrat pour être précis ) et il faut que je les garde

quelle est l'erreur que tu trouves ? pour moi il n'y a pas d'erreur de syntaxe, mais donc probablement un problème de données (texte/date)

Possible oui, je n'y avais pas pensé car je me sers de ces dates pour des formules différentes et elles sont bien reconnues en tant que "date"

j'ai fait un copier/coller des données sur un Sheets partagé

https://docs.google.com/spreadsheets/d/1auEmPpOKvCZl-XpB-jG-6wyh_073o_SjICn4npNVagY/edit?usp=sharing

et j'ai fait un tableau avec le résultat attendu

tes dates sont bien des dates = ok

mais ton tri est super complexe, car si je comprends bien, tu prends les OLD que tu tries et ensuite les nouveaux que tu tries et ajoutes en dessous ! Il y a donc un tri à 3 étages :

  1. OLD/pasOLD
  2. puis Fullname
  3. puis date,

et si on n'a pas la notion séparée de OLD/pasOLD il faut traiter la base de données en amont de l'écriture dans la feuille

je m'en occupe sous peu

du coup j'ai contourné le problème en faisant différemment et plus simple.

étant donnée que mon nombre de "OLD" est fixe.... j'ai rajouter un deuxième script pour trier les données en fonction de mes lignes "OLD".

alternative simple pour le moment mais ça fonctionne

function trier_sort() {
  var classeurAPI = SpreadsheetApp.getActiveSpreadsheet();
  var feuilleAPI = classeurAPI.getSheetByName('API');
  var cellOLD = feuilleAPI.getRange('A2:R37');
  var cell = feuilleAPI.getRange('A38:R');
  cellOLD.sort([{ column: 13, ascending: true }]);
  cell.sort([{ column: 13, ascending: true }]);
}

ben voilà, c'est super !

il faut parfois penser simple mais c'est pas toujours ce qui vient en premier ahah

Rechercher des sujets similaires à "script tri colonnes"