Boucler plusieurs TCD sur une même feuille

  • Initiateur de la discussion Initiateur de la discussion Egruat
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Egruat

XLDnaute Occasionnel
Bonjour,

Je fais une macro pour changer le nom de tous les TCD sur toutes les feuilles de mon classeurs. J'ai un problème
car certaines feuilles ont 1 seul TCD et d'autres plusieurs. Je n'arrive pas à boucler correctement les TCD pour qu'il puissent tous changer de nom.

Quelqu'un peut-il m'aider ? Merci par avance.

Très cordialement.


ub Test()

Application.ScreenUpdating = False

'On Error GoTo Erreur

Dim Ws As Worksheet

P = Range("F3").Value
Y = Range("F5").Value
M = Range("F7").Value


For Each Ws In Worksheets

' Sélection du SRS de référence

' Sélection du SRS en fonction des champs remplis dans le questionnaire

If M < 10 Then

MsgBox ("'C:\dossier\20" & Y & "\" & P & "\dossier" & P & "0" & M & Y & B & ".xls'!data")

ActiveSheet.PivotTables(1).ChangePivotCache ActiveWorkbook.PivotCaches. _
Create(SourceType:=xlDatabase, SourceData:= _
"'C:\dossier\20" & Y & "\" & P & "dossier" & P & "0" & M & Y & B & ".xls'!data")
Else
ActiveSheet.PivotTables(1).ChangePivotCache ActiveWorkbook.PivotCaches. _
Create(SourceType:=xlDatabase, SourceData:= _
"'C:\dossier\20" & Y & "\" & P & "\dossier" & P & M & Y & B & ".xls'!data", Version:=xlPivotTableVersion10)
End If

Else

End If

Next Ws

Worksheets("Par client").Select
Range("F4").Select
Selection.End(xlToRight).Select



Exit Sub
'
'Erreur:
'MsgBox ("Votre SRS de référence n'existe pas. Recommencer")
'Worksheets("Initial").Select

End Sub
 
Re : Boucler plusieurs TCD sur une même feuille

Bonjour,

pour boucler sur tous les tcd de toutes les feuilles d'un classeur :
Code:
Dim ws As Worksheet, pt As PivotTable
For Each ws In Worksheets
    For Each pt In ws.PivotTables
         
    Next pt
Next ws
bon après midi
@+
 
Re : Boucler plusieurs TCD sur une même feuille

Désolé mais ça ne marche pas car sur une même feuille il y a plusieurs TCD et les Pivotables ne peuvent pas porter le même nom. Il faudrait donc faire une boucle avec i pour nom de la Pivotable, mais je bloque...


ActiveSheet.PivotTables(i).ChangePivotCache...
 
Re : Boucler plusieurs TCD sur une même feuille

Re,

Désolé mais ça ne marche pas car sur une même feuille il y a plusieurs TCD et les Pivotables ne peuvent pas porter le même nom. Il faudrait donc faire une boucle

bah... c'est bien ce que fait le code proposé..... l'as tu testé ?
Code:
Dim ws As Worksheet, pt As PivotTable
For Each ws In Worksheets
    For Each pt In ws.PivotTables
         MsgBox pt.Name
    Next pt
Next ws
 
Re : Boucler plusieurs TCD sur une même feuille

Oui et malheureusement cela ne fonctionne pas.
1) je n'ai plus de message d'erreur
2) mais si j'ai plusieurs TCd sur une même feuill, le 1er est modifié mais pas le 2ème. Il me semble que je doive mettre en boucle cela (avec i comme variable) ?

ActiveSheet.PivotTables(i).ChangePivotCache ActiveWorkbook.PivotCaches. _
Create(SourceType:=xlDatabase, SourceData:= _
"'C:\dossier\20" & Y & "\" & P & "\dossier" & P & "0" & M & Y & B & ".xls'!data")
 
Re : Boucler plusieurs TCD sur une même feuille

Merci bien Pierrot, ca marche très bien !!
J'aimerai bien comprendre et je me permets de te demander pourquoi la variable "pt" remplace le code
"ActiveSheet.PivotTables(i).ChangePivotCache ActiveWorkbook.PivotCaches. _
Create(SourceType:=xlDatabase, " ?

Je comprends que "pt" puisse remplacer "ActiveSheet.PivotTables(i)" mais pas "ChangePivotCache ActiveWorkbook.PivotCaches. _
Create(SourceType:=xlDatabase, " ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
590
Retour