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

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...

soan

XLDnaute Barbatruc
Inactif
Bonjour Myst,

juste une info en passant : ça risque pas de faire de doublon : y'a un plantage en bonne et due forme si tu essayes de copier une feuille en la nommant avec un nom déjà existant !

soan
 

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

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