Dupliquer x fois la meme feuill excel

Résolu
ptigarsdu33 Messages postés 22 Statut Membre -  
 fanou87 -
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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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. ptigarsdu33 Messages postés 22 Statut Membre
       
      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. ptigarsdu33 Messages postés 22 Statut Membre
       
      Ah bé si c'est bon, j'ai réussi! J'ai remplacé le "BEFORE" par un "AFTER"!!!

      Merci encore et bon courage!!!
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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. ptigarsdu33 Messages postés 22 Statut Membre
       
      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
  4. fanou87
     
    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