Google Apps Script
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
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?
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.
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
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 ?
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
- toujours le même en-tête
- toujours les mêmes colonnes
- à partir de la même ligne
et répondre à ces questions
- quelles onglets ? ou quels sont ceux qui ne sont pas concernés (on pourra broder pour quelques uns)
- quelles zones (en-tête) à réinitialiser
- quelles colonnes à effacer
- à 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
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.
Avant l’effacement
Après l’effacement
Avant l’effacement
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