Alimenter une feuille "evolution" grâce à une sauvegarde hebdomadaire ?
Bonjour !
Pour ceux qui suivent mes sujets depuis quelques temps, je me fait un document de suivi incluant des achats / rentes.
Maintenant que j'ai tout les éléments pour finaliser mon doc. J'ai une dernière interrogations.
La source de tout mes calculs etc.. est une API que je mets à jour manuellement ( extension API sur sheet ).
Le fournisseur de cette API mets à jour les valeurs et par conséquent cela a un impact sur mon dashboard.
Une possibilité pour moi de sauvegarder des donnees precises 1x par semaine pour alimenter une feuille de suivi ? ( automatique idéal, sinon manuel )
Je suppose que c'est une automatisation d'un vulgaire "copier/coller" de valeur à un instant "x"
Merci !
Si une explication n'est pas suffisante, j'essayerai de faire un classeur dans le week-end, malgré que ça ne soit pas représentatif de mon .doc. :).
Concrètement c'est juste un report de données pour garder une trace de l'évolution
On n'est pas très loin de ce sujet alors ...
https://forum.excel-pratique.com/sheets/enregistrement-programe-158686#p982131
précise si tu veux sauvegarder une feuille ou tout le fichier ? sur un seul et même fichier ou un par semaine ? et dans quel répertoire ...
L'automatisation est possible à fréquence hebdo par un déclencheur.
Merci je vais regarder ce sujet attentivement.
J'aurais aimé cibler quelques éléments de plusieurs feuilles d'un même document.
Si ce n'est pas "possible" je repenserai mon document de manière à synthétiser ce que je souhaite "sauvegarder" sur une seul page.
( à terme, le but étant de faire un graphique de l'évolution)
Bonjour,
je relance ce dernier sujet.
On n'est pas très loin de ce sujet alors …
J'ai plutôt l'impression que c'est pour sauvegarder des pages entières, de mon coté je recherche quelque chose de "plus simple"
la notion de sauvegarde dans mes recherches google n'est pas bonne, je ne trouve pas de résultat "adéquat" au même titre qu'un report de ligne
Après réflexion j'avais imaginé ceci qui représente un simple report de ligne à l'instant "T"
le doc de la capture est ici
merci et bon week-end a vous !
à adapter
function archiver(){
var doc = SpreadsheetApp.getActiveSpreadsheet();
var f1 = SpreadsheetApp.getActive();
var f2 = doc.getSheetByName('Archive');
var adresses = ["D1","B3","D3","B5"]; // les cellules concernées
var destinations = ["B2","C2","D2","E2"]; // les colonnes où seront reportées les valeurs
f2.insertRowBefore(2);
for (var i = 0; i < adresses.length; i++){
f2.getRange(destinations[i]).setValue(f1.getRange(adresses[i]).getValue());
}
}
+ déclencheur hebdo
Merci !
Puis-je changer le sens d'enregistrement ? ( résultat + récent en bas )
Bonne soirée
Oui bien sûr ... j'avais adopté ce sens car quelqu'un me l'avait demandé et je l'avais adopté, car au bout de x semaines, il faut scroller la fenêtre pour avoir les données. Et en programmation c'était plus simple.
function archiver(){
var doc = SpreadsheetApp.getActiveSpreadsheet();
var f1 = doc.getSheetByName('Main');
var f2 = doc.getSheetByName('Archive');
var adresses = ["D1","B3","D3","B5"]; // les cellules concernées
var destinations = ["B","C","D","E"]; // les colonnes où seront reportées les valeurs
var li = f2.getLastRow()+1;
for (var i = 0; i < adresses.length; i++){
f2.getRange(destinations[i]+li).setValue(f1.getRange(adresses[i]).getValue());
}
}
. j'avais adopté ce sens car quelqu'un me l'avait demandé et je l'avais adopté, car au bout de x semaines, il faut scroller la fenêtre pour avoir les données
l'argument est bon en effet, je me serait sûrement dis la même chose après quelques dizaines de lignes.
ca va me permettre aussi de voir la différence de structure du script et me permettre de comprendre !
Tout est utile !
Merci !!
et l'autre argument aussi est la taille de la feuille, tu débutes avec seulement 2 lignes, et ensuite via l'insertion la feuille s'agrandît
je ne sais pas ce qui se passe quand tu emplafonnes le nbre de lignes sinon
hello, je déterre ce post pour 2 petites choses ( simple je dirais :D )
voici le script pour reporter des cellules et créer une sauvegarde
function Saisie(){
var doc = SpreadsheetApp.getActiveSpreadsheet();
var f1 = SpreadsheetApp.getActive();
var f2 = doc.getSheetByName('ACHAT');
var adresses = ["B3","C3","D3","E3","F3","G3"];
var destinations = ["B5","C5","D5","E5","F5","G5"];
f2.insertRowBefore(2);
for (var i = 0; i < adresses.length; i++){
f2.getRange(destinations[i]).setValue(f1.getRange(adresses[i]).getValue());
}
}
1) comment créer la sauvegarde sur cette même feuille ? j'ai essayé mais les décalages de lignes sont incompréhensible
et en 2ieme question, j'ai un script pour mon "clear" j'aimerai faire une 1 seul script en faite ( qui sauvegarde et supprime le contenu saisie ensuite )
je ne parviens pas a a voir un résultat en les assemblant
function Reset() {
var sheet = SpreadsheetApp.getActive().getSheetByName('ACHAT');
sheet.getRange('B3:G3').clearContent();
}
Merci bien !
Pour bien comprendre, tu veux mettre la ligne 5 en ligne 3 et effacer la ligne 5 ?
Pour bien comprendre, tu veux mettre la ligne 5 en ligne 3 et effacer la ligne 5 ?
lorsque je mets du contenu dans la partie encadrée ( B3:G3 ) j'aimerai que ça me reporte ces données en B5:G5
et que ça supprime ce que j'avais mis au préalable en B3:G3 dans mon "formulaire".
en gros le travail qu'on avait fait avec une sauvegarde sur une autre feuille de mon classeur, j'aimerai la mettre sur la même feuille
si j'ai été plus clair... sinon dit moi :)
merci
Etape 1) saisie de mes données
Etape 2) -> cliquer sur "save"
Etape 3)
pas du tout testé, écrit avec le bloc-notes !
function Transfert() {
var sheet = SpreadsheetApp.getActive().getSheetByName('ACHAT');
var valeurs = sheet.getRange('B3:G3').getValues();
sheet.getRange('B5:G5').setValues(valeurs);
sheet.getRange('B3:G3').clearContent();
}
pas du tout testé, écrit avec le bloc-notes !
alors le mouvement est bon ! mais ça écrase ce qui est déjà présent en B5:G5
function Saisie(){
var doc = SpreadsheetApp.getActiveSpreadsheet();
var f1 = SpreadsheetApp.getActive();
var f2 = doc.getSheetByName('ACHAT');
var adresses = ["B3","C3","D3","E3","F3","G3"];
var destinations = ["B5","C5","D5","E5","F5","G5"];
f2.insertRowBefore(2);
for (var i = 0; i < adresses.length; i++){
f2.getRange(destinations[i]).setValue(f1.getRange(adresses[i]).getValue());
}
}
a savoir reporter des données sans écraser les anciennes, il faudrait un melange de ces 2 scripts
ajoute
sheet.insertRowBefore(5);
function Transfert() {
var sheet = SpreadsheetApp.getActive().getSheetByName('ACHAT');
var valeurs = sheet.getRange('B3:G3').getValues();
sheet.insertRowBefore(5);
sheet.getRange('B5:G5').setValues(valeurs);
sheet.getRange('B3:G3').clearContent();
}
ajoute
sheet.insertRowBefore(5);
j'étais en train de bricoler avec cet élément justement, le mots clé manquant c'était "Sheet"
merci beaucoup !