Somme de cellules colorées

Bonjour à tous.

J'ai un tableau ou je souhaite comptabiliser le nombre de quart d'heure par cellule colorée, sur une ligne et par jour (colonne CV10 à CV23)

Chaque cellules représentent 00:15:00 minutes.

AVEC @Mike nous avions faits un tableau ressemblant à celui-là mais étant trop nombreux à s'en servir l'attente sur la comptabilisation devenait trop long, je l'ai donc raccourci.

J'ai essayé de modeler celui-là mais étant novice en Google Sheets (Script) il m'est impossible d'aller au delà.

1er message d'erreur :

Erreur ReferenceError: f is not defined

Avec OnOpen, 2ème message d'erreur :

Exception: Plage introuvable

D'avance je vous remercie pour votre aide.

Cdlt Alex

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

Bonjour Alex,

function sommecellcolor() {
  var book = SpreadsheetApp.getActiveSpreadsheet();
  var feuille = book.getActiveSheet()
  var couleurs = feuille.getRange('C10:CT23').getBackgroundColors();
  var result = []
  couleurs.forEach(function(rowColors){
    var n=0
    rowColors.forEach(function(cellColor){
      if (cellColor != '#ffffff') {
        n++
      }
    })
    result.push(n)
  })
  feuille.getRange('CU10:CU23').setValues(transpose([result]))
}
function transpose(a){
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}

Bonjour,

Résultats avec une fonction personnalisée

/**
* Permet de sommer le contenu des cellules de même couleur.
* Pour réinitialiser les fonctions changer une valeur dans une cellule de la plage de calcul
* @constructor
* @param {$A$1:$E$10} plage - plage à calculer.
* @param {E1} couleur ref - cellule dont le background est la référence de couleur.
* @return La somme des cellules de même couleur.
* @customfunction
*/
function SommeCouleurs(plage,couleur) {
  var activeRange = SpreadsheetApp.getActiveRange();
  var activeSheet = activeRange.getSheet();
  var formule = activeRange.getFormula();

 //permet de trouver dans la formule la plage et de supprimer les autres caractères
   var laplage = formule.match(/\((.*)\;/).pop();

  var range = activeSheet.getRange(laplage);
  var bg = range.getBackgrounds();
  var values = range.getValues();

  //permet de trouver dans la formule la cellule de référence couleur et de supprimer les autres caractères
  var lacouleur = formule.match(/\;(.*)\)/).pop();
  var colorCell = activeSheet.getRange(lacouleur);
  var color = colorCell.getBackground();
  //var color ="#ff0000";
  var total = 0; 
  //nécessite la fonction isTypeNumber pour ne pas utiliser les cellules alphanumériques
  for(var i=0;i<bg.length;i++)
    for(var j=0;j<bg[0].length;j++)
      if( bg[i][j] == color && isTypeNumber(values[i][j]) )
      total=total+(values[i][j]*1);
  return total;     

};
function isTypeNumber(arg) {
    return typeof arg == 'number';
}

Yahooo !

Merci @Mike, en effet il me manquait quelques détails de plus avec cette façon on a une réponse quasi-instantanée, c'est génial.

@Gilbert Merci pour ton apport, je vais créer un autre fichier afin de modeler ton script et essayé de l'appliquer afin d'accroitre le peu de connaissance que j'ai.

Un grand merci à tous les deux !

Rechercher des sujets similaires à "somme colorees"