Script : pour se rendre dans la dernière cellule modifiée ou sauvegardée.

176 1

2 astuces pour gagner du temps pour ouvrir rapidement la bonne feuille de calcul :

Chaque feuille a sa propre URL, vous pouvez mettre en favori ou épingler directement la feuille concernée ce qui est plus pertinent que l’url du tableur Google.

Vous pouvez aussi utiliser ce script, réalisé par Arnaud FONTAINE, pour ouvrir le tableur sur la dernière cellule modifiée.

Ce script s’installe dans le tableur concerné, voici la manipulation (animation réalisée avec le logiciel gratuit LICECAP) :

Un menu apparaît dans le tableur :

Vous pouvez enregistrer la position ou aller à la position sauvegardée. Regardons de plus près comme cela fonctionne. Si je change une valeur du tableur et que j’actualise (F5), la cellule dernièrement modifiée est devenue active. Cool, non ?

Maintenant, intéressons-nous au menu réalisé par Arnaud :

  • “Save current position” : permet d’enregistrer la position.
  • “Go to saved position” : permet de rejoindre la cellule sauvegardée.

Voilà le code si besoin, je vous invite à cliquer sur ce script
N’hésitez pas tester, partager vos trouvailles, vos scripts. Vous pouvez aussi rejoindre la communauté G+ francophone G Suite – Apps Script animée par l’excellent Fabrice Faucheux.

/**
* @OnlyCurrentDoc
* @file: Functionality to save and restore active cell property.
*
* Goal of this script: Go to last active cell when opening a spreadsheed.
*
* The function to save the property could be triggered automatically onEdit() or
* manually by calling the Scripts > “Save active cell property” menu item.
*
* The function to restore the active cell property will be triggered automatically
* onOpen() or manually by calling the menu item Scripts > “Go to saved active cell”.
**/

/**
* On open trigger
*/
function onOpen(e) {
// Go to last saved position.
goToSavedPosition();

addMenuItems();
}

/**
* On Edit trigger
*/
function onEdit() {
// Save current position.
saveCurrentPosition();
}

/**
* Adds a custom menu to the active spreadsheet.
*/
function addMenuItems() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var menus = [
{
name : “Save current position”,
functionName : “saveCurrentPosition”
},
{
name : “Go to saved Position”,
functionName : “goToSavedPosition”
}
];
sheet.addMenu(“Position”, menus);
};

/**
* Save current position.
*/
function saveCurrentPosition() {
var currentSheet = SpreadsheetApp.getActiveSheet();

var userProperties = PropertiesService.getUserProperties();

// Delete all prop
userProperties.deleteAllProperties();

// Store current active sheet
userProperties.setProperty(“currentSheet”, currentSheet.getName());

// Store active cell for current sheet.
userProperties.setProperty(currentSheet.getName(), currentSheet.getActiveCell().getA1Notation());
}

/**
* Restore saved positions.
*/
function goToSavedPosition() {
var allSheets, activeSheet, activeSheetName, activeCell;
var userProperties = PropertiesService.getUserProperties();

// Retrieve property saved for this sheet
activeSheetName = userProperties.getProperty(“currentSheet”);

// If the property exist
if(activeSheetName != null){
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(activeSheetName);
var sheetName = sheet.getName();
activeCell = userProperties.getProperty(sheetName);
sheet.getRange(activeCell).activate();
SpreadsheetApp.setActiveRange(sheet.getRange(activeCell))
}
catch(e) {
SpreadsheetApp.getActiveSpreadsheet().toast(e.message, “Error while going to saved active position:”);
}
}
}

Notez cette information
[Total: 2 Average: 4.5]

Thierry

Thierry

Thierry VANOFFE, consultant, formateur, coach G Suite. Passionné et fasciné par Google, ce blog me permet de partager cette passion et distiller tutos, trucs, astuces, guides sur les outils Google. N'hésitez pas à me solliciter pour vos formations en ligne ou en présentiel.

1 comment

  1. Merci pour ce partage, j’aurais une problématique supplémentaire.

    J’ai X classeurs auxquels je voudrais appliquer cette fonctionnalité.

    De plus; si je la modifie, j’aimerais que cela s’applique instantanément à mes X classeurs, sans faire un copier coller X fois dans chaque classeur.

    Comment peut on créer une fonction externe à un classeur et l’appeler dans tous les classeurs ?

    Si vous avez une piste car entre les Bond et Standalone script, je me perd un peu…

    Merci de votre attention

    L’Papy

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Share This

Share This

Share this post with your friends!