Envoi d'un mail si la valeur n'est pas compris dans un intervalle

Il faudra mettre un trigger (déclencheur) sur la fonction onEdit lors d'une modification. Si tu n'as jamais fait, je te ferai une vidéo.

function onEdit(event){
  var feuille = event.source.getActiveSheet();
  var cellule = event.source.getActiveRange();
  var derLigne= feuille.getLastRow();
  if(feuille.getName()=='essai ' && cellule.getRow() == derLigne){
    Browser.msgBox('valeur hors limites')
    if ( (cellule.getValue()<350753733333333) || (cellule.getValue()>35927293300) ){
      var dest = "xxxx@gmail.com"
      col = cellule.getColumn()
      GmailApp.sendEmail(dest, 'Message d\'alerte', 'Valeur hors limite de surveillance ' + cellule.getValue() + ' le ' + (feuille.getRange(5,col,1,1).getDisplayValue() + ' à ' + feuille.getRange(6,col,1,1).getDisplayValue()) ) ;
    }
  }
}

Bonjour je vous remercie , il fonctionne. J'aimerai s'il vous plait le faire fonctionner pour toutes les colonnes qui ont relevé dessus marquées.
Comme sur l'image.

capture

Désolé, je ne comprends pas bien cette phrase

toutes les colonnes qui ont relevé dessus marquées

"relevé" est marqué où "dessus" ? en commentaire ? quelle ligne ?

J'aimerai répéter le même code sur toutes les colonnes de la même feuille s'il vous plait . Par exemple le code fonctionne de D7:Z7. J'aimerai qu'il fonctionne également sur D28:Z28, sur D42:Z42, etc... (A noter que ce n'est pas la seule que j'aurai dans mon classeur).

Dans ce cas, enlève

&& cellule.getRow() == derLigne

de

if(feuille.getName()=='essai ' && cellule.getRow() == derLigne)

donc essaie avec seulement

if(feuille.getName()=='essai ' )

J'ai ce message qui apparait à l'exécution du programme.

image

Et vous auriez s'il vous plait une idée pour que le code fonctionne pas seulement sur la cellule ou il y a marquée relevé , mais sur relévé1, relevé2 et ainsi de suite.

image

SI tu cliques sur Exécuter la fonction, c'est normal que tu aies cette erreur.

La fonction se déclenche comme tu l'as demandé ...

J'aimerai s'il vous plait que la fonction soit déclenchée lors de l'introduction d'une valeur sur la ligne "relevé "

donc quand la valeur est introduite (onEdit(event)), et quelle que soit la ligne.

Si tu veux lancer à tout moment sur toutes les valeurs hors tolérance, je peux le faire, mais je pense que cela va envoyer des dizaines de mails en même temps (si google l'admet !)

Vous avez raison, on a un message box.

Ca me dérange pas de recevoir plusieurs mails en même temps. J'aimerai s'il vous plait voir comment vous le faite. Je vous remercie d'avance.

Et j'ai oublié de vous préciser que les valeurs d'intervalle changent.

où se trouvent les valeurs d'intervalle ?

sinon, un menu ↓ Relance ↓ apparaît en haut à droite

function onOpen(e) {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('↓ Relance ↓')
  .addItem('Envois emails ↓', 'envoi')
  .addToUi();
}
function envoi() {
  var classeur = SpreadsheetApp.getActiveSpreadsheet();
  var feuille = classeur.getSheetByName('essai ');
  var derC = feuille.getLastColumn()
  var derL = feuille.getLastRow()
  var jour = feuille.getRange(5,4,1,derC-4+1).getDisplayValues()
  var heure = feuille.getRange(6,4,1,derC-4+1).getDisplayValues()
  var releve = feuille.getRange(8,2,derL-8+1,1).getValues()
  var data = feuille.getRange(8,4,derL-8+1,derC-4+1).getValues()
  var dest = "xxxxxxxxxxxxxxxxxx@gmail.com"
  for (var i=0;i<data.length;i++){
    for (var j = 0;j<data[0].length;j++){
      if(data[i][j]!='' && ((data[i][j]<35075373330) || (data[i][j]>35927293300))){
        var corps = ( 'valeur hors tolérance : ' + data[i][j] +' '+ releve[i][0] +' '+ jour[0][j] +' '+ heure[0][j] )
        GmailApp.sendEmail(dest, 'Message d\'alerte', corps)
      }
    }
  }
}    

Merci pour le partage du vrai fichier.

Une question : faut-il prendre en compte les 2 limites (de contrôle et de contrôle) ? et je présume que les limites ne sont donc pas les mêmes pour chaque ligne ? Ce qui est important pour moi est de savoir où se trouvent les valeurs.

Je vous remercie de votre aide, les valeurs se trouvent sur la feuille donnée et ce sont les LSCx et LICx svp.

ok, mais les plages ne sont pas "nommées" dans le fichier

  • Est-ce que par contre elles sont toujours en H38 et H39 des onglets ?
  • Ce qui n'est pas homogène est la valeur P1 dans l'onglet CAPA : comme il s'agit de plages fusionnées, on lit P1 dans la plage A8 et il faudrait que ce soit en A9 comme pour les autres Px => il faut donc redéfinir la plage fusionnée entre A9 et A26

Par ailleurs, sur quel script on travaille ?

  • le global sur CAPA
  • ou l'événementiel ? et sur quelle(s) feuille(s) ? et dans ce cas comment sont introduites les valeurs et où ? car onEdit(event) ne fonctionne que sur les données entrées manuellement

Non ce ne sont celles qui se trouvent dans H38 et H39 des onglets . Mais pouvez faire avec et je vais remodifier pour voir si j'aurai compris ce que vous aviez fait.

Merci pour l'erreur je vais la modifier.

ok, je regarderai cela en fin de matinée, sur CAPA en global donc ...

Je vous remercie

quand je dis

Ce qui n'est pas homogène est la valeur P1 dans l'onglet CAPA : comme il s'agit de plages fusionnées, on lit P1 dans la plage A8 et il faudrait que ce soit en A9 comme pour les autres Px => il faut donc redéfinir la plage fusionnée entre A9 et A26

en fait non, il faut conserver le pas de 20 entre chaque groupe de données et donc remonter plutôt la ligne de données 9 en 8

je vois pour qu'on ai à faire une incrémentation de 20 à chaque dans le programme. D'accord merci je le ferai.

et ne mets pas d'espace après P1 dans l'onglet CAPA

par ailleurs, il y a des valeurs en colonnes Y et Z mais pas d'heure et pas de date en colonnes Y et Z !

Rechercher des sujets similaires à "envoi mail valeur pas compris intervalle"