TCD Boucle VBA Sur Items Liés

stephane.79

XLDnaute Nouveau
Bonjour à tous,

Dans la procédure ci-dessous, je n’arrive pas à sélectionner les représentants appartenant à une région. Elle bloque sur " .PivotFields("Représentant").CurrentPage = Rep(j) ", je ne comprends pas pourquoi.

La définition de mes variables ou du tableau ne doivent pas être correcte ? Je m’en remets à vos lumières et vous remerci de votre aide.

Cf fichier jont en plus de la procédure ci-dessous


Sub Test_Selection_TCD()
'
Dim Region As String
Dim Rep(5) As String
Dim nbrep As Integer
Dim Pvt1 As PivotTable
Dim Pvt2 As PivotTable
Dim i As Integer
Dim j As Integer

Application.ScreenUpdating = False

If Region = "NORD" Then
nbrep = 4
Rep(0) = "Jean"
Rep(1) = "Pierre"
Rep(2) = "Paul"
Rep(3) = "Alain"
Rep(4) = "(tous)"

ElseIf Region = "SUD" Then
nbrep = 3
Rep(0) = "David"
Rep(1) = "Antoine"
Rep(2) = "Laurent"
Rep(3) = "(tous)"

End If

Sheets("Région").Select

Set Pvt1 = ActiveSheet.PivotTables("TCD_Région")

With Pvt1

For i = 1 To .PivotFields("Région").PivotItems.Count + 1
If i = .PivotFields("Région").PivotItems.Count + 1 Then
Region = "(Tous)"
Else
Region = CStr(.PivotFields("Région").PivotItems(i))
End If

.PivotFields("Région").CurrentPage = Region

Sheets("Région").Copy After:=ActiveSheet

'Copier / Coller Valeur de la nouvelle feuille
Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues
Range("C8").Select


Sheets("Région Rep").Select

Set Pvt2 = ActiveSheet.PivotTables("TCD_Région_Rep")

With Pvt2

For j = 0 To nbrep

.PivotFields("Région").CurrentPage = Region
.PivotFields("Représentant").CurrentPage = Rep(j)


Sheets("Région Rep").Copy After:=ActiveSheet

'Copier / Coller Valeur de la nouvelle feuille
Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues
Range("C8").Select


Sheets(Array("Région (2)", "Région Rep (2)")).Move


Next j


End With

Next i

End With

Application.ScreenUpdating = True

End Sub
 

Pièces jointes

  • Test_Selection_TCD.xlsm
    30.2 KB · Affichages: 44

chris

XLDnaute Barbatruc
Re : TCD Boucle VBA Sur Items Liés

Bonjour

Si tu utilisais le mode debug tu verrais déjà que :


  • ta variable région n'ayant pas de valeur, ni ta variable nbrep, ni ton tableau rep ne sont initialisés avant la double boucle
  • on se balade d'un onglet à l'autre sans que les noms d'onglets soient gérés...
Par ailleurs copier l'intégralité de l'onglet avec cells est un bon moyen de saturer inutilement la mémoire...

Si tu expliquais concrètement l'objectif ?
Pour ma part je vois mal l'intérêt de copier dans autant d'onglets que de région+représentant, des cellules sans mise en forme et peu lisibles d'autant qu'il faudra recommencer à chaque actualisation du TCD...
 

stephane.79

XLDnaute Nouveau
Re : TCD Boucle VBA Sur Items Liés

Bonjour Chris,

Comme tu peux le constater, je ne suis pas un expert et tente d'automatiser un travail fastidieux : publication de reporting de plusieurs régions soit 1 fichier comprenant 1 feuille de synthèse pour le total de la région et une feuille pour chaque représentant de la région sélectionnée

Je suis ouvert à toutes solutions bien évidemment

Stephane.79
 

chris

XLDnaute Barbatruc
Re : TCD Boucle VBA Sur Items Liés

Re

"Publication de reporting" est vague : que fais-tu ensuite de ces onglets ?

Pourquoi ne pas démultiplier le TCD avec la génération automatique (Commande Afficher les pages de filtre du rapport).

Dans 2010 les segments permettent de filtrer d'un clic : si tout reste dans le même classeur c'est sans doute une meilleure solution car on ne regard qu'un onglet à la fois.

Comme déjà dit, il faut nous expliquer concrètement et de façon détaillée l'objectif.
 

stephane.79

XLDnaute Nouveau
Re : TCD Boucle VBA Sur Items Liés

Bonsoir le Forum, Chris,

Les onglets sont déplacés pour enregistrer 1 fichier par Région comprenant : 1 feuille de synthèse + les feuilles de chaque représentant appartenant à la Région pour ensuite être envoyé par mail à chaque directeur de Région.

La génération automatique avec la Commande Afficher les pages de filtre du rapport serait une option mais seul le TCD est démultiplié selon le nombre d'items, les autres éléments de la feuille ne sont pas repris.

Je ne sais pas comment indiquer qu'en ayant filtré une région seulement certains représentants peuvent être sélectionnés à tour de rôle, puis une fois tous les représentants sélectionnés, passer à la région suivante pour sélectionner également à tour de rôle les représentant qui lui sont liés.

D'avance merci du temps passé
Stéphane.79
 

chris

XLDnaute Barbatruc
Re : TCD Boucle VBA Sur Items Liés

Re

Actuellement il n'y que le TCD dans ta feuille. Qu'y aura t'il d'autre ?

Es-tu sûr qu'un seul TCD par région avec un segment par Représentant ne serait pas tout aussi sympa pour le Directeur de région ?
 

Discussions similaires

Réponses
2
Affichages
566

Statistiques des forums

Discussions
312 428
Messages
2 088 319
Membres
103 812
dernier inscrit
mehdifr