IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Script pour générer la création de plusieurs onglets


Sujet :

APIs Google

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 8
    Par défaut Script pour générer la création de plusieurs onglets
    Bonjour,

    Je suis bénévole pour une jeune fédération sportive (de football gaélique pour ne pas la nommer) et nous sommes confronté à la hausse de nos effectifs, ce qui donne une charge de travail importante pour créer les licences joueurs.
    J'ai un fichier excel qui me permets de créer automatiquement via une macro une licence suivant le nom du licencié en créant un onglet par licencié.
    J'aimerais reproduire ce script sur Google sheets car c'est par ce biais que les joueurs s'enregistrent et que nous validons les licences. Le passage par excel est donc une étape en plus que nous souhaiterions supprimer.

    J'ai donc une macro excel à transformer en javascript.

    Pouvez-vous m'aider à me dépatouiller ou au moins avancer un petit peu?

    Toute une fédération vous remerciera

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub CreaLicences2()
        Dim listing As Worksheet
        Set listing = Sheets("Listing joueurs")
        Dim cel As Range, Ws As Worksheet, trouve As Boolean
        Application.ScreenUpdating = False
        'Initialisation de la variable
        trouve = False
        For Each cel In Range("Noms").SpecialCells(xlCellTypeVisible)
            If cel.Value <> "" Then
               'Recherche moins couteuse
               If Feuille_Existe(cel.Value & " " & listing.Cells(cel.Row, 2)) Then
                   trouve = True
               End If
     
               If trouve = False Then
                   With Sheets("Base Licence")
                       .Range("D4") = cel
                       .Range("D5") = listing.Cells(cel.Row, 2)
                       .Range("D6") = listing.Cells(cel.Row, 3)
                       .Range("D7") = listing.Cells(cel.Row, 6)
                       .Range("D9") = listing.Cells(cel.Row, 11)
                       .Range("D10") = listing.Cells(cel.Row, 12)
                       .Copy after:=Sheets(Sheets.Count)
                       With ActiveSheet
                           .Range("A1:G21") = .Range("A1:G21").Value
                           .Range("B1").Validation.Delete
                           .Name = cel & " " & listing.Cells(cel.Row, 2)
                       End With
                   End With
                   ' appel la fonction pour mettre l'image
                   Affiche_Image (cel.Value & " " & listing.Cells(cel.Row, 2))
               End If
            End If
            trouve = False
        Next
        Application.ScreenUpdating = True
        listing.Activate
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 44
    Par défaut Quelqu'un aurait-il une réponse en 2019 ?
    Bonjour,

    Je suis un utilisateur différent de celui de la question initiale, mais cette question sans réponse (et bien référencée sur Google) est d'actualité pour moi qui suis confronté à la même problématique.
    Si quelqu'un avait au moins un début de réponse je serais très intéressé.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut
    Bonjour, vous devriez trouver votre bonheur en suivant ce lien : https://alicekeeler.com/scripts/ .
    En fonction de vos besoins vous utiliserez le script 1, 2 ou 3. Personnellement j'utilise le Templatetab.
    Cordialement
    Cédric

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 44
    Par défaut Solution :
    Bonsoir. Entre temps j'avais trouvé ma solution, je poste donc le code pour les suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    var ss = SpreadsheetApp.getActiveSpreadsheet(),
        ui = SpreadsheetApp.getUi(),
        sheets = ss.getSheets(),
        model = ss.getSheetByName('Modèle'),
        list = ss.getSheetByName('Liste');
     
    function newSheets() {
      var lastLine = list.getLastRow(),
          nbSheets = 0;
      for (var i = 1; i <= lastLine; i++) { // récupération de la liste des noms
        var name = list.getRange(i,1).getValue(); // récupération du nom dans la colonne de la feuille "liste"
        var sheetNameExist = '';
        if (ss.getSheetByName(name)) {
          sheetNameExist = ss.getSheetByName(name).getName(); // recherche d'une feuille avec un nom déjà utilisé
        }
        if (name != sheetNameExist) { // si la feuille n'existe pas
          var newSheet = ss.insertSheet(name); // Création d'une nouvelle feuille avec le nom
          sheet = ss.getSheetByName(name); // Récupération de la feuille créée dans une nouvelle variable
          model.getRange('A1:Z100').copyTo(sheet.getRange('A1')); // Copie du modèle dans la nouvelle feuille
          sheet.getRange('A1').setValue(name); // copie du nom à partir de la liste, sans mise en forme
          var nbSheets = nbSheets + 1;
          var lastCreateName = name; // récupération du nom de la dernière feuille créée
        }
      }
      if (nbSheets == 0) { // Retour d'infos pour l'utilisateur
        ui.alert('Pas de nouvelle feuille créée.');
      } else if (nbSheets == 1) {
        ui.alert('Une nouvelle feuille créée : "' + lastCreateName + '".');
      } else {
        ui.alert(nbSheets + ' nouvelles feuilles créées.');
      }
    }

Discussions similaires

  1. Création de plusieurs onglets avec saut de ligne
    Par aude_alti dans le forum Macros et VBA Excel
    Réponses: 61
    Dernier message: 03/04/2013, 16h23
  2. Réponses: 1
    Dernier message: 25/12/2012, 21h04
  3. [MySQL] script pour générer graphique
    Par tijocanard dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/10/2011, 20h11
  4. Réponses: 11
    Dernier message: 12/11/2010, 09h31
  5. script pour générer un xml à partir bdd mysql
    Par majong dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 06/06/2008, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo