Copier automatiquement un montant journalier dans un tableau journalier

Bonjour, je fais mes comptes chaque jour et je souhaite sauvegarder 3 montants : carte bancaires à prélever, réel sur le compte et reste à dépenser. Ces informations seraient à conserver dans un tableau qui me permettra de faire des moyennes jour, des tendances etc...J'arrive bien à copier les données dans un tableau avec une formule simple comme : =si(b1="date jour"; 'synthèse'!C3). Mais les données qui se sont collées dans le tableau disparaissent le lendemain car la date est différente. Il faudrait que les données saisies les jours précédents soient conservées dans le tableau, qu'il n'y ait que les valeurs et non la formule basée sur la correspondance des dates du jour. Je peux faire un copié/collé mais ce serait mieux que ce soit automatique. Faut-il une macro ? Un scripte ? Bref, je sollicite votre aide...Merci d'avance

Bonjour,

on peut faire un script qui se déclenche tous les jours à minuit, ou une autre heure

as-tu un fichier projet et peux-tu mettre un lien ?

À 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 quotidien

oui en effet. Mais avez vous résolu ce problème ?

Mais avez vous résolu ce problème ?

oui, ce script fonctionne très bien

peux-tu mettre un lien vers un fichier simplifié représentatif ?

J'ai respecté le sens d'enregistrement des données (je fais plus généralement les dernières sauvegardes en tête), et j'ai changé quelques formules en colonne A (voir A1) et en colonnes H, I, J

function archiver(){
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var f1 = doc.getSheetByName('saisie');
  var f2 = doc.getSheetByName('calculs');
  var adresses = ["B2","B3","B4"]; // les cellules concernées
  var destinations = ["E","D","C"]; // les colonnes où seront reportées les valeurs
  var li = getLastDataRow(f2,'C')+1;
  for (var i = 0; i < adresses.length; i++){
    f2.getRange('B'+li).setValue(new Date());
    f2.getRange(destinations[i]+li).setValue(f1.getRange(adresses[i]).getValue());
  }
}
function getLastDataRow(sheet,col) {
  var lastRow = sheet.getLastRow();
  var range = sheet.getRange(col + lastRow);
  if (range.getValue() !== "") {return lastRow;} else {return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();}
}

Il faut ensuite soit déclencher la fonction à la main, soit lui adjoindre un déclencheur tous les soirs

https://docs.google.com/spreadsheets/d/1uNQH48WANZW1jHKr4d7wcKE_sV68kU5s5b_gPxwcOZQ/edit?usp=sharing

Bonjour,

merci pour ta réponse ;

j'ai pu testé l'efficacité de ta macro mais je ne la retrouve plus, j'ai peut être fait une mauvaise manip...Comment copier ce script et créer cette macro dans mon fichier ?

Dans ton fichier,

  1. fais Outils > Editeur de script
  2. à la place de ce qui est écrit par défaut, colle le script ci-dessus
  3. et enregistre, on te demandera peut-être de valider, dans ce cas il faut sans hésiter aller jusqu'au bout de la validation en cliquant sur "avancé" 2 fois
  4. retour dans la feuille, tu faits outils > macro > importer et tu cliques sur la fonction
  5. si tout est ok pour toi, je te conseilles de mettre en place ensuite un déclencheur automatique de la fonction en cliquant sur l'horloge à gauche de l'éditeur de script ... si problème, je te ferai une vidéo de cette étape

merci !

pou le faire il a fallu que je revienne à l'ancienne version de sript et là en effet j'ai réussi à copier la macro et tout fonctionne dans la copie du ficher que tu m'as transmis. J'ai donc fait la même manoeuvre dans mon fichier d'origine et, bien que j'ai changé le nom des feuilles et vérifiés que les cellules étaient bonnes, il y a un bug avec "getrange" et voici les messages d'erreur :

Typeerror:Cannot readproperty 'getrange' of nul

finalement, j'ai débogué et depuis çà à l'air de fonctionner...

Je vérifie et te le confirme aujourd'hui ou demain, merci !

Bonjour,

et un grand merci pour ta macro qui fonctionne très bien !

L'opérateur par contre ne me satisfait pas...J'ai essayé tout les modes et aucun ne me convient, sauf de déclencher moi même la macro.

Comme je travaille aussi à partir de mon smartphone, je n'ai pas accès à tout le menu de Sheet, notamment pour déclencher la macro manuellement. Du coup, j'aimerais insérer un bouton qui, lors d'un appuie, déclenche le fonctionnement de la macro. Est-ce possible ?

Bonjour,

L'opérateur par contre ne me satisfait pas...J'ai essayé tout les modes et aucun ne me convient, sauf de déclencher moi même la macro.

Opérateur? tu veux dire déclencheur ? pourtant déclencher en auto le soir c'est possible et confortable, j'en ai quelques uns qui tournent sans soucis.

Comme je travaille aussi à partir de mon smartphone, je n'ai pas accès à tout le menu de Sheet, notamment pour déclencher la macro manuellement. Du coup, j'aimerais insérer un bouton qui, lors d'un appuie, déclenche le fonctionnement de la macro. Est-ce possible ?

J'ai enlevé GSheets de mon smartphone, donc je ne peux pas tester. Je sais que une case à cocher peut le faire, un bouton, je n'ai jamais essayé.

Essaie ceci, d'abord sur ton ordinateur (il faudra donner les autorisations), ensuite sur ton smartphone : le chiffre va s'incrémenter

function ajouter() {
  var rng = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('B2')
  rng.setValue(rng.getValue()+1)
}

https://docs.google.com/spreadsheets/d/1xXdjmaao--xylkgUmPNr9dDjN9-tFsvD1CmxFHQjmIw/edit?usp=sharing

merci ! J'ai créé un bouton en collant une photo et sur mon ordinateur et çà fonctionne puisque je lui ai assigné la fonction archiver.

Par contre, ça ne fonctionne pas sur mon smartphone. L'appuie sur ce bouton ne déclenche pas la macro mais me donne juste la possibilité de dimuer la taille de l'image ou de la supprimer. Il n'y a donc pas de liaison avec la macro

C'est ce que je pensais ... une autre solution qui elle fonctionne parfaitement, je te fais une proposition ce soir

exemple

function onEdit(e){
  var cellule = e.source.getActiveRange();
  if(cellule.getA1Notation()=="A2" && cellule.getValue()==true){
    cellule.setValue(false)
    ajouter()
  }
}
function ajouter() {
  var rng = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('B2')
  rng.setValue(rng.getValue()+10)
}

https://docs.google.com/spreadsheets/d/1xXdjmaao--xylkgUmPNr9dDjN9-tFsvD1CmxFHQjmIw/edit?usp=sharing

Et bien toutes mes félicitations à toi et à Gilbert pour ces macros, les formules, et la case à cocher qui fonctionne parfaitement ! Vous êtes vraiment doués, c'est sûr !

Donc je fais mes saisies journalières et ensuite j'appuie sur la case à cocher, à partir de mon téléphone Android et la fonction archiver se déclenche.

J'ai beaucoup appris durant ces 2 jours, notamment la formule du jour en A1 que je ne connaissais pas du tout, puis la fonction "sierreur" et bien sur, je viens de découvrir les scripts !

Merci beaucoup, sincèrement .

Merci, reviens quand tu veux ... et merci à Gilbert qui a beaucoup d'expérience dans GSheets.

Rechercher des sujets similaires à "copier automatiquement montant journalier tableau"