Bonjour cher membre et je remercie d'avance pour votre éventuel collaboration,
Voici mon problème: sur une feuille google sheets j'ai 13 macros, ce que j'aimerais ce serait de pouvoir lancer l'une d'elle à partir d'une liste déroulante.
Puisque ces macros servent surtout a reconditionner un tableau et trier celui-ci selon différent critère, il est donc plus facile de choisir celui que l'on veut via cette liste.
image une sans tri:
image avec tri sur la colonne "date 8" le nom des macros se trouve sur la première ligne:
La première ligne contient seulement le nom de la macro de la colonne
la liste déroulante ce trouve en "B2" car la première ligne sera supprimer c'est pour le besoin de l'explication.
Dernière précision les données de l liste pourraient changer l'année suivante car cette feuille sera recopier pour l'année suivante mais avec de nouvelle données en ligne 3 et 4 (lieu et date).
Voici le code en ma possession
function D1() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('1:1').activate();
spreadsheet.getActiveRangeList().setBackground('#ffffff');
spreadsheet.getRange('E1').activate();
spreadsheet.getActiveRangeList().setBackground('#ffff00');
spreadsheet.getRange('6:43').activate()
.sort([{column: 5, ascending: false}, {column: 4, ascending: false}, {column: 3, ascending: true}, {column: 1, ascending: true}, {column: 2, ascending: true}]);
spreadsheet.getRange('E44').activate();
spreadsheet.getCurrentCell().setValue(' ');
spreadsheet.getRange('E6').activate();
};
function onEdit(e) {
const range = e.range;
if ((range.getRow()===1) && (range.getColumn()===2)){
if (range.getValue()==="x" ){D2();
}}}
function D2() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('1:1').activate();
spreadsheet.getActiveRangeList().setBackground('#ffffff');
spreadsheet.getRange('F1').activate();
spreadsheet.getActiveRangeList().setBackground('#ffff00');
spreadsheet.getRange('E:E').activate();
spreadsheet.getActiveSheet().hideColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns());
spreadsheet.getRange('W1').activate();
spreadsheet.getCurrentCell().setValue(' ');
spreadsheet.getRange('6:43').activate()
.sort([{column: 6, ascending: false}, {column: 4, ascending: false}, {column: 3, ascending: true}, {column: 1, ascending: true}, {column: 2, ascending: true}]);
spreadsheet.getRange('F6').activate();
};
mais le code pour "D2" ne fonctionne pas.
P.S.: je ne suis pas programmateur j'essaye de me débrouiller, c'est pour cela que j'ai besoin de votre aide.
https://docs.google.com/spreadsheets/d/1_jbo8VXvpWsG-3JYz9uXXT1ssjDTmpyIRNcLmZzILpM/edit?usp=sharing
merci d'avance
Mbelle