Copier une feuille

J

Jack

Guest
Bonjour le forum et merci d'avance pour votre aide !

Dans le cadre d'élaboration d'un planning (1 feuille= 1 semaine donc 365 feuille par année), j'ai copié ma feuille type (en faisant clic droit sur l'onglet 'déplacé ou copier' puis je renomais ma nouvelle feuille en semaine 1; semaine2; semaine3; .....)

Mon probleme et que dans VB le fait de copier une feuille rajoute un '1' dans le nom de la feuille et un moment donné excel a planté car il y avait trop de 1 et donc un nom de feuille trop long (exemple feuil4911111111111111111111111 (Semaine 22) )

Pourriez vous me dire comment créer 53 feuilles (53 semaines de l'année) sans que excel plante ?


Merci encore pour votre réponse
PS : je ne suis pas un expère d'excel, pourriez vous me donner une réponse detaillée?
 

Exfan

XLDnaute Nouveau
bonjour à tous,

j'ai fais une recopie 'hard' par code répétitif, parceque je ne sais pas bien utiliser les boucles et les conacténations (plus performants)
mais çà devrait le faire...
il faut quand même recopier 52 fois le code et modifier les valeurs...
par boucle on devrait économiser du code...c'est sûr...

ma soluce doit partir d'une feuille unique, les autres sont recopiées
il faut mettre un bouton pour exécuter le code...
ce bouton ne sera pas dupliqué, lui...

a+
 

excalibur

XLDnaute Impliqué
bonjour jack exfan un version a adapter Sub semaine()
Application.ScreenUpdating = False
Dim i As Integer
For i = 1 To 53
ActiveWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = 'Semaine_' & Format(Sheets(i).Index, '00')
Next i
End Sub'salutations
 

Exfan

XLDnaute Nouveau
je ne sait pas pour la soluce d'excalibur, car je ne sais pas comment 'lancer' ce Sub ?

pour ma part j'ai fait:
suppression de toutes les autres feuilles (à la main)

créer un bouton, j'y est affecté la macro que je t'ai envoyée

j'exécute le bouton.

dans la soluce d'Excalibur, il semble ne pas avoir besoin d'un 'lanceur' de code comme moi, mais je ne sait pas comment il l'exécute...c'est intéressant.
a+
 

john

XLDnaute Impliqué
Salut à tous,

Voilà le code un peu plus simplifiée.
il suffit de renommer la premier page 'semaine_1' et ensuite lancer ce qui suit.
ou alors il suffit de changer le 2 par 1 dans la boucle FOR

For x = 2 To 53
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
Sheets(ActiveSheet.Name).Name = 'semaine_' & x
Next x

Pas besoin de jouer avec des fonctions du style (Format(Sheets(i).Index, '00')) car pour un débutant c'est du chinois :unsure:


Bonne journée à tous.

John
 

Exfan

XLDnaute Nouveau
Salut Jack,

c'est justement ce qui m'interesse...'il suffit de lancer' :
comment ?sans mettre de bouton (ou autre sur la feuille, qui sera alors recopiée à tord sur les suivantes...)
ou alors une ienième feuille indépendante contenant ce bouton, mais bon, peut-on exécuter un code (un SUB) sans objet sur la feuille...?

et ceci qu'une fois?

merci.
 

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

Un petit exemple en pièce jointe pour la création et la suppression de 53 feuilles.

salut [file name=Classeur3_20051128154904.zip size=8681]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur3_20051128154904.zip[/file]
 

Pièces jointes

  • Classeur3_20051128154904.zip
    8.5 KB · Affichages: 29

excalibur

XLDnaute Impliqué
rebonjour jack exfan le forum je vais essayer de repondre la premiere ligne sert seulement a figer l ecran pendant que la macro se deroule estetique & surtout gain en rapidite certains redefinir a true avant la sortie de la macro en 2 tu tapes sur les touches alt & f11 cela ouvre visual basic insertion un module attention pas un module de classe tu fais un copier coller de la macro tu retourne dans excel tu tapes sur outils macro macro une fenetre souvre tu vas trouver la macro semaine tu fais executer & la macro se lance le mieux est dans affichage outil insere outils visual basic cest plus simple avec les boutons ........le code en deux mots je fais une boucle avec For i = 1 To 53 donc 53 fois qui genere une sheet a la suite jusqu a 53 je donne un nom semaine index sert seulement a definir le depart si tu .index,'10') tu demarres a 11 21ect...153 dim i as integer declaration de la variable i explicitement dans ton cas as byte est suffisant en debut de module on rajoute cette ligne option explicit attention cette macro ne gere pas les erreurs ni le fait qu une feuille portant le meme nom je veux pas trop vous embrouiller je vous conseil de regarder les tutoriaux sur se site pour affiner vos connaissances tres bien concus salutations
 

Discussions similaires