Etant un peu novice sur google sheets, je voudrais s’il existe un script permettant que lorsque l’on appuie sur un bouton cela sélectionne la ligne, la coupe et la colle dans une autre feuille du même document.
Si oui, est il possible de faire des boutons sur plusieurs feuilles avec une destination différente ?
ma réponse se fera en deux parties du fait des changements opérés par google dans sa manière de gérer les évènements depuis la dernière fois où j’ai mis le nez dans spreadsheet.
copier une ligne dans une autre feuille
La logique est assez simple car il y a déjà des fonctions créées pour ça :
Bonjour, bonjour.
après avoir mangé, dormi et tergiversé, voici la solution :
En fait il existe deux méthodes : une avec une image qui sert de bouton (jamais utilisé donc je risque de t’induire en erreur) et l’autre "à l’ancienne" grâce aux…menues.
Dans tout google app tu peux modifier la barre d’outils pour lui ajouter des éléments personnalisés.
Dans ton éditeur de scripts, il va falloir que tu ajoutes une fonction. Habituellement on aime l’appeler "onOpen" car on voudra qu’elle soit appelée lorsque la feuille s’ouvre. Mais le nom est libre.
Dans cette fonction, tu vas dire à google, "Dans l’application Spreadsheet, ajoute-moi tel menu avec tel ou tel sous menu…".
1
2
3
4
5
6
7
functiononOpen(){varui=SpreadsheetApp.getUi();ui.createMenu('Scripts perso')// c'est ce que tu verras dans la barre d'outils.addItem('copier la ligne','myFunction')// le deuxième paramètre est le plus magique, je l'explique après.addToUi();}
l’ajout du menu
Comme je l’ai dit dans le code, il y a un "truc" : le deuxième paramètre de la fonction "addItem". Ce deuxième paramètre c’est en fait le nom de la fonction que tu veux appeler quand quelqu’un clique sur l’élément du menu. Dans notre cas, j’ai repris le nom que j’avais mis plus haut : myFunction.
Après ça il n’y a plus qu’un tout dernier truc à faire : toujours dans l’éditeur de script, va dans "ressouces" puis "tous mes déclancheurs". Dans la pop up qui s’ouvre appuie sur le lien "ajouter un déclancheur". Et là tu lui demandera de déclancher la fonction onOpen à l’ouverture du document.
Juste une petite remarque après avoir testé.
Est il possible qu’au lieu de choisir la plage de copy dans myfunction, ce soit en fait toute la ligne qui est actuellement sélectionné.
De plus quelle est la variable pour non pas faire une copie mais un couper/coller.
Et enfin comment faire pour que le coller se fasse sur la dernière ligne non utilisée de la feuille cible.
Bien sûr. Il suffit qu’au lieu de faire getRange("…") tu fasses getActiveRange().
Pour faire un "couper", je pense qu’il faut ensuite demander la suppression du Range de départ. Je ne connais pas par coeur la doc, je te laisse la journée pour chercher et je reviendrai vers toi après ma journée de travail.
je rebondis sur ce topic car mon problème est presque le même.
Je souhaiterais, lorsque qu’une modification sur une ligne d’une feuille, cette même ligne soit copier dans une autre feuille, au même endroit (même ligne).
Je suis parti du code proposé ici en le modifiant par on Edit.
Le résultat est… comment dire… étrange !
function onEdit() {
var maFeuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NEW STUDIO ANNEE 20");
var maLigne = maFeuille.getActiveRange();
var feuilleCible = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("COPIE");
if(maLigne)
{maLigne.copyTo(feuilleCible.getRange("A1"))
}
SpreadsheetApp.getUi().alert("ok")
}
J’ai essayer plusieurs combinaisons, sans succès (je suis novice, ça doit se voir !)
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