Date du jour -1 comment formulé et où la placer

Bonjour amis du forum,

je me suis rendu compte hier qu'il y a un soucis avec le fichier: la date inscrite en "A1" est la date du jour ok c'est ce qui avait été demandé, mais il faudrait que pour la sélection de la colonne ce soit la date du jour "-1jour" .

Où dois je mettre le -1 dans une de ces formules.

function onOpen() {

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var date = Utilities.formatDate(new Date(), "GMT", "dd/MM/yyyy"); // recherche la date
  spreadsheet.getRange("A1").setValue(date); // affiche en "A1" la date du jour 

// ici il y a un menu
    .addToUi();

    var fonction = 'D' + (+rechercheDate() - 5)
    this[fonction]()

}; // code menu Steelson  https://www.sheets-pratique.com/fr/cours

// ***************************************************************************************************

function onEdit(e) {
   Browser.msgBox(rechercheDate())// test
  if (e.range.getColumn() == rechercheDate() && e.range.getRow() >= 5 && e.range.getRow() <= 18) {
    var fonction = 'D' + (+e.range.getColumn() - 5)
    this[fonction]()
  };
} // code  Steelson  https://www.sheets-pratique.com/fr/cours

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// *************************** Recherche d'après une date ******************************************************************
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// recherche d'après une date

function DateRecherche() {
   var fonction = 'D' + (+rechercheDate() - 5)
    this[fonction]()
  const sh = SpreadsheetApp.getActiveSheet();

} // code Steelson  https://www.sheets-pratique.com/fr/cours

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// *************************** Fin recherche *******************************************************************************
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function rechercheDate() {
  const sh = SpreadsheetApp.getActiveSheet();
  const d = sh.getRange('A1').getValue().valueOf()
  let col = 0
  sh.getRange('F3:P3').getValues().flat().forEach((x, i) => {
    if (x.valueOf() <= d) col = i
  })
  return (col + 5 + 2)
} // code Steelson  https://www.sheets-pratique.com/fr/cours

Merci d'avance à tous

mbell

si les dates sont continues, alors essaie ceci, avec return (col + 5 + 1) au lieu de return (col + 5 + 2)

function rechercheDate() {
  const sh = SpreadsheetApp.getActiveSheet();
  const d = sh.getRange('A1').getValue().valueOf()
  let col = 0
  sh.getRange('F3:P3').getValues().flat().forEach((x, i) => {
    if (x.valueOf() <= d) col = i
  })
  return (col + 5 + 1)
}

Bonjour Steelson,

Non cela ne fonctionne pas car en mettant le 12/7 il reste sur le 7/7 alors que là il devrait passer au 15/9 en mettant " return (col + 5 + 1)" et en remettant +2 la colonne est bien mise.

image

juste en changeant le +1 en +2

image

par contre en mettant la date du 6/7 c'est ok

image

et le lendemain on passe à la colonne suivante alors que je souhaiterais que la colonne soit accessible jusqu'au 7 inclus

image

sur Recherche date dans une ligne (excel-pratique.com) tu avais approuvé le changement, mais je n'avais pas tester sur la date du jour.

Ton aide m'a déjà été très précieuse, donc si tu peux me résoudre ce problème ce serait super Steelson

mbell

comme je n'avais plus ton fichier, j'avais bien dit "si les dates sont continues", or il y a des trous en effet

je refais les essais avec le calendrier que je devrais retrouver à partir de l'ancien post !

si je comprends bien, tu veux afficher la date si elle existe ou la suivante

et avec ceci ?

function rechercheDate() {
  const sh = SpreadsheetApp.getActiveSheet();
  const d = sh.getRange('A1').getValue().valueOf()
  let col = 0
  let calend = sh.getRange('F3:P3').getValues().flat()
  for (i = 0; i < calend.length; i++) {
    if (calend[i].valueOf() >= d) {
      col = i;
      break;
    }
  }
  return (col + 5 + 1)
}

pas réellement testé car je n'ai pas repris sur mon fichier de test les fameuses fonctions Dx

re ,

Mais tu as raison si j'avais les formules pour un modules "Dx" j'essayerais de les adapter pour les autres.

Pour le scripts il fonctionne parfaitement, désolé j'aurais du y penser dès le départ.

Merci Steelson.

mbell

Rechercher des sujets similaires à "date jour comment formule placer"