J'utilise une macro qui génère plusieurs fichiers à partir d'une base de données.
Chaque fichier est composé d'un onglet avec la base de données et de plusieurs onglets contenant chacun des TCD.
Je souhaite que chaque TCD soit pré-rempli avec certaines valeurs dans certains champs.
Valeur provenant de variables de ma macro.
(Ex. je veux que mon TCD affiche un Chiffre par mois uniquement pour l'année en cours.)
A l'heure actuelle j'utilise ce code qui fonctionne :
Code:
Sheets("Marché").Select
ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields("Mois"). _
CurrentPage = Mois
L'inconvénient majeur est que je dois faire ça pour chaque onglet de chaque fichier.... (assez bof je sais... )
Chaque TCD de chaque onglet d'un fichier porte le même nom (ex. "Tableau croisé dynamique5").
Je travaille sur une formule du genre pour automatiser cette pré-configuration des TCD :
Code:
For Each Worksheet In ActiveWorkbook.Worksheets
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Année"). _
CurrentPage = Année
Next Worksheet
ça marche mais uniquement pour le premier onglet!
Est-ce qu'il y a un problème dans mon code?
J'ai - pourtant - l'impression de lui demander pour :
"chaque onglet du fichier ouvert, de saisir la variable "Année" dans le champ "année" du TCD1".
D'avance merci pour votre aide (toujours aussi efficace!)
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.PivotTables("Tableau croisé dynamique5").PivotFields("Année"). _
CurrentPage = Année
Next ws
attention tu utilisais "Worksheet" en tant que variable alors que c'est un objet vba... D'autre part, tu ciblais ActiveSheet, donc ta boucle ne servait pas à grand chose... enfin si j'ai tout bien compris...
Ok.
Dans une formule For each... le premier argument est forcement une variable?
c'est pour ça que dans les boucles sur worksheets, on passe toujours par
Code:
Dim ws As Worksheet
.
Bien noté!
Malheureusement, lorsque je teste ton code, j'ai en retour l'erreur suivante :
"Erreur 1004, la méthode 'PivotTables' de l'objet "_Worksheet' a échoué.
je suppose que "Année" est une variable !!! est elle bien initialisée ? D'autre part éviter l'accentuation des nom de variable, préfère plutôt Annee par exemple...
@+
Dim ws As Worksheet, p As PivotTable
For Each ws In ActiveWorkbook.Worksheets
For Each p In ws.PivotTables
ws.p.PivotFields("Année").CurrentPage = Ann[B][COLOR="Red"]e[/COLOR][/B]e
Next p
Next ws
Dim ws As Worksheet, p As PivotTable, Annee As Integer
Annee = "2007"
For Each ws In ActiveWorkbook.Worksheets
For Each p In ws.PivotTables
p.PivotFields("Année").CurrentPage = Annee
Next p
Next ws