Incrémenter colonne de résultats

Bonjour,

Je souhaiterais dans une feuille de calcul faire un suivi dans le temps d'une série de valeurs

Valeur au 3 marsValeur au 10 marsValeur au 20 mars
bienA23
bienB4,67
bienC544

Les valeurs de chaque bien sont importées grace une formule de type ARRAYFORMULA(RECHERCHEV()) depuis une autre feuille de calcul CALCUL_VALEURS.

Mettons que le 10 mars, je souhaite de nouveau calculer les valeurs de chaque bien, toujours grace à ma feuille de calcul CALCUL_VALEURS

Si je copie ma formule ARRAYFORMULA(RECHERCHEV()) dans la colonne C pour obtenir le 10 mars les nouvelles valeurs calculées, alors les valeurs de la colonne B (du 3 mars) seront elles aussi modifiées.

Comment puis-je "consolider" les valeurs du 3 mars pour qu'elles ne dépendent plus de la feuille CALCUL_VALEURS ?

Ou alors je n'ai peut-être pas du tout la bonne approche pour réaliser ce que je souhaite ? (en gros incrémenter la colonne qui recevra les résultats d'opérations réalisées sur une autre feuille)

Merci pour votre aide !

Bonjour,

Il faudra passer par une autre fonction, query ou sommeprod, tout dépend de comment est configuré l'autre onglet.

Mets un lien vers une copie de ton projet GSheets.

Copie de mon projet : https://docs.google.com/spreadsheets/d/1XIQXj-AmqiS0qHGELD2usMBllCSb8Mqo3Q5_hYWPzSQ/edit?usp=sharing

Son fonctionnement :

  • La feuille INVENTORY est remplie manuellement (de la colonne A à la colonne I)
  • La feuille CSV_EXPORT recopie les valeurs de INVENTORY en les organisant de façon à être reconnaissables par un logiciel tiers, après les avoir téléchargé au format .csv
  • Le fichier .csv est passé manuellement dans le logiciel tiers qui fournit un autre fichier .csv en sortie
  • Ce dernier est importé manuellement dans la feuille CSV_IMPORT
  • La feuille CSV_IMPORT2 réorganise les colonnes de CSV_IMPORT afin de placer la colonne "ID" en premier pour pouvoir utiliser la fonction RECHERCHEV(). La colonne "Processed price 2" est une copie de la colonne "Processed price" ou les "." sont remplacés par des ","
  • Sur la feuille INVENTORY, la colonne J récupère les valeurs de la colonne R de la feuille CSV_IMPORT2

Mon souhait est de :

  • stocker les valeurs de la colonne J "Valeurs au 03/03/21"
  • pouvoir relancer le même processus à une date ultérieure ("Valeurs au 04/03/21") afin d'analyser l'évolution de la valeur de chaque article.
  • Etc etc, en stockant à chaque fois les valeurs, en incrémentant par exemple la colonne de INVENTORY dans laquelle seront copiées les nouvelles valeurs

Mon problème étant qu'au moment d'importer le nouveau .csv du (par exemple) 04/03/21 dans la feuille CSV_IMPORT, alors les valeurs du 03/03/21 sont écrasées. (et sont donc également modifiées dans la colonne J de la feuille INVENTORY)

J'espère que mes explications sont compréhensibles...

Merci encore !

Je vois mieux ...

Dans ta formule

={"Valeur au 03/03/21";ARRAYFORMULA(IFERROR(VALUE(VLOOKUP($A$2:$A;CSV_IMPORT2!$A$2:$Z;18;FALSE));""))}

au passage tu n'es pas obligé de mettre 1000

tu fais référence à la feuille CSV_IMPORT2 issue de CSV_IMPORT

Si, comme je le comprends maintenant, la feuille CSV_IMPORT est écrasée et donne la feuille CSV_IMPORT2, il faut faire une copie comme valeur dans la colonne J, puis dans K le lendemain etc. avant de recharger CSV_IMPORT. Je ne vois pas d'autres solutions.

Ceci peut se faire avec un script assez simple.

Dis moi si ma compréhension est bonne, je te ferai le script qui copie en valeur les données de la dernière colonne et reporte les formules sur la suivante. Script à activer avant un nouvel import.

Oui, tu as bien compris la problématique.

Je me doutais bien qu'il faudrait passer par la case script, mais c'est un domaine encore complètement inconnu pour moi (j'essaye déjà d'apprivoiser les QUERY et autres formules !)

J'avoue que tes formules sont parfaites !

Je te fais le script asap (demain matin au plus tard)

Prends une copie

https://docs.google.com/spreadsheets/d/1VlH9dJcHY84xnXVEV-GrNeQ9NMp7ko6nCbDiUWkdmTM/edit?usp=sharing

Tu verras un nouveau menu apparaître en haut.

Le problème est qu'il faudra changer la date dans ta fonction

function onInstall(e) {
  onOpen(e); 
}
function onOpen(e) {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('**MENU**')
  .addItem('Nouvel Import !', 'nouveau')
  .addToUi();
}
function nouveau() {
  var feuille = SpreadsheetApp.getActiveSheet();
  var derColonne = feuille.getLastColumn()
  feuille.insertColumnBefore(derColonne);
  var plage = feuille.getRange(columnToLetter(derColonne+1)+1+":"+columnToLetter(derColonne+1));
  plage.copyTo(feuille.getRange(columnToLetter(derColonne)+1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
function columnToLetter(column) {
  var temp, letter = '';
  while (column > 0) {
    temp = (column - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    column = (column - temp - 1) / 26;
  }
  return letter;
}
image

Okay, je crois que j'ai compris.

Bon le script n'est pas encore limpide pour moi, je vais prendre le temps de le décortiquer à tête reposée.

En tous cas, je vais tester tout ça !

Merci !

onOpen > s'exécute à l'ouverture et crée e menu personnalisé (remplace un bouton en fait)

columnToLetter > est une routine qui transforme un n° en lettre (pour les colonnes)

nouveau > est ici le cœur de l' "action"

Rechercher des sujets similaires à "incrementer colonne resultats"