Script - Supprimer ligne selon id et si checkbox faux
Bonjour La communauté,
J'aurais besoin de votre aide pour développer un script.
Mon sheet permet que mes collègues me demande de commander des fournitures, via un formulaire qui se trouve dans l'onglet "Form".
Une fois saisi, ils appuient sur un bouton qui déclenche un script qui créait en dernière ligne du tableau se trouvant dans l'onglet "Data".
lors de la création de cette ligne, le demandeur et moi sommes averti de cette nouveau besoin de commande, avec l'id du besoin en objet du message.
Lorsque j'ai traité ce nouveau besoin de mon collègue, je ticke la checkbok sur vrai.
Ce script fonctionne très bien.
Je voudrais, que vous m'aidiez à développer un script pour que mes collègues aient la possibilité de supprimer la demande qu'ils m'ont faites au préalable.
Pour cela, il faudrait que le script lise l'Id de la demande en case c2 de l'onglet form, trouve la ligne correspondant à l'Id à supprimer dans la table de l'onglet data, uniquement si la case en colonne I est sur faux.
Si j'ai déjà tické la case checkbox, alors la ligne n'est pas supprimée et un popup apparaît à l'utilisateur durant quelques secondes en lui disant que sa demande ne peu être supprimer car déjà commandée. Veuillez contacter votre administrateur.
voici le fichier,qui ne contient pas de script
Je vous remercie énormément de votre aide.
Vincent
Bonjour,
je te laisse intégrer à ton projet, n'ayant pas le reste de la macro ...
function supprimer() {
var doc = SpreadsheetApp.getActiveSpreadsheet()
var id = doc.getSheetByName('Form').getRange('C2').getValue()
var data = doc.getSheetByName('Data')
var derLigne = getLastDataRow(data)
var ids = data.getRange('A2:A'+derLigne).getValues().join().split(',')
var ligne = ids.indexOf(id.toString())
if (ligne != -1){
if (data.getRange('I'+(ligne+2)).getValue()){
Browser.msgBox('Suppression impossible !')
}
else{
data.deleteRow(ligne+2)
Browser.msgBox('Suppression effectuée !')
}
}
else{
Browser.msgBox('id "'+id+'" non trouvé !')
}
}
function getLastDataRow(sheet) {
var lastRow = sheet.getLastRow();
var range = sheet.getRange("A" + lastRow);
if (range.getValue() !== "") {
return lastRow;
} else {
return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
}
}Merci beaucoup ton efficacité et ta rapidité. Le script fonctionne très bien.
Ton aide va beaucoup m'aider.
Bon WE