Naviguer dans les lignes filtrées avec Google Apps Script

 

🔍 Naviguer dans les lignes filtrées avec Google Apps Script


Quand on utilise Google Sheets avec des filtres, il peut être frustrant de ne pas pouvoir parcourir uniquement les lignes visibles, surtout si l'on souhaite créer un système de navigation comme "Suivant" ou "Précédent". Dans cet article, je vous montre comment créer deux fonctions simples mais puissantes avec Google Apps Script : Consulter_Client_visible() pour aller à la ligne suivante visible, et Consulter_Client_précédent() pour revenir à la précédente.


🧩 Le principe

Nous avons un tableau de données à partir de la ligne 11, et nous voulons que chaque clic sur un bouton "Suivant" ou "Précédent" sélectionne la prochaine ligne visible (non masquée par un filtre), et remplisse des blocs de données dans une autre zone de la feuille.


⚙️ Fonction Consulter_Client_visible

javascript

function Consulter_Client_visible() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName("Liste ECOLE"); const dataStartRow = 11; const lastRow = sheet.getLastRow(); const columnToCheck = 7; // Colonne G = 7 const headers = sheet.getRange(10, 1, 1, sheet.getLastColumn()).getValues()[0]; // Lire la ligne courante depuis F1 const currentRow = sheet.getRange("F1").getValue() || dataStartRow - 1; for (let row = currentRow + 1; row <= lastRow; row++) { const cell = sheet.getRange(row, columnToCheck); if (!sheet.isRowHiddenByFilter(row) && !cell.isBlank()) { remplirDepuisLigne(sheet, headers, row); sheet.getRange("F1").setValue(row); // Mémoriser la nouvelle ligne return; } } SpreadsheetApp.getUi().alert("Plus de clients visibles en dessous."); }

🔁 Fonction Consulter_Client_précédent

javascript

function Consulter_Client_précédent() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName("Liste ECOLE"); const dataStartRow = 11; const columnToCheck = 7; const headers = sheet.getRange(10, 1, 1, sheet.getLastColumn()).getValues()[0]; const currentRow = sheet.getRange("F1").getValue() || dataStartRow; for (let row = currentRow - 1; row >= dataStartRow; row--) { const cell = sheet.getRange(row, columnToCheck); if (!sheet.isRowHiddenByFilter(row) && !cell.isBlank()) { remplirDepuisLigne(sheet, headers, row); sheet.getRange("F1").setValue(row); return; } } SpreadsheetApp.getUi().alert("Plus de clients visibles au-dessus."); }

🧱 Fonction utilitaire remplirDepuisLigne

Cette fonction remplit les cellules G2:G8, J2:J8, etc., en fonction des noms de colonnes définis dans E2:E8, I2:I8, etc.

javascript

function remplirDepuisLigne(sheet, headers, activeRow) { const zones = ["G2:G8", "J2:J8", "L2:L8", "N2:N8", "P2:P8", "R2:R8"]; zones.forEach(range => sheet.getRange(range).clearContent()); function remplirCellule(destinationRange, colName) { const index = headers.indexOf(colName); if (index !== -1) { const value = sheet.getRange(activeRow, index + 1).getValue(); sheet.getRange(destinationRange).setValue(value); } } const blocks = [ { labelCol: "E", valueCol: "G", from: 2, to: 8 }, { labelCol: "I", valueCol: "J", from: 2, to: 8 }, { labelCol: "K", valueCol: "L", from: 2, to: 8 }, { labelCol: "M", valueCol: "N", from: 2, to: 8 }, { labelCol: "O", valueCol: "P", from: 2, to: 8 }, { labelCol: "Q", valueCol: "R", from: 2, to: 8 } ]; for (let block of blocks) { for (let i = block.from; i <= block.to; i++) { const colName = sheet.getRange(block.labelCol + i).getValue(); if (colName) { remplirCellule(block.valueCol + i, colName); } } } }

✅ Résultat

Avec ces scripts et un peu de personnalisation, vous pouvez créer un véritable système de navigation dans des données filtrées, très utile pour des tableaux clients, de paie, ou d’inventaire.

Tu veux le code prêt à copier ? Je peux aussi te le préparer dans un Google Sheet modèle pour tes lecteurs.

Souhaites-tu que je t’aide à rédiger l’introduction ou la conclusion pour ton article de blog ?

Commentaires

Posts les plus consultés de ce blog

🛠 Utilisation de CustomUIEditor pour Personnaliser le Ruban Excel

🗓️ Simulateur de Congés et Calendrier Collaboratif sous Google Sheets

Explication VBA : Facturation automatique Gestion client