Google Sheets : Script pour dupliquer rapidement des onglets.

2580 8

Vous est-il arrivé de devoir dupliquer rapidement un grand nombre d’onglets dans Gsheets ?

Suite à la problématique suivante, Gilbert ROINEL vous a préparé un petit script permettant de dupliquer chaque mois 31 onglets avec le n° du jour.

Voici l’animation :

 

Le script est disponible par ici :

function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries =[];
menuEntries.push({name: "1. dupliquer feuille Modèle", functionName: "simpleduplicatesheet"});
menuEntries.push(null);
menuEntries.push({name: "2. supprimer feuilles Numérotées", functionName: "supprimersheet"});
ss.addMenu("🎁menuProf🎁", menuEntries);
}

function simpleduplicatesheet(){
var ss = SpreadsheetApp.getActiveSpreadsheet();

var sheet = ss.getActiveSheet();
if (sheet.getName()==='Modèle'){
  for (var i=1 ;i<=31;i++){
  sheet2 = sheet.copyTo(ss).setName(i);
}
}
 ss.getSheetByName('Modèle').hideSheet();
}

function supprimersheet(){
var classeur = SpreadsheetApp.getActiveSpreadsheet();
var ss = SpreadsheetApp.getActive();
 var nb =  classeur.getNumSheets();
 var  feuilles = classeur.getSheets();
 classeur.getSheetByName('Modèle').showSheet()
  for (var i=1 ;i<nb;i++){
 var sheet= feuilles[i].activate();
if(feuilles[i].getName()=== ss.getSheetByName(i));
{ss.deleteSheet(sheet)};
}
}

Si vous avez trouvé une faute d’orthographe, veuillez nous en informer en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée .

Thierry

Thierry

Thierry VANOFFE, consultant, formateur, coach G Suite. CEO de Numericoach, leader de la formation G Suite en France. Passionné par Google, ce blog me permet de partager cette passion et distiller tutos, trucs, astuces, guides sur les outils Google. N'hésitez pas à me solliciter pour vos projets de formation.

8 commentaires

  1. Avatar

    bonjour,
    je me permet de vous contacter parceque je suis bloqué avec une conversion d’un code vba en script google sheet voici mon code vba :

    Dim j As Integer
    Dim LastRow As Integer
    Dim DerniereLigne As Integer

    Sub ventilation()

    Application.ScreenUpdating = False

    ‘boucle permettant de lire toutes les feuilles du classeur
    For j = 7 To 20

    Sheets(j).Select
    LastRow = Range(« A1000000 »).End(xlUp).Row
    For i = LastRow To 4 Step -1 ‘parcourir les lignes en remontant vers le haut
    Sheets(j).Select
    Rows(i).Select
    Selection.Delete shift:=xlUp
    Next i

    Sheets(« source »).Select
    DerniereLigne = Range(« A1000000 »).End(xlUp).Row

    For k = 4 To DerniereLigne

    Sheets(« source »).Select

    If Sheets(j).Name = Cells(k, 5).Value Then

    Rows(k).Select
    Selection.Copy

    Sheets(j).Select
    LastRow = Range(« A1000000 »).End(xlUp).Row + 1
    Cells(LastRow, 1).Select
    ActiveSheet.Paste

    End If

    Next k
    Next j
    Sheets(« Matin »).Select
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    MsgBox « la ventilation est terminée… », vbOKOnly + vbInformation, « Information »
    End Sub

    merci par avance

  2. Avatar

    function multipleduplicatesheet(){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var nb = Browser.inputBox(‘Entrer le nbre de feuilles de 15 à 20’, Browser.Buttons.OK);
    if ((nb 21)||(isNaN(nb))){ss.toast(‘Vous avez entré ‘+nb+ ‘ Vous devez entrer une valeur entre 28 et 31’, ‘ERREUR’)}else{
    var sheet = ss.getActiveSheet();
    if (sheet.getName()===’Modèle’){
    for (var i=1 ;i<=nb;i++){
    sheet2 = sheet.copyTo(ss).setName(i);
    var protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
    for (var pr = 0; pr < protections.length; pr++) {
    var p = protections[pr];
    var rangeNotation = p.getRange().getA1Notation();
    var p2 = sheet2.getRange(rangeNotation).protect();
    p2.setDescription(p.getDescription());
    p2.setWarningOnly(p.isWarningOnly());
    if (!p.isWarningOnly()) {
    p2.removeEditors(p2.getEditors());
    p2.addEditors(p.getEditors());
    }}
    }
    }

    }
    ss.getSheetByName('Modèle').hideSheet();
    }

    1. Avatar

      Merci pour votre éclairage, j’ai réussi avec le lien.

      Maintenant je suis bloqué, j’aimerai avoir un icone dans la barre des taches pour pouvoir directement « télécharger au format PDF » sans passer par fichier, télécharger au format, document PDF. (car nous sommes plusieurs à travailler sur ce document et j’aimerai que la dernière personne qui travaille sur le document l’enregistre rapidement en PDF à la fin de la journée)

  3. Avatar

    Bonjour,

    Je voudrais dupliquer 20 fois un onglet avec des cellules protéger, comment faire pour que mes onglets garde la protection des cellules.

    Merci de votre réponse

    1. Avatar

      Bonjour,

      Une solution serait de déprotéger l’onglet au début du script et de remettre la protection au fur et à mesure de chaque onglet créé et en final de protéger le Modèle.

      c’est une solution !!!!

      1. Avatar

        Bonjour,

        Merci pour votre réponse.
        Mais j’ai un onglet modèle avec des cellules protéger et je veux dupliquer 20 fois (grâce au script) cet onglets tous en gardant dans chaque onglet créer les mêmes cellules protéger que dans l’onglet modèle.
        Si vous avez une idée ?

  4. Avatar

    Merci Thierry, j’ai galéré avec ça la semaine dernière pour dupliquer sur 12 mois et je me suis demandé pourquoi cette fonctionnalité n’était pas native.
    Bref au passage encore un grand merci pour cette info et toutes les autres!

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :