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 :

Treeview: Garder le noeud sélectionné même après la perte de focus


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut Treeview: Garder le noeud sélectionné même après la perte de focus
    Bonjour à tous!

    Voilà le problème: j'ai un Userform avec un multipage de plusieurs pages. Sur 2 d'entre elles il y a un Treeview. Quand je sélectionne un noeud, tout se passe très bien dans les procédures associées.

    Mais si je change de page et reviens ensuite sur la page sur laquelle le noeud avait été sélectionné précédemment, le treeview s'est réinitialisé, plus rien n'est coché, et la premiere ligne est en surbrillance (comme si on venait de réinitialiser le userform).

    Comment garder le(s) noeud(s) sélectionné(s) même si on perd le focus/change de page?

    J'ai tout regardé, pas de procédure déclenchée au changement de page, la propriété HideSelection du Treeview est bien à False. Là je plante...

    Merci d'avance pour toutes vos propositions.

    Mél

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2010
    Messages : 75
    Par défaut
    Bonjour,

    Je n'ai pas pris le temps de tester ma solution donc...

    Il est sûrement possible d'utiliser la propriété "tag" du TreeView. A chaque fois que la sélection change (dans le TreeView), stocker le numéro du noeud dans la propriété tag du TreeView. Ensuite, à chaque initialisation du TreeView, sélectionner le noeud dont l'index est stocké dans le tag.

    Je ne sais pas si je suis assez clair. En cas de soucis, je ferai un classeur exemple.

    Bonne journée

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Merci Larry,

    à la lecture, ca paraît très clair, sauf que je ne sais pas du tout comment fonctionne la propriété Tag ni ce qu'elle peut contenir.
    Ma Treeview possède des checkbox et plusieurs d'entre elles peuvent être cochées simultanément (j'ai 3300 noeuds en tout...)

    En fait, si tu pouvais faire un petit exemple, ca ne serait pas de refus :-)

    Merci d'avance!
    Mél

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2010
    Messages : 75
    Par défaut
    Désolé pour le temps de réaction...

    Alors, il te suffit d'insérer ce code (attention au nom des controls) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
        Node.Tag = Node.Checked
    End Sub
    Ensuite, à chaque fois que ton TreeView est de nouveau visible à l'écran (pour faire simple, quand l'utilisateur arrive sur le TabStrip où le TreeView est affiché), faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim TV_Visible As Boolean
    Dim Nd As Node
     
    If TV_Visible Then
        For Each Nd In TreeView1.Nodes
            Nd.Checked = Nd.Tag
        Next Nd
    End If
    Est-ce que cela te semble plus compréhensible ?

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Super, c'est génial, c'est ce qu'il me fallait :-)
    Entre-temps j'avais réussi à boucler sur tous les noeuds apres le declenchement de la procédure NodeCheck et enregistrer dans un tableau dynamique pour chaque noeud s'il est coché ou non, puis à chaque retour sur la page en question reboucler sur le tableau pour recocher les bons noeuds.
    Compliqué, ca marchait, mais je vais m'empresser d'utiliser ton code.
    Merci!!

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2010
    Messages : 75
    Par défaut
    Y'a pas de quoi... Je me suis rendu compte que moi aussi je pouvais utiliser ce code pour un classeur que je souhaite développer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/09/2011, 14h59
  2. [Lazarus] TreeView Images et Noeud sélectionné
    Par tintinux dans le forum Lazarus
    Réponses: 1
    Dernier message: 03/03/2011, 16h09
  3. [C#] TreeView garder le noeud en cours selectionner
    Par Bazou00 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/01/2009, 16h40
  4. [C#] TreeView noeud sélectionné
    Par davasm dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/12/2006, 11h14
  5. [c#] comment faire pour garder des noeuds ouverts treeview?
    Par irnbru dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/11/2005, 00h47

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