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

RECHERCHEX avec plusieurs conditions (ET / OU) – Guide complet et exemples

Tableau croisĂ© dynamique Afficher Matricule “Ă  cĂŽtĂ©” du Nom & PrĂ©nom (en colonne), et non en dessous