Voilà le code
function onEdit(e){
var d = SpreadsheetApp.getActiveSpreadsheet(); // document
var f = e.source.getActiveSheet(); // feuille
var r = e.source.getActiveRange(); // range
if ((r.getValue() != '') && (r.getA1Notation() == 'B4') && (f.getName() == 'révision sur smartphone') ){
var liste = d.getSheetByName('vocabulaire');
var i = r.offset(-3,0).getValue(); // indice
var n = liste.getRange('B' + i).getValue(); // niveau
var t = r.offset(1,0).getValue(); // test
var s = liste.getRange('E' + i).getValue(); // side
liste.getRange('E' + i).setValue((s=='Verso')?'Recto':'Verso');
liste.getRange('F' + i).setValue(new Date());
liste.getRange('B' + i).setValue(t?n+=1:1);
Browser.msgBox((t?'👍':'👎 '+liste.getRange('C'+i).getValue()+' : '+liste.getRange('D'+i).getValue()));
r.setValue('')
r.activate()
}
}
épicétou !
et le fichier https://docs.google.com/spreadsheets/d/1H0NWYsqXt8Ewz0bOlZnsaZmkE317WzL3FQEBL5OximY/edit?usp=sharing
Avec cela il y a quelques formules ...
notamment la détermination du programme quotidien
=query(vocabulaire!A1:G;"select * where (G) <= DATE'" & TEXT('niveaux/jours'!$A$1;"yyyy-MM-dd") & "' and ( (B)="&'niveaux/jours'!$C$1&" or (B)="&'niveaux/jours'!$D$1&" or (B)="&'niveaux/jours'!$E$1&" ) and (B) < 8 ORDER BY (B) DESC ";0)
et sur le contrôle
={"Résultat";arrayformula(if(C3:C="";"";regexreplace(UPPER(if(programme!E1:E="Recto";programme!D1:D;programme!C1:C));"[^[:alpha:]]";"")=regexreplace(UPPER(C3:C);"[^[:alpha:]]";"")))}
à tester sur smartphone
- je fais la comparaison sur les seuls caractères alphanumériques en majuscules
- le programme du jour est trié par niveau décroissant
j'ai préparé un onglet dédié pour une révision sur PC avec une liste
Danael ... j'aimerais avoir ton avis !
edit : je n'ai pas réussi à faire en sort que le script se lance avec un smartphone, si quelqu'un avait la solution !
edit2 : en réalité, cela fonctionne sur smartphone sauf la remise à blanc de la zone !! ??