Ajout automatique Date si ajout Data

Bonjour à tous

Contrairement aux infos de mon profil, cette demande est dans mon cadre professionnel avec un environnement Windows 10 et Google Sheet.

Nous avons un fichier Sheet avec un suivi quotidien et nous sommes des utilisateurs (et nos remplaçants) qui n'ont aucune compétence dans les macros et les app scripts. Régulièrement, est ajouté de la data avant de posserder un historique sur l'année. En conséquence, à chaque ajout, nous écrivons manuellement la date d'import de cette data.

Existe-t-il une formule/fonction qui puisse inscrire automatiquement la date de cet import ? Il est fort probable qu'elle soit intégré dans une ArrayFormula.

Je préfére la solution d'une focntion car elle me semble plus abordable pour n'importe quel intervenant.

Merci à tous pour votre aide.

Bonjour,

Je vois 2 solutions :

- sans script : créer un Google form, les utilisateurs ajoutent des données par ce biais (en + vous pouvez rendre des data obligatoires, formalisé ex : date)

chaque réponse est ajoutée au fur et à mesure et un horodateur automatique permet d'avoir la date d'ajout.

- avec script :

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var date = new Date();
  var maintenant = Utilities.formatDate(date, "GMT+2", "dd/MM/yyyy - HH:mm");

  // Si modification n'est pas dans la 1ere colonne
  if (range.getColumn() != 1) {
    sheet.getRange(range.getRow(), 1).setValue(maintenant); // insère maintenant dans la 1ère colonne à la même ligne que la modification
  }
}

Alternative, si vous voulez que ce soit figé (ainsi si un user modifie des données dans la ligne après coup, c'est la 1ere date qui est conservée et non pas celle de la nouvelle modification)

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
    var date = new Date();
    var maintenant = Utilities.formatDate(date, "GMT+2", "dd/MM/yyyy HH:mm");

  // Si la modification n'est pas dans la 1ère colonne et la colonne A est vide
  if (range.getColumn() != 1 && sheet.getRange(range.getRow(), 1).getValue() === null) {
    sheet.getRange(range.getRow(), 1).setValue(maintenant);// insère maintenant dans la 1ère colonne à la même ligne que la modification
  }
}

Merci Pierre pour ton aide.

Effectivement, ma solution n'est donc pas une simple formule, mais de l'App Script.

Je viens de créer un fichier test pour l'exercice.

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

Je pense avoir ajouté ton script via le module Macro mais il ne réagit pas (ni à la copie d'une data ni à l'écriture d'une data).

Quelle erreur aurais-je commise ?

Accès refusé.

Mais après relecture je vois une erreur dans mon 2nd script === null ne fonctionne pas sur GAS, voici le code corrigé :

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
    var date = new Date();
    var maintenant = Utilities.formatDate(date, "GMT+2", "dd/MM/yyyy - HH:mm");

  // Si la modification n'est pas dans la 1ère colonne et la colonne A est vide
  if (range.getColumn() != 1 && sheet.getRange(range.getRow(), 1).getValue() === "") {
    sheet.getRange(range.getRow(), 1).setValue(maintenant);// insère maintenant dans la 1ère colonne à la même ligne que la modification
  }
}

Il faut aller dans Extensions > Apps Script

Ensuite remplacer le code existant par celui transmis précédemment, enregistrer, le lancer une fois pour les autorisations (il va sans doute y avoir une popup et une erreur car c'est une fonction qui se déclenche avec un événement).

Puis dans le fichier ça doit fonctionner.

Merci pour ton aide

Comme tu peux le voir dans le fichier (lien dans un post précédent), il a fallu que j'insère une colonne à gauche pour que la Date s'inscrive dans la première colone (tel que tu as programmé).

Toutefois :

  • La date ne s'inscrit que sur la première ligne dans le cas d'une copie de données (Ctrl+V) sur plusieurs lignes;
  • Est-il possible qu'elle s'écrive dans la dernière colonne ? J'ai essayé de comprendre et de modifier mais sans résultat.

Bonjour,

Le fichier est toujours inaccessible. (donc je ne peux toujours pas voir)

Afin de mettre la date dans la dernière colonne, il faut modifier cette partie en mettant le numéro de colonne à la place de 1, ( A = 1, B= 2, C = 3, ....)

 if (range.getColumn() != 1 && sheet.getRange(range.getRow(), 1).getValue() === "") {
    sheet.getRange(range.getRow(), 1).setValue(maintenant);// insère maintenant dans la 1ère colonne à la même ligne que la modification
  }
}

Pour ce qui est d'une modification sur plusieurs lignes en même temps, en effet, c'est l'endroit où le pointeur agit qui est pris en compte.

Merci pour ton aide.

Rechercher des sujets similaires à "ajout automatique date data"