Ajouter un client dans la feuille "BDD" avec mise à jour automatique du contrat
📅 Ajouter un client dans la feuille "BDD" via Google Apps Script
Dans cet article, nous allons voir comment automatiser l'ajout d'un client dans la feuille "BDD" d'un Google Sheets, en récupérant des données saisies dans une feuille de préparation appelée "Liste ECOLE", tout en assurant :
le remplissage automatique selon les en-têtes,
la copie de formules spécifiques,
l'enregistrement dans une autre feuille à des fins de suivi ("Ren-Contrat"),
et le nettoyage des champs de saisie pour la prochaine utilisation.
✅ Fonction complète : Ajouter_Client_dans_BDD()
function Ajouter_Client_dans_BDD() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sourceSheet = ss.getSheetByName("Liste ECOLE");
const targetSheet = ss.getSheetByName("BDD");
const marque = sourceSheet.getRange("A1").getValue();
const nomvef = sourceSheet.getRange("G2").getValue();
if (marque !== "P" || nomvef === "") {
SpreadsheetApp.getUi().alert("Opération bloquée : il faut préparer et écrire le nom avant d'ajouter un client.");
return;
}
const headers = targetSheet.getRange(10, 1, 1, targetSheet.getLastColumn()).getValues()[0];
const data = targetSheet.getDataRange().getValues();
let lastRow = data.length;
while (lastRow > 10 && data[lastRow - 1].join("") === "") lastRow--;
const newRow = lastRow + 1;
const fixedPairs = [
["U2", "N°"],
["U3", "ID Ecole"]
];
for (let [cellRef, colName] of fixedPairs) {
const value = sourceSheet.getRange(cellRef).getValue();
const colIndex = headers.indexOf(colName);
if (value !== "" && colIndex !== -1) {
targetSheet.getRange(newRow, colIndex + 1).setValue(value);
}
}
const blocks = [
{ keys: "F", values: "G", from: 2, to: 8 },
{ keys: "I", values: "J", from: 2, to: 8 },
{ keys: "K", values: "L", from: 2, to: 8 },
{ keys: "M", values: "N", from: 2, to: 8 },
{ keys: "O", values: "P", from: 2, to: 8 },
{ keys: "Q", values: "R", from: 2, to: 8 }
];
for (let block of blocks) {
for (let i = block.from; i <= block.to; i++) {
const colName = sourceSheet.getRange(block.keys + i).getValue();
const value = sourceSheet.getRange(block.values + i).getValue();
if (colName && value) {
const colIndex = headers.indexOf(colName);
if (colIndex !== -1) {
targetSheet.getRange(newRow, colIndex + 1).setValue(value);
}
}
}
}
const colRechercheDivers = headers.indexOf("RECHERCHE DIVERS");
if (colRechercheDivers !== -1) {
const formule = targetSheet.getRange(lastRow, colRechercheDivers + 1).getFormulaR1C1();
if (formule) {
targetSheet.getRange(newRow, colRechercheDivers + 1).setFormulaR1C1(formule);
}
}
const feuilleContrat = ss.getSheetByName("Ren-Contrat");
const idEcole = sourceSheet.getRange("U3").getValue();
if (idEcole) {
const contratData = feuilleContrat.getDataRange().getValues();
let contratRow = contratData.length;
while (contratRow > 2 && contratData[contratRow - 1].join("") === "") contratRow--;
const nouvelleLigne = contratRow + 1;
const ligneModele = feuilleContrat.getRange(contratRow, 1, 1, feuilleContrat.getLastColumn());
const formules = ligneModele.getFormulasR1C1();
feuilleContrat.getRange(nouvelleLigne, 1, 1, feuilleContrat.getLastColumn()).setFormulasR1C1(formules);
const contratHeaders = feuilleContrat.getRange(2, 1, 1, feuilleContrat.getLastColumn()).getValues()[0];
const idEcoleCol = contratHeaders.indexOf("ID Ecole");
if (idEcoleCol !== -1) {
feuilleContrat.getRange(nouvelleLigne, idEcoleCol + 1).setValue(idEcole);
}
}
const zones = ["G2:G8", "J2:J8", "L2:L8", "N2:N8", "P2:P8", "R2:R8", "F1"];
zones.forEach(range => sourceSheet.getRange(range).clearContent());
targetSheet.activate();
targetSheet.setActiveRange(targetSheet.getRange(newRow, 1));
SpreadsheetApp.getUi().alert("Client ajouté avec succès dans la BDD !");
}🔄 Explication des étapes principales
✅ Vérification initiale : on vérifie que le bouton est prêt (A1 = "P") et que le nom est rempli (G2).
📄 Lecture des en-têtes dans la feuille "BDD" pour affecter les valeurs dynamiquement.
➕ Insertion ligne vide : on détecte la prochaine ligne disponible après la ligne 10.
🔹 Ajout des valeurs fixes : numéro et ID école.
🔄 Boucle sur les blocs : récupération des noms d'en-têtes + valeurs à insérer.
⚛️ Copie de formule : on duplique la formule présente dans "RECHERCHE DIVERS".
📅 Enregistrement dans Ren-Contrat avec copie de formule et ajout ID école.
🚮 Nettoyage des champs : on efface les zones utilisées pour la saisie.
🔍 Focus visuel sur la ligne ajoutée avec message de confirmation.
N'hésite pas à personnaliser ce script pour l'adapter à ton propre modèle de données ou à ton style d'organisation !
📥 Ajouter un client dans la feuille "BDD" avec mise à jour automatique du contrat
Ce script Google Apps Script permet d’automatiser l’ajout d’un client à partir des données préparées dans la feuille "Liste ECOLE", tout en :
-
copiant dynamiquement les informations dans la feuille "BDD",
-
ajoutant l’ID École dans la feuille "Ren-Contrat",
-
recopiant les formules utiles,
-
et nettoyant la zone de saisie.
✳️ 1. Vérification des conditions initiales
Avant d’exécuter quoi que ce soit, le script vérifie que la cellule A1 contient "P" et que le nom du client (G2) n’est pas vide. Sinon, une alerte s'affiche.
📌 2. Récupération des en-têtes dans "BDD"
Les en-têtes du tableau sont sur la ligne 10, et ils servent à placer les bonnes données dans les bonnes colonnes.
➕ 3. Détection de la prochaine ligne vide
On trouve la première ligne vide après la ligne 10 pour y insérer les nouvelles données.
📤 4. Insertion des données fixes
Ces paires (cellule, nom d'en-tête) permettent de placer des valeurs spécifiques, comme le numéro et l’ID de l’école.
🔁 5. Transfert dynamique des données
Chaque bloc contient une colonne de noms d’en-têtes (F2:F8, I2:I8, ...) et une colonne associée de valeurs (G2:G8, J2:J8, ...). Le script copie chaque valeur au bon endroit dans "BDD" selon l'en-tête.
🔄 6. Copie automatique d'une formule spéciale
La formule de la colonne "RECHERCHE DIVERS", si elle existe, est copiée dans la nouvelle ligne.
📝 7. Ajout du client dans la feuille "Ren-Contrat"
Si un ID école est fourni, le script :
-
cherche la prochaine ligne vide dans "Ren-Contrat",
-
copie les formules de la ligne précédente,
-
insère l’ID école dans la bonne colonne grâce aux en-têtes.
🧽 8. Nettoyage de la feuille de saisie
Les champs utilisés sont vidés automatiquement pour préparer la prochaine saisie.
✅ 9. Confirmation visuelle
La nouvelle ligne du client est automatiquement sélectionnée dans la feuille "BDD" et une alerte confirme l’ajout.

Commentaires
Enregistrer un commentaire