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

🛠 Utilisation de CustomUIEditor pour Personnaliser le Ruban Excel

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

Explication VBA : Facturation automatique Gestion client