Script google sheet pour créer automatiquement des onglets

Pour une association

a marqué ce sujet comme résolu.

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 clubs enregistrent leurs joueurs 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 :D

Sub CreaLicences2()

Dim listing As Worksheet

Set listing = Sheets("Listing joueurs")

Dim cel As Range, Ws As Worksheet, trouve As Boolean

Application.ScreenUpdating = False

trouve = False

For Each cel In Range("Noms").SpecialCells(xlCellTypeVisible)

If cel.Value <> "" Then

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

Affiche_Image (cel.Value & " " & listing.Cells(cel.Row, 2))

End If

End If

trouve = False

Next

Application.ScreenUpdating = True

listing.Activate

End Sub

+0 -0

Hello,

Pas sûr que ce soit le bon forum, celui-ci est davantage dédié aux technologies du Web (cela dit, je ne vois pas trop où tu pourrais poser ta question)

Dans tous les cas, je pense que tu t’es trompé en insérant ton code (une ligne commençant par > est une citation) : peux-tu le formater de façon à ce qu’il soit plus lisible, s’il te plaît ? Tu trouveras plus d’infos à ce propos ici ;)

+0 -0

Oups, pardon, effectivement, je n’ai pas utilisé la bonne mise en texte, toutes mes excuses :ange:

Je ne sais pas si je suis au bon endroit, mais effectivement je ne vois pas trop où exposer mon problème et je sèche totalement. J’ai mis un temps fou à essayer de comprendre le VBA mais je javascript, je ne connais absolument pas. Je suis donc à la recherche de la moindre petite aide ou coup de main :honte:

Merci! :)

 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

Je reposte le bloc de code pour profiter de la coloration pour mieux lire le code.

 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
nonofish

Il faudra que tu penses à recopier le nommage des cellules (la doc ici) si ce n’est pas déjà fais.

Le tableau ’Noms’ c’est la liste des pseudo ?

J’aimerai avoir la correspondance de l’ensemble des noms si possible.

Bonjour,

Pour la correspondance des différents noms:

  • "Listing joueurs" => C’est le tableau d’inscription, avec les coordonnées de chaque licencié

  • "Noms" => C’est la colonne nom du tableau d’inscription. C’est la base de la création de la macro.

  • "Base Licence" => C’est le modèle de licence qui est dupliqué avec un onglet par licencié

Pour y voir un peu plus clair, voici quelques photos:

Tableau d'inscription

Exemple de licence crée avec la macro

Merci:)

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