L'objectif principal des listes déroulantes dans Google Sheets est de proposer des options parmi lesquelles un utilisateur peut choisir. Il donne aux utilisateurs un aperçu clair de toutes les options disponibles et s'assure également que l'utilisateur sélectionne uniquement les éléments autorisés.
Une liste déroulante garantit également qu'il y a moins d'erreurs car l'utilisateur peut désormais choisir dans une liste prédéfinie au lieu de taper manuellement le contenu de la cellule.
Google Sheets permet d'utiliser cette fonctionnalité avec facilité. En quelques clics, vous pouvez créer une liste déroulante à une seule cellule ou remplir une ligne ou une colonne entière avec des listes déroulantes.
Cependant, vous remarquerez que la liste déroulante par défaut de Google Sheets permet à l'utilisateur de ne sélectionner qu'un seul élément de la liste.
Souvent, vous devrez sélectionner plusieurs options dans une liste déroulante . Par exemple, lorsque vous avez le choix entre une collection de couleurs, vous pouvez aimer plus d'une couleur.
Par conséquent, plusieurs sélections dans les listes déroulantes peuvent être très utiles, toutefois cette fonctionnalité n'existe pas dans les listes déroulantes.
La bonne nouvelle est qu'il existe un moyen de contourner ce problème. Il est possible de faire en sorte que votre liste déroulante autorise plusieurs sélections en utilisant Google AppScript .
Dans cet article, je vais vous montrer comment créer une liste déroulante qui permet plusieurs sélections (comme indiqué ci-dessous).
function onEdit(e) {
var ancienneValeur;
var nouvelleValeur;
var classeur=SpreadsheetApp.getActiveSpreadsheet();
var celluleActive = classeur.getActiveCell();
if(celluleActive.getColumn() == 3 && celluleActive.getRow() == 1&& classeur.getActiveSheet().getName()=='Feuille 1') {
nouvelleValeur=e.value;
ancienneValeur=e.oldValue;
if(!e.value) {
celluleActive.setValue("");
}
else {
if (!e.oldValue) {
celluleActive.setValue(nouvelleValeur);
}
else {
if(ancienneValeur.indexOf(nouvelleValeur) <0) {
celluleActive.setValue(ancienneValeur+','+nouvelleValeur);
}
else {
celluleActive.setValue(ancienneValeur);
}
}
}
}
}