XL 2016 Créer des feuilles pour chaque nom dans la liste

Myst

XLDnaute Occasionnel
Bonjour
je cherche a créer des copies de la feuille "EXEMPLE" autant de fois qu'il y a de noms différant dans la colonne A de la feuille "NOMS"
Par contre cela ne doit pas faire de doublon si la feuille existe déjà
Merci
 

Pièces jointes

  • ESSAI.xlsx
    15.7 KB · Affichages: 18
Solution
@Myst (salut jaypeeh, et bienvenue)

ton fichier en retour. :)

au départ, y'a 2 feuilles seulement ; clique sur le bouton "CREER LES FEUILLES" ➯ 10 feuilles ont été créées ; tu as maintenant un classeur de 12 feuilles ; si tu cliques de nouveau sur le bouton : y'a aucun changement, car les feuilles sont déjà créées, et bien sûr, y'a pas de plantage. 😊

VB:
Option Explicit

Private Sub CommandButton1_Click()
  On Error GoTo ErrSheet
  Dim n&: n = Cells(Rows.Count, 1).End(3).Row: If n = 1 Then Exit Sub
  Dim sh As Worksheet, T, v$, k As Byte, p%, i&
  n = n - 1: T = [A2].Resize(n): ActiveCell.Select
  p = Worksheets.Count: Application.ScreenUpdating = 0
  For i = 1 To n
    v = T(i...

jaypeeh

XLDnaute Nouveau
Bonjour Myst,

je te propose cette solution, que vous trouverez dans le classeur ci-joint :
  • j'ai transformé votre tableau de noms en objet ListObjects, pour faciliter la parcours des cellules contenant les noms pour lesquels vous devez créer une feuille
  • j'ai créé une fonction feuille_existe pour éviter l'erreur qui se provoque lorsqu'on essaie de donner un nom qui existe déjà, à une feuille.
  • j'ai créé ensuite une procédure qui parcourt le tableau des noms et crée les feuilles devant la feuille Exemple.
  • et bien sûr, j'ai transformé votre classeur en classeur acceptant les macros.
si vous avez des questions, n'hésitez pas.
 

Pièces jointes

  • ESSAI.xlsm
    26 KB · Affichages: 11

soan

XLDnaute Barbatruc
Inactif
@Myst (salut jaypeeh, et bienvenue)

ton fichier en retour. :)

au départ, y'a 2 feuilles seulement ; clique sur le bouton "CREER LES FEUILLES" ➯ 10 feuilles ont été créées ; tu as maintenant un classeur de 12 feuilles ; si tu cliques de nouveau sur le bouton : y'a aucun changement, car les feuilles sont déjà créées, et bien sûr, y'a pas de plantage. 😊

VB:
Option Explicit

Private Sub CommandButton1_Click()
  On Error GoTo ErrSheet
  Dim n&: n = Cells(Rows.Count, 1).End(3).Row: If n = 1 Then Exit Sub
  Dim sh As Worksheet, T, v$, k As Byte, p%, i&
  n = n - 1: T = [A2].Resize(n): ActiveCell.Select
  p = Worksheets.Count: Application.ScreenUpdating = 0
  For i = 1 To n
    v = T(i, 1)
    If v <> "" Then
      k = 0: Set sh = Worksheets(v)
      If k = 1 Then
        Worksheets("EXEMPLE").Copy , Worksheets(p)
        ActiveSheet.Name = v: p = p + 1
      End If
    End If
  Next i
  Worksheets("NOMS").Select
  Exit Sub
'si la feuille existe déjà :
ErrSheet: k = 1: Resume Next
End Sub

note bien qu'il n'y a pas de boucle pour vérifier si la feuille existe déjà ou non ; la feuille sera créée seulement si elle n'existe pas déjà ; donc si la feuille existe déjà, rien n'est fait, mais on continue la boucle pour chaque nom de feuille à créer.​

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis. 😉

soan
 

Pièces jointes

  • ESSAI.xlsm
    23.1 KB · Affichages: 14

Discussions similaires

Statistiques des forums

Discussions
315 123
Messages
2 116 458
Membres
112 748
dernier inscrit
Pboiusquet