Page 1 sur 1
Figer résultat formule + Case à cocher
Publié : 03 mars 2023 16:51
par ThomasLP
Bonjour à tous.
Je suis à la recherche d'une solution me permettant de "figer" le résultat d'une cellule à l'aide d'une case à cocher ou bien un autre système "simple"
Voici un exemple
- A1="JEAN"
- A2=A1
- Case à cocher dans la cellule A3
En temps normal, si j'écris "PAUL" en A1, A2 se met automatiquement à jour
Ce que je cherche:
Si je coche la case qui est en A3, la valeur en A2 se fige (par défaut "JEAN")
Une fois la case cochée en A3, je peux modifier A1 et cela n'a pas d'influence sur A2
En gros la case cochée déclencherait un copier/coller de la valeur.
Pour info, il y aurait une centaine de case à cocher dans la feuille de calcul.
Je vous remercie par avance
Re: Figer résultat formule + Case à cocher
Publié : 03 mars 2023 17:23
par ChristopherH
Hello Thomas,
Finalement si j'ai bien compris, il y a deux cas :
Si la case est cochée, A2=A1
Si la case n'est pas cochée, A2="Jean" (par défaut)
Une case à cocher étant un booléen (cochée = vrai, pas cochée = faux), j'aurai tendance à penser à faire une fonction SI(), ce qui donnerait dans ton cas en A2 :
=SI(A3=VRAI;"Jean";A1)
Donc si A3 est cochée, A2 prendra la valeur "Jean". Sinon, elle prendra la valeur de la cellule A1.
J'imagine par contre que "Jean" n'était qu'un exemple et que cette valeur change selon les cas. Si j'ai raison, comment est définie cette valeur "Jean" ?
On pourra affiner la formule avec cette information (ou la changer si ça marche pas).
Bonne soirée,
Christopher
Re: Figer résultat formule + Case à cocher
Publié : 03 mars 2023 18:35
par NC-Ahmet
Hello ThomasLP,
Je me permets d'ajouter un élément de réponse qui correspondra certainement davantage à tes attentes.
Au passage, merci à Christopher pour sa réponse, le seul problème dans sa solution c'est que la fonction
SI ne va pas se modifier à chaque fois que la colonne A l'est, ce qui fait qu'il affichera forcément "Jean" lorsque la case est décochée... plutôt embêtant.
À ma connaissance, il n'y a pas de solution native dans Google Sheets en l'état (peut-être que si ?).
Cependant, je te suggère la solution suivante :
- Rends toi dans le menu Extensions > Apps Script
- Fais un copier/coller du script suivant :
Code : Tout sélectionner
function onEdit(e) {
const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const colonnePrecedente = feuille.getRange(e.range.getRow(), e.range.getColumn() - 1);
const valeurCopie = feuille.getRange(e.range.getRow(), e.range.getColumn() - 2).getValue()
const copierValeur = () => colonnePrecedente.setValue(valeurCopie)
const copierReference = () => feuille.getRange(e.range.getRow(), e.range.getColumn() - 1).setFormulaR1C1(`=RC[-1]`)
e.range.getColumn() === 3 ?
e.range.getValue() === true ?
copierValeur() : copierReference() : ``;
}
Voilà ! Juste une dernière étape avant que ce soit fonctionnel, tu devras cliquer sur "
Exécuter" et autoriser les accès pour que ton script puisse interagir avec ta feuille Google Sheets.
Tu vas obtenir une erreur, c'est normal. Cette fonction n'est pas conçue pour fonctionner ici mais depuis ton classeur Google Sheets directement.
Retourne dans ta feuille et teste voir !
Attention. Je précise que le code n'est pas optimisé : il fonctionne dans n'importe quelle feuille de ton classeur à condition que tu aies une structure bien définie.
- Les valeurs en colonne A ;
- La colonne B qui fait référence à la colonne A ;
- Des cases à cocher en colonne C.
Voici une démonstration en image :
A++ !
Re: Figer résultat formule + Case à cocher
Publié : 05 mars 2023 22:12
par ThomasLP
Bonjour Ahmet
Merci pour ton retour.
C'est exactement cela que je cherchais, merci !!
Par contre mon problème est que les cellules ne sont pas les unes à cotés des autres.
Voici la disposition des cellules
Dans mon cas, la cellule D239 va alimenter les cellules I239, P239 etc ... (I239=D239 P239=D239 ...)
Je voudrais figer les valeurs I239 et P239 en cochant la case car la valeur D239 peut évoluer avec le temps car elle est alimenter avec une autre valeur
Si vous avez une idée je suis preneur
Re: Figer résultat formule + Case à cocher
Publié : 06 mars 2023 12:18
par NC-Ahmet
Hello,
En effet je n'avais pas toutes les infos.
Voici le code à jour :
Code : Tout sélectionner
function onEdit(e) {
const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const ligne = e.range.getRow();
const colonnePrecedente = feuille.getRange(ligne, e.range.getColumn() - 1);
const valeurCopie = feuille.getRange(ligne, 4).getValue();
const copierValeur = () => colonnePrecedente.setValue(valeurCopie);
const copierReference = () => colonnePrecedente.setFormula(`=D${ligne}`);
e.range.isChecked() !== null ?
e.range.getValue() === true ?
copierValeur() : copierReference() : ``;
}
Je t'explique le fonctionnement. Déjà, de ce que j'ai compris, tous les noms à récupérer sont dans ta colonne D, c'est bien ça ?
Le code ci-dessus va s'exécuter si tu coches ou décoches une case, quelle que soit sa position.
Si tu coches une case, elle va chercher la valeur de la même ligne en colonne D, pour la copier et la coller dans la cellule se trouvant juste à gauche de cette case à cocher.
Si tu décoches une case, elle va insérer la formule =D239 si t'es en ligne 239, =D240 si t'es en ligne 240, etc. dans la cellule se trouvant juste à gauche de cette même case.
J'espère que mes explications sont claires et que le code correspond à tes attentes !
A+
Re: Figer résultat formule + Case à cocher
Publié : 06 mars 2023 14:03
par ThomasLP
Oh super ! C'est exactement ce qu'il me fallait.
Je te remercie beaucoup !!!!
Re: Figer résultat formule + Case à cocher
Publié : 06 mars 2023 22:01
par Thierry
Bravo et merci Ahmet !