Microsoft 365 TCD - Copier-coller la sélection de plusieurs segments de TCD

GMeunier

XLDnaute Nouveau
Bonjour,
J'ai récupéré il y a quelque temps du code pour copier et coller la ou les valeurs sélectionnées dans 1 segment de TCD. Je colle ce code dans la feuille du TCD (worksheet et PivotTableUpdate) et ça marche très bien même si le segment a été déplacé dans une autre feuille (Menu).
Ma question est que maintenant, j'ai besoin de récupérer ces mêmes valeurs sélectionnées mais sur plusieurs segments du même TCD. Comment faire? J'ai essayé en rajoutant un slicer.Cache(2) mais cela ne fonctionne pas.
Je pratique Excel, je me débrouille pour adapter du VBA récupéré mais je n'ai pas les compétences de programmeur en VBA. Je suppose que c'est une histoire de slicer.Caches mais je ne sais pas les identifier.
j'ai attaché le code que j'utilise pour 1 segment et que je souhaite adapter pour 2 ou plusieurs segments.
Toute aide sera la bienvenue,
Merci d'avance!
 

Pièces jointes

  • Code VBA_Copier-Coller Segment.docx
    20.6 KB · Affichages: 6
Solution
Chris : J'aurais bien aimé avoir une adaptation de mon code VBA pour progresser sur ce point! Mais votre suggestion m'a indiqué une autre solution sans VBA.
Je crée les segments dont j'ai besoin pour gérer les TB (et je les déplace dans une feuille Menu). Puis j'utilise en filtre du TCD les mêmes champs, les segments et les champs du filtre étant liés, il me suffit de copier les cellules des filtres, qui reflètent ma sélection des segments (Feuille Menu), dans ma feuille TB.
Merci pour cet échange.
GMeunier

job75

XLDnaute Barbatruc
Ce n'est pas clair.

S'il s'agit seulement de copier-coller les 2 TCD c'est très simple :
VB:
Private Sub Worksheet_Calculate()
With Sheets("TB_AN")
    .Cells.Delete 'RAZ
    Range("A10", Cells.SpecialCells(xlCellTypeLastCell)).Copy .[A1]
    .Columns.AutoFit 'ajustement largeurs
End With
End Sub
 

Pièces jointes

  • Segment_Copier-Coller(1).xlsm
    62.3 KB · Affichages: 6

GMeunier

XLDnaute Nouveau
Peut-être ma question n'est pas claire. Il ne s'agit pas de copier un TCD mais de copier coller les items sélectionnés dans plusieurs segments. Le code dans la feuille TCD permet de copier l'item sélectionné dans 1 et 1 seul segment et de le coller dans la feuille TB, en l'occurrence il s'agit d'indiquer l'année qui est sélectionné dans le segment et de coller cette année dans la feuille TB. Il suffit de changer d'année dans le segment pour voir que ça change l'année du TB. Je souhait faire la même chose mais en ayant plusieurs segments. Comment copier coller les items de plusieurs segments?
 

GMeunier

XLDnaute Nouveau
A Chris et Job75
Je vous remercie pour les réponses mais manifestement on ne se comprend pas. Chris, je ne peux pas lier l'item sélectionné d'un segment de cette manière, ce que je copie c'est la cellule en dessous. Il faut du VBA.
Je veux adapter le code VBA existant de la feuille TCD (voir fichier joint) qui me permet de copier-coller la sélection d'un segment de la feuille TCD_An dans la feuille TB afin de pour pouvoir copier les sélection de plusieurs (2 ou plus) segments.
Le code VBA actuel fonctionne très bien pour 1 et 1 seul segment, comment faire pour copier les sélections de plusieurs segments?
Merci pour toutes indications.
GDM
 

chris

XLDnaute Barbatruc
RE

Ton code copie en G9, G10... G13 les 5 années du slicer (si on ne filtre rien, pas une ou 2 années précises) écrasent donc d'autre informations...

A noter que les slicers peuvent contenir , c'est le cas ici, des années qui ne sont pas affichées...

En plus on n'a pas la source des TCD donc difficile de savoir clairement d'où tu pars et où tu vas
 
Dernière édition:

GMeunier

XLDnaute Nouveau
Merci pour la réponse mais elle ne répond pas à ma question. Je comprends ce que vous dîtes mais, à ce stade, je ne souhaite pas utiliser Power BI et je ne connais pas les formules cubes. Je souhaite simplement avoir une aide sur la modification du code VBA de la feuille TCD pour pouvoir copier-coller les items sélectionnés lorsque j'utilise plusieurs segments au lieu d'un seul comme dans le code actuel.

Comme j'ai déjà expliqué, la pièce jointe est un extrait d'un classeur qui génère des Tableaux de Bord automatiquement à l'aide de TCDs. J'ai récupéré du code VBA (dans la feuille TCD) qui me permet de copier l'item sélectionné dans le segment du TCD (ou plusieurs mais ici 1 seul car il s'agit de l'année) pour le copier dans la feuille TB (ce qui permet de visualiser l'année à laquelle ce TB fait référence).
Mais ce code ne fonctionne que pour un segment, je voudrais pouvoir le faire fonctionner avec plusieurs segments (Année, Région, etc.). Ce doit avoir un rapport avec slicer.cache mais je ne suis pas un spécialiste du VBA, juste un utilisateur d'Excel.

Donc ma question est comment modifier le code VBA de cet exemple pour que je puisse copier coller les items de plusieurs segments?

Merci pour toute aide.
 

job75

XLDnaute Barbatruc
Bonjour GMeunier, chris,

S'il s'agit seulement de récupérer les années sélectionnées :
VB:
Private Sub Worksheet_Calculate()
Dim lig&, s As SlicerItem
lig = 9 '1ère ligne de restitution
With Sheets("TB_AN")
    .Rows(lig & ":" & .Rows.Count).Delete 'RAZ
    For Each s In ThisWorkbook.SlicerCaches(1).SlicerItems
        If s.Selected Then .Cells(lig, 7) = s.Value: lig = lig + 1
    Next
End With
End Sub
A+
 

Pièces jointes

  • Segment_Copier-Coller(2).xlsm
    52.6 KB · Affichages: 5

GMeunier

XLDnaute Nouveau
Merci de bien vouloir m'aider!
Chris : Au risque de paraître entêté, le code fournit fonctionne parfaitement pour 1 segment. Lorsque je sélectionne une année dans le segment (feuille TCD), elle s'affiche dans la feuille TB en G9 (Evidemment, il faut saisir une seule année!)
job75 : Merci pour le code mais il doit y avoir une problème car je l'ai testé en complément (Commenter bloc) du mien et ce code efface tout dans la feuille TB!
De plus, ce que je souhaite est de pouvoir choisir où coller l'item copié en fonction du segment. Exemple pour le segment Année copier en G9, pour le segment Région (s'il y a un segment Région) copier en H9 etc.
J'ai mis en pièce attachée le même fichier mais en ayant ajouté votre code afin de pouvoir tester l'ancienne version (1 seul segment) et votre version pour plusieurs segments.
Très cordialement,
GMeunier
 

Pièces jointes

  • Segment_Copier-CollerRevueDownloadJob75.xlsm
    139.5 KB · Affichages: 9

GMeunier

XLDnaute Nouveau
Chris : J'aurais bien aimé avoir une adaptation de mon code VBA pour progresser sur ce point! Mais votre suggestion m'a indiqué une autre solution sans VBA.
Je crée les segments dont j'ai besoin pour gérer les TB (et je les déplace dans une feuille Menu). Puis j'utilise en filtre du TCD les mêmes champs, les segments et les champs du filtre étant liés, il me suffit de copier les cellules des filtres, qui reflètent ma sélection des segments (Feuille Menu), dans ma feuille TB.
Merci pour cet échange.
GMeunier
 

Discussions similaires

Réponses
3
Affichages
239
Réponses
1
Affichages
250
Compte Supprimé 979
C
Réponses
6
Affichages
256

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo