exporter un TCD par chaque pivot item

gosselien

XLDnaute Barbatruc
Bonsoir,

je voudrais , à partir d’un tcd, exporter les données de sport en conservant la présentation du TCD mais en ne copiant que les valeurs; je fais donc une boucle pour sélectionner le champ concerné, je copie-colle (les valeurs uniquement) dans un nouveau classeur que je nomme et sauvegarde; je dois ensuite revenir sur mon tableau de départ, masquer la première occurrence pour sélectionner la 2e, masquer toutes autres aussi et exporter de nouveau.
Mon problème est que , à un moment, je n’ai plus de pivot item sélectionné et là excel refuse, ce qui est normal.
Comment faire pour masquer tous les sports sauf le premier, l’exporter, revenir, masquer tous sauf le 2e, exporter, puis passer au 3e , etc etc….
Le fichier est en attaché, et est en 2003 uniquement

Merci :)
 

Pièces jointes

  • exempleTCD.xls
    191 KB · Affichages: 50
  • exempleTCD.xls
    191 KB · Affichages: 59
  • exempleTCD.xls
    191 KB · Affichages: 57
Dernière édition:

kjin

XLDnaute Barbatruc
Re : exporter un TCD par chaque pivot item

Bonsoir,
Sans doute un peu long, on doit pouvoir optmiser
Code:
Sub SlipttTCD()
Application.ScreenUpdating = False
Dim pvt As PivotField, i%, x%, y%, tablo, Mname$
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
    Set pvt = .PivotFields("Discipline sportive")
    y = pvt.PivotItems.Count
    x = 1
    With pvt
        Do
        .PivotItems(x).Visible = True
        For i = 1 To y
            If i <> x Then .PivotItems(i).Visible = False
        Next
        tablo = Range("A5").CurrentRegion.Value
        Workbooks.Add
        With ActiveWorkbook
            With .Sheets(1)
                .Range("A1").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
                Call Quadri
                Mname = Range("A3")
            End With
            .SaveAs "C:\Temp\" & Mname & ".xls"
            .Close
        End With
        x = x + 1
        Loop Until x > y
    End With
End With
End Sub
A+
kjin
 

Efgé

XLDnaute Barbatruc
Re : exporter un TCD par chaque pivot item

Bonjour gosselin, Bonjour kjin :)
Surtout pour saluer kjin...
Une proposition:
Mettre le champs Discipline en champ de page puis :
VB:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Me.PivotTables("Tableau croisé dynamique1").ShowPages PageField:= _
        "Discipline sportive"
For I = Sheets.Count To 1 Step -1
    If Sheets(I).Name < > Me.Name Then
        Sheets(I).Move
        With ActiveWorkbook
            With .ActiveSheet.UsedRange
                .Copy
                .PasteSpecial Paste:=xlPasteValues
            End With
            .SaveAs ThisWorkbook.Path & "\" & ActiveSheet.Name & ".xls"
            .Close False
        End With
    End If
Next I
End Sub

/!\ pas de gestion d'erreur si les classeurs existent déja dans le dossier....

Cordialement
 

Pièces jointes

  • exempleTCD(1).xls
    320.5 KB · Affichages: 34

Modeste geedee

XLDnaute Barbatruc
Re : exporter un TCD par chaque pivot item

Salut Patrick© ;)

mettre la discipline en champ de page .


oupsss.... bonsour® Efgé
tant pis c'était fait j'envoie .
 

Pièces jointes

  • exempleTCD.xls
    420.5 KB · Affichages: 38
  • exempleTCD.xls
    420.5 KB · Affichages: 44
  • exempleTCD.xls
    420.5 KB · Affichages: 46

gosselien

XLDnaute Barbatruc
Re : exporter un TCD par chaque pivot item

Hello à tous et merci, la solution de kjin est testé et approuvée , je teste celles autres et je vous dirai ce que j'en tire...
sous question: comment améliorer le code de quadrillage des cellules , je n'aime pas la manière dont l'enregistreur de macro l'a écrite... on sait faire plus court je pense mais je n'y arrive pas :(

Un grand merci déjà à tous !!!
 

Discussions similaires

Statistiques des forums

Discussions
312 273
Messages
2 086 700
Membres
103 373
dernier inscrit
Edouard007