Finition pour un script svp
Résolubiog13 Messages postés 22 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'utilise depuis plusieurs mois un script pour ajouter automatique la date lorsqu'on modifie une cellule de la colonne1.
ça marche quand on modifie manuellement la cellule ou quand on fait copier/coller.
Mais j'ai voulu mettre en place une fenêtre de saisie avec une macro qui vient copier/coller les informations et depuis la date de s'incrémente plus automatique alors que le script fonctionne toujours manuellement...
Vous auriez une idée svp ?
et si je pouvais affecter la macro uniquement la sheet1 ça serait top aussi :)
merci pour votre aide
function onEdit(e) { const as = e.source.getActiveSheet(); const row = e.range.getRow(); const col = e.range.getColumn(); const tz = e.source.getSpreadsheetTimeZone(); const date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy HH:mm:ss'); if (col==1){ as.getRange(row,15).setValue(date); } }
- Finition pour un script svp
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
- Script download - Télécharger - Édition & Programmation
3 réponses
Bonjour,
Le plus simple, tu créés une fonction et tu y fais appel dans ta macro...
par exemple :
function onEdit(e) { setDate(); } function setDate(){ const as = e.source.getActiveSheet(); const row = e.range.getRow(); const col = e.range.getColumn(); const tz = e.source.getSpreadsheetTimeZone(); const date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy HH:mm:ss'); if (col==1){ as.getRange(row,15).setValue(date); } } function tamacro(){ //ton code..... // puis appel de la fonction setDate setDate(); }
Merci Jordane, pour ton idée.
J'ai du me louper, j'ai un message d'erreur -> ReferenceError: e is not defined
Mais en effet je peux faire évoluer le script pour que la date se rajoute quand je clique sur le bouton "Ajouter" de la fenêtre de saisie, plutôt que quand une cellule est modifiée dans le sheet. c'est peut-être plus simple...
function onEdit(e) { setDate(); } function setDate(){ const as = e.source.getActiveSheet(); const row = e.range.getRow(); const col = e.range.getColumn(); const tz = e.source.getSpreadsheetTimeZone(); const date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy HH:mm:ss'); if (col==1){ as.getRange(row,15).setValue(date); } } function ReinitialiserFormulaire() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRangeList(['G4', 'J4', 'D4:D5', 'D7', 'G7', 'J7', 'D9', 'G9', 'J9', 'D12', 'G12', 'J12', 'C16']).activate() .clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('D12').activate(); spreadsheet.getRange('C28').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('G12').activate(); spreadsheet.getRange('C28').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('J12').activate(); spreadsheet.getRange('C28').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('D5').activate(); spreadsheet.getActiveRangeList().insertCheckboxes(); }; function Ajouter() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('Suivi!2:2').activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getRange('saisie!D4').copyTo(spreadsheet.getRange('Suivi!A2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('saisie!D5').copyTo(spreadsheet.getRange('Suivi!B2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('saisie!G4').copyTo(spreadsheet.getRange('Suivi!C2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('saisie!J4').copyTo(spreadsheet.getRange('Suivi!D2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('saisie!D7').copyTo(spreadsheet.getRange('Suivi!E2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('saisie!G7').copyTo(spreadsheet.getRange('Suivi!F2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('saisie!J7').copyTo(spreadsheet.getRange('Suivi!G2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('saisie!D9').copyTo(spreadsheet.getRange('Suivi!H2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('saisie!G9').copyTo(spreadsheet.getRange('Suivi!I2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('saisie!J9').copyTo(spreadsheet.getRange('Suivi!J2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('saisie!D12').copyTo(spreadsheet.getRange('Suivi!K2'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.getRange('saisie!G12').copyTo(spreadsheet.getRange('Suivi!L2'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.getRange('saisie!J12').copyTo(spreadsheet.getRange('Suivi!M2'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.getRange('saisie!C16').copyTo(spreadsheet.getRange('Suivi!N2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('saisie'), true); spreadsheet.getRange('D4').activate(); setDate(); }
Désolé, j'ai copié/collé un peu vite.
ça serait plutot du genre :
function onEdit(e) { const as = e.source.getActiveSheet(); const row = e.range.getRow(); const col = e.range.getColumn(); const tz = e.source.getSpreadsheetTimeZone(); setDate(as,row,col,tz); } function setDate(as,row,col,tz){ const date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy HH:mm:ss'); if (col==1){ as.getRange(row,15).setValue(date); } } function tamacro(){ //ton code..... // puis appel de la fonction setDate setDate(as,row,col,tz); // attention aux paramètres }