Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

eclater un tableau croise dynamique

ike667

XLDnaute Nouveau
bonjour,

comme je sèche sur ce problème, je m'en remet a vous:

en fait mon problème est le suivant: je souhaite mettre les différents occurrences du champ PivotField dans la même page.
la fonction ActiveSheet.PivotTables("tcd").ShowPages PageField := "UFSERV"
fait une chose quasi similaire car elle crée une page par occurrence. je veux toutes les occurrences dans la même page.

si vous avez des idées pour le faire ???

merci d'avance.

Michael
 

Pierrot93

XLDnaute Barbatruc
Re : eclater un tableau croise dynamique

Bonjour Ike,

là en l'état, pas d'autre solution à te proposer...je me suis déjà servi de cette macro, et pas rencontré ce problème...

Peut être que quelqu'un d'autre aura une idée...

bonne fin d'après midi.
@+
 

ike667

XLDnaute Nouveau
Re : eclater un tableau croise dynamique

re,

ça marche j'ai le bon nombre d'items
maintenant, je dois faire ma boucle pour "éclater le tableau croise" et la ... aie,aie,aie

petite question:
comment repérer la fin d'un tableau ( bien évidement ils sont de longueurs variables... ) ?


cordialement,
Michael

ps: un grand merci pour tout l'aide que tu m'apportes.
 

Pierrot93

XLDnaute Barbatruc
Re : eclater un tableau croise dynamique

Re

pas sur de ne pas être à coté de la question, mais si au moins la dernière ligne d'une colonne de ton tcd est systèmatiquement renseignée, tu peux utiliser le code ci dessous :

renvoie dans la variable i le numéro de la dernière ligne.
Code:
i = Range("A65536").End(xlUp).Row

@+
 

Pierrot93

XLDnaute Barbatruc
Re : eclater un tableau croise dynamique

Re

pour selectionner la dernière cellule d'un TCD :

Code:
Dim x
Sheets("Feuil1").PivotTables(1).PivotSelect "", xlDataAndLabel
x = Split(Selection.Address(0, 0), ":")
Range(x(1)).Select

tu peux bien évidement, renvoyer l'adresse dans une variable.
@+
 

ike667

XLDnaute Nouveau
Re : eclater un tableau croise dynamique

bonjour,

2 petites questions aujourd'hui:

1/ je voudrais récupérer la valeur de l'item et la j'ai une erreur : voici la ligne que j'ai écrite
nomItem = ActiveSheet.PivotTables("tcd").PivotFields("UFSERV").PivotItems.Item(i).name

et ça me marque : impossible de lire la propriété PivotTables de la classe worksheet.

2/ je voudrais renommer les tableaux dynamiques: ils s'appelle tableaudynamique5,... et je voudrais leur donner un autre nom.

merci par avance.
cordialement,
Michael
 

Pierrot93

XLDnaute Barbatruc
Re : eclater un tableau croise dynamique

Bonjour Ike

ta 1ère question :

Code:
Sub test()
Dim i As PivotItem, nomItem As Variant
With Sheets(1)
    For Each i In .PivotTables(1).PivotFields("UFSERV").PivotItems
        nomItem = i.Value
    Next i
End With
End Sub

ta 2ème question, par le code :

Code:
Sheets(1).PivotTables("tcd").Name = "toto"

sinon click droit dans le tcd => options et tu changes le nom.

bon après midi
@+
 

ike667

XLDnaute Nouveau
Re : eclater un tableau croise dynamique

rebonjour,

je touche au but,

je boucle bien et je crée tous les différents tableaux dans la même page au lieu qu'il soit dans les différents onglets.

mais il me reste un petit problème:
je voudrais effacer tous les tableaux créés en plus quand je change de service?
( avant la sélection la création du tableau croise)?

si je prend la fonction que tu m'as donne est-ce que ça va m'effacer tout le reste de la page ( il peux y avoir 15 tableaux après la fin du général) ?

cordialement,
Michael
 

Pierrot93

XLDnaute Barbatruc
Re : eclater un tableau croise dynamique

Re Ike

regarde le code ci dessous, supprime toutes les feuilles si le nom es different de "Feuil1", test à adapter suivant ton appli :

Code:
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In Worksheets
    If ws.Name <> "Feuil1" Then ws.Delete
Next ws
Application.DisplayAlerts = True

enfin si c'est bien cela que tu veux, pas sur à 100%

bonne soirée
@+
 

ike667

XLDnaute Nouveau
Re : eclater un tableau croise dynamique

bonjour,

Ça y ai c'est quasiment fini,

il ne me reste qu'un petit problème de l'ordre du détail mais:

quand j'ai fini ma boucle, il me fait apparaitre la fenêtre de sélection des objets avec le dernier tableau de ma feuille sélectionnée comment je peux faire pour qu'il ne m'affiche pas cette fenêtre et qu'il me place sur le premier tableau croise?

voila, j'espère que c'est ma dernière question
merci de tout l'aide que tu m'as apporté.
cordialement,
Michael
 

Pierrot93

XLDnaute Barbatruc
Re : eclater un tableau croise dynamique

Bonjour Ice

si j'ai bien compris, essaye peut être comme ceci :

Code:
With Sheets("Feuil1")
    .Activate
    .PivotTables(1).PivotSelect "", xlDataAndLabel
End With

bonne journée
@+
 

ike667

XLDnaute Nouveau
Re : eclater un tableau croise dynamique

bonjour,

voici les dernières nouvelles:
une collègue est en train de vérifier le fonctionnement du programme et après c'est l'envoi à la cliente.

je te tiens au courant.

encore merci
cordialement,
Michael
 

ike667

XLDnaute Nouveau
Re : eclater un tableau croise dynamique

bonjour,

le soft est toujours en phase de validation.

pour information et si ca peut aider certain d'entre vous,

voici le module cree.

cordialement,
michael

encore merci a Pierrot93 pour toute l'aide qu'il ma apporté
 

Pièces jointes

  • fonction eclater.zip
    1.3 KB · Affichages: 43

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…