macro pour dupliquer un onglet d'après une liste Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
A
ArnoC
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 12 mars 2013
Version d'Excel : 2007

Message par ArnoC » 1 décembre 2013, 23:28

Sur ce site je viens de trouver une macro que tu Banzai64 a réalisé
la voici :

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

Cette macro permet de Dupliquer un Onglet MODELE d'après une liste ...

C'est une macro comme cela que je recherche mais avec une particularité
Je voudrais avoir plusieurs onglets modèles (1.2.3.4) et dans une feuille nommée liste
dans la colonne A une liste de feuille à créer selon le modèle A en B une liste à créer selon le modèle B, ....

Cela complique ...

qui peut m'aider ???
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'690
Appréciations reçues : 5
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 1 décembre 2013, 23:40

Bonsoir ( C'est le minimum à dire )

A tester
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("A" & J).Value) Then
      Sheets("ModèleA").Copy after:=Sheets(Sheets.Count)
      ActiveSheet.Name = Ws.Range("A" & J)
    End If
  Next J
  
  For J = 1 To Ws.Range("B" & Rows.Count).End(xlUp).Row
    If Not FeuilleExiste(Ws.Range("B" & J).Value) Then
      Sheets("ModèleB").Copy after:=Sheets(Sheets.Count)
      ActiveSheet.Name = Ws.Range("B" & 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
C'est une méthode très simple mais si as beaucoup de colonnes on peut peut-être ( pas sur ) agir autrement
Mais dans ce cas il faut un fichier
:joindre:
A
ArnoC
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 12 mars 2013
Version d'Excel : 2007

Message par ArnoC » 1 décembre 2013, 23:48

Merci Banzai 64 pour ton aide
Et Bonsoir !!! ou bonne nuit ??? (c'était juste un oubli ...)

La macro bug
au moment
If Not FeuilleExiste
Je pense que le nom de la première feuille n'est pas défini ???
Merci encore pour ton aide

ArnoC
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'702
Appréciations reçues : 701
Inscrit le : 27 août 2012
Version d'Excel : 365 Personnel

Message par Jean-Eric » 2 décembre 2013, 00:03

edit: supprimé
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'690
Appréciations reçues : 5
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 2 décembre 2013, 00:20

Bonjour

Fournis ton fichier qui pose problème, parce que d'ici je ne vois pas ce qui peut gêner

:joindre:
A
ArnoC
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 12 mars 2013
Version d'Excel : 2007

Message par ArnoC » 3 décembre 2013, 22:48

Bonsoir et Merci à tous pour votre aide
La petite modif de Banzai 64 m'aide bcp
j'ai voulu la modifié par moi même pour rajouter une colonne C
mais cela ne crée pas les onglets ...
J'ai Loupé un épisode ...????

D'avance Merci

ArnoC
MacroBanzai.xlsm
(27.93 Kio) Téléchargé 53 fois
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'690
Appréciations reçues : 5
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 3 décembre 2013, 23:09

Bonsoir

2 petits problèmes
Si pour toi D et d sont différents pas pour la création de la page
La 3ème boucle doit être dans la colonne C (tu avais oublié de modifier le nom de la colonne pour le test de la feuille)
  For J = 1 To Ws.Range("C" & Rows.Count).End(xlUp).Row
    'If Not FeuilleExiste(Ws.Range("[surligner]B[/surligner]" & J).Value) Then
    If Not FeuilleExiste(Ws.Range("C" & J).Value) Then
      Sheets("ModèleC").Copy after:=Sheets(Sheets.Count)
      ActiveSheet.Name = Ws.Range("C" & J)
    End If
  Next J
A
ArnoC
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 12 mars 2013
Version d'Excel : 2007

Message par ArnoC » 3 décembre 2013, 23:13

Merci à toi Banzai 64 !
Un as D'excel !
Je vais pouvoir la retravailler à volonté !
Encore Merci
Arno C
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message