Création d'onglet automatique

je reviens avec mon cahier de liaison.

voilà j'ai mon onglet "S00" qui serait l'onglet matrice (ce n'est peut être pas le terme à employer). Au lieu de copie, avec ma souris et ctrl, autant de feuille que de semaine il y a dans l'année, je voudrais savoir si il y a un petit code VBA qui pourrait le faire ? il donnerait à chaque feuille le nom (onglet) S01 puis S02 et autant qu'il y a de semaine dans l'année...

cordialement,

Salut,

Une solution :

Se placer sur l'onglet S00 et lancer la macro.

Sub copyongletXfois()
'declare
Dim numsemaine As String
Dim wrkcpy As Worksheet
Dim mywork As Workbook
Dim wrksource As Worksheet
Dim i As Long

'init
Set mywork = ActiveWorkbook
Set wrksource = mywork.ActiveSheet

'work
For i = 1 To 52
    wrksource.Copy After:=Worksheets(ThisWorkbook.Sheets.Count)
    If Len(CStr(i)) = 1 Then
        numsemaine = "S0" & i
    Else
        numsemaine = "S" & i
    End If
    ActiveSheet.Name = numsemaine
Next
End Sub

A TESTER.

Damien

merci, ça fonctionne à la perfection. Cela aurait été peut être un peu trop compliqué, mais on aurait pu imaginer qu'il crée le nombre d'onglet par rapport au nombre de semaine qu'il y a dans l'année en court...

encore merci

Francky

bonjour et de retour,

bon, j'aiouvert mon fichier (joints) et j'ai voulu l'enregistrer sous, pour lui donner un nom plus professionnel ex : Cahier de liaison CAJ, et lorsque je lance la macro qui duplique les onglets, il me les mets en sens inverse, c'est à dire de S52 à S1 !!

ext-ce un bug d'Excel ?

Francky

Salut,

Je viens de faire le test (Excel 2003), je ne reproduit pas ton pb... etonnant le problème car si tu regardes le code on a :

wrksource.Copy After:=Worksheets(ThisWorkbook.Sheets.Count) => il copie l'onglet au fur et à mesure APRES le dernier onglet...

Je ne comprend pas......

Test

tu peux mettre un msgbox avant la ligne copy ?

msgbox  ThisWorkbook.Sheets.Count
wrksource.Copy After:=Worksheets(ThisWorkbook.Sheets.Count)

Et lancer la macro (tu devrais avoir la valeur 3 puis 4,5,6 etc...)

Le fichier que tu as envoyé n'a pas les onglets de créés, peux tu envoyer le fichier avec les onglets dans le mauvais sens ?

Je vais essayer de regarder ...

Damien

ok, je t'en envoie deux :

1 que je viens d'enregistrer sous le nom de "Cahier de liason CAJ" avant de lancer la macro

et 1 où j'ai lancé la macro

c'est à rien n'y comprendre, alors que l'original ne le fait pas...

Francky

Re,

Je ne reproduit pas le pb : la création d'onglet se fait dans le bon sens...

On a l'impression que ton problème c'est que

ThisWorkbook.Sheets.Count ne varie pas... Il fonctionne la premiere fois et attribue la valeur 3 ce qui fait que chaque onglet est copie après l'onglet BASE.

Mais ensuite il devrait se réactualiser, peux tu faire le test de la msgbox précedent ?

Test

tu peux mettre un msgbox avant la ligne copy ?

msgbox  ThisWorkbook.Sheets.Count
wrksource.Copy After:=Worksheets(ThisWorkbook.Sheets.Count)

Et lancer la macro (tu devrais avoir la valeur 3 puis 4,5,6 etc...)

damien

ça y est !! j'ai trouvé, non, ce n'était pas une ligne de code (j'avais tout de même essayé ta proposition).

c'est bien entendu de ma faute : dans le fichier d'origine, j'ai créé dans le ruban rapide une icone qui lançait la macro. et en fait ce racourci était sur le programme excel à chaque ouverture. Donc je cliquais dessus ! j'ai enregistré de nouveau le fichier sous un autre nom et lancé la macro à partir de la boite de dialogue et ça marche impécalbe. Désolé d'être aussi "manche" et du coup d'avoir fait perdre du temps à ceux qui cherche.

Francky

Pas de problème, je préfere ça

Damien

Rechercher des sujets similaires à "creation onglet automatique"