Création d'un graphique type cadran à aiguille

Bonjour à tous,

Je souhaiterais insérer un graphique type cadran à aiguille dans un de mes tableaux, j'ai bien trouvé comment le faire mais j'aimerais que la valeur maximum de mon cadran soit personnalisable en fonction de la valeur d'une cellule. Pour faire simple c'est un tableau charge/capacité, ma capacité et ma charge peuvent changer d'une semaine sur une autre, d'un mois sur un autre, etc ...

Aujourd'hui dans le graphique je peux mettre uniquement une valeur maximale mais qui n'est pas celle présente dans une cellule. Avez-vous une solution ou un script pour le faire.

Idéalement j'aimerais aussi avoir des nuances vert, orange, rouge en fonction de la position du curseur, mais là encore je ne peux pas faire référence à une valeur d'une cellule.

Merci d'avance pour votre aide.

Fabrice

Bonjour,

peux-tu nous mettre un lien vers un fichier simplifié ?

function modifGraph() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  var chart = sheet.getCharts()[0];
  chart = chart.modify()
    .setOption('max', sheet.getRange('B5').getValue())
    .setOption('min', sheet.getRange('B4').getValue())
    .build();
  sheet.updateChart(chart);
};
image

voici les différentes options

  .setOption('redFrom', 10)
  .setOption('redTo', 20)

  .setOption('greenFrom', 25)
  .setOption('greenTo', 30)

  .setOption('yellowTo', 25)
  .setOption('yellowFrom', 20)

  .setOption('max', 30)
  .setOption('min', 10)

suffit alors de remplacer les valeurs par celles de la feuille comme je l'ai fait précédemment

ce qui donne ici

image

Ton graphique n'est qu'une image !

function onOpen() {
  SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
    .addItem('👉 Redimensionner le graphique', 'modifGraph')
    .addToUi();
}

function modifGraph() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  var chart = sheet.getCharts()[0];
  chart = chart.modify()
    .setOption('min', 0)
    .setOption('max', sheet.getRange('C6').getValue())
    .setOption('redFrom', sheet.getRange('C4').getValue())
    .setOption('redTo', sheet.getRange('C6').getValue())
    .setOption('greenFrom', 0)
    .setOption('greenTo', sheet.getRange('C4').getValue())
    .build();
  sheet.updateChart(chart);
};

https://docs.google.com/spreadsheets/d/1vXHnxjyCSUvG70TOriV2zZMVw2ddoYmA-VXvy53uEok/copy

image

Bonjour,

Merci pour la réponse, ça fonctionne et c'est ce que je recherchais.

Par contre je vais avoir plusieurs cadran à mettre sur la feuille, comment vous avez personnalisé et nommé le 1er cadran au niveau de la formule.

Que dois-je rajouter au script actuel si j'insère un nouveau cadran avec une source de données différente?

Désolé je suis novice sur Google Sheets.

Désolé je suis novice sur Google Sheets.

et moi sur les graphiques !

Je n'ai rien trouvé dans la doc concernant des noms de graphiques qui pourraient les distinguer

Dans le cas présent, j'ai pris le premier et le seul, SACHANT QUE sheet.getCharts() est un tableau de tous les graphiques, les indices commencent à 0

var chart = sheet.getCharts()[0]

La seule façon de faire est de les nommer différemment

var chart1 = sheet.getCharts()[0]
var chart2 = sheet.getCharts()[1]
var chart3 = sheet.getCharts()[2]

et repérer et placer au bon endroit et affecter les bonnes valeurs.

J'ai trouvé ...

Tu peux donner un titre comme suit

image

Ensuite, pour la mise à jour, fais une recherche sur le graphique ayant le titre voulu.

function modifGraph() {
  var titre = 'Mon indicateur de charge ...'
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  var charts = sheet.getCharts();
  charts.forEach(function (chart) {
    if (chart.getOptions().get('title') == titre) {
      chart = chart.modify()
        .setOption('min', 0)
        .setOption('max', sheet.getRange('C6').getValue())
        .setOption('redFrom', sheet.getRange('C4').getValue())
        .setOption('redTo', sheet.getRange('C6').getValue())
        .setOption('greenFrom', 0)
        .setOption('greenTo', sheet.getRange('C4').getValue())
        .build();
      sheet.updateChart(chart);
      return
    }
  })
};

Note bien au passage que même si la couleur a été mise à bleu à la place du vert, c'est toujours

.setOption('greenFrom', 0)
.setOption('greenTo', sheet.getRange('C4').getValue())

qu'il faut utiliser !! Il n'y a que ces 3 possibilités

/*
  .setOption('redFrom', xx)
  .setOption('redTo', xx)
  .setOption('greenFrom', xx)
  .setOption('greenTo', xx)
  .setOption('yellowTo', xx)
  .setOption('yellowFrom', xx)
*/

Merci encore pour toutes ces infos mais je bloque encore sur la formule, j'ai une erreur lors de l'éxécution.

Est-ce que c'est possible de me compiler la formule avec "Mon indicateur de charge 1 ..." et Mon indicateur de charge 2 ...". Pour les cellules je changerais par la suite.

je n'ai pas testé mais cela doit fonctionner ...

function modifGraph() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  var charts = sheet.getCharts();
  charts.forEach(function (chart) {
    if (chart.getOptions().get('title') == 'Mon indicateur de charge 1') {
      chart = chart.modify()
        .setOption('min', 0)
        .setOption('max', sheet.getRange('C6').getValue())
        .setOption('redFrom', sheet.getRange('C4').getValue())
        .setOption('redTo', sheet.getRange('C6').getValue())
        .setOption('greenFrom', 0)
        .setOption('greenTo', sheet.getRange('C4').getValue())
        .build();
      sheet.updateChart(chart);
      return
    }
    else if (chart.getOptions().get('title') == 'Mon indicateur de charge 2') {
      chart = chart.modify()
        .setOption('min', 0)
        .setOption('max', sheet.getRange('C6').getValue())
        .setOption('redFrom', sheet.getRange('C4').getValue())
        .setOption('redTo', sheet.getRange('C6').getValue())
        .setOption('greenFrom', 0)
        .setOption('greenTo', sheet.getRange('C4').getValue())
        .build();
      sheet.updateChart(chart);
      return
    }
  })
};

Merci beaucoup pour votre aide.

ça fonctionne

Bonne soirée à vous

Rechercher des sujets similaires à "creation graphique type cadran aiguille"