Validation des données en fonction d'une autre cellule

Bonjour tout le monde,

J'aurais pas mal de données sur le classeur et je souhaiterais faire une validation des données à partir d'une autre cellule. Par exemple, si je choisis le Type alors dans Sous-Type, cela m'affiche les données liées à Type.

Cependant, ce que j'ai fait ce sont pour des "petites données". Auriez-vous une idée de comment je peux procéder s'il vous plait ? Et également, comment l'appliquer à toutes les cellules du classeur sans à utiliser App Script ?

Merci à vous, et bon vendredi !

P.J: https://docs.google.com/spreadsheets/d/1jeA8EZWOb2ynfiZJnP2QqAcu6h9iPYxWV9l43ipxA2I/edit?usp=sharing

Bonjour,

J'ai corrigé tes formules

en H2 de listes (plutôt que H1 pour respecter le parallèle avec l'autre feuille)

=IFNA(TRANSPOSE(INDEX($A$2:$D;;MATCH('Feuille 1'!D2;$A$1:$D$1;0)));"")

puis en validation

=listes!$H2:2

bien supprimer les $ devant 2

Si cela finit par ramer, on peut toujours faire un script !

Bonjour,

Merci pour votre aide ! Je pense que ça va être très lourd au vu de mes données scolaires que je vais utiliser, cela va être énorme.

Malheureusement, je ne maîtrise pas encore le App Script.

Bon après-midi à vous,

je peux adapter un code que j'ai déjà fait, on verra si c'est plus léger

par contre, il ne prend pas en compte les changements des sous-listes elles-mêmes sauf à changer la rubrique de tête

Il y a un temps de latence car le script s'exécute côté serveur

function onEdit(event){
  var f = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  if ((columnToLetter(r.getColumn()) == 'D') && (f.getName().toString() == 'choix')){
    r.offset(0,1).clearContent()
    if (r.getValue() == ''){
      r.offset(0,1).clearDataValidations();
    }
    else{
      var listes = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('listes');
      var values = listes.getRange('1:1').getValues().join().split(","); 
      var colonne = columnToLetter(values.indexOf(r.getValue()) + 1); 
      r.offset(0,1).setDataValidation(SpreadsheetApp.newDataValidation()
        .setAllowInvalid(true)
        .requireValueInRange(listes.getRange(colonne + '2:' + colonne), true)
        .build()); 
    } 
  }
}
function columnToLetter(column) {
  var temp, letter = '';
  while (column > 0) {
    temp = (column - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    column = (column - temp - 1) / 26;
  }
  return letter;
}

https://docs.google.com/spreadsheets/d/1DTDoqdSXvErZPXyvsGh9F_ZwVrF6BMWMGxuI2EUOK9Q/edit?usp=sharing

Rechercher des sujets similaires à "validation donnees fonction"