Choix de champs de valeurs GCD

Fermé
V.meca Messages postés 4 Date d'inscription vendredi 19 avril 2013 Statut Membre Dernière intervention 22 avril 2013 - Modifié par V.meca le 22/04/2013 à 09:59
 JamesH_007 - 22 avril 2013 à 15:34
Bonjour,

J'ai créé un GCD mais je voudrais pouvoir choisir mon champs de valeur à l'aide d'une zone de liste. Est ce que quelqu'un aurait une macro à me proposer pour réaliser ce que je veux?

J'ai déjà écrit cela:

Sub Zonedeliste3_QuandChangement()
Dim Zonedeliste3_QuandChangement As String
Dim TCD As PivotTable
Dim valeur As PivotField
With valeur
.Orientation = xlDataField
.Position = 1
EndWith
Zonedeliste3_QuandChangement = TCD.valeur
End Sub


1 réponse

Bonjour. J'ai récemment créé un outil pour arriver à calculer la productivité de mon équipe me basant sur un tableau croisé dynamique. Peut-être que ma macro te sera aussi utile, car je dois mettre un filtre à chaque fois baser sur le nom de la personne concernée pour arriver à calculer sa productivité.

Le classeur contient 2 onglets, le premier (Tableau Main) contient tous les noms des utilisateurs et le deuxième (Activity) contient le TCD. La macro va accéder à tous les noms dans la rangé B:B en commençant par la cellule B7 et s'arrêtera une fois qu'elle rencontrera une cellule vide. Note bien que la rangé B:B ne contient pas le nom de la personne, mais une référence « OK/NOK » afin de pouvoir choisir les noms qu'on ne veut pas traiter. Les noms se situent juste à côté, d'où l'utilisation du « ActiveCell.Offset(0, 1) ». Voilà, la macro va tourner en boucle et tu vas pouvoir ajouter l'action spécifique une fois qu'un tri a été appliqué.


Sub Maj_ TCD()

Sheets("Tableau Main").Select
Dim Nom_utilis
Range("B7").Select

Do
Dim OK_NOK As Range
Set OK_NOK = ActiveCell

If OK_NOK = "OK" Then
Nom_utilis = ActiveCell.Offset(0, 1).Value

'Retirer les filtres de tout les pivot existant:
Dim nom_utilisateur As PivotItem
Sheets("Activity").Select
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Nom utilis. ayant saisi comm.")
.PivotItems("(blank)").Visible = True
For Each nom_utilisateur In .PivotItems
If nom_utilisateur.Name <> "(blank)" Then
nom_utilisateur.Visible = False
End If
Next
End With

With ActiveSheet.PivotTables("PivotTable2").PivotFields("Nom utilis. ayant saisi comm.")
.PivotItems(Nom_utilis).Visible = True
.PivotItems("(blank)").Visible = False
End With

`Ici une action a faire avec le filtre actuel

Sheets("Tableau Main").Select
ActiveCell.Offset(1, 0).Select
Set OK_NOK = ActiveCell
Loop Until OK_NOK.Value = ""
OK_NOK.Select

End Sub

Bonne journée.
0