Mini calendrier et horodatage

Bonjour,

Je suis grand débutant sur excel et notamment sur sheet.

Je viens vers vous pour élucider 2 soucis que vous trouverez dans le fichier joint : https://docs.google.com/spreadsheets/d/1B0hiJ6Hedls5T-EBnMkTnIB9hvPV_jgly04IA8kXjns/edit?usp=sharing

1 : dans la feuille "date" en A8 je souhaite qu'un mini calendrier apparaisse comme dans A7 ou A9 qui sont déjà pré remplis d'une date.

2 : dans la feuille "formulaire" j'ai recréé un mini formulaire de saisie simplifiée avec deux boutons. En cliquant sur enregistrer cela crée une ligne supplémentaire dans la base de donnée, feuille "BDD". Comment puis-je insérer automatiquement dans la colonne E la date et l'heure à laquelle chaque ligne s'est créée ?

En cherchant un peu (pas assez surement) je suis tombé sur le raccourci Ctrl+; pour afficher la date courante dans une cellule et Ctrl+: pour l'heure. Mais sur google sheet le raccourci Ctrl+: pour l'heure ne fonctionne pas.

Avez vous des astuces à me donner ?

Slt,

je t'ai répondu pour ton souci numéro 1 au sein de ton tableau.

Bien à toi !

Bonjour,

une proposition plus simple (il faut en effet éviter les activate() qui sont chronophages, proposition qui reste malgré tout assez classique d'un point de vue écriture

function effacer2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var formulaire = ss.getSheetByName('formulaire')
  var ranges = ['B4', 'D4', 'D6', 'B6']
  for (var i = 0; i < ranges.length; i++) {
    formulaire.getRange(ranges[i]).clearContent()
  }
}

function enregistrer2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var formulaire = ss.getSheetByName('formulaire')
  var bdd = ss.getSheetByName('BDD')
  bdd.appendRow([
    formulaire.getRange('B4').getValue(),
    formulaire.getRange('D4').getValue(),
    formulaire.getRange('D6').getValue(),
    formulaire.getRange('B6').getValue(),
    new Date()
  ])
}

Pour l'horodatage, on utilise new Date(), il faut toutefois s'assurer que le timezone du script est en phase avec celui de la feuille, pour cela il faut aller dans appsscript.json comme suit https://forum.excel-pratique.com/sheets/google-script-remplissage-et-creation-quittances-puis-envoie...

Je t'ai mis "timeZone": "America/Los_Angeles" pour rester en GMT-08

Merci Hott18 pour l'astuce et les explications claires, ça c'est de mon niveau.

Steelson : comment dire....mille mercis car mon problème est résolu mais ce n'est plus du tout de mon niveau, là il faut savoir coder et plus du tout "je'm débrouille en essayant de bidouiller des trucs pour que ça fonctionne" !!

J'ai donc bêtement assigné mes boutons avec les fonctions enregistrer2 et effacer2 et ça fonctionne. Maintenant il va falloir que je comprenne pourquoi et comment tout ça ça marche ;-).

Edit : bon, j'ai bidouillé la fonction enregistrer3 pour qu'à la fin le script efface les données saisies dans le formulaire et pour que le curseur se place en B4.

function enregistrer3() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var formulaire = ss.getSheetByName('formulaire')
  var bdd = ss.getSheetByName('BDD')
  bdd.appendRow([
    formulaire.getRange('B4').getValue(),
    formulaire.getRange('D4').getValue(),
    formulaire.getRange('D6').getValue(),
    formulaire.getRange('B6').getValue(),
    new Date()
  ])
var ss = SpreadsheetApp.getActiveSpreadsheet()
  var formulaire = ss.getSheetByName('formulaire')
  var ranges = ['B4', 'D4', 'D6', 'B6']
  for (var i = 0; i < ranges.length; i++) {
    formulaire.getRange(ranges[i]).clearContent()
  }
var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B4').activate();
}

Alors le seul truc pour le moment qui me dérange c'est que quand je clique sur le bouton enregistrer et que mon curseur est placé sur la dernière cellule saisie, alors cette cellule ne se copie pas dans la base.

Alors le seul truc pour le moment qui me dérange c'est que quand je clique sur le bouton enregistrer et que mon curseur est placé sur la dernière cellule saisie, alors cette cellule ne se copie pas dans la base

Je me réponds à moi-même pour vous éviter de perdre du temps.

C'est normal de ne rien avoir puisque le contenu de la cellule active (là où est le curseur) n'est pas validé.

Merci pour tout.

Bonjour,

Alors le seul truc pour le moment qui me dérange c'est que quand je clique sur le bouton enregistrer et que mon curseur est placé sur la dernière cellule saisie, alors cette cellule ne se copie pas dans la base.

c'est la raison pour laquelle je n'utilise pas les boutons mais un menu personnalisé comme ceci, car le fait de cliquer sur un bouton n'a pas permis d'enregistrer ce qi est en cours de saisie dans la dernière case active !

function onOpen() {
  SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
    .addItem('👉 Enregistrer les données', 'enregistrer2')
    .addItem('👉 Effacer le formulaire', 'effacer2')
    .addToUi();
}

Effectivement c'est encore une amélioration, quoiqu'on perd le côté pratique du bouton qui est juste en dessous des données directement sur la page.

Ca change le concept mais au moins on ne perd pas de données.

Rechercher des sujets similaires à "mini calendrier horodatage"