Remplacer somme.si + somme.si

Hello à tous,

J'utilise un Google Sheet pour un petit projet de classement de championnat.

J'ai donc plusieurs feuilles (identiques dans leur conception) avec des points attribués à chaque joueur pour chaque mois.
Dans une des feuilles de récap, j'aimerais compter le nombre de points totals par joueur.

Actuellement, j'utilise une formule du style : =SOMME.SI(Janvier!A:A;"YO";Janvier!B:B) + SOMME.SI('Février'!A:A;"YO";'Février'!B:B) + SOMME.SI(Mars!A:A;"YO";Mars!B:B)

Ok ça fonctionne, mais si je rajoute une feuille, par exemple "Avril", ça m'oblige à modifier toutes les formules en rajoutant à la fin de chaque formule un + SOMME.SI(Avril!A:A;"YO";Avril!B:B) donc c'est très fastidieux.

Ma question est donc la suivante : est-il possible de remplacer cette addition de SOMME.SI de manière à ne plus avoir à rajouter manuellement chaque nouvelle feuille dans la formule.

J'ai mis un exemple ici pour mieux comprendre : https://docs.google.com/spreadsheets/d/1bB0_oMKqdxyOzEpY5S4bxD9vjAiBjjY-qR9N4FXM9as/edit?usp=sharing

Un grand merci à tous !

Bonjour,

Non, il n'existe pas avec Google Sheets de notion de somme 3D.

Mais, j'avais développé pour ce faire un script que voici :

function sum3D(){
  var fs = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var plage = SpreadsheetApp.getActiveSheet().getActiveCell().getA1Notation()
  for (var i=0 ; i<fs.length ; i++){
    if(fs[i].getName() == 'd'){var f1=i}
    if(fs[i].getName() == 'f'){var f2=i}
  }
  var result = 0
  for (var i=f1+1 ; i<f2 ; i++){
    result += fs[i].getRange(plage).getValue()
  }
  return result
}

il permet de sommer toutes les valeurs depuis la feuille "d" jusqu'à la feuille "f" exclues se trouvant à la même place que là où est appelée cette fonction.

Toutefois, il faut réactiver quand on rajoute une feuille ... j'ai donc ajouté une case à cocher en-tête. Cette cellule est appelée par la formule même si elle n'est pas traitée dans le script.

Merci beaucoup !

J'ai regardé et ça fonctionne très bien.

Le seul soucis, c'est que les joueurs ne seront pas forcément dans le même ordre dans les différentes feuilles.

Exemple, dans la feuille "Janvier" je vais avoir ligne 1 = PAUL, ligne 2 = LILOU, ligne 3 = YO et en "Février" je peux avoir ligne 1 = LILOU, ligne 2 = PAUL etc ...

C'est pour ça que j'étais parti sur l'utilisation de la fonction SOMME.SI

Mais un gros merci quand même ! Je vais regarder si je peux adatper :)

On pourrait effectivement adapter le script afin de rechercher les différents joueurs, et par la même occasion le faire globalement pour le tableau ... je te laisse réfléchir ou tu veux de l'aide ?

Je ne veux pas abuser de ta gentillesse ... Mais si çe ne t'embête pas je veux bien de l'aide oui :)

Car j'avoue que je ne sais pas trop comment m'y prendre

Quand tu ouvres le fichier, tu verras un menu en haut à droite ...

function onOpen() {
  SpreadsheetApp.getUi().createMenu('🌟 Calculer les points 🌟')
    .addItem('👉 Calculer ...', 'sum3D')
    .addToUi();
}
function sum3D(){
  var fs = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var synth = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Classement')
  var data = synth.getRange(2,1,synth.getLastRow()-1,2).getValues()
  var liste = new Map()
  for (var i=0;i<data.length;i++){
    liste.set(data[i][0],i)
    data[i][1]=0
  }
  fs.forEach(function(f){
    if (f.getName()!='Classement'){
      var base = f.getRange(2,1,f.getLastRow()-1,2).getValues()
      for (var i=0;i<base.length;i++){
        if (liste.has(base[i][0])){
          var j = liste.get(base[i][0])
          data[j][1]+=base[i][1]
        }
      }
    }
  })
  synth.getRange(2,1,synth.getLastRow()-1,2).setValues(data)
}

Super ! Merci énormément !

Je vais approfondir le script pour l'adapter au mieux à mon projet.

Encore merci pour le temps que tu as passé sur ma problématique :)

A noter que si l'orthographe n'est pas respectée par rapport à la feuille Classement (qui reste la feuille maîtresse), les données ne seront pas comptabilisées.

Rechercher des sujets similaires à "remplacer somme"