Vous n'êtes pas connecté - Connexion ou Créer un compte

Classée dans Questions > Questions / Réponses

Astuces Google Sheets

Administrateur
Une annonce aurait pu être ici :'(

Google Sheets propose des fonctionnalités très utiles quand il s'agit d'éditer des documents en ligne et de collaborer. Quelques astuces permettent d'optimiser encore davantage ses formules et de disposer de documents vraiment complets.

Contenu

Ne pas interpréter le contenu d'une cellule comme une formule

Par défaut, toute cellule commençant par un symbole mathématique (=+-, etc.) est interprété comme une formule par Google Sheets. Pour éviter ce comportement, il suffit de faire commencer le contenu de la cellule par le caractère ' :

'== Texte ==

Formules

Identifiant automatique par ligne

=IF(NOT(ISBLANK(B2)); ROW()-1; "")

En français :

=SI(NON(ESTVIDE(B2)); LIGNE()-1; "")

Opération si une autre cellule n'est pas vide

=IF(NOT(ISBLANK(A2)); A2*1.2; '-')

En français :

=SI(NON(ESTVIDE(A2)); A2*1.2; '-')

Somme conditionnelle

=SUMIF(plage_a_tester; condition; plage_a_additionner)

En français :

=SOMME.SI(plage_a_tester; condition; plage_a_additionner)

Si plage à tester non vide :

=SUMIF(plage_a_tester; "<>"; plage_a_additionner)

En français :

=SOMME.SI(plage_a_tester; "<>"; plage_a_additionner)

Afficher le résultat d'une requête issue de plusieurs feuilles

=QUERY({Divers!A2:M; 'Commande Amazon'!A2:M}; "select * where (Col8 = 'Commandé' or Col8 = 'Expédié') order by Col8 desc, Col2")

Barre de progression dans une cellule

=IMAGE("http://url.image.de/1px.png", 4, <hauteur_cellule>, <pourcentage> * <largeur_cellule>)

Date du jour dans un format donné par une formule

=TEXT(TODAY(); "YYYY-MM-DD")

En français :

=TEXTE(MAINTENANT(); "YYYY-MM-DD")

Mise en forme conditionnelle

Échapper le caractère "?"

~?

Expression régulière

En utilisant Format cells if... Custom formula is :

=regexmatch(A1, "1904|1905")

ou, en utilisant le contenu d'une cellule d'une autre feuille :

=regexmatch(A1, INDIRECT("Sheet2!B3"))

Scripts

Ajouter un menu

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  
  var menuEntries = [
    {name: "Trier les projets", functionName: "sortProjects"}
  ];
  ss.addMenu("— Scripts —", menuEntries);
}

ou :

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('— Scripts —')
    .addItem('Trier les projet', 'sortProjects')
    .addSubMenu(SpreadsheetApp.getUi().createMenu('Marquer comme …')
      .addItem('à jour', 'markUpdated'))
    .addToUi();
}

Trier une zone

var SORTING = [
  3 /* C ascending */,
  2 /* B ASC */,
  {column: 1 , ascending: false} /* A DESC */
];


// https://developers.google.com/apps-script/reference/spreadsheet/range?csw=1#sortsortspecobj
function sortProjects() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange("A2:G" + sheet.getMaxRows());
  range.sort(SORTING);
}

// Plus complexe :

var SORTINGS = {
  "Devices" : {range: "A2:J%MAX_ROWS%", sort: [ "B", "G:DESC" ]}
};

/**
* Convert ["A", "B:DESC"] array to [1, {column: 2, ascending: false}] array.
*/
function sortingToGAppsSorting(sorting) {
  var gAppsSorting = [];
  if (!Array.isArray(sorting)) {
    sorting = [ sorting ];
  }
  
  for (var i = 0, n = sorting.length; i < n; i++) {
    var sort = sorting[i];
    var splitSort = sort.split(":");
    var col = splitSort[0].charCodeAt(0) - 64;
    var asc = splitSort[1] && splitSort[1] === "DESC" ? false : true;
    Logger.log(sort + " => " + col + ", asc: " + asc);
    gAppsSorting.push({column: col, ascending: asc});
  }
  
  return gAppsSorting;
}


// https://developers.google.com/apps-script/reference/spreadsheet/range?csw=1#sortsortspecobj
function sortSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  
  var sorting = SORTINGS[sheet.getName()];
  
  // If no sorting options found returns.
  if (!sorting) return;
  
  var rangeA2 = sorting.range.replace('%MAX_ROWS%', sheet.getMaxRows()).replace('%MAX_COLS%', sheet.getMaxColumns());
  
  var range = sheet.getRange(rangeA2);
  range.sort(sortingToGAppsSorting(sorting.sort));
}

Lettre correspondant à un numéro de colonne

// Conversion de 27 en "AA", etc.
// Only works for "A" to "ZZ".
function colIndexToANotation(colIndex) {
  var A1 = String.fromCharCode(colIndex + 64);
  
  if (colIndex > 26) {
    var letter1 = Math.floor((colIndex - 1) / 26) + 1;
    var letter2 = ((colIndex - 1) % 26) + 1;
    
    A1 = String.fromCharCode(letter1 + 64) + String.fromCharCode(letter2 + 64);
  }
  
  return A1;
}

Index correspondant à une colonne

// Conversion de "AA" en 27, etc.
function colANotationToIndex(colLetter) {
  var index = 0;
  
  for (var i = 0, n = colLetter.length, j = n-1; i < n; i++, j--) {
    var char = colLetter.charCodeAt(j) - 64;
    index += Math.pow(26, i) * char;
  }
  
  return index;
}

Il n'est plus possible de répondre à cette question car elle marquée comme résolue.