Macro / codage simple (sauf pour moi) sous Google sheet

Script

a marqué ce sujet comme résolu.

Bonjour à tous,

Après avoir passé 15 jours à faire un fichier excel avec macro en bva, et en partant d’un niveau de compétence proche de 0, je viens de m’apercevoir qu’il était impossible de partager ce fichier en conservant le code via onedrive / dropbox / google … sauf à passer par une version excel sur l’ordi.

Donc je repasse par mon premier amour, googlesheet … mais mon niveau de compétence est identique (proche de 0 donc).

Donc voici mon fichier : https://docs.google.com/spreadsheets/d/1nO4ed0UEc8LrspDGltqQ8wffpCWLisHHUGx2ZIMQiW4/edit?usp=sharing

Ce que j’aimerais : 1- Quand je décoche B2, D2:F2 sont automatiquement décochés 2- Quand je coche B2, D2:F2 sont automatiquement cochés MAIS je dois pouvoir les décocher individuellement 3- Quand B2 est coché, B1 apparaît en vert et C1 en rouge et inversement quand B2 est décochée

J’ai essayé une macro, mais je ne sais pas coder. Et j’aimerais que la macro s’applique dès que B2 est décoché

Merci pour votre aide

Bonjour

Avant de passer à la partie "difficile" car elle nécessite du code, on va répondre à ton point numéro 3 :

Faire une case à cocher

  • Sélectionner la cellule ou l’ensemble des cellules qui doivent être des cases à cocher
  • Dans le menu, cliquer sur "Données" puis "Validation des données"
  • Dans la popin qui apparaît, il suffit de sélectionner "case à cocher" dans le type de données
Popin de configuration : Sélectionner "Case à cocher"
Popin de configuration : Sélectionner "Case à cocher"

Colorer une case en fonction de la valeur d’une autre

  • Sélectionner la case ou l’ensemble des cases à colorer (ici B1)
  • Dans le menu cliquer sur "Format" puis "Mise en forme conditionnelle"
  • Dans le voler, cliquer sur "Ajouter une règle"
  • Dans "Règle de mise en Forme" sélectionner "La formule personnalisée est"
  • Entrer la formule (ici =$B$1=TRUE, ce qui signifie "vrai si B1 vaut TRUE, faux sinon")
  • Sélectionner le style et valider
Mise en forme conditionnelle
Mise en forme conditionnelle

Il suffit de continuer pour chaque cellule. Notons que si on ne met pas les $ la fomule va suivre la même règle que les formules habituelles.

Le code

Si tu aimes apprendre, tu peux passer sur ce tutoriel qui explique comment coder une macro. Il est un peu obsolète pour ce qui est de l’interface mais pour le code les règles sont les mêmes.

Je vais t’expliquer la manière dont j’ai conçu mon code avant de te le donner :

L’idée de base c’est de faire une copie de la valeur qu’il y a dans B2 vers D2 -> H2. Puis on va appliquer la macro à chaque changement dans la feuille (attention ça peut prendre du temps). Pour éviter que la macro ne fasse la copie quand on change une autre cellule que B2, il suffira de conditionner tout ça au fait que B2 est la cellule active.

J’ai donc produit ce code (désolé, par habitude professionnelle, j’ai codé en anglais) :

function myFunction() {
  const app = SpreadsheetApp.getActive();
  if (app.getActiveCell().getA1Notation() !== "B2") {
    return;
  }
  let value = app.getRange("B2").getValue();
  const targetRange = app.getRange("D2:H2");
  let values = targetRange.getValues();
  for (let i = 0 ; i < values[0].length; i++) {
    values[0][i] = value;
  }
  targetRange.setValues(values);
}

@artragis Bonjour, j’ai adapté votre script pour cocher automatiquement les cases Q9-Q18 quand je coche Q6, mais il ne marche pas correctement, il ne coche que le premier Q9.

Merci en avance pour votre aide.

Voici le code:

  1. function myFunction1() {
  2. const app = SpreadsheetApp.getActive();
  3. if (app.getActiveCell().getA1Notation() !== "Q6") {
  4. return;
  5. }
  6. let value = app.getRange("Q6").getValue();
  7. const targetRange = app.getRange("Q9:Q18");
  8. let values = targetRange.getValues();
  9. for (let i = 0 ; i < values[0].length; i++) {
  10. values[0][i] = value;
  11. }
  12. targetRange.setValues(values);
  13. }
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte