Je m'excuse, mais si quelqu'un peut m'aider

Bonjour,

Désolè de relancer pour cette petite macro que je n'arrive pas à faire.

J'ai déjà poster un sujet mais je ne retrouve plus le lien.

Ce que je cherche à faire

lorsque je clique sur des segments, qu'importe la raison (petites fenêtres liées aux Tableaux croisés dynamiques pour filtrer les données), je voudrais qu'une cellule se trouvant sur une autre feuille soit = 0

Le code de ces segments se présentes ainsi lorsque l'on les sélectionne (avec enregistreur de macro)

Dans ce code, j'ai fait deux sélections, puis j'ai effacer les filtres

Sub Remisezero()
'
' Remisezero Macro
'

'
    With ActiveWorkbook.SlicerCaches("Segment_instrument")
        .SlicerItems("accordéon").Selected = True
        .SlicerItems("flute").Selected = False
        .SlicerItems("guitare ").Selected = False
        .SlicerItems("harpe").Selected = False
        .SlicerItems("piano").Selected = False
        .SlicerItems("violon").Selected = False
    End With
    With ActiveWorkbook.SlicerCaches("Segment_lieu")
        .SlicerItems("domicile").Selected = True
        .SlicerItems("ecole").Selected = False
    End With

       ActiveWorkbook.SlicerCaches("Segment_instrument").ClearManualFilter
    ActiveWorkbook.SlicerCaches("Segment_lieu").ClearManualFilter
End Sub

Je pense qu'il faut faire un truc du genre si j'active ou clear les filtres, alors donne la valeur 0 à la cellule

Je met un fichier joint que j'ai préparé pour ce souci,

Merci

Bonsoir,

Il n'y a pas d'évènements liés à ces objets "Slicers". Par conséquent, il n'est pas pas possible de déclencher une action liée à cet objet.

Il y a certainement des programmes qui existent pour contourner cette contrainte.

Raja a écrit :

Bonsoir,

Il n'y a pas d'évènements liés à ces objets "Slicers". Par conséquent, il n'est pas pas possible de déclencher une action liée à cet objet.

Il y a certainement des programmes qui existent pour contourner cette contrainte.

Bonjour,

merci pour ce retour.

Je pense qu'il existe une possibilité d'arriver à cela. Le prob, c'est que je suis ignorant en VBA.

J'ai vu sur un site, un exemple de code VBA pour les Segments (slicers), mais rien à voir avec mon prob, cela peut donner une idée à la manière dont les segment sont traité en VBA

Exemple, de code concernant les segments

Sub create_slicer()
Dim i As SlicerCaches
Dim j As Slicers
Dim k As Slicer

Set i = ActiveWorkbook.SlicerCaches
Set j = i.Add(ActiveSheet.PivotTables(1), "Region", "My_Region").Slicers
Set k = j.Add(ActiveSheet, , "My_Region", "Region", 0, 0, 200, 200)
MsgBox "Created Slicer"
End Sub

Dans ce que j'essaye de faire, je me suis dis que le code devait commencer par cela

Sub change()
' remmetre à 0

Dim cellule
Dim segment As SlicerCaches

cellule = Sheets("chiffre").Range("E6")
segment = ActiveWorkbook.SlicerCaches

If

   With ActiveWorkbook.SlicerCaches("Segment_instrument")
        .SlicerItems("accordéon").Selected = True
        .SlicerItems("flute").Selected = False
        .SlicerItems("guitare ").Selected = False
        .SlicerItems("harpe").Selected = False
        .SlicerItems("piano").Selected = False
        .SlicerItems("violon").Selected = False
    End With
    With ActiveWorkbook.SlicerCaches("Segment_lieu")
        .SlicerItems("domicile").Selected = True
        .SlicerItems("ecole").Selected = False
    End With

       ActiveWorkbook.SlicerCaches("Segment_instrument").ClearManualFilter
    ActiveWorkbook.SlicerCaches("Segment_lieu").ClearManualFilter
End Sub

Peut-être que ce code trouvé peut donner des idées ?

Mon objectif, et que lorsque je clique sur un segment ou efface les filtres

  ActiveWorkbook.SlicerCaches("Segment_lieu").ClearManualFilter 

La cellule liée de ma barre de défilement se remette à 0

Car quand on a beaucoup de données, c'est bien que la cellule liée de la barre de défilement soit réinitialisé après chaque sélection.

Merci à vous,

bonnes fêtes

Re,

Finalement l'évènement suivant réagi quand on click sur les objets "Slicers". Pour moi, c'est une découverte les Slicers. Insère ce code dans le module "ThisWorkbook" et teste :

Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
    Sheets("barre").Range("B3") = 0
End Sub

Monsieur Raja,

Vous êtes formidable, votre code fonctionne et c'est magique.

Moi qui vit une période difficile, vous m'avez apportez du bonheur.

Je me permet de poser deux petites questions de rien du tout.

J'ai déjà des lignes de programmation dans ma page "thiswoorkbook."

Private Sub Workbook_Open()

Private Sub Workbook_Activate()

Private Sub Workbook_Deactivate()

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Je présume que la ligne de code, je la mettrais ensuite dans la partie Private......Open et Private....Activate

Ensuite, la deuxième question,

j'ai une ligne de code que l'on m'a donné pour donner une valeur max à la barre de défilement, selon la valeur d'une cellule

Sub Barrededéfilement2_QuandChangement()

   ActiveSheet.Shapes("Barre de défilement 2").DrawingObject.Max = Range("G2").Value

End Sub

En gros, la cellule G2 calcule le nombre d'élément dans une colonne, et fixe ainsi la valeur max de ma barre de défilement.

Et votre code, me permet de remettre à 0 la cellule lié de la barre de défilement.

En effet, lorsque l'on fait défiler la barre de défilement, et qu'ensuite on fait une autre sélection, la barre ne revient pas à 0, et du coup, ce n'est pas bien. (on doit remonter le curseur de la barre de défilement pour voir si il y a des données par moment.)

Juste cette ligne de code marche, mais j'ai par moment l'impression que ce n'est pas vraiment instantanée.

Je l'ai mise dans un module. peut être je dois la mettre également dans "thiswoorkbook." ?

Bon, de toute façon, je testerai pour voir ce que cela donne. Il faut dire que le VBA est vraiment très nouveau pour moi.

En tout cas, vraiment un GRAND MERCI pour ce code que je pourrai utiliser dans plusieurs fichiers avec la ligne de code que j'ai mis, pour gérer au mieux les barres de défilements.

Vraiment Merci,

Et bonnes fêtes de fin d'année

Re,

Réponse à la 1ère question :

Le code que j'ai conseillé, tu mets dans n'importe quel ordre à condition qu'il soit dans le module "ThisWorkbook".

Réponse à la 2ème question :

Il faut que je voie le fichier complet pour comprendre ton besoin, car tu me parles de G5 or dans le fichier mis à disposition je n'ai rien, le code lié à la toupie n'ont plus, je ne vois pas. A moins que....(voir pj) Le code pour la toupie est dans un module du classeur et il est lié au click de la toupie.

Bonjour Raja,

Je suis rentrer tard hier, et je n'ai pas pu répondre avant, désolé.

j'ai essayé sur mon fichier, tout fonctionne très bien. Pas de soucis.

Un Grand Merci.

A bientôt sans doute et bonnes fêtes de fin d'année.

Rechercher des sujets similaires à "excuse quelqu"