Impression d'une feuille contenant la fonction Alea

Bonjour à tous

J'utilise un fichier Sheets qui intègre des calcul aléatoires..... fonction alea()

Mon soucis c'est qu'à l'impression, si l'on touche la mise en page (marge, orientation ....) le calcul est de nouveau lancé et le résultat n'est pas celui que j'ai à l'écran...

Existe t-il une solution, un paramètre à appliqué ?

Bloquer le calcul automatique serait la solution mais cette option ne semble pas exister sur Sheets, alors que sur Excel "Calcul sur ordre" est disponible.

Merci par avance

Jee

NB: La solution solution que j'ai trouvé pour l'instant, c'est de copier le résultat et de copier le tout dans une autre feuille (Copie des valeurs). Mais franchement pas très pratique

Bonjour,

var feuille = Spreadsheet.getSheetByName("Feuille");
var plage = feuille.getRange("A1:A5").setValues();
function onOpen(){
  SpreadsheetApp.getUi.createMenu("📲 Sauvegarde")
  .addItem("Sauvegarde de la plage A1:A5 et retour","sauvegardeplage")
  .addItem("Impression de la feuille","macro1")//La macro 1 sera enregistré dans ton fichier
  .addToUi();
}
function sauvegardeplage(){
   var data = [];
   for(i=0;i<plage.length;i++){
      data.push(plage[i]);
   }
   figer(data);
}
function figer(donnes){
   feuille.getRange("A1:A5").setValues(donnes);
}

Bonne journée

Bonjour,

Je suis totalement perdu avec les macro ou avec vos lignes de commandes.

Je présume que ce que tu as proposé permet de palier le problème... Mais ce n'est pas ce que je souhaite. Je ne sais pas le mettre en oeuvre.

Je ne peux pas diffuser le fichier en question, mais voilà un exemple qui rencontre les mêmes soucis, lorsque l'on veux imprimer et que l'on touche à la mise en page

Le fichier est dispo :

https://docs.google.com/spreadsheets/d/1pG6iTbnTG0bUWZsW8tUhFtYeuVSJ4I06mAcYXCf2Suw/edit?usp=sharing

NB: Je viens de tester avec Excel ...en bloquant le calcul automatique ... pas de soucis. Bizarre que l'on ne puisse pas en faire de même sur Sheets

Merci par avance pour votre aide à tous ...

Bonjour,

j'ai essayé ceci comme ImoKa que je salue ...

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Imprimer')
    .addItem('Recopier ...', 'copierPourImpression')
    .addToUi();
}
function copierPourImpression() {
  var doc = SpreadsheetApp.getActiveSpreadsheet()
  var f1 = doc.getSheetByName('feuille 1')
  var f2 = doc.getSheetByName('pour impression')
  f2.getRange('A3:C14').setValues(f1.getRange('A3:C14').getValues())
}

et non ... avant de recopier, GSheets rebat les cartes, donne de nouvelles valeurs.

La solution est donc de ne pas mettre de valeurs aléatoires dans la feuille, mais de les attribuer par un script à la demande.

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('** changer données **')
    .addItem('Fonction alea() ...', 'donneesAleatoires')
    .addToUi();
}
function donneesAleatoires() {
  var doc = SpreadsheetApp.getActiveSpreadsheet()
  var f1 = doc.getSheetByName('feuille 1')
  for (var i=3;i<=14;i++){
    f1.getRange('A'+i).setValue(Math.random())
  }
}

https://docs.google.com/spreadsheets/d/1STO2iUq2x4k4ud3k3TbLTSkgaDO7224doX-sy24nYi0/edit?usp=sharing

Bonsoir

Bah, j'en conclu que c'est donc mort et qu'il n'existe pas de solution !!! C'est bien ça ??

Je dois impérativement conserver la fonction Alea() ....

Pas de paramétrage possible?? ... C'est possible sous Excel pourtant !!!!

Jee

NB: Pas possible d'utiliser du script !!!

si tu ne peux pas (pour quelles raisons ?) utiliser du script, je ne vois pas de solution.

Pour quelle raison ? : Je ne sais pas faire !! tous simplement

Bonjour

un petit peu de courage et un petit petit de "brainstorming" et ça va venir avec les bons conseils de Mike ;-)))

Effectivement, ce n'est pas un motif recevable.

  • Donne un nom à l'ensemble des cellules devant contenir un nombre aléatoire, par exemple nAlea
  • Fais ensuite outils > éditeur de script et recopie le script
    • à la place de
function myFunction() {

}
  • mets
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('** changer données **')
    .addItem('Fonction alea() ...', 'donneesAleatoires')
    .addToUi();
}
function donneesAleatoires() {
  var doc = SpreadsheetApp.getActiveSpreadsheet()
  var valeurs = doc.getRange('nAlea').getValues()
  for (var i=0;i<valeurs.length;i++){
    for (j=0;j<valeurs[0].length;j++){
      valeurs[i][j]=Math.random();
    }
  }
  doc.getRange('nAlea').setValues(valeurs)
}
  • Ensuite, fais Enregistrer le projet, puis Exécuter
  • Google va demander ta permission
autorisations
  • C'est prêt, retourne sur ta feuille, et cliques sur le nouveau menu qui apparaît en haut à droite
capture d ecran 815

Bravo excellent petit cours Mikhail

Petit ajout dans ton code, si jeefreeze veut faire plusieurs fois aléatoires d’affilés, avant de figer. Et des commentaires explicatif.

function onOpen() {//Ceci est un commentaire
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('** Changer ou Figer données ? **')//.createMenu() crée le menu qui contient les fonctions
    .addItem('Changer les données ...', 'donneesAleatoires')//Création d’un champs cliquanle du menu
    .addItem('Figer les données','figer')
    .addToUi();//Fin du menu
}
var doc = SpreadsheetApp.getActiveSpreadsheet();//doc est une variable, doc stocke le GS en cours de regard/execution
var valeurs = doc.getRange('nAlea').getValues();//valuers stocke la plage nAlea (A3:A14)
function donneesAleatoires(){//Une fonction commence toujours par function puis le nom suivi de () qui contiennent des fois des éléments et ce fini par {
  for (var i=0;i<valeurs.length;i++){//La boucle for va répété pendant toute la longueur du tableau (12)
    for (j=0;j<valeurs[0].length;j++){//Celle ci répète pour la largeur du tableau
      valeurs[i][j]=Math.random();//On ajoute dans le tableau un nombre aléatoire Math.random()
    }
  }
}
function figer(){//Cette fonction fige les données d’auparavant
  doc.getRange('nAlea').setValues(valeurs);//On bloque les données
}

Bonne Journée

@ImoKa ... rien ne change !

valeurs n'est pas une variable "globale" et ne conserve pas les valeurs que tu lui affectes

donc sauf erreur de ma part => https://forum.excel-pratique.com/sheets/impression-d-une-feuille-contenant-la-fonction-alea-160707#p...

@JeeFreeze, merci de nous faire un retour

Rechercher des sujets similaires à "impression feuille contenant fonction alea"