Formulaire sur Google Sheet

Bonjour,

J'ai adapté les modules de Mike Steelson permettant de gérer les données d'une feuille avec un formulaire.

Je voudrais ajouter dans la page html : formModification une instruction permettant de décocher la case en colonne A, de la ligne en cours, en même temps que la réécriture de cette ligne....

Je sèche, merci de votre aide

Cordialement

JL

PS : Ce besoin est rendu souhaitable par le fait qu'il permettrait de cocher d'avance toutes les lignes à modifier, permettant un déroulé plus cool en passant de fait à la ligne suivante après validation.

Bonjour,

Dans votre script, une page html commande un formulaire qui va se déverser dans un fichier sheet c'est cela ? Et vous souhaitez qu'une case se décoche colonne A lorsque les données s'ajoute dans les colonnes suivantes ?

SI tel est le cas, il suffit dans votre fonction GAS d'ajouter un petit uncheck(), pouvez-vous partagez votre script GAS ici (celui qui intègre les données).

Bonjour et, merci de vous pencher sur mon cas.

Ci-joint la page HTML demandée. Le problème se situe au niveau de la dernière ligne, vidage du formulaire. Je ne sais pas (méconnaissance du langage html)

comment rédiger le décochage dans la cellule A:ligne en cours.

Je joins également le lien vers le script original:

https://www.sheets-pratique.com/fr/telechargements/outils-de-gestion/gerer-donnees-formulaire-sheets...

Cordialement

JL

Si c'est bien ce script qui ajoute les ligne :

// ajout des données en provenance du formulaire création
function ajouterLigne(tab) {
  var ligne = bdd.getLastRow() + 1
  bdd.getRange(ligne,col,1,tab.length).setValues([tab])
}

Il faut le modifier comme ceci :

// ajout des données en provenance du formulaire création
function ajouterLigne(tab) {
  var ligne = bdd.getLastRow() + 1
  bdd.getRange(ligne,col,1,tab.length).setValues([tab])
  bdd.getRange(ligne,1).getRange().uncheck();
}

Cela ne fonctionne pas.

D'abord un petit malentendu : le problème se pose dans le cadre d'une modification et non d'une création.

J'ai donc placé la ligne supplémentaire dans la fonction "modifierLigne". Cela sans résultat...

La modification est effective, mais la coche n'est pas enlevée

Je joins une image du tableau concerné

Cordialement

JL

tableau

Ceci ne fonctionne pas ?

// modification des données en provenance du formulaire modification
function modifierLigne(tab) {
  var ligne = numLigne()
  bdd.getRange(ligne,col,1,tab.length).setValues([tab])
  bdd.getRange(ligne,1).getRange().uncheck();
}

Cela peut être :

// modification des données en provenance du formulaire modification
function modifierLigne(tab) {
  var ligne = numLigne()
  bdd.getRange(ligne,col,1,tab.length).setValues([tab])
  bdd.getRange(ligne,1).getRange().setValue(false);
}

Si rien ne fonctionner , ajouter un log pour voir ce qui se passe :

// modification des données en provenance du formulaire modification
function modifierLigne(tab) {
  var ligne = numLigne()
  bdd.getRange(ligne,col,1,tab.length).setValues([tab])
  console.log("modification ligne : "+ligne"+" colonne : "+col)
  console.log("statut colonne A : "+bdd.getRange(ligne,1).getValue())
}

Puis, fais une modification, ensuite dans la page Apps Script a gauche dans l'icone "exécutions" et là cliques sur la ligne de la dernière modif, voir ce qui est écrit comme logs

ErreurTentative d'exécution de la fonction modifier, mais l'enregistrement a échoué.

ErreurTypeError: bdd.getRange(...).getRange is not a function at modifierLigne(Formul:70:26)

Erreur de syntaxe : SyntaxError: missing ) after argument list (ligne : 70, fichier : Formul.gs)

On ne doit plus en être loin ?

JL

Peux tu copier / coller le script modifierLigne ?

Excusez-moi de ce retard, je m'étais absenté.

C'est-cela que vous me demandez ?

"'Code.gs"

// Mike Steelson alias Mikhail Staliyevich

// variables :

const nomBdd = 'DonnéesPersonnelles' // nom de la feuille base de données

const col = 2; // colonne à partir de laquelle les données sont enregistrées

const bdd = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(nomBdd);

// création du menu

//function onOpen() {

// SpreadsheetApp.getUi()

// .createMenu('** Base de Données **')

// .addItem('Créer une nouvelle ligne dans la BdD', 'creer')

// .addItem('Modifier première ligne sélectionnée', 'modifier')

// .addToUi();

//}

// formulaire création

function creer() {

const html = HtmlService

.createTemplateFromFile('formCreation')

.evaluate()

.setWidth(400)

.setHeight(850);

SpreadsheetApp.getUi().showModelessDialog(html, 'Ajouter');

}

// formulaire lecture - modification

function modifier() {

if (numLigne()<=1){

Browser.msgBox('Sélectionner une ligne en colonne A !')

}else{

const html = HtmlService

.createTemplateFromFile('formModification')

.evaluate()

.setWidth(400)

.setHeight(850);

SpreadsheetApp.getUi().showModelessDialog(html, 'Modifier');

}

}

// transfert des données de la base de données vers le formulaire modification

function transfererData() {

var ligne = numLigne()

return bdd.getRange(ligne,col,1,bdd.getLastColumn()-col+1).getValues()

}

// numéro de la ligne correspondant la la première case cochée colonne A

// pour transférer les données vers le formulaire modification

// pour enregistrer les données issues de la feuille modification

// pour indiquer au formulaire en commentaire du bouton le n° de ligne en cours de visualisation

function numLigne(){

var f = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()

var values = f.getRange('A2:A').getValues().join().split(",");

var ligne = values.indexOf('true') + 2;

if (f.getName()==nomBdd){return ligne}else{return 0}

}

// ajout des données en provenance du formulaire création

function ajouterLigne(tab) {

var ligne = bdd.getLastRow() + 1

bdd.getRange(ligne,col,1,tab.length).setValues([tab])

}

// modification des données en provenance du formulaire modification

function modifierLigne(tab) {

var ligne = numLigne()

bdd.getRange(ligne,col,1,tab.length).setValues([tab])

console.log("modification ligne : "+ligne"+" colonne : "+col)

console.log("statut colonne A : "+bdd.getRange(ligne,1).getValue())

}

// permet d'inclure dans les formulaires un autre fichier html, css.html en l'occurence

function rapatrier(filename){

return HtmlService.createHtmlOutputFromFile(filename).getContent();

Bonjour,

il y a une petite erreur de ", voici comment remplacer modifierLigne :

// modification des données en provenance du formulaire modification
function modifierLigne(tab) {
  var ligne = numLigne(),
  bdd.getRange(ligne,col,1,tab.length).setValues([tab]),
  console.log("modification ligne : " + ligne + " colonne : " + col);
  console.log("statut colonne A : "+bdd.getRange(ligne,1).getValue())
}

Bonjour,

Pas d'échec et pas de résultat !...

Cordialement

JL

console

Les logs semblent correct, la modif a bien eu lieu ligne 6 ?

Si oui, essayez ce script :

// modification des données en provenance du formulaire modification
function modifierLigne(tab) {
  var ligne = numLigne(),
  bdd.getRange(ligne,col,1,tab.length).setValues([tab]),
  console.log("modification ligne : " + ligne + " colonne : " + col);
  console.log("statut colonne A AVANT UNCHECK : "+bdd.getRange(ligne,1).getValue())
  bdd.getRange(ligne,1).uncheck();
  console.log("statut colonne A APRES UNCHECK : "+bdd.getRange(ligne,1).getValue())

}

C'est tout bon !

console

Merci infiniment de votre patience

Très cordialement

JL

C'est encore moi,

Je suggère d'ajouter cela au script initial de M.Steelton ...

Ainsi qu'une fonction supplémentaire d'enchainement : rab du formulaire (ou fermeture/réouverture) pour passer à la ligne suivante !?

Cela en ferait un outil complet et confortable de gestion d'une base de données

Je ne demande pas, je suggère !...

JL

Rechercher des sujets similaires à "formulaire google sheet"