Déclencheur Macro sur plusieurs feuilles sheets
adriencomm
-
adriencomm -
adriencomm -
Bonjour,
J'ai un problème sur mes macros sur sheets, j'ai enregistrer plusieurs macros via l'outil "enregistrer une macro".
J'ai mis ensuite des déclencheurs pour lancé la macro tous les lundis à 1h, mais le problème est que toutes les macros se lancent uniquement sur la première feuille de mon classeur.
Je cherche donc la solution pour mettre un déclencheur sur plusieurs feuille de mon classeur.
J'espère avoir été clair.
Merci pour votre aide.
J'ai un problème sur mes macros sur sheets, j'ai enregistrer plusieurs macros via l'outil "enregistrer une macro".
J'ai mis ensuite des déclencheurs pour lancé la macro tous les lundis à 1h, mais le problème est que toutes les macros se lancent uniquement sur la première feuille de mon classeur.
Je cherche donc la solution pour mettre un déclencheur sur plusieurs feuille de mon classeur.
J'espère avoir été clair.
Merci pour votre aide.
5 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, c'est peut-être la macro elle-même qui ne travaille que sur une feuille?-
-
-
Idéalement oui mes feuilles sont les mêmes donc en fait j'ai reproduit la même macro plusieurs fois en espérant qu'elle s'active sur les différentes feuilles sur lesquelles j'ai fait les manipulations.
Il me semblait que c'était le problème, mais je connais pas suffisamment le langage macro pour décelé le problème.
En tout cas merci pour ton aide.function Macrofff2() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('6:6').activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getRange('7:7').activate(); spreadsheet.getRange('16:22').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('A8:B11').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('A13:T13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('Q8:T11').activate(); spreadsheet.setCurrentCell(spreadsheet.getRange('T8')); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('O8:O11').activate(); spreadsheet.setCurrentCell(spreadsheet.getRange('O10')); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); };
Voilà :)
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
aprèsvar spreadsheet = SpreadsheetApp.getActive();
tu pourrais fairevar feuille = spreadsheet.getSheetByName("lenomdelafeuille") feuille.activate;
il y a beaucoup à optimiser dans ton code.-
Je vais essayé ça, je te cache pas que je suis loin d'être un expert et que je principale pour l'instant c'est que mes macros fonctionnent ^^
Et du coup pour que la macro s'applique sur plusieurs feuille tu saurais m aider ?- je ferais une macro principale qui s'occupe de toutes les feuilles:
function macrotout(){ Macrofff2("premiernom"); Macrofff2("secondnom"); };
et je modifierais ainsi le début de la macro existante:function Macrofff2(nomfeuille) { var spreadsheet = SpreadsheetApp.getActive(); var feuille = spreadsheet.getSheetByName(nomfeuille);
-
-
Bonjour
Ton souci vient du fait que tu cibles la feuille activeSpreadsheetApp.getActive(
Il faut nommer (indiquer) la feuille voulue..
Sinon il ne traitera que celle qui est affichée à l'écran -
J'ai bien changé dans ma macro mais celle-ci se lance plusieurs fois dans la même feuille.
function macrotout(){
Macrofff2("Léna");
Macrofff2("Cyrine");
Macrofff2("Chloé");
Macrofff2("Pauline");
};
function Macrofff2(nomfeuille) {
var spreadsheet = SpreadsheetApp.getActive();
var feuille = spreadsheet.getSheetByName(nomfeuille);
spreadsheet.getRange('6:6').activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getRange('7:7').activate();
spreadsheet.getRange('16:22').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
spreadsheet.getRange('A8:B11').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('A13:T13').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('Q8:T11').activate();
spreadsheet.setCurrentCell(spreadsheet.getRange('T8'));
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('O8:O11').activate();
spreadsheet.setCurrentCell(spreadsheet.getRange('O10'));
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
};
désolé les gars je sais que je suis pas très bon-
Pour commencer.... merci à l'avenir d'utiliser les BALISES DE CODE pour poster ton code sur le forum.
Explications disponibles ICI :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
Ensuite, .. comme je te l'ai déjà indiqué... actuellement ton code utiliser la feuille ACTIVEvar spreadsheet = SpreadsheetApp.getActive();
Donc.. c'est cette variable qu'il faut adapter en fonction de la feuille à cibler! -
-
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Niveau code, ça devrait donner un truc du genre
function Macrofff2(nomfeuille) { var spreadsheet = SpreadsheetApp.getActive(); var feuille = spreadsheet.getSheetByName(nomfeuille); feuille.getRange('6:6').activate(); feuille.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); //etc...
Au fait, je déplace la question.
Je ne pense pas que google sheets utilise le VB ou le VBA .... le langage utilisé c'est le JAVASCRIPT.
-
Merci
voilà mon code complet
function Essai1(Léna) { var spreadsheet = SpreadsheetApp.getActive(); var feuille = spreadsheet.getSheetByName("Léna"); feuille.activate; spreadsheet.getRange('7:15').activate(); spreadsheet.getActiveSheet().insertRowsAfter(spreadsheet.getActiveRange().getLastRow(), 9); spreadsheet.getActiveRange().offset(spreadsheet.getActiveRange().getNumRows(), 0, 9, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getRange('A16').activate(); spreadsheet.getRange('A7:T13').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); spreadsheet.getRange('K15:M15').activate(); spreadsheet.setCurrentCell(spreadsheet.getRange('M15')); spreadsheet.getActiveSheet().setRowHeight(22, 45); spreadsheet.getActiveSheet().setRowHeight(22, 62); spreadsheet.getRange('A16:B16').activate(); spreadsheet.getRange('A7:T13').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.getRange('O10:O11').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('O8:O9').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('Q8').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('Q9').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('Q10').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('Q11').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('R8:R11').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('S8:S11').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('T8:T11').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('P13:T13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('N13:O13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('M13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('K13:L13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('I13:J13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('G13:H13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('E13:F13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('C13:D13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('B13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('A13').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('A8:A11').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('B8:B11').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); };
Malheuresement la macro se lance uniquement sur la première feuille... -
-
-