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

Figer les slicers

  • Initiateur de la discussion Initiateur de la discussion Maddad
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Maddad

Guest
Bonjour à tous,

j'ai crée un tableau croisé dynamique avec des slicers (segments dans excel 2010), mais ces derniers changent souvent de position chaque fois que je filtre des données. Je voudrais savoir comment les rendre immobiles.

Merci d'avance
 
Re : Figer les slicers

Bonjour,


Tu colles le code suivant dans le module de la feuille où se situe ton tdc
Tu peux adapter les index pour le nom des objets si tu le désires!

VB:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Dim Pt As PivotTable
Dim x As Slicer
Set Pt = Me.PivotTables(1)
Set x = Target.Slicers(1)
'Tu choisis les propriétés Left Et top de
'la cellule que tu désires...
x.Shape.Left = Me.Range("D8").Left
x.Shape.Top = Me.Range("D8").Top
'x.Width = si besoin
End Sub
 
Re : Figer les slicers

Bonjour,

Merci pour ta réponse, j'ai modifié la macro car je voulais figer plusieurs slicers et les coller les uns aux autres, et ce de façon synchrone à toute action de sélection sur le tableau:

Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
Dim Pt As PivotTable
Set Pt = Me.PivotTables(1)
Set x = Target.Slicers("année")
Set y = Target.Slicers("PVP")
Set Z = Target.Slicers("Analyses DPRO")
Set w = Target.Slicers("Unité" & Chr(10) & "responsable" & Chr(10) & "de l'analyse de" & Chr(10) & "risques")
Set v = Target.Slicers("Entité")
x.Shape.Left = Me.Range("A1").Left: x.Shape.Top = Me.Range("A1").Top
y.Shape.Left = Me.Range("A1").Left: y.Shape.Top = Me.Range("A1").Top: y.Shape.IncrementLeft 141
Z.Shape.Left = Me.Range("A1").Left: Z.Shape.Top = Me.Range("A1").Top: Z.Shape.IncrementTop 47
w.Shape.Left = Me.Range("A1").Left: w.Shape.Top = Me.Range("A1").Top: w.Shape.IncrementTop 47: w.Shape.IncrementLeft 141
v.Shape.Left = Me.Range("A1").Left: v.Shape.Top = Me.Range("A1").Top: v.Shape.IncrementLeft 282
'x.Width = si besoin
End Sub

ça marche, mais comme je viens de commencer avec les macros, je ne sais pas si la macro est optimale et de ce fait pourrait être améliorée

A+
 
Re : Figer les slicers

L'important c'est que tu as trouvé une solution qui convient à ton application.

Pour ce qui est de l'optimisation du code, cela s'acquiert avec la pratique...

Si c'est pour sauver quelques nanosecondes, je te suggère de ne pas perdre un temps fou sur le sujet!
 
Re : Figer les slicers

Resalut,

voici la macro encore modifié afin qu'elle ne prenne pas en compte le nom des slicers (au cas ou je voudrais en ajouter de nouveaux avec des noms différents) + ajustement de la taille de ces derniers :

Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
Dim Pt As PivotTable
Set Pt = Me.PivotTables(1)

Set x = Target.Slicers(1): x.Shape.Height = 48.188976378: x.Shape.Width = 141.7322834646: x.Shape.Left = Me.Range("A1").Left: x.Shape.Top = Me.Range("A1").Top
Set y = Target.Slicers(2): y.Shape.Height = 48.188976378: x.Shape.Width = 141.7322834646: y.Shape.Left = Me.Range("A1").Left: y.Shape.Top = Me.Range("A1").Top: y.Shape.IncrementLeft 141
Set Z = Target.Slicers(3): Z.Shape.Height = 48.188976378: x.Shape.Width = 141.7322834646: Z.Shape.Left = Me.Range("A1").Left: Z.Shape.Top = Me.Range("A1").Top: Z.Shape.IncrementTop 47
Set w = Target.Slicers(4): w.Shape.Height = 48.188976378: x.Shape.Width = 141.7322834646: w.Shape.Left = Me.Range("A1").Left: w.Shape.Top = Me.Range("A1").Top: w.Shape.IncrementTop 47: w.Shape.IncrementLeft 141
Set v = Target.Slicers(5): v.Shape.Height = 48.188976378: x.Shape.Width = 141.7322834646: v.Shape.Left = Me.Range("A1").Left: v.Shape.Top = Me.Range("A1").Top: v.Shape.IncrementLeft 282
'x.Width = si besoin
End Sub

Mais lorsque je veux afficher moins de 5 slicers ça bug, serait-il possible d'ajouter une condition à la macro afin d'éviter cela, du genre si un slicer est absent : pas d'action

merci
 
Dernière modification par un modérateur:
Re : Figer les slicers

J'ai également rajouter un commandbutton "fichier source" pour aller vers la feuille de base de données, je voudrais également ajuster sont format et sa position par VBA

merci pour votre aide
 
Re : Figer les slicers

Si tu places tous les slicers au même endroit, cela devrait être suffisant

J'ai supposé que tu avais seulement un TDC dans la feuille et ses slicers.
Sinon, il faut spécifier le TDC.

VB:
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
Dim Sl As Slicer
For Each Sl In Target.Slicers
    With Sl.Shape
        .Height = 48.188976378
        .Width = 141.7322834646
        .Left = Me.Range("A1").Left
        .Top = Me.Range("A1").Top
    End With
Next
End Sub


Si tu as plusieurs TDC dans la feuille, tu peux modifier la macro comme suit :


VB:
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
Dim Sl As Slicer
Select Case LCase(Target.Name)
    Case Is = "toto"
        For Each Sl In Target.Slicers
            With Sl.Shape
                .Height = 48.188976378
                .Width = 141.7322834646
                .Left = Me.Range("A1").Left
                .Top = Me.Range("A1").Top
            End With
        Next
    Case Is = "titi"
        For Each Sl In Target.Slicers
            With Sl.Shape
                .Height = "à définir"
                .Width = "à définir"
                .Left = "à définir"
                .Top = "à définir"
            End With
        Next
    Case Is = "tata"
        For Each Sl In Target.Slicers
            With Sl.Shape
                .Height = "à définir"
                .Width = "à définir"
                .Left = "à définir"
                .Top = "à définir"
            End With
        Next
End Select
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
255
Réponses
18
Affichages
604
Réponses
16
Affichages
504
Réponses
23
Affichages
668
Réponses
11
Affichages
165
Réponses
1
Affichages
234
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…