Désactivation/réactivations de formules ?
Bonjour,
Je dois mettre à jour des milliers de données tous les jours et tous les jours des 10 aines de formules se réappliquent (pour tenir compte de ces nouvelles données)
La problématique de départ était la suivante :
1- A l'ouverture d'un fichier Sheet, automatiquement, toutes les formules se lancent toutes seules. Sauf qu'elles le font forcément avec la anciennes données de la veille : Ce qui prend déjà un temps fou...
Pendant qu'elles font çà (pour rien...)
2- J'intègre les nouvelles données.
3- Du coup, rebelotte, elles se relancent pour intégrer les nouvelles données... ce qui double le temps total...
Pour éviter cette première problématique, j'ai mis en place l'action suivante :
Une fois qu'elles sont chargées avec les nouvelles données et traités : Je les désactivent pour le lendemain. Je gagne déjà un peu de temps.
Ensuite le lendemain, j'intègre les nouvelles données et je les réactivent toutes.
Sur cette première version, je n'ai pas été très malin, je le faisait formule par formule en ajoutant "/" devant la formule... fastidieux
Donc, une illumination me vint et je me suis mis à le faire avec "Rechercher/remplacer", beaucoup plus rapide (lool). ( le soir je remplace tous les "=map" par des "//=map" ou autre mais vous voyez le principe)
Le matin, une fois les données à jour, je lance le recherche/remplace de tous les "//=map" par des "=map"
Mais je me demande si il n'est pas possible de la faire encore plus simplement ?
Je ne sais pas trop comment, surement un script car je ne pense pas qu'autre chose puisse faire cela ?
Pensez-vous que cela soit possible ?
Merci
Bonjour,
Je ne rencontre pas ce cas précisément, mais tu sembles gérer une usine à gaz, j'ai un script qui fait quotidiennement un import d'API et mets à jour un fichier je pense qu'il est possible de l'adapter à ton cas :
- il faut lister les formules dans un tableau, avec les positions, les formules (sans le signe =) ex :
| feuille | position | formule | description |
| Feuille 1 | A2 | arrayformula(B2:B+C2:C) | additionne la colonne B et C |
- ensuite le script va intégrer les formules dans une liste, et les appliquer à chaque position au moment voulu
> il est ainsi possible que les formules ne se lance que sur demande, ou avec un déclencheur horaire.
Bonjour Pierre,
Par manque de temps, je n'avais pas eu le temps de comprendre ton idée mais là, je me suis replongé dedans et cela me semble très bien. Il semble que cela soit la bonne solution de pouvoir appliquer sur une simple action les formules à l'instant souhaité
Saurais-tu me dire où trouver ce script s'il existe un exemple concret pour que je puisse le comprendre et l'adapter
merci
Salut,
J'ai relus en diagonal, en gros, tu veux appliquer des formules sur un plage de données qu'à un instant précis, si tel est le cas tu peux faire un script plutôt simple de ce type (là je mets la formule dans le script mais il est possible d'y faire référence sur une cellule de ton fichier par ex.) :
function exempleAutoFormule() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("Feuille 1");
const formule = "=ARRAYFORMULA(A2:A+B2:B)";
const formuleRange = sheet.getRange('C2:C');
formuleRange.clearContent();
formuleRange.getCell(1,1).setFormula(formule);
}Ensuite il faut ou bien faire un déclenchement à la demande (par ex par un menu personnalisé, un bouton), ou bien à l'ouverture, bref, suivant tes besoins.
Attention toutefois, c'est un fonctionnement "sale", tu peux par le script remplacer ta fonction, voici un tuto accessible sur le site :
https://www.sheets-pratique.com/fr/codes/fonctions-google-sheets-apps-script