Version mise à jour de la Fonction Modifier Client dans BDD

 Pour renforcer la sécurité de la modification, on va ajouter une vérification supplémentaire : s’assurer que l’"ID Ecole" de la ligne désignée dans la feuille BDD correspond bien à celui saisi dans la cellule U3 de la feuille "Liste ECOLE".


✅ Version mise à jour de la fonction avec vérification de l'ID Ecole :

javascript

function ModifierClient_dans_BDD() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName("Najia");
  const targetSheet = ss.getSheetByName("BDD");
  const ui = SpreadsheetApp.getUi();

  const ligneCible = sourceSheet.getRange("F1").getValue();
  const nomClient = sourceSheet.getRange("G2").getValue();
  const idEcoleSource = sourceSheet.getRange("C8").getValue();

  if (!ligneCible || !nomClient || isNaN(ligneCible)) {
    ui.alert("Erreur : la ligne cible n'est pas définie ou le nom est vide !");
    return;
  }

  const row = parseInt(ligneCible, 10);
  if (row < 11 || row > 100000) {
    ui.alert("Erreur : ligne de modification hors plage autorisée dans la BDD !");
    return;
  }

  const headers = targetSheet.getRange(10, 1, 1, targetSheet.getLastColumn()).getValues()[0];
  const idColIndex = headers.indexOf("ID  Ecole");

  if (idColIndex === -1) {
    ui.alert("Erreur : la colonne 'ID  Ecole' est introuvable dans la feuille BDD !");
    return;
  }

  const idEcoleBDD = targetSheet.getRange(row, idColIndex + 1).getValue();
  if (idEcoleBDD !== idEcoleSource) {
    ui.alert(`⚠️ Erreur : L'ID Ecole de la ligne ${row} ne correspond pas à celui saisi (${idEcoleSource}). Modification annulée.`);
    return;
  }

  const confirmation = ui.alert("Confirmation", "Voulez-vous vraiment modifier ce client dans la BDD ?", ui.ButtonSet.YES_NO);
  if (confirmation !== ui.Button.YES) return;

  // Valeurs fixes
  const valeurs = {
    "Nom": sourceSheet.getRange("G2").getValue()
  };

  // Valeurs dynamiques
  const dynRanges = [
    ["B8", "C8"],
    ["F2", "G2"], ["F3", "G3"], ["F4", "G4"], ["F5", "G5"], ["F6", "G6"], ["F7", "G7"], ["F8", "G8"],
    ["I2", "J2"], ["I3", "J3"], ["I4", "J4"], ["I5", "J5"], ["I6", "J6"], ["I7", "J7"], ["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"], ["O5", "P5"], ["O6", "P6"], ["O7", "P7"], ["O8", "P8"],
    ["Q2", "R2"], ["Q3", "R3"], ["Q4", "R4"], ["Q5", "R5"], ["Q6", "R6"], ["Q7", "R7"], ["Q8", "R8"]
  ];

  dynRanges.forEach(([labelCell, valueCell]) => {
    const label = sourceSheet.getRange(labelCell).getValue();
    const val = sourceSheet.getRange(valueCell).getValue();
    if (label) {
      valeurs[label] = val;
    }
  });

  // Écriture dans la feuille BDD
  Object.entries(valeurs).forEach(([colName, val]) => {
    const index = headers.indexOf(colName);
    if (index !== -1) {
      targetSheet.getRange(row, index + 1).setValue(val);
    }
  });

  sourceSheet.getRange("A1").setValue("");
  ui.alert("✅ Client modifié avec succès dans la BDD !");
}

🔒 Ce que cette version ajoute :

  • Elle annule toute modification si l’ID Ecole présent dans BDD!ligne[F1] est différent de Liste ECOLE!C8.

  • Elle vérifie aussi que la colonne "ID Ecole" existe bien dans la feuille "BDD" (et informe clairement si elle est absente).

Commentaires

Posts les plus consultés de ce blog

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

🛠 Utilisation de CustomUIEditor pour Personnaliser le Ruban Excel

Tableau croisé dynamique Afficher Matricule “à côté” du Nom & Prénom (en colonne), et non en dessous