Finition pour un script svp
Résolu/Fermébiog13 Messages postés 22 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 3 août 2023 - 17 janv. 2023 à 14:26
- Finition pour un script svp
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Microsoft activation script - Accueil - Windows
- Script bat - Guide
- Script download - Télécharger - Édition & Programmation
3 réponses
16 janv. 2023 à 13:58
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(); }
16 janv. 2023 à 15:16
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(); }
Modifié le 17 janv. 2023 à 14:37
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 }
17 janv. 2023 à 14:26
c'est pas brillant, je m'en sors pas... :(
Jordane, je vais avoir besoin des 1% restant de la macro stp
J'ai besoin qu'elle me rajoute la date dans 'Suivi!O2'
vu que je rajoute une ligne à chaque nouvelle entrée, la cellule cible est toujours O2