Modifier une ligne d'un tableau client dans Google Sheets

🔁 De VBA vers Google Apps Script – Modifier une ligne d'un tableau client dans Google Sheets

Lorsque l’on passe d’Excel à Google Sheets, les macros VBA doivent être réécrites en Google Apps Script. Voici un exemple concret : une macro qui permet de modifier une ligne client dans un tableau structuré, en fonction d'une sélection active.


📋 Contexte

  • La feuille s'appelle "Liste ECOLE".

  • Les en-têtes du tableau commencent à la ligne 10.

  • Les données commencent à la ligne 11.

  • Les champs de modification sont saisis dans des cellules fixes (G2 à G8, J2 à J7, etc.).

  • Certaines colonnes sont dynamiques : le libellé de la colonne est indiqué dans une cellule (par exemple I8), et la valeur à saisir se trouve à côté (par exemple J8).


✅ Objectif

Modifier la ligne sélectionnée dans la plage G11:G90000, uniquement si :

  • L'utilisateur confirme la modification.

  • La cellule F1 contient bien le numéro de ligne sélectionné.

  • Le champ G2 (Nom Facture) n’est pas vide.


🔧 Code Google Apps Script

javascript

function modifierClient() { const feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Liste ECOLE"); const ui = SpreadsheetApp.getUi(); const activeRange = feuille.getActiveRange(); const row = activeRange.getRow(); const col = activeRange.getColumn(); // Vérification de la sélection dans G11:G90000 if (col !== 7 || row < 11 || row > 90000) { ui.alert("Pas dans la plage 'merci de sélectionner le Client !'"); return; } const f1 = feuille.getRange("F1").getValue(); const g2 = feuille.getRange("G2").getValue(); // Vérification des conditions if (!g2 || f1 != row) { ui.alert("Impossible : souci vide ou bien la ligne sélectionnée est inexacte"); return; } // Confirmation de l'utilisateur const confirmation = ui.alert("Confirmation", "Vous voulez vraiment modifier ?", ui.ButtonSet.YES_NO); if (confirmation !== ui.Button.YES) return; // Lecture des en-têtes const entetes = feuille.getRange(10, 1, 1, feuille.getLastColumn()).getValues()[0]; // Valeurs fixes à modifier const valeurs = { "Nom Facture": feuille.getRange("G2").getValue(), "Nom": feuille.getRange("G3").getValue(), "ICE": feuille.getRange("G4").getValue(), "Ville": feuille.getRange("G5").getValue(), "Responsable": feuille.getRange("G6").getValue(), "Interlocuteur": feuille.getRange("G7").getValue(), "N° ligne (G.sheet)": feuille.getRange("G8").getValue(), "Client/prospect": feuille.getRange("J2").getValue(), "Adresse": feuille.getRange("J3").getValue(), "FAMILLE": feuille.getRange("J4").getValue(), "ID SMS": feuille.getRange("J5").getValue(), "N°TEL": feuille.getRange("J6").getValue(), "EMAIL": feuille.getRange("J7").getValue() }; // Lecture des valeurs dynamiques const dynRanges = [ ["I8", "J8"], ["K2", "L2"], ["K3", "L3"], ["K4", "L4"], ["K5", "L5"], ["K6", "L6"], ["K7", "L7"], ["K8", "L8"], ["M2", "N2"], ["M3", "N3"], ["M4", "N4"], ["M5", "N5"], ["M6", "N6"], ["M7", "N7"], ["M8", "N8"], ["O2", "P2"], ["O3", "P3"], ["O4", "P4"] ]; dynRanges.forEach(([labelCell, valueCell]) => { const label = feuille.getRange(labelCell).getValue(); const val = feuille.getRange(valueCell).getValue(); if (label) valeurs[label] = val; }); // Écriture dans la ligne sélectionnée Object.entries(valeurs).forEach(([colName, val]) => { const index = entetes.indexOf(colName); if (index !== -1) { feuille.getRange(row, index + 1).setValue(val); } }); feuille.getRange("A1").setValue(""); // Réinitialisation éventuelle }

🔘 Ajouter un bouton dans la feuille

  1. Insère un dessin ou une image.

  2. Clique sur les trois pointsAttribuer un script.

  3. Tape modifierClient.



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