Mise en forme identique à la ligne précédente

Bonjour,

Pour le même sujet qu'un autre message créé mais pour une question différente, je me permets de faire appel à vos services.

J'ai donc un tableau que je remplis grâce à Glide.

Des lignes sont donc créée.

Quel code utiliser pour recopier la mise en page de la dernière ligne ? Ou bien quel code utiliser pour avoir un format bien spécifique :

  • Hauteur de ligne de 200 pixels
  • Centrer les écritures
  • Colonne A en gras.
  • Toutes les bordures.
  • Colonne I, K et L au format date.

Merci par avance

jujuski

Bonjour,

À tester :

function miseEnFormeFeuille() {
  var feuilleActive = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

// Définir la hauteur de ligne à 200 pixels
  feuilleActive.setRowHeight(1, feuilleActive.getMaxRows(), 200); 

  var plageCellules = feuilleActive.getRange(1, 1, feuilleActive.getMaxRows(), feuilleActive.getMaxColumns());
  plageCellules.setHorizontalAlignment("center");

  // Mettre en gras la colonne A
  feuilleActive.getRange("A:A").setFontWeight("bold");

  // Appliquer toutes les bordures
  plageCellules.setBorder(true, true, true, true, true, true);

  // Mettre le format des colonnes I, K et L en format date
  var colonnesDate = ["I", "K", "L"];
  colonnesDate.forEach(function(colonne) {
    var plageDate = feuilleActive.getRange(colonne + ":" + colonne);
    plageDate.setNumberFormat("dd/MM/yyyy");
  });
}

Merci Pierre pour cette proposition.

J'ai ce message d'erreur :

Exception: The parameters (number,number,number) don't match the method signature for SpreadsheetApp.Sheet.setRowHeight.

A l'exécution du script.

jujuski

En effet il manque un "s" , ce n'est pas setRowHeight mais setRowHeights, voici le script corrigé :

function miseEnFormeFeuille() {
  var feuilleActive = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

// Définir la hauteur de ligne à 200 pixels
  feuilleActive.setRowHeights(1, feuilleActive.getMaxRows(), 200); 

  var plageCellules = feuilleActive.getRange(1, 1, feuilleActive.getMaxRows(), feuilleActive.getMaxColumns());
  plageCellules.setHorizontalAlignment("center");

  // Mettre en gras la colonne A
  feuilleActive.getRange("A:A").setFontWeight("bold");

  // Appliquer toutes les bordures
  plageCellules.setBorder(true, true, true, true, true, true);

  // Mettre le format des colonnes I, K et L en format date
  var colonnesDate = ["I", "K", "L"];
  colonnesDate.forEach(function(colonne) {
    var plageDate = feuilleActive.getRange(colonne + ":" + colonne);
    plageDate.setNumberFormat("dd/MM/yyyy");
  });
}

Parfait, plus d'erreur. En revanche, est-ce possible de commencer en ligne 3 la mise en page ? :)

Désolé et merci !

À tester :

function miseEnFormeFeuille() {
  var feuilleActive = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

// Définir la hauteur de ligne à 200 pixels
  feuilleActive.setRowHeights(3, feuilleActive.getMaxRows(), 200); 

  var plageCellules = feuilleActive.getRange(3, 1, feuilleActive.getMaxRows(), feuilleActive.getMaxColumns());
  plageCellules.setHorizontalAlignment("center");

  // Mettre en gras la colonne A
  feuilleActive.getRange("A3:A").setFontWeight("bold");

  // Appliquer toutes les bordures
  plageCellules.setBorder(true, true, true, true, true, true);

  // Mettre le format des colonnes I, K et L en format date
  var colonnesDate = ["I", "K", "L"];
  colonnesDate.forEach(function(colonne) {
    var plageDate = feuilleActive.getRange(colonne + ":" + colonne);
    plageDate.setNumberFormat("dd/MM/yyyy");
  });
}

J'ai un message d'erreur :

Exception: Those rows are out of bounds.

En effet, il essaye de travailler avec des cellules qui n'existent pas, vu qu'on a décalé la zone de travail de plusieurs lignes, tentez ceci :

function miseEnFormeFeuille() {
  var feuilleActive = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

// Définir la hauteur de ligne à 200 pixels
  feuilleActive.setRowHeights(3, feuilleActive.getMaxRows()-2, 200); 

  var plageCellules = feuilleActive.getRange(3, 1, feuilleActive.getMaxRows(), feuilleActive.getMaxColumns());
  plageCellules.setHorizontalAlignment("center");

  // Mettre en gras la colonne A
  feuilleActive.getRange("A3:A").setFontWeight("bold");

  // Appliquer toutes les bordures
  plageCellules.setBorder(true, true, true, true, true, true);

  // Mettre le format des colonnes I, K et L en format date
  var colonnesDate = ["I", "K", "L"];
  colonnesDate.forEach(function(colonne) {
    var plageDate = feuilleActive.getRange(colonne + ":" + colonne);
    plageDate.setNumberFormat("dd/MM/yyyy");
  });
}

Je n'ai plus de message d'erreur. En revanche, l'exécution de cette fonction me créé 2 lignes vierges à la fin. Et les bordures s'appliquent sur toute la ligne. J'en ai juste besoin jusqu'en K.

Et étonnement, la hauteur de ma ligne avant fonction :

capture

avec une image qui rempli la case :

capture

et après fonction, on dirait que la taille n'est plus du tout la même.

capture

Très étrange ...

Pouvez-vous partager une copie en lecture seule ? C'est surement dû à la taille de la plage traitée.

Rechercher des sujets similaires à "mise forme identique ligne precedente"