IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

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


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 38
    Points : 19
    Points
    19
    Par défaut Problème informations dans la barre d'état VBA avec présence de filtres
    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.

    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), cette 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 qui seront dans la barre d'état 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).

    Merci d'avance pour votre aide,

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Pas certain de bien comprendre...
    Est-ce que tu peux mettre le bout de code relié à l'écriture dans la barre d'état ?
    Ça pourrait aider...

    Est-ce que tu utilises SpecialCells(xlCellTypeVisible) ?
    MPi²

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Bonjour parmi,

    Merci d'avoir répondu

    J'avais en effet essayé de joindre le fichier mais jai pa pu à cause de la présence de macros.

    Alors une fois que je trace mon nuage de points j'appelle une procédure:
    Voici le contenu de lien1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim Graph1 As Classe1
     
    Sub lien1()
      Set Graph1 = New Classe1
      Set Graph1.Graph1 = Sheets(3).ChartObjects(1).Chart
    End Sub
    Et voici le contenu du module de classe "Classe1" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    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
    Voilà donc ce code marche très bien, une fois que lien1 a été exécuté , si on passe la souris sur un point du nuage de points j'ai, dans la barre d'état d'Excel, 3 informations qui font référence au point: REPORT, ARTICLE, LENGTH.

    Mon problème c'est si on applique des filtres dans la base, et qu'on repasse notre souris sur le nuage de points, les 3 informations données sont fausses: elles ne correspondent pas à la ligne à cause du filtre...
    Ça me fait un peu penser au principe que 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 j'ai l'impression .

    Voila si tu ne vois pas encore vraiment le problème j'essayerai de réexpliquer


    PS: Non je n'utilises pas SpecialCells(xlCellTypeVisible)


    Merci d'avance,

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Est-ce que le filtre a une importance ou s'il peut être enlevé ?
    Pour l'enlever
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("LaFeuilleFiltrée").AutoFilterMode = False
    Sheets("LaFeuilleFiltrée").Rows(LaLigneFiltrée).Autofilter
    à mettre en début de procédure lien1
    MPi²

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Re,

    Si malheureusement le filtre est important sinon tout irait bien mais quelqu'un qui utilisera ce fichier excel aura surement besoin de filtrer des données et dans ce cas je veux que les infos dans la barre d'état soient justes et "suivent" la logique du filtre (bonne ligne)

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    J'avais en effet essayé de joindre le fichier mais jai pa pu à cause de la présence de macros.
    Pour joindre un fichier, utilise .xls ou zippe-le
    Assure-toi tout de même que les données ne sont pas confidentielles...
    MPi²

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Voila ci joint le fichier. Il faut juste en l'ouvrant cliquer sur le bouton graphique pour l'avoir et cliquer ensuite sur ce dernier pour activer la présence d'informations dans la barre d'état. En filtrant dans la base (onglet 1), tu pourras voir que les infos données pour un point ne correspondent pas à ce dernier en réalité.


    Merci d'avance pour l'aide,
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Je pense que cette ligne (en rouge) va résoudre le problème...
    Laisse-moi savoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                ActiveSheet.Shapes.AddChart.Select
                ActiveChart.ChartType = xlXYScatter 'Type du graphique: ici nuage de points
                ActiveChart.SetSourceData Source:=Sheets(1).Range("C" & compteur_deb & ":C" & compteur_fin & "," & lettre3 & compteur_deb & ":" & lettre3 & compteur_fin & "," & lettre4 & compteur_deb & ":" & lettre4 & compteur_fin)
                'On modifie les titres pour en vue de la légende:
                ActiveChart.SeriesCollection(1).Name = "=dataBase!$S$1"
                ActiveChart.SeriesCollection(2).Name = "=dataBase!$T$1"
                ActiveChart.PlotVisibleOnly = False
    MPi²

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Re,

    Dans le cas avec la ligne en rouge, le graphique ne se met pas à jour
    On applique des filtres mais le graphique ne les prend pas en compte..
    Je veux qu'il les prennent en compte. Mais faut juste que dans la barre d'état, les infos qui renvoient a la ligne du point soit bonne..

    Par exemple: Essaye de filtrer BPU en prenant le numéro 1 et article=le 3ieme de la liste:Z:\ARTICLES\13092503
    Tu n'as plus qu'une valeur dans le tableau et donc sur le graphique tu as plus que 2 points correspondants à cette donnée (IntegTime et ImageLvel)
    Et si tu clique sur le graphique et tu te places sur un des points , et que tu regardes les informations de la barre d'état, et que tu compare avec la ligne de la base ça ne correspond pas ..
    C'est ça mon problème.

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Essaie cette ligne dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                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)
    MPi²

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Ca marche toujours pas

    En fait il me renvoi les valeurs des lignes dans lesquelles se situent les données après le filtre et non pas avant (par exemple en filtrant sur plusieurs critère pur ne garder qu'une donnée, je l'ai en ligne 2 mais en réalité dans la base c'est ligne 25 (écrit en bleu dans la colonne de gauche) et il lit les infos dans la 1ere ligne au lieu de la 25 en fait, donc il ne prend pas en compte le filtre le code pour avoir les infos dans la barre d'état)).

  12. #12
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Je n'ai plus le fichier où je suis, mais pourrais-tu expliquer ?
    S'il y a un filtre et qu'il n'y a qu'une ligne visible, est-ce que tu veux voir seulement cette ligne dans le graphique (donc 2 points) ?
    Si oui, il me semble que mon dernier message résolvait le problème, mais je vais vérifier plus à fond demain.

    Au début, je pensais que tu voulais tout voir même ce qui était masqué d'où mon autre message avec la ligne en rouge...
    MPi²

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Re,

    Je vais essayer d'être le plus clair possible:
    - Le graphique doit se mettre à jour en fonction des filtres ( mais ça mon code le fait déjà il n'y a rien besoin de changer): on voit donc que les points visibles et non pas ceux masquées dans la base. La dessus il n'y a pas de problème
    - Les informations données dans la barre d'état d'Excel (en bas de la page, dans la partie grise) doivent correspondre à la même ligne que la donnée du point du graphique.
    ce qui n'est pas le cas quand on applique des filtres sur la base.

  14. #14
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Si je fais un filtre comme tu m'as dit et en ajoutant la partie en rouge comme dans mon message #10, ça m'affiche la ligne 668 dans dataBase, je ne vois que 2 points dans le graphique et la barre de statut m'affiche ce qui est inscrit en F et G 668...

    REPORT = Z:\REPORTS\13111901.LR ARTICLE = F002465|CHEQUE DEJEUNER PEFC - 1966


    Ce n'est pas ce que tu veux ?
    MPi²

  15. #15
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Rebonjour parmi,

    Merci à toi de prendre le temps de m'aider.

    Alors je pense qu'on avance car si c'est exactement cela que je veux. Je viens de refaire le même test que toi chez moi et les infos dans la barre de statut ne sont pas celles correspondantes à la ligne 668 (colonnes F et G) mais celle de la ligne 1. Pourtant j'ai bien rajouté ta ligne en rouge (post 10)
    Je te joins le fichier avec le test...
    C'est vraiment bizar ..
    Fichiers attachés Fichiers attachés

  16. #16
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Étrange parce que ça fonctionne bien ici (Excel 2007 32 bits sur Win7 64 bits)
    Les données de la ligne 668 apparaissent bien (?)
    MPi²

  17. #17
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Je viens de voir le problème...
    C'est au raffraichissement que le graphique ne met pas à jour
    Il faut l'effacer et le recréer pour que ça fonctionne.

    Autrement, il faudrait trouver une méthode pour le raffraîchir après le filtrage...
    MPi²

  18. #18
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    A ok !
    Mais normalement dès qu'il y a un filtre, le graphique se met à jour donc c'est comme un rafraichissement?

  19. #19
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Il y a un raffraichissement du graphique, mais pas des données comme telles...
    Et comme il n'y a pas d'événement lié au filtrage, à ce que je sache, ça complique les choses pour créer une routine de raffraichissement...
    MPi²

  20. #20
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Ok. Qu'est ce que tu entends par événement lié au filtrage ?
    Je suis en train de tester des choses comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.chartObjects(1).refresh
    ... mais aucune réussite
    ..

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/08/2008, 11h52
  2. pas d'icône java dans la barre d'état système
    Par Benoit_T dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 12/06/2008, 14h52
  3. adresse mail dans la barre d'état
    Par DiverSIG dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 31/03/2006, 09h43
  4. Affichage dans la barre d'état
    Par Prue dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 05/07/2005, 11h51
  5. Affichage d'un texte dans la barre d'état!
    Par chuart dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 12/04/2005, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo