Google Apps Script

a3e7f7fd 50d0 4424 910a cf52ba136f0b

La casa validé l’inventaire se trouve en dernière ligne après l’inventaire, Est-il possible de la passer en rouge automatiquement après qu’on ai cliqué dessus ?
.

cdadc330 9af1 4f9b b9ff 961268ffa2f5

c’est ça que je dois modifier, dans la session Partager ?

cdadc330 9af1 4f9b b9ff 961268ffa2f5

c’est ça que je dois modifier, dans la session Partager ?

en effet, il faut que chacun le fasse, je ne pense pas que tu puisses le faire pour les autres

La casa validé l’inventaire se trouve en dernière ligne après l’inventaire, Est-il possible de la passer en rouge automatiquement après qu’on ai cliqué dessus ?

non, on ne peut pas cliquer sur une case (ou c'est complexe, lourd et aléatoire), mais on peut

  • mettre une image et cliquer dessus valider
  • ou mettre une case à cocher pour dire c'est validé
  • ou mettre un menu personnalisé

la case a cocher sa fera bien la faire.

Si on cocher la case sa peux envoyé un email avec tous les défaut (manquant ou deterioree) qui se trouve sur toute la feuille?

capture d ecran 2022 04 29 171356

j'ai essaye de mettre une écriture pour envoyé un a plusieurs destinataire en même temps, je ne suis pas sur que ce soit la bonne.

Peut on crée une remis a zéro automatique (c'est d'effacer tous les commentaire dans les ligne Observations, et tous ce qui est modifiable dans les feuilles et toute les ligne etat les passer en présent) tous les mercredi soire?

je ne travaille pas avec des images d'un code

ok pour cela, on prend donc la case à cocher de la dernière ligne (ne rien mettre en dessous) en colonne H.

image
function emailOnEdit(event) {
  var feuille = event.source.getActiveSheet();
  var cellule = event.source.getActiveRange();
  if (cellule.getColumn() != 8 && cellule.getColumn() != 6) return;
  if (cellule.getValue() == 'MANQUANT' || cellule.getValue() == 'DETERIOREE') {

    //definir les variables
    var ss = SpreadsheetApp.getActiveSpreadsheet()
    var sheet1 = ss.getSheetByName('feuille 1');
    var emailAddress = sheet1.getRange(2, 1).getValue();
    var subject = sheet1.getRange(2, 2).getValue();
    var message = sheet1.getRange(2, 3).getValue();
    // envoyer le mail   
    MailApp.sendEmail({ 
      to: emailAddress + ',autreadresse@gmail.com', 
      subject: subject, 
      htmlBody: message + '<b>' + tableHTMLplus(feuille.getRange(cellule.getRow(),1,1,feuille.getLastColumn())) 
    })
  }

  if (cellule.getRow() == feuille.getLastRow() && cellule.getValue() == true) {
    var ss = SpreadsheetApp.getActiveSpreadsheet()
    var sheet1 = ss.getSheetByName('feuille 1');
    var emailAddress = sheet1.getRange(2, 1).getValue();
    var subject = sheet1.getRange(2, 2).getValue();
    var message = sheet1.getRange(2, 3).getValue();
    var data = feuille.getRange('A1:H'+feuille.getLastRow()).getValues().filter(r => (r[7] ==  'MANQUANT' || r[7] == 'DETERIOREE'))
    MailApp.sendEmail({ 
      to: emailAddress + ',autreadresse@gmail.com', 
      subject: subject, 
      htmlBody: message + '<b>' + tableHTMLsimple(data) 
    })

  }
}

function tableHTMLsimple(data) {
  var tableformat = 'cellspacing="2" cellpadding="2" border="1" style="width:100%;border-collapse:collapse;border:1px solid #ccc"';
  var rows = data.map(r => '<tr><td>' + r.join('</td><td>') + '</td></tr>')
  return '<table ' + tableformat + ' >\n' + rows.join('\n') + '</table>'
}

function tableHTMLplus(range){
// sans changement

}

edit : suppression de la ligne provoquant une erreur

Pour le déclencheur, il faut mettre lors d'une modification et non lors d'un changement comme indiqué ici https://forum.excel-pratique.com/sheets/google-apps-script-170887#p1059843

Peut on crée une remis a zéro automatique (c'est d'effacer tous les commentaire dans les ligne Observations, et tous ce qui est modifiable dans les feuilles et toute les ligne etat les passer en présent) tous les mercredi soire?

c'est possible, mais je ne fais pas dans la dentelle, il faudrait que les onglets aient tous la même structure.

Merci pour ton aide Steelson.

Je viens de faire des essai après d'avoir modifier le déclancheur,et cela ne fonctionne pas j'ai résous un message d'erreur sur la boite d’envoi

capture capture 1

Il y a une faute d'orthographe, c'est getLastRow et non getLastRwo, j'ai enlevé cette ligne

Browser.msgBox(feuille.getLastRwo())

j'avais sans doute dû la mettre pour contrôler le bon fonctionnement ?

Merci sa fonction maintenant.

e99c4fdf ceb7 4893 8816 91d08b02b00e

j’ai essayé de structuré tous même onglet dit moi si cela vous suffit ou s’il faut que je face d’autres modifications ?

désolé, mais je ne fais pas dans la dentelle et certains onglets ont des colonnes fusionnées d'autres non, tout ne commence pas à 11 etc. etc. etc.

bon, donne la liste de ce qu'il faut effacer, pas du genre " tout ce qui est modifiable dans les feuilles" parce que j'en sais rien, dis moi telle et telle zone ou bien telle colonne à partir de ligne x

voici ce que j'ai préparé mais il ne faut pas le mettre tant que tout n'est pas carré !

function reinit() {
  var excl = ['Feuille 1', 'verification des vehicules', 'Grpahique1', 'validation de donnees', 'CdC']; //excluded sheets
  let zones = ['D7', 'E7', 'F7', 'G7'] // seront effacées
  let colonnes = ['F', 'H'] 
  let ligne = 11
  SpreadsheetApp.getActiveSpreadsheet().getSheets().forEach(sh => {
    if (!~excl.indexOf(sh.getSheetName())) {
      try {
        var der = sh.getLastRow()
        zones.forEach(z => sh.getRange(z).clearContent())
        colonnes.forEach(c => sh.getRange(c + ligne + ':c' + der).clearContent())
      }
      catch (e) { console.log(sh.getName()) }
    }
  })
}

voici la liste des cellule a modifie si possible.

j'ai essaye être au plus éclaire possible, je reste a votre disposition pour plus info.

Un très grand merci pour votre aide.

Normal 0 21 false false false FR X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0cm; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;}
Inventaire VSAV

Les cellules B3 ; C3 ; D3 ; H2 ; I5 ; D5 ; J5 sont à effacer automatiquement

Les cellules de la ligne 8 entre la colonne B a la colonne I sont à effacer automatiquement (la colonne I est à décocher automatiquement si possible)

Les colonnes F et G sont fusionner (observations) il faut les effacer automatiquement les ligne de la cellule 12 a la cellule 270.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne H (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 270 automatiquement.

Décocher automatiquement si possible la colonne H271.

Inventaire FPT

Les cellules B3 ; C3 ; D3 ; H2 ; I5 ; D5 ; J5 sont à effacer automatiquement

Les cellules de la ligne 8 entre la colonne B a la colonne H sont à effacer automatiquement.

Les colonnes F et G sont fusionner (observations) il faut les effacer automatiquement les ligne de la cellule 12 a la cellule 209.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne H (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 209 automatiquement.

Décocher automatiquement si possible la colonne H211.

Inventaire VTUTP

Les cellules B3 ; C3 ; D3 ; H2 ; I5 ; D5 ; J5 sont à effacer automatiquement

Les cellules de la ligne 8 entre la colonne B a la colonne H sont à effacer automatiquement.

Les colonnes F et G sont fusionner (observations) il faut les effacer automatiquement les ligne de la cellule 12 a la cellule 123.

Je ne csais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne H (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 123 automatiquement.

Décocher automatiquement si possible la colonne H125.

Inventaire VLCDG

Les cellules B3 ; C3 ; D3 ; H2 ; I5 ; D5 ; J5 sont à effacer automatiquement

Les cellules de la ligne 8 entre la colonne B a la colonne H sont à effacer automatiquement.

Les colonnes F et G sont fusionner (observations) il faut les effacer automatiquement les ligne de la cellule 12 a la cellule 26.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne H (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 26 automatiquement.

Décocher automatiquement si possible la colonne H28.

Inventaire LOTS PROMPT SECOURS

Les cellules B3 ; C3 ; D3 ; H2 ; I5 ; D5 ; J5 sont à effacer automatiquement

Les cellules de la ligne 8 entre la colonne B a la colonne H sont à effacer automatiquement.

Les colonnes F et G sont fusionner (observations) il faut les effacer automatiquement les ligne de la cellule 12 a la cellule 102.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne H (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 102 automatiquement.

Décocher automatiquement si possible la colonne H104.

Inventaire LOTS DE RELEVAGE (LREL)

Les cellules B3 ; C3 ; D3 ; H2 ; I5 ; D5 ; J5 sont à effacer automatiquement

Les cellules de la ligne 8 entre la colonne B a la colonne H sont à effacer automatiquement.

Les colonnes F et G sont fusionner (observations) il faut les effacer automatiquement les ligne de la cellule 12 a la cellule 26.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne H (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 26 automatiquement.

Décocher automatiquement si possible la colonne H30.

Normal 0 21 false false false FR X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0cm; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;}

C'est un message codé ?

Non pour ta demande, je ne fais pas dans la dentelle ...

Ce que je propose, c'est de standardiser tes fiches véhicule

  1. toujours le même en-tête
  2. toujours les mêmes colonnes
  3. à partir de la même ligne

et répondre à ces questions

  1. quelles onglets ? ou quels sont ceux qui ne sont pas concernés (on pourra broder pour quelques uns)
  2. quelles zones (en-tête) à réinitialiser
  3. quelles colonnes à effacer
  4. à partir de quelle ligne
  var excl = ['Feuille 1', 'verification des vehicules', 'Grpahique1', 'validation de donnees', 'CdC']; //excluded sheets
  let zones = ['D7', 'E7', 'F7', 'G7'] // seront effacées
  let colonnes = ['F', 'H'] 
  let ligne = 11

pour tous les onglets-véhicules, la même chose

b41a11e7 d532 4868 a6ca 6aed0cbfa276

non je ne sais pas ce que c’est, je panse que c’est un code qui c’est inséré comme ça .

Ok Pas de soucis on fera avec, merci pour votre aide en tout cas.

Je viens de faire des modifications en supprimant toutes les cellules fusionner, et en essayant que tout soit pareil.

Je viens de faire des modifications en supprimant toutes les cellules fusionner, et en essayant que tout soit pareil.

Je pense qu’il va falloir revoir la case à cocher qui se trouver en bas de chaque inventaire en colonne hache, mais vu que je supprimer une colonne qui était se fusionner (F : G Été fusionner ensemble) maintenant la case à cocher se retrouve dans la colonne G.

Dites-moi si cela vous va ou s’il faut que je fasse des modifications encore, toutes les colonnes ne sont pas remplies car il me reste encore de validation de donner à mettre en place, je pense que ça vous donne déjà un aperçu.

J’essaye de vous faire un Recappe ce soir au plus tard des lignes et des cellules à Effacer, vu que j’ai supprimé des colonnes du coup faut tout que je reprenne pour vous donner les bonnes informations.

voici la liste des cellules et des colonnes a modifier onglet par onglet.

pour tous les onglet en dessous de 271 comme dans l'ongle Inventaire VSAV je peut rajouter des ligne pour que tous les onglet est la même quantité de ligne ci cela peut être plus simple pour vous, et après je manquerait les ligne que j'ai pas besoin.

Inventaire VSAV

Les cellules B3 ; C3 ; D3 ; B5 ; G5 ; D5 ; H5 sont à effacer automatiquement

Les cellules de la ligne 8 entre la colonne B a la colonne Isont à effacer automatiquement (la colonne I est à décocher automatiquement si possible)

Les colonnes F (observations) il faut les effacer automatiquement tous commentaire inscris dans les ligne de la cellule 12 a la cellule 270.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne G (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 270automatiquement.

Décocher automatiquement si possible la colonne G271.

Inventaire FPT

Les cellules B3 ; C3 ; D3 ; B5 ; G5 ; D5 ; H5 sont à effacer automatiquement

Les cellules de la ligne 8 entre la colonne B a la colonne Hsont à effacer automatiquement.

Les colonnes F (observations) il faut les effacer automatiquement tous commentaire inscris dans les ligne de la cellule 12 a la cellule 209.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne G (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 209automatiquement.

Décocher automatiquement si possible la colonne G211.

Inventaire VTUTP

Les cellules B3 ; C3 ; D3 ; B5 ; G5 ; D5 ; H5 sont à effacer automatiquement

Les cellules de la ligne 8 entre la colonne B a la colonne H sont à effacer automatiquement.

Les colonnes F (observations) il faut les effacer automatiquement tous commentaire inscris dans les ligne de la cellule 12 a la cellule 123.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne G (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 123automatiquement.

Décocher automatiquement si possible la colonne G125.

Inventaire VLCDG

Les cellules B3 ; C3 ; D3 ; B5 ; G5 ; D5 ; H5 sont à effacer automatiquement

Les cellules de la ligne 8entre la colonne B a la colonne Hsont à effacer automatiquement.

Les colonnes F (observations) il faut les effacer automatiquement tous commentaire inscris dans les ligne de la cellule 12 a la cellule 26.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne G (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 26automatiquement.

Décocher automatiquement si possible la colonne G28.

Inventaire LOTS PROMPT SECOURS

Les cellules B3 ; C3 ; D3 ; B5 ; G5 ; D5 ; H5 sont à effacer automatiquement

Les cellules de la ligne 8 entre la colonne B a la colonne Hsont à effacer automatiquement.

Les colonnes F (observations) il faut les effacer automatiquement tous commentaire inscris dans les ligne de la cellule 12 a la cellule 102.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne G(etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 102automatiquement.

Décocher automatiquement si possible la colonne G104.

Inventaire LOTS DE RELEVAGE (LREL)

Les cellules B3 ; C3 ; D3 ; B5 ; G5 ; D5 ; H5 sont à effacer automatiquement

Les cellules de la ligne 8entre la colonne B a la colonne Hsont à effacer automatiquement.

Les colonnes F (observations) il faut les effacer automatiquement tous commentaire inscris dans les ligne de la cellule 12 a la cellule 26.

Je ne sais pas si la ligne de fin est fixe car je suis susceptible de les modifier soit en rajoutent ou en suppriment des lignes ?

La colonne G (etat) mettre toutes les cellules en affichage « présent » de la ligne 12 a la ligne 26automatiquement.

Décocher automatiquement si possible la colonne G30.

je panse qu'il va falloir reprogrammer les casse a coche (Validé l'inventaire) qui se trouve a la fin de chaque inventaire, la casse se trouver avant les dernier modification en colonne H et maintenant elle ce trouve en colonne G

Fais ceci sur une copie pour tester, c'est violent ! on en revient pas en arrière, ou fais une sauvegarde de ton fichier !

function reInitialiser() {

  const zones = ['B3', 'C3', 'D3', 'B5', 'G5', 'D5', 'H5', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8'] // seront effacées
  const colonnes = ['F', 'G'] // seront effacées à partie de la ...
  const ligne = 11

  const ss = SpreadsheetApp.getActiveSpreadsheet()
  const feuilles = ['Inventaire VSAV', 'Inventaire FPT', 'Inventaire VTUTP', 'Inventaire VLCDG', 'Inventaire LOTS PROMPT SECOURS', 'Inventaire LOTS DE RELEVAGE (LREL)']

  feuilles.forEach(feuille => {
    var f = ss.getSheetByName(feuille)
    var der = f.getLastRow()
    zones.forEach(z => f.getRange(z).clearContent())
    colonnes.forEach(c => f.getRange(c + ligne + ':c' + der).clearContent())
  })

}

mettre présent c'est compliqué !

et pour validé, ne pas fusionner sinon c'est aussi effacé comme tu le verras

C’est vrai que c’est impressionnant, ça efface tout.

Mais il va falloir qu’on affine les choses car il y a des cellules qui sont effacés et que tu ne devrais pas L être.

7071ca4c 0842 4136 9f8f 8fa2bf079950

Avant l’effacement

171f2f54 378f 4328 9a22 3e937346b755

Après l’effacement

32a4cf09 77ab 43f6 bf7a c01afc9c4b36

Avant l’effacement

058570b9 b138 48de b51c c7725e659320

Après l’effacement

Après l’effacement

Je vais essayer dans l’après-midi de référencer toutes les lignes ou tous les cellule qui sont effacés et qui ne devrait pas l être.

Merci pour ce travail

Rechercher des sujets similaires à "google apps script"