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.