Bonton sous condition
Bonjour,
J'aimerai créer un bouton qui ajouterai la valeur d'une liste déroulante dans une autre : pour ça, j'ai réussi à m'en sortir.
Sauf que j'aimerai que ce bouton ajoute la valeur de la liste déroulante ajoute cette valeur dans une cellule différente (chacune sur une page différente) en fonction qu'une case à cocher.
Je m'explique, je voudrais que si la case à cocher "1" est coché que la valeur s'ajoute dans une cellule prédéfini situé sur une page de mon document, mais que si à la place de la case à cocher "1" c'est la "2" qui est coché, qu'il l'ajoute à une cellule situé sur une seconde page. Et ainsi avec 3 case à coché.
Merci d'avance
Charles
https://docs.google.com/spreadsheets/d/1ihTZB9jStuje1d4Vt1mWM2JxlTMZ1YRnY1PtMGYWIxA/edit?usp=sharing
Bonjour,
Voici un script à assigner à ton bouton :
function ajoutListeToRange() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
/* Nom des feuilles, à changer */
const sheetBase = ss.getSheetByName('Base');
const sheetR1 = ss.getSheetByName('Résultat 1');
const sheetR2 = ss.getSheetByName('Résultat 2');
const sheetR3 = ss.getSheetByName('Résultat 3');
/* chiffres et plages associés, dans cet exemple 1 = Résultat 1 B3, 2 = Résultat 2 B3,3= Résultat 3 B3. */
const listeRange = [[1, sheetR1.getRange('B3')], [2, sheetR2.getRange('B3')], [3, sheetR3.getRange('B3')]];
/* adresse de la liste déroulante */
let listeDeroulante = sheetBase.getRange('A2').getValue();
/* adresse des cases à cocher */
let caseCoche = sheetBase.getRange('E2:G2').getValues();
/* ces lignes testent si plusieurs cases sont cochées alerte l'user et stoppe de script */
const count = caseCoche[0].filter(valeur => valeur > 0).length;
if (count > 1) {
SpreadsheetApp.getUi().alert('Trop de cases sont cochées !');
return;
}
/* ces lignes vérifié la valeur de la case cochée, trouve sa correspondance dans listeRange et met l'addition valeur de la case cochée + valeur liste déroulante dans la range correspondante.*/
caseCoche[0].forEach(function(valeur) {
for (let i = 0; i < listeRange.length; i++) {
if (listeRange[i][0] === valeur) {
let plageCorrespondante = listeRange[i][1];
plageCorrespondante.setValue(listeDeroulante+valeur)
break; // Sortir de la boucle si la correspondance est trouvée
}
}
}
);
}