Figer une date dans google sheet

Bonjour à tous,

je viens vers vous car ça fait 3 jours que je cherche désespérément une formule ou autre pour m'aider à concrétiser un document de gestion des stocks sur google sheet.

J'essaie de donner un coup de pousse à la petite entreprise de mon frère qui produit des confitures. Et j'essaie de lui créer un fichier sur sheet, de gestion des stocks. J'aimerais lui simplifier le plus possible le travail, en automatisant le plus possible le fichier.

Pour cela j'ai besoin de connaitre les dates de ruptures des produits, pour pouvoir estimer plus tard les futures ventes. J'ai donc mis une formule comme ceci : =IFS(D14=0;TODAY();D14>0;"")

qui fonctionne très bien. Elle affiche la date du jour quand la case du stock (D14) passe à 0. sauf que cette date ce mets à jour automatiquement... Est il possible de figer cette date quand elle apparaît?

j'aimerais trouver une formule, qui dit que quand il apparait une date en H14, la date est figée. si pas de date, il ne ce passe rien.

Je vous remercie tous d'avance pour votre aide.

excellente journée à vous

Bonjour,

il faut passer par un script de type

function onEdit(event){ 
  var col = 2; // colonne B
  var feuille = "TABLEAU_DE_SUIVI_DE_FABRICATION";
  var f = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  if ((r.getColumn() == col) && (f.getName() == feuille) && (r.getRow() > 2)){ 
    r.offset(0,1).setValue(new Date());
  }
}

à adapter

Mets un lien vers un fichier test

salut,
déjà merci d'avoir pris le temps de me répondre c'est super sympa.

j'y connais rien en script. Il faut que je sélectionne les cellules concernées pour demander le script ou pas besoin?

https://docs.google.com/spreadsheets/d/12ELVb_ZkVluxcg3lVaBgHL5SA8BbXLWngiIqHGrX3sg/edit?usp=sharing

voici le lien d'une copie. Encore merci à toi

Fais outils > éditeur de script

image

et tu colles ensuite le programme que j'ai adapté

function onEdit(event){ 
  var col = 4; // colonne D
  var f = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  if ((r.getColumn() == col) && (r.getRow() > 2)){ 
    if (r.getValue()==0) {
      r.offset(0,4).setValue(new Date()); // de D à H = 4
    }
  }
}

se déclenchera quand tu mettras un 0 (donc il faut effacer les 0 et les remettre)

il s'agit d'une date + heure

Bonjour,

Toujours en passant par un script comme a dit Mike

Une version à boutons dans la barre des Menus

function onOpen() {
  SpreadsheetApp.getUi().createMenu('🌟 Mon Menu 🌟')
    .addItem('👉 Figer la cellule', 'figer')
    .addSeparator()
    .addItem('👉 MàJ de la cellule', 'Maj')
    .addToUi();
}

function figer() {
  let r = SpreadsheetApp.getActiveSheet().getActiveRange();
  r.setValues(r.getValues());
}

function Maj() {
  let r = SpreadsheetApp.getActiveSheet().getActiveRange();
  r.setFormula('=today()');
}

change aussi la formule en I en accompagnement du script proposé ...

=IF(H6="";"";DATEDIF(ROUNDDOWN(H6;0);$A$1;"yd"))

super!!! merci à tous pour vos messages et votre aide, je vais tester ça de suite et je reviens vers vous demain pour vous en dire plus.

encore 1000 merci l'équipe!

Alors, pas besoin d'attendre demain.

pour ton script Gilbert il est très bien, d'ailleurs je le garde pour d'autres choses, il me sera très utile. Merci beaucoup.

Pour le script automatique , je l'ai mis en place, j'ai supprimé les quantité et je les ais remises, mais cela m'a fait apparaitre la date du jour sans prendre en compte le fait qu'il y ai du stock ou non.

aussi quand je copie et colle le script et lui demande de s'exécuter cela me marque ça : "TypeError: Cannot read property 'source' of undefined

peux tu encore m'aider s'il te plait?

Pour le script automatique , je l'ai mis en place, j'ai supprimé les quantité et je les ais remises, mais cela m'a fait apparaitre la date du jour sans prendre en compte le fait qu'il y ai du stock ou non.

Ah, j'ai donc ajouté la suppression de la date si la quantité est différente de 0.

aussi quand je copie et colle le script et lui demande de s'exécuter cela me marque ça : "TypeError: Cannot read property 'source' of undefined

c'est un script qui s'exécute tout seul quand tu changes la valeurs dans la feuille, il ne peut pas être lancé à partir de l'éditeur de script

function onEdit(event){ 
  var col = 4; // colonne D
  var f = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  if ((r.getColumn() == col) && (r.getRow() > 2)){ 
    if (r.getValue()==0) {
      r.offset(0,4).setValue(new Date()); // de D à H = 4
    }
    else {
      r.offset(0,4).clearContent()
    }
  }
}

super!!! ça marche!

un grand grand merci!

vue que j'ai trois onglets, faut il que je fasse un script par onglet, ou il s'applique automatiquement à tout les onglets?

dit moi vue que tu t'y connais très très bien en script, saurait tu m'expliquer comment utiliser ce script pour mon fichier?

function verifStock() {
  var html = '<p>Bonjour,<br><br>Les produits suivants arrivent à leur stock minimal :</p><br>';
  html += '<style>td,th{border:1px solid #000;}</style><table>';
  var donnees = SpreadsheetApp.getActiveSheet().getSheetValues(1, 1, -1, 3).filter ( function (rang) {
    return rang[2] < rang[1];
  }).map ( function (d, i) {
    html += '<tr>';
    return html += i === 0 ? '<th>' + d[0] + '</th>' + '<th>' + d[1] + '</th>' + '<th>' + d[2] + '</th>' :  
    '<td>' + d[0] + '</td>' + '<td>' + d[1] + '</td>' + '<td>' + d[2] + '</td>';
  });
  html += '<table>'

  if(donnees[0].length > 1) {    
    MailApp.sendEmail({
      to: 'jb_fino@live.fr',
      subject: 'Stock mini atteint',
      htmlBody: html
    }); 
  }
}

function onOpen() {
  SpreadsheetApp.getUi().createMenu("Stock")
    .addItem("Stock en dessous de l'objectif", "verifStock")
    .addToUi();
}

j'ai trouvé ça sur internet, mais je ne comprends pas où sont indiquées les colonnes des stocks mini et stock réels...

le script s'applique sur tous les onglets !

je suis en déplacement, je laisse Gilbert répondre à ta question ...

@Jean-Baptiste FINO

la réponse à la question c'est ici

var donnees = SpreadsheetApp.getActiveSheet().getSheetValues(1, 1, -1, 3).filter ( function (rang) { return rang[2] < rang[1];

ex:

20211017 101732 001

donne ceci en réception email

20211017 101755 002

salut Gilbert,

merci d'avoir pris le temps de me répondre. Par contre j'avais compris que cela servait à cela. C'est juste que je ne comprends pas le code pour l'adapter à mon tableau.

pour tout t'expliquer, j'aimerais que quand les résultats qui sont dans la colonne D sont inférieurs aux données de la colonne E, cela m'envoie automatiquement un email de rappel avec les productions à réaliser.

et dans ce code,

var donnees = SpreadsheetApp.getActiveSheet().getSheetValues(1, 1, -1, 5).filter ( function (rang) {
    return rang[2] < rang[1];
  }).map ( function (d, i) {
    html += '<tr>';
    return html += i === 0 ? '<th>' + d[0] + '</th>' + '<th>' + d[1] + '</th>' + '<th>' + d[2] + '</th>' :  
    '<td>' + d[0] + '</td>' + '<td>' + d[1] + '</td>' + '<td>' + d[2] + '</td>';
  });

je ne comprends pas où je peux indiquer qu'il doit ce référer à la colonne D et E

merci d'avance et bonne soirée

Voilà mais le mieux est de comprendre le code

function verifStock() {
  var html = '<p>Bonjour,<br><br>Les produits suivants arrivent à leur stock minimal :</p><br>';
  html += '<style>td,th{border:1px solid #000;}</style><table>';
  var donnees = SpreadsheetApp.getActiveSheet().getSheetValues(1, 1, -1, 5).filter ( function (rang) {
    return rang[4] < rang[3];
  }).map ( function (d, i) {
    html += '<tr>';
    return html += i === 0 ? '<th>' + d[0] + '</th>' + '<th>' + d[3] + '</th>' + '<th>' + d[4] + '</th>' :  
    '<td>' + d[0] + '</td>' + '<td>' + d[3] + '</td>' + '<td>' + d[4] + '</td>';
  });
  html += '<table>'
console.log(html);
 if(donnees[0].length > 1) {    
    MailApp.sendEmail({
      to: 'xxxxxxxx@xxxxx.fr',
      subject: 'Stock mini atteint',
      htmlBody: html
    }); 
}
  }
20211017 204657 001

le stock réel et le stock mini ne sont peut-être pas à la bonne place

je vous laisse faire des essais pour apprendre ;-)))

super merci beaucoup j'ai enfin compris, j'ai réussi à l'adapter à mon tableau et au bon placement des colonnes. Merci beaucoup!

excellente soirée à vous tous

Très Bien

Rechercher des sujets similaires à "figer date google sheet"