Problème Planning

Bonjour à tous,

Je me permets de solliciter votre aide car j'ai créé un planning de disponibilité pour des articles, avec un planning mensuel (liste déroulante pour chaque mois+année).

Les cellules de mon tableau affichent les jours du mois sélectionné dans la liste déroulante, et les lignes correspondent aux produits qui sont disponibles.

Je souhaiterais bloquer (manuellement) des produits sur des périodes. Donc dire que le produit A n'est pas disponible les 19 et 20 avril 2022.

Cependant lorsque je change de mois, les dates se changent bien mais les annotations du mois précédent restent.

Comment faire pour enregistrer les annotations des produits sur chaque mois ?

exemple : en avril plusieurs produits sont réservés sur différentes périodes et lorsque je sélectionne le mois de mai, les cases face aux produits se vident car sont disponibles ?

Merci pour votre aide précieuse

bonne journée

Marion

6planning-test.xlsm (17.42 Ko)

Bonjour, et bienvenue

peux-tu partager un fichier google sheets plutôt qu'une copie excel ?

pour partager https://www.sheets-pratique.com/fr/cours/partage

Bonjour Steelson,

Tu as raison, voici le fichier Google Sheet :

https://docs.google.com/spreadsheets/d/1w5lU42fSdw-3zpsueP_mWpFMZeA248VanId4a80pR1Y/copy

Merci à toi,

Marion

Merci,

C'est assez classique in fine ... il faut lorsqu'une annotation est portée dans le planning, l'enregistrer dans une feuille qui servira de base de données. Et rappeler ces annotations lorsqu'on change de mois.

J'ai pris une copie pour y travailler ... comme je suis pris cet apm, je pense le faire au plus tard ce soir.

un poil plus complexe que je ne le pensais !

poursuite demain ...

Une proposition. Le principe est le suivant

  • l'onglet "Annotations" reçoit toutes les annotations (l'identifiant est le couple date~produit)
  • le calendrier comporte dans toutes les cases comprises entre ligne 10 et 28, et entre les 5ème et 35ème colonne la formule suivante
=iferror(vlookup(text(E$8;"yyyy-MM-dd")&"~"&$C10; Annotations!$A:$B ;2;0))
  • en cas de modification d'une cellule, la valeur est stockée dans l'onglet Annotations et la formule est regénérée
  • j'ai prévu le cas où il y a plusieurs modifications de cellules en même temps
// Mettre Europe/Paris dans appsscript.json
function onEdit(e) {
  var sh = e.source.getActiveSheet()
  var editRange = {
    top: 10,     // numéro de la première ligne
    bottom: 28,  // numéro de dernière ligne (non utilisé ici)
    left: 5,     // numéro de la première colonne
    right: 35    // numéro de la dernière colonne
  };
  var notes = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('annotations')
  var der = notes.getLastRow()
  var ids = notes.getRange(1, 1, der, 1).getValues().flat()
  var n = 1
  for (var i = e.range.rowStart; i <= e.range.rowEnd; i++) {
    if (i >= editRange.top && i <= editRange.bottom) {
      for (var j = e.range.columnStart; j <= e.range.columnEnd; j++) {
        if (j >= editRange.left && j <= editRange.right) {
          var id =
            Utilities.formatDate(new Date(sh.getRange(8, j).getValue()), Session.getScriptTimeZone(), "yyyy-MM-dd")
            + '~'
            + sh.getRange(i, 3).getValue()
          if (ids.indexOf(id) != -1) {
            notes.getRange(ids.indexOf(id) + 1, 1, 1, 2).setValues([[id, sh.getRange(i, j).getValue()]])
          }
          else {
            notes.getRange(der + n++, 1, 1, 2).setValues([[id, sh.getRange(i, j).getValue()]])
          }
          sh.getRange(i, j)
            .setFormula(`=iferror(vlookup(text(${columnToLetter(j)}$8;"yyyy-MM-dd")&"~"&$C${i}; Annotations!$A:$B ;2;0))`)
        }
      }
    }
  }
}
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;
}

Bonjour Steelson,

Merci infiniment pour ton aide c'est exactement ce que je souhaitais obtenir !

Je rencontre un souci. En cellule N13 lorsque j'ajoute une annotation sur le produit, celui-ci se duplique dans la cellule N14, et lorsque je supprime N14 il me supprime mon annotation de N13!

Idem dans d'autres cellules, c'est étrange ... !

Autre souci, les annotations de la ligne 29 n'ont pas l'air d'être prises en compte, j'ai mis des annotations sur mai et sur juin et les annotations restent.

Merci encore,

https://docs.google.com/spreadsheets/d/1w5lU42fSdw-3zpsueP_mWpFMZeA248VanId4a80pR1Y/copy

Ta configuration n'est pas bonne , tu es en "timeZone": "America/New_York",

image

pour changer, clique sur l'engrenage à gauche, puis active la 3ème case à cocher, retourne sur les scripts, sélectionne appsscript.json et change pour Europe/Paris, enregistre.

Par contre, il n'était pas prévu plusieurs lignes par article.

oui, et maintenant cela fonctionne !

Non cela ne fonctionne pas, lorsque j'ajoute une annotation en N13, il me la duplique en N14.

Et concernant la dernière ligne 29 il ne prend pas en compte les annotations

ok ok, je n'avais pas compris

mais c'est ce que je disais ...

Par contre, il n'était pas prévu plusieurs lignes par article.

car en face, je n'ai pas d'article. Dans une cellule fusionnée, seule la case en haut à gauche de la fusion est renseignée, les autres sont vides.

ce qui fait que cette information sera aussi dupliquée sur toutes les lignes de la colonne qui ne seraient pas la première ligne appartenant à des cellules fusionnées.

Je n'ai pas compris quelles cellules ne devaient pas être fusionnées ? Car j'ai fait des tests en retirant la fusion des cellules C (article) mais aussi des cellules D (photo de l'article) et cela ne fonctionne toujours pas ?

Et comment remettre des annotations sur la dernière ligne du tableau Ligne 29 ? Et si demain j'ai des nouveaux articles me suffit-il d'ajouter une ligne pour que cela soit pris en compte ou il faut modifier le script ?

Je n'ai pas compris quelles cellules ne devaient pas être fusionnées ? Car j'ai fait des tests en retirant la fusion des cellules C (article) mais aussi des cellules D (photo de l'article) et cela ne fonctionne toujours pas ?

celles de la colonne C

si tu ajoutes des commentaires sur une ligne qui n'aurait plus alors de valeurs en colonne C de part la suppression de la fusion, elle ne pourra plus appartenir à l'article

Et comment remettre des annotations sur la dernière ligne du tableau Ligne 29 ? Et si demain j'ai des nouveaux articles me suffit-il d'ajouter une ligne pour que cela soit pris en compte ou il faut modifier le script ?

pour cela, change cette partie du script

  var editRange = {
    top: 10,     
    bottom: sh.getLastRow(),
    left: 5,     
    right: 35    
  };

si tu as besoin de fusionner, alors il faudra que je change quelque chose, mais que j'indique aussi de quelle ligne il s'agit ... si tu fusionnes 3 lignes en colonne C pour l'article XX, il faudra que je puisse relier l'annotation à XX~1, XX~2 et XX~3

J'ai supprimé la fusion et effectivement cela fonctionne.

Ce qui est étrange c'est que j'ai également deux cellules D18+D19 (article BBQ) fusionnées et lorsque je fais une annotation sur cet article, cela ne me le duplique pas contrairement à mes cellules fusionnées en C.

C'est pas bien grave je vais retirer les fusions pour éviter toute erreur!

Et j'ai modifié le script pour les dernières lignes ça fonctionne nickel, merci !!

Rechercher des sujets similaires à "probleme planning"