Formulaire scripté pour BDD_Comment déselectionner une céllule
Bonjour à toutes et tous !
Je me suis lancé d'un BDD qui peut être remplie via un formulaire grâce à des script sur Apps Script. Une grande première pour moi, donc excusez moi d'avance pour les approximations. Pour info je me suis basé sur la série de tutos (tuto du rien) pour le créer et l'adapter à ma BDD.
Ça c'est plutôt bien passé, mais le tuto à ses limites : arrivé au bout, ce n'est pas encore parfait pour l'usage qu'on va en avoir... Je m'explique.
Le formulaire à trois boutons :
- Créer/modifier un participant ("Bienvenue dans la Famiglia")
- Rechercher un participant ("Philppe !!! Je sais où tu te cache!")
- Supprimer un participant (Pew ! Pew ! ... "Sur ordre de la Famiglia")
Le problème c'est que les script ne prennent pas un compte la dernière cellule remplie si l'utilisateur ne clique pas sur une cellule vide avant de cliquer sur le bouton. Ce qui peut générer de nombreuse erreurs humaines.
Auriez-vous une petite astuce pour automatiser la validation de la dernière cellule remplie, ou la sélection d'une cellule vide en amont du lancement des scripts des boutons ???
Si c'est pas très clair, dîtes-le ;)
Et voici une copie de la bête si jamais ça peut aider (Je peux pas mettre de liens parce que je suis noob sur le forum) :
function searchBtn(){
clearForm(false);
let foundRecord = getStudentByFirstNameAndLastName(formFirstNameRange.getValue(),formLastNameRange.getValue());
if(foundRecord != null){
formIdRange.setValue(foundRecord.id);
formFirstNameRange.setValue(foundRecord.firstName);
formLastNameRange.setValue(foundRecord.lastName);
formAgeRange.setValue(foundRecord.age);
formResidenceRange.setValue(foundRecord.residence);
formGenreRange.setValue(foundRecord.genre);
formPrecariteRange.setValue(foundRecord.precarite);
formIsolementRange.setValue(foundRecord.isolement);
formAidantRange.setValue(foundRecord.aidant);
formDeficiencePhysiqueRange.setValue(foundRecord.deficiencePhysique);
formDeficienceCognitiveRange.setValue(foundRecord.deficienceCognitive);
formCommunicationRange.setValue(foundRecord.communication);
formProjetRange.setValue(foundRecord.projet);
formAtelier_1Range.setValue(foundRecord.atelier_1);
formAtelier_2Range.setValue(foundRecord.atelier_2);
formAtelier_3Range.setValue(foundRecord.atelier_3);
formAtelier_4Range.setValue(foundRecord.atelier_4);
formAtelier_5Range.setValue(foundRecord.atelier_5);
formAtelier_6Range.setValue(foundRecord.atelier_6);
formAtelier_7Range.setValue(foundRecord.atelier_7);
formAtelier_8Range.setValue(foundRecord.atelier_8);
formAtelier_9Range.setValue(foundRecord.atelier_9);
formAtelier_10Range.setValue(foundRecord.atelier_10);
formInaugurationRange.setValue(foundRecord.inauguration);
formFA_ExpressionGroupeRange.setValue(foundRecord.fa_expressionGroupe);
formFA_AppropriationProjetRange.setValue(foundRecord.fa_appropriationProjet);
formFP_EvalParticipationGroupeRange.setValue(foundRecord.fp_evalParticipationGroupe);
formFP_ConseilEntourageRange.setValue(foundRecord.fp_conseilEntourage);
formFA_RencontresConnaissancesRange.setValue(foundRecord.fa_rencontresConnaissances);
formFA_NouvellesRencontresRange.setValue(foundRecord.fa_nouvellesRencontres);
formFA_ConseilEntourageRange.setValue(foundRecord.fa_conseilEntourage);
formFP_ImpactLienSocial1Range.setValue(foundRecord.fp_impactlienSocial1);
formFP_ImpactLienSocial2Range.setValue(foundRecord.fp_impactlienSocial2);
formFP_ImpactLienSocial3Range.setValue(foundRecord.fp_impactlienSocial3);
formFA_Decouverte_HistTerrRange.setValue(foundRecord.fa_decouverte_HistTerr);
formFA_PartageConnaissancesRange.setValue(foundRecord.fa_partageConnaissances);
formFA_DecouverteTerritoireRange.setValue(foundRecord.fa_decouverteTerritoire);
formFP_Appropriation_TerrHistRange.setValue(foundRecord.fp_appropriation_TerrHist);
formFP_ParcoursAutonomieRange.setValue(foundRecord.fp_parcoursAutonomie);
formFP_DynamisationTerrRange.setValue(foundRecord.fp_dynamisationTerr);
formFP_ParticipationTerrRange.setValue(foundRecord.fp_participationTerr);
}
}Merci beaucoup, au plaisir de vous lire
Ne pouvant pas mettre de lien directement dans le message, je vous le mets dans ce PDF.
Je pense que ça peut aider à y voir plus clair.
Je continu à fureter pour trouver des solutions, mais je vois rien de concluant/compréhensible pour moi...
Par contre j'ai élargi mon éventail de solutions et j'aimerai avoir vos avis sur leur faisabilité/pertinence (pour rappel mon problème c'est que si l'utilisateur.trice ne désélectionne pas / valide pas le dernier champ remplis du formulaire, mais scripts ne le prennent pas en compte) :
- Trouver une fonction qui désélectionne le cellule avant de lancer le script, en allant sur une cellule vide par exemple. Ici j'ai essayé avec des macro, mais ça déplace la cellule...
- Idem mais en validant quoi qu'il en soit le dernier champ remplis.
- Enfin, une astuce de fourbe : faire une liste déroulante avec les différentes actions (créer/modifier, rechercher, supprimer) et un seul bouton qui lance le script correspondant à l'action sélectionner. Ici, l'utilisateur.trice est obligé.e de désélectionner son dernier champ rempli.
Est-ce que ces solutions vous paraissent viables ?
Le lien d'une copie du doc est dans le pdf du message précédent car je ne peux pas mettre de liens pour l'instant.
Merci à vous :D
Je me permet un petit UP au cas où