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" & semaineCeci, 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.RefreshCeci dit ce n'est pas testé...
@ bientôt
Loureed
édition faite, le 16/04/2015 à 21h54
Bonsoir,
merci beaucoup
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