A voir également:
- Getactiverangelist
- Macro fusionner plusieurs feuilles excel en une seule ✓ - Forum - Excel
- Fusionner des fichiers Excel : comment réunir des tableaux - Guide
- Appliquer une macro sur plusieurs feuilles - Forum - VB / VBA
- Est-il possible de copier une macro avec la feuille X en VBA ✓ - Forum - VB / VBA
- Macro, désigner la feuille active. ✓ - Forum - Excel
5 réponses
yg_be
2 sept. 2019 à 12:52
- Messages postés
- 19319
- Date d'inscription
- lundi 9 juin 2008
- Statut
- Contributeur
- Dernière intervention
- 26 mai 2022
2 sept. 2019 à 12:52
bonjour, c'est peut-être la macro elle-même qui ne travaille que sur une feuille?
yg_be
4 sept. 2019 à 15:12
- Messages postés
- 19319
- Date d'inscription
- lundi 9 juin 2008
- Statut
- Contributeur
- Dernière intervention
- 26 mai 2022
4 sept. 2019 à 15:12
après
tu pourrais faire
il y a beaucoup à optimiser dans ton code.
var spreadsheet = SpreadsheetApp.getActive();
tu pourrais faire
var feuille = spreadsheet.getSheetByName("lenomdelafeuille") feuille.activate;
il y a beaucoup à optimiser dans ton code.
yg_be
4 sept. 2019 à 18:53
- Messages postés
- 19319
- Date d'inscription
- lundi 9 juin 2008
- Statut
- Contributeur
- Dernière intervention
- 26 mai 2022
4 sept. 2019 à 18:53
je ferais une macro principale qui s'occupe de toutes les feuilles:
et je modifierais ainsi le début de la macro existante:
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);
jordane45
5 sept. 2019 à 07:36
- Messages postés
- 35493
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 mai 2022
5 sept. 2019 à 07:36
Bonjour
Ton souci vient du fait que tu cibles la feuille active
Il faut nommer (indiquer) la feuille voulue..
Sinon il ne traitera que celle qui est affichée à l'écran
Ton souci vient du fait que tu cibles la feuille active
SpreadsheetApp.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
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
jordane45
5 sept. 2019 à 12:30
- Messages postés
- 35493
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 mai 2022
5 sept. 2019 à 12:30
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 ACTIVE
Donc.. c'est cette variable qu'il faut adapter en fonction de la feuille à cibler!
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 ACTIVE
var spreadsheet = SpreadsheetApp.getActive();
Donc.. c'est cette variable qu'il faut adapter en fonction de la feuille à cibler!
jordane45
5 sept. 2019 à 12:31
- Messages postés
- 35493
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 mai 2022
- Messages postés
- 35493
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 mai 2022
5 sept. 2019 à 12:31
Pardon...
ce sont les instructions suivantes qu'il faut modifier
A remplacer par la variable que tu as créé : feuille
ce sont les instructions suivantes qu'il faut modifier
spreadsheet.getActiveSheet()
A remplacer par la variable que tu as créé : feuille
yg_be
5 sept. 2019 à 13:19
- Messages postés
- 19319
- Date d'inscription
- lundi 9 juin 2008
- Statut
- Contributeur
- Dernière intervention
- 26 mai 2022
5 sept. 2019 à 13:19
il faut ajouter
juste en dessous de la ligne
feuille.activate;
juste en dessous de la ligne
var feuille.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane45
5 sept. 2019 à 13:57
- Messages postés
- 35493
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 mai 2022
5 sept. 2019 à 13:57
Niveau code, ça devrait donner un truc du genre
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.
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
Malheuresement la macro se lance uniquement sur la première feuille...
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...
jordane45
5 sept. 2019 à 16:21
- Messages postés
- 35493
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 mai 2022
5 sept. 2019 à 16:21
Ta première feuille ne se nommerait pas
Léna par hasard ???
Léna par hasard ???
3 sept. 2019 à 17:12
3 sept. 2019 à 17:20
3 sept. 2019 à 23:04
4 sept. 2019 à 10:07
souhaites-tu qu'une seule macro travaille sur plusieurs feuilles?
Modifié le 4 sept. 2019 à 18:57
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.
Voilà :)