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

Clic sur barre d'histogramme pour lancer macro

Niouf

XLDnaute Occasionnel
Bonjour le forum,

J'essaye de réaliser quelque chose de simple, mais qui je pense, va etre assez complexe à mettre en place.

A partir d'une base de donnée, je créé un TCD, et à partir de ce TCD, un graph croisé dynamique.
Ce graph est sous forme de PARETO, avec des histogrammes.

J'aimerai donc, en double cliquant sur l'une des colonnes du PARETO, lancer une macro qui ouvre la base données et qui filtrerait en fonction des critères de l'histogramme sur lequel j'ai cliqué.

Exemple, j'ai une tete de PARETO sur la "semaine 11" avec la cause "ATTENTE"
=> JE double clic sur cette colonne : et la macro se lance, j'accède à ma base de données, les ligne avec le parametre "ATTENTE" et "Semaine 11" sont dejà filtré.

Avant de vous mettre en exemple un fichier (Qui est trop gros d'ailleurs), j'aimerai deja savoir si ceci est possible ...

J'ai donc 2 questions principales :
- Possibilité de lancer macro en double cliquant sur colonne d'histogramme
- Filtrer une BD via des paramètres référencés dans différentes cellules

Merci d'avance pour vos pistes !
 

Pièces jointes

  • Exemple.png
    24.8 KB · Affichages: 44
  • Exemple.png
    24.8 KB · Affichages: 46
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Clic sur barre d'histogramme pour lancer macro

Bonjour.
Si c'est une feuille graphique (Chart), pas de problème, des évènements peuvent immédiatement être pris en charge dans le module de la feuille. Si c'est un un graphique supporté par un ChartObject dans une feuille de calcul (Worksheet) c'est un tout petit peu plus compliqué. Déclarer en tête du module de la feuille:
Dim WithEvents G As Chart
L'initialiser dans la Worksheet_Activate par: Set G = Me.ChartObjects(1).Chart
Si toutefois il n'y en a qu'un ou que c'est bien le 1er. Vous avez les évènements pour votre objet G, il figure dans la liste de gauche qui surmonte la fenêtre de code.

Cette procédure, par exemple, réagit quand on sélectionne un point d'une série en nuage de points. Elle colore la plage de la série en rouge pâle, sauf la ligne du point qui se met en vert. CelXY est une variable globale As Range qui porte les valeurs X,Y du point.
VB:
Private Sub G_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
Dim Z As String, S As Series, TSpl() As String
If ElementID = 3 And Arg2 > -1 Then
   Set S = G.SeriesCollection(Arg1)
   TSpl = Split(S.Formula, ",")
   Set CelXY = Application.Range(TSpl(1) & ":" & TSpl(2))
   CelXY.Interior.Color = RGB(255, 200, 200)
   Set CelXY = CelXY.Rows(Arg2)
   CelXY.Interior.Color = RGB(200, 255, 200)
   End If
End Sub
 
Dernière édition:

Niouf

XLDnaute Occasionnel
Re : Clic sur barre d'histogramme pour lancer macro

Merci pour ces pistes !

Tres honnetement tes termes dépassent mes compétences.
Je t'aurai bien envoyé un fichier exemple, mais impssible de descendre sous les 293 miserables ko qu'autorise ce site (C'est d'ailleurs bien chiant)

Clairement, si j'arrive à réaliser une courte procédure en cliquant sur ma barre d'histogramme, le reste devrait aller tout seul.

dans mon fichier, j'ai donc : Un onglet Base ddonnée, Un onglet TCD, un onglet Graph croisé dynamique.
Donc d'après tes indications, je dois etre dans un chartobject dans une feuille de calcul.

Par contre, je pense à un détail : ta procédure est quelque chose de simple est "fixe".
Pour ma part, ma première barre d'histogramme aura des paramètres à un moment t, et ces paramètres changerons la semaine d'après. (Le filtre à effectuer dans le code changera de semaine )
Est ce que la procédure affectée au fait de cliquer sur une barre d'histogramme a un moment, fonctionnera une semaine plus tard lorsque les paramètres auront changés ?
 

Dranreb

XLDnaute Barbatruc
Re : Clic sur barre d'histogramme pour lancer macro

Le mieux c'est de faire des test.
Commencer par faire des MsgBox des paramètres de la procédure.
Rappel: son modèle est à implanter au moyen des listes déroulantes qui surmontent la fenêtre de code.
Mon exemple récupère la formule de la série pour en déduire la plage qui la définit, et utilise le numéro de point comme numéro de ligne dans cette plage.
 

Discussions similaires

Réponses
23
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…