Copier des feuilles de base en les renommants

Bonsoir,

je ne suis pas expert en macro et je trouve souvent mon bonheur grâce à l'enregistrement...mais cette fois-ci ma requête dépasse mes compétences

mon souhait serait le suivant :

à partir de l'onglet NOTICE, lancer une macro qui permettrait:

1) copier la feuille S0, la déplacer en dernier et la nommer S1 (le S pour semaine) et mise à jour du numéro de semaine dans la feuille

2) copier la feuille TCD0, la déplacer en dernier et la nommer TCD1

3) sur TCD1, se positionner sur le TCD( tableau croisé dynamique) en A4 par exemple, aller dans l'onglet ANALYSE/Changer la source de données et mettre à jour la source (remplacer S0 par S1 et conserver la même plage de cellule)

4) toujours dans ANALYSE, faire Actualiser

l'idée et que la semaine suivante, toujours à partir de la feuille NOTICE, en relançant la macro, elle copie S0 et TCDO (fichier de base) mais en affichant S2 et TDC2, cela jusqu'à 52

je ne sais pas si j'ai été très clair? Dans le fichier joint j'ai enregistré une macro qui ne fonctionne qu'une fois. Les tentatives de copier coller et modification de code sur des sujets similaires n'ont pas été concluant.

je vous remercie par avance pour l'aide que vous pourriez m'apporter et suis preneur de solution qui donnerai le même résultat de façon plus simple

cordialement

Bonsoir,

en partant des deux feuilles modèles, avec leur nom ou index dans le classeur, pour la copie et ajout d'une feuille vous avez ceci :

Sheets("S0").Copy after:=Sheets(WorkSheets.Count)
Sheets("TCD0").Copy after:=Sheets(WorkSheets.Count)

ensuite il ne vous reste plus qu'à renommer ces nouvelles feuilles :

en premier lieu connaître le numéro de semaine. Comme il y a trois feuille "système", si WorkSheet.Count est égal à 7, alors on a :

(7-3)/2 = 2, on vient de créer les deux feuilles de la semaine 2, donc :

Dim semaine as Integer
semaine = (WorkSheets.Count - 3) / 2
Sheets(WorkSheets.Count).Name = "TCD" & semaine
Sheets(WorkSheets.count-1).Name = "S" & semaine

Ceci, c'est pour la création des feuilles.

Pour la "mise à jour" des TCD...

@ bientôt

LouReeD


RE

au vu de votre fichier sans avoir fait de test:

Sheets(worksheets.count).select ' on sélectionne la dernière feuille du classeur
Range("A4").Select ' on sélectionne la cellule A4 = début du TCD
ActiveSheet.PivotTables("Tableau croisé dynamique7").ChangePivotCache _
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "S" & WorkSheets.Count - 1 & "!R4C1:R250C12", _
        Version:=xlPivotTableVersion10) ' on redéfinit la source des données, en sachant que la feuille de donnée est la feuille juste avant la dernière feuille, car on garde la structure S1, TCD1; S2, TCD2; etc, on a bien comme index de feuille l'index de la dernière moins 1
ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotCache.Refresh

Ceci dit ce n'est pas testé...

@ bientôt

Loureed


édition faite, le 16/04/2015 à 21h54

Bonsoir,

merci beaucoup , j'ai partiellement eu le temps de m'en occuper. Ta première partie de code fonctionne parfaitement bien mais pourrais tu remettre des "s" à worksheet. Cela servira peut-être à un autre.

En revanche, la macro bloque au niveau du TCD. Je vais essayer de réenregistrer au préalable pour voir et revenir demain soir.

à plus

Aokiba

ps: je ne sais pas si ton pseudo fait référence au chanteur mais top musique

Rechercher des sujets similaires à "copier feuilles base renommants"