Excel 2013 : Affichage des segments sélectionnés dans un TCD

Résolu
GDMeunier Messages postés 2 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 11 février 2016 - Modifié par BunoCS le 10/02/2016 à 14:29
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 10 févr. 2016 à 18:40
Bonjour,


Question : Je souhaite afficher les items sélectionnés dans 2 segments (Année, Mois) qui gère un TCD (Excel 2013) dans une autre feuille.

Je dispose du code suivant:

Sub Copier_Item_Segment_Sélectionn​er_Vers_A1_AX()

Dim x As Slicer, Sh As Worksheet, A As Long
Dim B As Long, NbItem As Long

With ThisWorkbook
'Nom de la feuille où est le segment (TDC)
Set Sh = .Worksheets("TCD" )
With .SlicerCaches(1)
'Donne le nombre d'items dans la liste du segment
NbItems = .SlicerItems.Count
'Une boucle sur chaque item du segment
For B = 1 To NbItems
With .SlicerItems(B)
'Si l'item du segment est sélectionné
If .Selected = True Then
'Incrémentation de la variable A
A = A + 1
'Copie de la valeur de l'item vers la cellule Ax
Sh.Range("A" & A) = .Value
End If
End With
Next
End With
End With
End Sub



En collant ce code dans dans la feuille TCD ça marche lorsque je fais "Run" dans la fenêtre VBA;

Mes questions sont les suivantes.
1) Comment faire pour le déclencher automatiquement lorsque je change la sélection du segment (ou une autre façon) dans cette feuille TCD,
2) Comment effacer la copie des items lorsque je le déclenche de nouveau (sinon les anciens restent affichés),
3) Comment copier les items dans une autre feuille que TCD (exemple feuille TB),
4) Comment afficher les items pour 2 segments.


Merci de la part d'un amateur d'Excel, novice en VBA

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.

4 réponses

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
10 févr. 2016 à 14:31
Hello,

Message édité pour rajouter les balises 'code'. Voir l'encadré.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 févr. 2016 à 16:55
Bonjour,
la relecture des règles de ce forum te rappellera la nécessité de n'exposer qu'une seule difficulté spécifique et parfaitement isolée par discussion.
La présente discussion en comporte 4 !

Je ne vais donc que tenter de t'aider à résoudre la toute première (et ignorer les autres).

N'ayant pas ta version Office, je n'ai pas accès à l'objet Slicer.
la lecture de cette discussion :
http://stackoverflow.com/questions/27998731/how-to-run-a-macro-while-clicking-on-a-value-in-slicer-in-excel-vba
me donne toutefois à penser que ta solution (à la seule première question, donc) est dans l'utilisation de l'évènement Worksheet_PivotTableUpdate .
0
GDMeunier Messages postés 2 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 11 février 2016
10 févr. 2016 à 18:20
ucfoutu,
Merci pour le rappel des procédures! J'utilise Excel 2013 avec Windows 8.1.
L’événement PivotTable Update déclenche la procédure c'est OK.
J'ai trouvé pour les questions 3 (autre feuille) et 4 (2° slicer). Il me reste de vieilles notions de DBase 3! il me reste juste une question, 1 seule, comment effacer ce qui était affiché avant de relancer la procédure?
Cordialement
GDMeunier
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 10/02/2016 à 18:41
Merci pour le rappel des procédures

A la bonne heure. Mais alors à appliquer :
1) - libération de la présente discussion (un clic sur le tag RESOLU au niveau de ton premier message)
2) - ouverture d'une autre discussion relative à cet effacement.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Rejoignez-nous