Problème informations dans la barre d'état VBA avec présence de filtres

richert90

XLDnaute Occasionnel
Bonjour à tous,

Contexte:

J'ai un code qui me permet d'obtenir des informations (dans la barre d'état d'excel) d'un point issu d'un nuage de points lorsqu'on passe la souris dessus. Cela marche très bien à condition qu'il n'y est pas de filtres appliqués car en effet si il y en a cela fausse les données que j'ajoute dans la barre d'état.
Voici le code pour avoir ces infos:

Code:
Option Explicit

Public WithEvents Graph1 As Chart

Private Sub Graph1_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)

 Dim ElementID As Long, SeriesIndex As Long, PointIndex As Long
 Dim S As Series, H As Integer, j As Integer, Form As String
 Dim CellX As Range, CellY As Range

 Graph1.GetChartElement x, y, ElementID, SeriesIndex, PointIndex

 If ElementID = xlSeries Then
     Form = Graph1.SeriesCollection(SeriesIndex).Formula
     H = InStr(1, Form, ",") + 1
     j = InStr(H, Form, ",") + 1
     Set CellX = Range(Mid$(Form, H, j - H - 1))(PointIndex)
     Set CellY = Range(Mid$(Form, j, InStr(j, Form, ",") - j))(PointIndex)
     Application.StatusBar = "REPORT = " & CellX(1, 4) & "         ARTICLE = " & CellX(1, 5) & "         LENGTH = " & CellX(1, 21).Value & " | "
    Else: Application.StatusBar = False
 End If

 End Sub

Ici je rajoute donc 3 informations dans la barre d'état: un nom de rapport, d'article et une longueur.

Code:
Dim Graph1 As Classe1
Dim Graph2 As Classe1

Sub lien1()
  Set Graph1 = New Classe1
  Set Graph1.Graph1 = Sheets(3).ChartObjects(1).Chart
End Sub

Pour appliquer tout cela , j'appelle la procédure précédente dans un module ;

Ce que j'aimerais:

C'est que si il y a des filtres dans la base (le graphique se met bien à jour normalement), les informations dans la barre d'état correspondent à la bonne ligne!!

Voici un petit exemple d'erreur:

Par exemple si je filtre sur un critère et qu'il ne me reste plus qu'une donnée dans la base (suite à ce filtre), celle donnée sera mise en 2ieme ligne (après la ligne des étiquettes de lignes), or quand il n'y a pas de filtres, cette donnée se situe à la 65ieme ligne.
Le problème c'est que les informations de la base vont être celles de la PREMIÈRE LIGNE QUAND IL N'Y A PAS DE FILTRE DANS LA BASE ET NON LA PREMIÈRE LIGNE AVEC FILTRE (OU LA 65 ieme LIGNE SANS FILTRE)
Voilà c'est un peu compliqué à expliquer en texte..
C'est un peu comme quand en veut appliquer un calcul et qu'on a des filtres: on n'utilise pas =moyenne mais =sous.total(.....) qui ne prend pas en compte les données masquées;
Le principe est un peu identique ici;


Merci d'avance pour votre aide,
 
Dernière édition:

richert90

XLDnaute Occasionnel
Re : Problème informations dans la barre d'état VBA avec présence de filtres

Re-bonjour,

Je me permets de relancer le sujet étant donné qu'il n'y a pas de réponse et que je ne la trouve pas non plus sur internet.

Toutefois, je vous joins un fichier avec les données et le graphique.

Vous avez juste à cliquer sur le bouton en feuille 2 pour avoir le graphique et en cliquant sur un des points vous avez dans la barre d'état (en bas du fichier excel) des informations sur "la donnée de ce point".

Je rappelle mon problème: Si on applique des filtres via la base (feuille1), ces infos dans la barre d'état sont mauvaises (mauvaise ligne prise en compte)

Merci encore d'avance :)
 

Pièces jointes

  • Classeur1.xlsm
    950.3 KB · Affichages: 45
  • Classeur1.xlsm
    950.3 KB · Affichages: 44
  • Classeur1.xlsm
    950.3 KB · Affichages: 42

richert90

XLDnaute Occasionnel
Re : Problème informations dans la barre d'état VBA avec présence de filtres

Depuis ce temps j'essaye toujours de régler ce problème.

J'ai rajouter la phrase :
Code:
SpecialCells(xlCellTypeVisible)
ici:

Code:
ActiveChart.SetSourceData Source:=Sheets(1).Range("C" & compteur_deb & ":C" & compteur_fin & "," & lettre3 & compteur_deb & ":" & lettre3 & compteur_fin & "," & lettre4 & compteur_deb & ":" & lettre4 & compteur_fin).SpecialCells(xlCellTypeVisible)

Ça marche toujours pas sauf si on rafraichit le graphique (ou le supprimer le refaire après un filtre mais cette méthode n'est pas pratique). Donc Autrement dit, il faudrait trouver une méthode pour le raffraîchir après le filtrage... et je ne sais pas comment faire... pourriez vous m'aider ?
 

Discussions similaires