Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Copier et renommer (en même temps) des feuilles à partir d'une liste de noms dans un colonne

Clemee61

XLDnaute Junior
Bonjour,
Je cherche à aider un copain prof d'EPS qui a créé un classeur Excel pour des élèves en escalade.
A partir d'une première feuille comprenant la liste des élèves, il s'agit de créer une feuille par élève.
Chaque feuille est la copie de la feuille "exemple".
Ca j'ai réussi avec le code suivant :
VB:
Sub creer_et_renommer_les_onglets()
    Dim i%
    Dim nbélève As Integer

    nbélève = Feuil1.Range("L2")
    
     For i = 1 To nbélève
        Sheets("Exemple").Copy after:=Worksheets(Sheets.Count)   'ActiveSheet
    Next i
    
End Sub
En même temps je souhaiterais que chaque feuille soit renommée en concaténant le nom et prénom de l'élève et là je sèche.
En prime j'aimerais bien pouvoir créer un lien hypertexte sur le nom qui envoie directement su la feuille du nom correspondant. Mais je ne sais même pas si c'est possible ?
Bien cordialement,
Cédric
 

Pièces jointes

  • Carnet du grimpeur avec création des onglets au nom des élèves.xlsm
    150.8 KB · Affichages: 13

hijackfr

XLDnaute Nouveau
Salut,

tu peux copier une feuille de calcul plusieurs fois et la renommer en fonction des valeurs de cellule d'un tableau avec Kutools for Excel, avec des feuilles de calcul de séquence.
Très facile.

Pour les liens hypertextes, je te l'ai fait à la main dans ton fichier.
Mais des experts vont te dire comment automatiser cela
 

Pièces jointes

  • Carnet du grimpeur.xlsm
    97.1 KB · Affichages: 4

Clemee61

XLDnaute Junior
Merci hijackfr,
Je regarderai Kutools for Excel mais j'avoue que ce petit projet VBA me permettrait de m'améliorer et comprendre un peu plus la programmation.
Donc si quelqu'un a la solution en VBA cela m'intéresse aussi.
 

hijackfr

XLDnaute Nouveau
J'avais trouvé un code (dès que je retrouve, je citerai l'auteur) qui fonctionne en aménageant tes feuilles.
J'ai modifié la feuille Exemple en mettant 3 colonnes A, B et C où dans A je fais un concatener de B (Nom) et C (Prénom). Je les masque.
Je lance la macro et cela te crée tes feuilles au nom.
Il faut adapter le code pour qu'il prenne les infos dans la tableau de la feuille Index, ce sera plus propre.

Pour tester, supprimes les feuilles renommées et lance la macro.

Le code est
VB:
Option Explicit

Sub AjouteFeuilles()
Dim J As Long
Dim Ws As Worksheet

  Application.ScreenUpdating = False
  Set Ws = ActiveSheet
  For J = 1 To Ws.Range("A" & Rows.Count).End(xlUp).Row
    If Not FeuilleExiste(Ws.Range("A2" & J).Value) Then
      Sheets("Exemple").Copy after:=Sheets(Sheets.Count)
      ActiveSheet.Name = Ws.Range("A" & J)
    End If
  Next J
  Ws.Select
End Sub

Function FeuilleExiste(Nom As String) As Boolean
  On Error Resume Next
  FeuilleExiste = Sheets(Nom).Name <> ""
  On Error GoTo 0
End Function
 

Pièces jointes

  • Carnet du grimpeur avec création des onglets au nom des élèves.xlsm
    130.3 KB · Affichages: 5

Clemee61

XLDnaute Junior
Quand je supprime les feuilles et que je relance la macro une erreur (exécution 1004) vient sur la ligne ActiveSheet.Name = Ws.Range("A" & J)
Par ailleurs, j'imagine que pour prendre en compte les colonnes de la feuille "index" il faut la référencer dans le code.
C'est déjà compliqué pour moi ! Je vais tacher de reprendre le raisonnement de zéro...
Merci pour ton aide
 

hijackfr

XLDnaute Nouveau
Je viens de refaire le test, cela fonctionne chez moi.
Je supprime les feuilles renommées au nom des élèves et je ne garde que les feuilles Index et Exemple.
J'ai compris pourquoi tu as l'erreur, place toi sur la feuille Exemple quand tu lances la macro
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@Clemee61

Je te propose ce fichier

A noter que perso je n'aurais pas fait comme tu fais.
Perso, j'aurais fait :
- 1 feuille sommaire ou index comme tu as
- 1 feuille BDD (Base de données) avec les noms des élèves en ligne et les niveaux en colonne (toutes les infos sont ici)
- 1 feuille modèle on peut dire que c'est ta feuille exemple
- 1 seule feuille élève c'est la feuille de l’élève sélectionné qui ira chercher les infos dans la BDD en fonction du modèle et les affichera.
- 1 feuille paramètre si besoin

Donc au total il y a que 4 ou 5 feuilles au maximum et non pas 40 feuilles qui sont inutiles car à un instant donné tu ne peux consulter qu'une seule feuille à la fois.

Merci de ton retour

Edit : @hijackfr conseiller d'installer un complément n'est pas forcément une bonne idée car si le demandeur installe le complément son fichier risque fort de ne plus fonctionner sur un autre PC ou le complément n'est pas installé après chacun fait comme il le souhaite....
 

Pièces jointes

  • Carnet du grimpeur avec création des onglets au nom des élèves V1.xlsm
    51.6 KB · Affichages: 7
Dernière édition:

Clemee61

XLDnaute Junior
Bonjour,
Merci beaucoup @Phil69970, Avec ton code et un autre trouvé sur le forum un peu adapté j'ai la création des onglets puis la création de lien hypertexte.
Même si cela fonctionne je ne comprends pas tout le code.
Reste une toute petite chose pas trop gênante mais si vous savez comment la gérer je veux bien la solution : une feuille vierge est créée en plus des autres, sauriez-vous faire en sorte que ce ne soit pas le cas ?
Ma dernière version en PJ...
 

Pièces jointes

  • Carnet du grimpeur 8.xlsm
    57.8 KB · Affichages: 7

Phil69970

XLDnaute Barbatruc
@Clemee61

Aie, aie aie, j'ai mal au code

Quelques remarques concernant ton fichier du post #9 :

1) Soit tu mets des tableaux structurés ET alors il faut faire le code qui va avec

2) Soit tu garde mon code et tu ne mets pas de tableaux structuré
3 Rappel on ne mets JAMAIS de lignes vides dans un tableau structuré (C'est pour cela que tu as une feuille vierge en trop) tu perds la plupart des avantages d'un tableau structuré !!!

MAIS TU NE FAIS PAS LES 2 AVEC DES LIGNES VIDES
C'est pas du tout une bonne idée

4) Si tu choisis la version tableau structuré alors pourquoi mettre 2 tableaux alors qu'un seul suffit !!!

En clair c'est pas bien du tout le mélange que tu as fait ...... c'est proche de n'importe quoi !!!
Alors choisi avec ou sans tableau structuré et je te fais la version que tu auras choisi dans la journée
 

Clemee61

XLDnaute Junior
Aïe @Phil69970 ! Je suis découvert je suis nul en code ! ;-)

Alors je comprends une bonne partie de ton message quand même :

- Je préfèrerais un tableau structuré. Du coup je comprends que les lignes vides sont totalement inutiles.

- "Pourquoi mettre 2 tableaux ?" : La plupart des profs séparent en deux colonnes le nom et prénom. Du coup un simple copier-coller est souvent utilisé pour remplir les feuilles Excel qui en ont besoin. Etant donné que pour créer les onglets le mieux (je pense) est de concaténer le nom et le prénom (au cas où on aurait 2 Bastien ou autre), j'ai fait un tableau à coté. J'ai bien compris que la méthode n'était pas bonne. Après comme j'ai pris un code tout prêt que je ne maitrise pour gérer les liens hypertextes et que le résultat était concluant je n'ai plus rien touché !
C'est pas l'idéal mais souvent quand je touche à du code c'est beaucoup de temps pour un échec suivi d'un appel au secours sur le forum
En tout cas merci pour tes retours.
 

Phil69970

XLDnaute Barbatruc
@Clemee61

Je te propose ce fichier
J'ai commenté le code
Et comme expliqué dans le fichier la 3 eme colonne se calcule par macro automatiquement

Merci de ton retour
 

Pièces jointes

  • Création onglets et lien hyperTexte V1.xlsm
    61.2 KB · Affichages: 15
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…