Comment passer à la cellule de droite après validation
1-
voici un exemple simplissime de onEdit(e)
on rajoute e ou event pour capter l'événement qui va déclencher le script
e.source permet notamment de connaître plus précisément comment/par quelles feuilles et cellules a été lancé le script
function onEdit(e) {
Browser.msgBox(JSON.stringify(e))
}prends une copie de https://docs.google.com/spreadsheets/d/1ayJkWFV8u_I0KrU1NfsFJrz6NGPZ3rwiHEHjBLyNugc/copy , et tu verras que onEdit réagit quand on introduit une donnée, quand on met un encadrement, mais pas quand on change la couleur de police, la couleur de fond, le mode gras/italique/souligné
2-
donc, quand tu dis
Ok, mais là ça ne marche plus.
j'aimerais bien connaître l'action que tu avais faite
3-
maintenant il n'y a plus qu'à remettre le onEdit(e) proposé ici https://forum.excel-pratique.com/sheets/comment-passer-a-la-cellule-de-droite-apres-validation-17255...
4-
et voir si c'est encore compatible avec onSelectionChange() Là dessus je suis très réservé car le onSelectionChange() ne te permet plus d'entrer des données si le curseur est immédiatement repositionné sur l'ensemble de la zone si tu n'enlèves pas ceci comme proposé
spreadsheet.getRange('F5:K45').activate();
spreadsheet.getActiveRangeList()1. j'ai testé l'exemple :
Je constate que si tu mets une couleur mais aucune donnée dans une cellule => rien ne se passe.
Par contre si tu mets une couleur et puis que tu introduits une données => le box arrive.
2. J'ai simplement introduit des données, changés des couleurs,.... mais là, on dirait que le script ne fait rien.
4. pour le onSelectionChange : je n'ai plus besoin de repositionner. Je clique sur la cellule ou sur tab et là je passe à la cellule suivante, ce que je n'avais pas avec mon script initial (version1 - il sélectionnait toutes les cellules / version 2 - il se positionnait sur une cellule protégée).
En tout cas, je tiens à te remercier pour ton aide. Grace à toi, j'apprends chaque jour et mon fichier avance.
Encore Mille Mercis.
Dans le prolongement, voici aussi un exemple de onSelectionChange(e)
https://docs.google.com/spreadsheets/d/1V6ItjayNJVwraIWUCQNZwT0xO523gXNLK8pdOsRzPaI/copy
qui restera insensible aux changements de couleur, de police, d'encadrement etc.
Voici mon script qui tourne comme je voulais :
function onSelectionChange() {
// Cette fonction protège le format et propriétés du tableau.
var spreadsheet = SpreadsheetApp.getActive();
var app = SpreadsheetApp;
var feuille = app.getActiveSpreadsheet().getActiveSheet();
var cellule_a_tester = feuille.getRange(1,5).getValue();
if (cellule_a_tester == 'Modifiable') {
spreadsheet.getRange('F5:K45').activate();
spreadsheet.getActiveRangeList()
.setBorder(true, null, true, true, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID_THICK)
// haut, gauc, bas , droi, vert, hori, couleur ,
.setBorder(null, true, null, null, null, null, '#000000', SpreadsheetApp.BorderStyle.DOUBLE)
.setBorder(null, null, null, null, true, true, '#000000', SpreadsheetApp.BorderStyle.DOTTED)
.setHorizontalAlignment('center')
.setVerticalAlignment('middle')
.setBackground(null)
.setFontFamily('Calibri')
.setFontSize(12)
.setFontWeight('bold')
.setFontStyle(null)
.setFontColor('#000000');
//spreadsheet.getRange('F2').activate();
}
else if (cellule_a_tester == 'Bientôt clôturé') {
spreadsheet.getRange('F5:K45').activate();
spreadsheet.getActiveRangeList()
.setBorder(true, null, true, true, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID_THICK)
// haut, gauc, bas , droi, vert, hori, couleur ,
.setBorder(null, true, null, null, null, null, '#000000', SpreadsheetApp.BorderStyle.DOUBLE)
.setBorder(null, null, null, null, true, true, '#000000', SpreadsheetApp.BorderStyle.DOTTED)
.setHorizontalAlignment('center')
.setVerticalAlignment('middle')
.setBackground(null)
.setFontFamily('Calibri')
.setFontSize(12)
.setFontWeight('bold')
.setFontStyle(null)
.setFontColor('#000000');
}
}Salut Steelson,
Juste à titre d'info,
ton bout de code fonctionne nikel.
Je viens de tout refaire car je voulais comprendre et ça marche SUPER BIEN.
Je remets ta solution pour d'autres personnes.
function onEdit(event) {
var sh = event.source.getActiveSheet();
var rng = event.source.getActiveRange();
if (rng.getColumn() >= 6 && rng.getColumn() <= 10) { // adapt
sh.setActiveSelection(rng.offset(0, 1).getA1Notation());
}
}Merci Maestro.