Bonjour,
J'ai essayé avec votre 'tableau', ça fonctionne mais pas avec le mien !
En plus, je me suis planté, je ne veux surtout pas supprimer les lignes vides du modèles mais celles des feuilles dupliquées du modèle mais pas au moment de l'enregistrement.
Je veux supprimer les lignes vides de la feuille active. J'ai trouvé un script qui marche mais il supprime les lignes au ralenti !
J'ai aussi un problème au moment de la duplication, il renomme le fichier copié en fonction de la valeur en B5, une date, du coup, le nom de la feuille est super long.
J'ai triché en récupérant le nom de la feuille en D5 qui transforme la date en B5 en texte.
Le script fonctionne mais ce n'est pas vraiment optimisé !
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries =[];
menuEntries.push({name: "Suppr Lignes", functionName: "deleteRows"});
menuEntries.push(null);
ss.addMenu("✔️Suppr Lignes✔️", menuEntries);
}
function simpleduplicatesheet(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var toto=ss.getSheetByName('Modèle');
var nb=ss.getNumSheets();
var nom=ss.getRange('D5').getValue();
var sheet = ss.getActiveSheet();
if (sheet.getName()==='Modèle'){
sheet2 = sheet.copyTo(ss).setName(nom);
}
var images = sheet2.getImages();
var img = images[0];
img.remove(); // Here
toto.getRange('B5').clearContent();
toto.getRange('A10:D35').clearContent();
toto.getRange('F10:S35').clearContent();
}
function deleteRows(){
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var rowsDeleted = 0;
for (var i = 9; i <= 35 - 1; i++) {
var row = values[i];
if (row[0] == '' && row[19] == '') {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
}