XL 2013 [Résolu] Dupliquer une feuille modèle à partir d'une liste

Goo69

XLDnaute Nouveau
Bonjour cher forum et bonne année,

Je cherche à pouvoir dupliquer une feuille modèle autant de fois qu'il y a de noms dans une liste. J'ai trouvé la macro suivante sur la toile, qui fonctionne très bien.
Code:
Option Explicit

Sub Ajouter_Feuilles()

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("A" & J).Value) Then

      Sheets("Modèle").Copy after:=Sheets(Sheets.Count)

      ActiveSheet.Name = Ws.Range("A" & J)

      Range("D2") = ActiveSheet.Name ' Met le nom de la feuille dans la cellule D2

    End If

  Next J

  Ws.Select

End Sub

'Si l'onglet  existe déjà, il n'est pas créé

Function FeuilleExiste(Nom As String) As Boolean

  On Error Resume Next

  FeuilleExiste = Sheets(Nom).Name <> ""

  On Error GoTo 0

End Function
Cependant, la liste de noms se trouve dans la feuille à dupliquer. Serait-il possible que cette liste se trouve sur une autre feuille ? Sachant que je n'y connais rien en macro...

Merci !!

Goo
 

Pièces jointes

  • Classeur1.xlsm
    77.2 KB · Affichages: 42

vgendron

XLDnaute Barbatruc
Bonjour

essaie ceci
VB:
Option Explicit
Sub Ajouter_Feuilles()
Dim J As Long
Dim Ws As Worksheet
Dim ListFeuille As Range
Dim fin As Integer
Dim NomFeuille As Range

With Sheets("Data") 'récupère la liste des noms de feuilles à créer depuis la feuille "Data"
    fin = .Range("A" & .Rows.Count).End(xlUp).Row
    Set ListFeuille = .Range("A1:A" & fin)
End With

Application.ScreenUpdating = False
Set Ws = Sheets("Modèle")

For Each NomFeuille In ListFeuille
  If Not FeuilleExiste(NomFeuille.Value) Then
    Ws.Copy after:=Sheets(Sheets.Count)
    ActiveSheet.Name = NomFeuille
    Range("D2") = NomFeuille ' Met le nom de la feuille dans la cellule D2
  End If
Next NomFeuille
Ws.Select
End Sub

'Si l'onglet  existe déjà, il n'est pas créé
Function FeuilleExiste(Nom As String) As Boolean
  On Error Resume Next
  FeuilleExiste = Sheets(Nom).Name <> ""
  On Error GoTo 0
End Function
 

mdo100

XLDnaute Occasionnel
Bonjour Goo69,

En effet la macro fonctionne très bien, mais ta liste de nom doit bien être dans une autre feuille, que j'ai nommé "Nom Feuille".

Et la macro dans un Module1 et pas dans "Thisworkbook"

Ton fichier en retour.

Cordialement.
 

Pièces jointes

  • Goo69.xlsm
    82.1 KB · Affichages: 90

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260