Bonjour !
Pour tout ce qui est macros, je recommande déjà
l’aide officielle, qui est plus que complète et donne l’idée générale.
Dans ce cas précis, il va falloir aller au-delà d’un simple enregistrement de macros, effectivement, et écrire du code en Apps Script. J’ai fait une version extrêmement simplifiée pour montrer le principe.
Le plus simple est de commencer par enregistrer une macro, même vide, en allant dans
Extensions > Macros > Enregistrer une macro. Après quoi, on enregistre directement la macro (sans faire de nouvelle action) puis on lui donne un nom (ici, je suis resté simple et je l’ai appelée
Macro). C’est à ce moment qu’on peut décider du raccourci clavier de la macro, dans une certaine mesure. Par défaut, toutes les macros avec un raccourci dans Sheets sont sous la forme
Ctrl+Alt+Shift+[Numéro], ce qui est peu pratique pour les doigts, mais hélas on ne peut pas vraiment changer autre chose que le numéro.
Ne reste plus qu’à enregistrer et notre macro vide est faite. Maintenant, ne reste plus qu’à rajouter le code ! Plusieurs solutions :
- Juste après avoir créée la Macro, en bas à gauche, il y a un petit pop-up qui apparaît, avec MODIFIER LE SCRIPT. Il suffit de cliquer dessus.
- Ou bien dans Extensions > Macros > Gérer les macros, puis à côté de notre Macro, cliquer sur les trois petits points et cliquer sur Modifier le script.
- Ou bien directement dans Extensions > Apps Script.
Dans tous les cas, cela amène directement sur l’onglet Apps Script qui est lié à notre feuille Sheets :
Ne reste plus qu’à modifier le code pour faire ce qu’on veut !
Je ne vais pas trop m’étendre sur le sujet (qui est long et mérite amplement qu’on s’y intéresse, mais c’est l’affaire de plus que quelques lignes), mais basiquement, Apps Script est le langage de Google pour écrire du code pour tous les outils Google. C’est du Javascript avec beaucoup de fonctionnalités spécifiques ajoutées pour communiquer avec les outils Google. Dans notre cas, on souhaite que la fonction Macro, qui est notre macro, change le signe d’une case puis le fond dans une nouvelle couleur. Pour ça, on peut écrire le code suivant (qui vérifie en prime si la case contient bien un nombre avant de la modifier) :
/** @OnlyCurrentDoc */
function Macro() {
var spreadsheet = SpreadsheetApp.getActive();
// On récupère la première cellule (en haut à gauche) de la sélection active
let cell = spreadsheet.getActiveRange().getCell(1, 1);
// On récupère la valeur de la cellule
let cellValue = cell.getValue();
// On vérifie que la valeur de la cellule est bien un nombre
if(typeof cellValue == "number"){
// On change le signe si c’est bien un nombre
cell.setValue(-cellValue);
}
// On met le fond en rouge
cell.setBackground("red");
};
Ne reste plus qu’à exécuter la macro sur une case. Mais avant, il faut autoriser les macros (oui, c’est un peu paradoxal) !
Essayons d’exécuter la macro depuis le menu, en allant dans
Extensions > Macros > Macro.
Une fenêtre va s’ouvrir demandant à autoriser l’exécution du code venant de notre fichier de macros. Il suffit de faire Continuer et de suivre les différentes étapes en acceptant tout pour enfin pouvoir utiliser notre macro. Ce qui donne bien ce qu’on voulait :
Pour avoir un autre fond de couleur, il suffit de changer dans le code le "red" par une valeur de couleur valable en CSS, ce qui veut dire typiquement de l’hexadécimal, par exemple #FF0000 (qui est le code pour du rouge pur).
J’espère que c’était assez clair !