Dupliquer x fois la meme feuill excel

Résolu
Bonjour,
j'ai déjà posté ce message mais je ne sais pas si ca a bien fonctionné!

Donc je récidive : je travaille actuellement sur un classeur excel sur lequel je rentre diverses données : l'une des feuilles de ce classeur doit servir de modele pour un autre classeur. Comment faire pour copier uniquement cette feuille modèle, "x" fois dans un nouveau classeur? j'ai testé diverses macro vba mais aucune n'aboutit à ce que je veux.
En prime, je voudrais pouvoir décider du nombre de copie via une boite de dialogue. Petit bonus : mes nouveaux onglets créés dans le nouveau classeur seraient renommés avec un préfixe commun ( variable selon mes envies) et d'un numéro 1,2,3...

Je sais, je ne suis pas du tout exigeant!!!

J'ai parfois réusssi à obtenir ces différentes étapes mais jamais toutes ensemble! Trop novice en VBA sûrement!

Merci à tous ceux qui vont pouvoir m'aider!

Bonne journée.
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. Bonsoir,
    Je suis intéressé par votre explication car c'est ce que je recherche a faire plus simplement que par des copier / coller. Mais n'y connaissant rien en VBA, je ne sais où rentrer la formule.
    Merci de votre aide.
    0
    1. Modérateur
      Voilà. En fait il suffit d'ajouter une variable t pour le nom de la feuille après laquelle ajouter un onglet. Je te remet ici le code en entier :
      Sub dupliquer()
      Dim i As Integer
      Dim t As Integer
      Dim result As Integer
      Dim nomfich As String
      Dim feuille As String
      feuille = InputBox("Quel est le préfixe commun aux feuilles que vous souhaitez créer?", "nom des onglets")
      Sheets("Feuil1").Select
      Sheets("Feuil1").Copy
      ActiveSheet.Name = feuille & "1"
      nomfich = InputBox("Indiquez le nom que vous souhaitez pour votre fichier", "Nom du nouveau classeur")
      ActiveWorkbook.SaveAs (nomfich)
      result = InputBox("Combien de fois doit-on dupliquer cette feuille?", "Dupliquer x fois")
      If result = "0" Then
      Exit Sub
      End If
      If result = "1" Then
      Exit Sub
      End If
      If result <> "1" Then
      For i = 2 To result
      t = i - 1
      Workbooks("Classeur1").Activate
      Sheets("Feuil1").Select
      Sheets("Feuil1").Copy after:=Workbooks(nomfich).Sheets(t)
      ActiveSheet.Name = feuille & " " & i
      Next i
      Else
      Exit Sub
      End If
      End Sub
      0
      1. Alors là je dis oui!!!

        J'étais en train de vérifier si tout fonctionnait et c'est vrai que mon "after" ne solutionnait pas grand chose! j'avais pas trop fais attention!

        Du coup merci beaucoup. Problème résolu par ta macro!

        J'en ai un autre en préparation.... si ca branche quelqu'un... je vais posté ca d'ici peu...

        Merci en tout cas!

        Bonne journée
        0
    2. Modérateur
      Salut,
      Oui remplacer before par after ok mais ça te donne : onglet1/onglet5/onglet4/onglet3/onglet2
      je vais essayer de te bricoler quelque chose.
      0
      1. Modérateur
        Salut,
        Essaye ceci :

        Sub dupliquer()
        Dim i As Integer
        Dim result As Integer
        Dim nomfich As String
        Dim feuille As String
        feuille = InputBox("Quel est le préfixe commun aux feuilles que vous souhaitez créer?", "nom des onglets")
        Sheets("Feuil1").Select
        Sheets("Feuil1").Copy
        ActiveSheet.Name = feuille & "1"
        nomfich = InputBox("Indiquez le nom que vous souhaitez pour votre fichier", "Nom du nouveau classeur")
        ActiveWorkbook.SaveAs (nomfich)
        result = InputBox("Combien de fois doit-on dupliquer cette feuille?", "Dupliquer x fois")
        If result = "0" Then
        Exit Sub
        End If
        If result = "1" Then
        Exit Sub
        End If
        If result <> "1" Then
        For i = 2 To result
        Workbooks("Classeur1").Activate
        Sheets("Feuil1").Select
        Sheets("Feuil1").Copy Before:=Workbooks(nomfich).Sheets(1)
        ActiveSheet.Name = feuille & " " & i
        Next i
        Else
        Exit Sub
        End If
        End Sub
        0
        1. Salut,
          merci beaucoup! Ca marche nikel! Exactement ce que j'attendais!
          Cependant, les onglets créés se "rangent" dans l'ordre décroissant : 5, 4 , 3,.... Serait-il possible de les organiser en ordre croissant??? Ca doit etre tout bête mais.... j'y arrive pas!!

          En tout cas merci beaucoup!

          Tchô
          0
        2. Ah bé si c'est bon, j'ai réussi! J'ai remplacé le "BEFORE" par un "AFTER"!!!

          Merci encore et bon courage!!!
          0