Dupliquer x fois la meme feuill excel

Résolu/Fermé
ptigarsdu33 Messages postés 22 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 12 mai 2010 - 5 mars 2009 à 11:15
 fanou87 - 17 mars 2010 à 22:03
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.
A voir également:

4 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
5 mars 2009 à 16:45
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
ptigarsdu33 Messages postés 22 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 12 mai 2010
5 mars 2009 à 17:36
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
ptigarsdu33 Messages postés 22 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 12 mai 2010
5 mars 2009 à 17:56
Ah bé si c'est bon, j'ai réussi! J'ai remplacé le "BEFORE" par un "AFTER"!!!

Merci encore et bon courage!!!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
6 mars 2009 à 09:38
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
6 mars 2009 à 09:44
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
ptigarsdu33 Messages postés 22 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 12 mai 2010
6 mars 2009 à 10:07
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
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